X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=bacula%2Fsrc%2Fqt-console%2Fmedialist%2Fmedialist.cpp;h=701c8c2e86f1087bddd2ca749b689a291442eb71;hb=ac4aaed4552c697e91e3fb799e9479b19b464272;hp=13c14d0fefd563f7dcb9e64e7c0f59ba1e951b50;hpb=ad7f765d6b31462fd154223359b6d16a57aa4a63;p=bacula%2Fbacula diff --git a/bacula/src/qt-console/medialist/medialist.cpp b/bacula/src/qt-console/medialist/medialist.cpp index 13c14d0fef..701c8c2e86 100644 --- a/bacula/src/qt-console/medialist/medialist.cpp +++ b/bacula/src/qt-console/medialist/medialist.cpp @@ -42,16 +42,17 @@ #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() @@ -69,28 +70,31 @@ void MediaList::populateTree() 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; @@ -123,31 +127,10 @@ void MediaList::populateTree() } } } -} - -/* - * 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; cnterresizeColumnToContents(cnter); + } } /* @@ -155,7 +138,7 @@ void MediaList::treeItemDoubleClicked(QTreeWidgetItem * /*item*/, int /*column*/ */ void MediaList::editMedia() { - MediaEdit* edit = new MediaEdit(mp_console, m_currentlyselected); + MediaEdit* edit = new MediaEdit(m_console, m_currentlyselected); edit->show(); } @@ -164,8 +147,9 @@ void MediaList::editMedia() */ 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); } /* @@ -174,37 +158,35 @@ void MediaList::showJobs() */ 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); } } } @@ -216,18 +198,15 @@ void MediaList::treeItemChanged(QTreeWidgetItem *currentwidgetitem, QTreeWidgetI */ 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(actionRepopulateMediaTree, SIGNAL(triggered()), this, + connect(actionRefreshMediaList, SIGNAL(triggered()), this, SLOT(populateTree())); } @@ -238,7 +217,11 @@ void MediaList::currentStackItem() { if(!m_populated) { populateTree(); - m_contextActions.append(actionRepopulateMediaTree); + /* 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; }