#include "mediaedit/mediaedit.h"
#include "joblist/joblist.h"
-MediaList::MediaList(QStackedWidget *parent, Console *console, QTreeWidgetItem *treeItem, int indexseq)
+MediaList::MediaList()
{
- SetPassedValues(parent, treeItem, indexseq );
setupUi(this);
+ m_name = "Media";
+ pgInitialize();
/* mp_treeWidget, Storage Tree Tree Widget inherited from ui_medialist.h */
- mp_console = console;
- createConnections();
m_populated = false;
m_checkcurwidget = true;
+ m_closeable = false;
+ setTitle();
}
MediaList::~MediaList()
QString resultline;
QStringList results;
const char *query =
- "SELECT p.Name,m.VolumeName,m.MediaId,m.VolStatus,m.Enabled,m.VolBytes,"
- "m.VolFiles,m.VolRetention,m.MediaType,m.LastWritten"
- " FROM Media m,Pool p"
- " WHERE m.PoolId=p.PoolId"
- " ORDER BY p.Name";
+ "SELECT Pool.Name AS Pool, Media.VolumeName AS Media, Media.MediaId AS Id, Media.VolStatus AS VolStatus,"
+ " Media.Enabled AS Enabled, Media.VolBytes AS Bytes, Media.VolFiles AS FileCount, Media.VolJobs AS JobCount,"
+ " Media.VolRetention AS VolumeRetention, Media.MediaType AS MediaType, Media.LastWritten AS LastWritten"
+ " FROM Media, Pool"
+ " WHERE Media.PoolId=Pool.PoolId"
+ " ORDER BY Pool";
QStringList headerlist = (QStringList()
<< "Pool Name" << "Volume Name" << "Media Id" << "Volume Status" << "Enabled"
- << "Volume Bytes" << "Volume Files" << "Volume Retention"
+ << "Volume Bytes" << "Volume Files" << "Volume Jobs" << "Volume Retention"
<< "Media Type" << "Last Written");
m_checkcurwidget = false;
mp_treeWidget->clear();
m_checkcurwidget = true;
- mp_treeWidget->setColumnCount(9);
+ mp_treeWidget->setColumnCount(headerlist.count());
topItem = new QTreeWidgetItem(mp_treeWidget);
topItem->setText(0, "Pools");
topItem->setData(0, Qt::UserRole, 0);
- topItem->setExpanded( true );
+ topItem->setExpanded(true);
mp_treeWidget->setHeaderLabels(headerlist);
- if (mp_console->sql_cmd(query, results)) {
+ /* FIXME Make this a user configurable loggin action and dont use printf */
+ //printf("MediaList query cmd : %s\n",query);
+ if (m_console->sql_cmd(query, results)) {
QString field;
QStringList fieldlist;
}
}
}
-}
-
-/*
- * Not being used currently, Should this be kept for possible future use.
- */
-void MediaList::createConnections()
-{
- connect(mp_treeWidget, SIGNAL(itemPressed(QTreeWidgetItem *, int)), this,
- SLOT(treeItemClicked(QTreeWidgetItem *, int)));
- connect(mp_treeWidget, SIGNAL(itemDoubleClicked(QTreeWidgetItem *, int)), this,
- SLOT(treeItemDoubleClicked(QTreeWidgetItem *, int)));
-}
-
-/*
- * Not being used currently, Should this be kept for possible future use.
- */
-void MediaList::treeItemClicked(QTreeWidgetItem * /*item*/, int /*column*/)
-{
-}
-
-/*
- * Not being used currently, Should this be kept for possible future use.
- */
-void MediaList::treeItemDoubleClicked(QTreeWidgetItem * /*item*/, int /*column*/)
-{
+ /* Resize the columns */
+ for(int cnter=0; cnter<headerlist.count(); cnter++) {
+ mp_treeWidget->resizeColumnToContents(cnter);
+ }
}
/*
*/
void MediaList::editMedia()
{
- MediaEdit* edit = new MediaEdit(mp_console, m_currentlyselected);
+ MediaEdit* edit = new MediaEdit(m_console, m_currentlyselected);
edit->show();
}
*/
void MediaList::showJobs()
{
- JobList* joblist = new JobList(mp_console, m_currentlyselected);
- joblist->show();
+ QString emptyclient("");
+ QTreeWidgetItem *parentItem = mainWin->getFromHash(this);
+ mainWin->createPageJobList(m_currentlyselected, emptyclient, parentItem);
}
/*
*/
void MediaList::PgSeltreeWidgetClicked()
{
- if(!m_populated) {
+ if (!m_populated) {
populateTree();
createContextMenu();
m_populated=true;
}
}
-/*
- * When the treeWidgetItem in the page selector tree is doubleclicked, Use that
- * As a signal to repopulate from a query of the database.
- * Should this be from a context sensitive menu in either or both of the page selector
- * or This widnow ???
- */
-void MediaList::PgSeltreeWidgetDoubleClicked()
-{
- populateTree();
-}
-
/*
* Added to set the context menu policy based on currently active treeWidgetItem
* signaled by currentItemChanged
*/
-void MediaList::treeItemChanged(QTreeWidgetItem *currentwidgetitem, QTreeWidgetItem *) /*previouswidgetitem*/
+void MediaList::treeItemChanged(QTreeWidgetItem *currentwidgetitem, QTreeWidgetItem *previouswidgetitem )
{
- if ( m_checkcurwidget ) {
+ /* m_checkcurwidget checks to see if this is during a refresh, which will segfault */
+ if (m_checkcurwidget) {
+ /* The Previous item */
+ if (previouswidgetitem) { /* avoid a segfault if first time */
+ int treedepth = previouswidgetitem->data(0, Qt::UserRole).toInt();
+ if (treedepth == 2){
+ mp_treeWidget->removeAction(actionEditVolume);
+ mp_treeWidget->removeAction(actionListJobsOnVolume);
+ }
+ }
+
int treedepth = currentwidgetitem->data(0, Qt::UserRole).toInt();
if (treedepth == 2){
- mp_treeWidget->setContextMenuPolicy(Qt::ActionsContextMenu);
m_currentlyselected=currentwidgetitem->text(1);
- } else {
- mp_treeWidget->setContextMenuPolicy(Qt::NoContextMenu);
+ mp_treeWidget->addAction(actionEditVolume);
+ mp_treeWidget->addAction(actionListJobsOnVolume);
}
}
}
/*
* Setup a context menu
+ * Made separate from populate so that it would not create context menu over and
+ * over as the tree is repopulated.
*/
void MediaList::createContextMenu()
{
- QAction *editAction = new QAction("Edit Properties", mp_treeWidget);
- QAction *listAction = new QAction("List Jobs On Media", mp_treeWidget);
- mp_treeWidget->addAction(editAction);
- mp_treeWidget->addAction(listAction);
- connect(editAction, SIGNAL(triggered()), this, SLOT(editMedia()));
- connect(listAction, SIGNAL(triggered()), this, SLOT(showJobs()));
mp_treeWidget->setContextMenuPolicy(Qt::ActionsContextMenu);
+ mp_treeWidget->addAction(actionRefreshMediaList);
+ connect(actionEditVolume, SIGNAL(triggered()), this, SLOT(editMedia()));
+ connect(actionListJobsOnVolume, SIGNAL(triggered()), this, SLOT(showJobs()));
connect(mp_treeWidget, SIGNAL(
currentItemChanged(QTreeWidgetItem *, QTreeWidgetItem *)),
this, SLOT(treeItemChanged(QTreeWidgetItem *, QTreeWidgetItem *)));
+ /* connect to the action specific to this pages class */
+ connect(actionRefreshMediaList, SIGNAL(triggered()), this,
+ SLOT(populateTree()));
+}
+
+/*
+ * Virtual function which is called when this page is visible on the stack
+ */
+void MediaList::currentStackItem()
+{
+ if(!m_populated) {
+ populateTree();
+ /* add context sensitive menu items specific to this classto the page
+ * selector tree. m_m_contextActions is QList of QActions, so this is
+ * only done once with the first population. */
+ m_contextActions.append(actionRefreshMediaList);
+ /* Create the context menu for the medialist tree */
+ createContextMenu();
+ m_populated=true;
+ }
}