X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=bacula%2Fsrc%2Fqt-console%2Fclients%2Fclients.cpp;h=37f288a94f0fb943a02cdd730846353ed68fa28e;hb=513c2c6cf9c7991273cf3330404575aafae6d8a2;hp=9f3f4a93b47ad7a301d9739567de23498c887008;hpb=b4b05279cdc3f910f725c001990ab8b6116edc03;p=bacula%2Fbacula diff --git a/bacula/src/qt-console/clients/clients.cpp b/bacula/src/qt-console/clients/clients.cpp index 9f3f4a93b4..37f288a94f 100644 --- a/bacula/src/qt-console/clients/clients.cpp +++ b/bacula/src/qt-console/clients/clients.cpp @@ -1,34 +1,23 @@ /* - Bacula® - The Network Backup Solution - - Copyright (C) 2007-2009 Free Software Foundation Europe e.V. - - The main author of Bacula is Kern Sibbald, with contributions from - many others, a complete list can be found in the file AUTHORS. - This program is Free Software; you can redistribute it and/or - modify it under the terms of version two of the GNU General Public - License as published by the Free Software Foundation and included - in the file LICENSE. - - This program is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - 02110-1301, USA. - - Bacula® is a registered trademark of Kern Sibbald. - The licensor of Bacula is the Free Software Foundation Europe - (FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich, - Switzerland, email:ftf@fsfeurope.org. + Bacula(R) - The Network Backup Solution + + Copyright (C) 2000-2016 Kern Sibbald + + The original author of Bacula is Kern Sibbald, with contributions + from many others, a complete list can be found in the file AUTHORS. + + You may use this file and others of this release according to the + license defined in the LICENSE file, which includes the Affero General + Public License, v3.0 ("AGPLv3") and some additional permissions and + terms pursuant to its AGPLv3 Section 7. + + This notice must be preserved when any source code is + conveyed and/or propagated. + + Bacula(R) is a registered trademark of Kern Sibbald. */ /* - * Version $Id$ - * * Clients Class * * Dirk Bartley, March 2007 @@ -43,7 +32,7 @@ #include "status/clientstat.h" #include "util/fmtwidgetitem.h" -Clients::Clients() +Clients::Clients() : Pages() { setupUi(this); m_name = tr("Clients"); @@ -55,11 +44,11 @@ Clients::Clients() m_populated = false; m_checkcurwidget = true; m_closeable = false; + m_firstpopulation = true; /* add context sensitive menu items specific to this classto the page * selector tree. m_contextActions is QList of QActions */ m_contextActions.append(actionRefreshClients); createContextMenu(); - dockPage(); } Clients::~Clients() @@ -67,7 +56,7 @@ Clients::~Clients() } /* - * The main meat of the class!! The function that querries the director and + * The main meat of the class!! The function that queries the director and * creates the widgets with appropriate values. */ void Clients::populateTable() @@ -127,6 +116,14 @@ void Clients::populateTable() foreach (QString resultline, results) { QStringList fieldlist = resultline.split("\t"); + if (fieldlist.size() < 5) { // Uname is checked after + Pmsg1(0, "Unexpected line %s\n", resultline.toUtf8().data()); + continue; + } + if (m_firstpopulation) { + settingsOpenStatus(fieldlist[0]); + } + TableItemFormatter item(*tableWidget, row); /* Iterate through fields in the record */ @@ -149,7 +146,11 @@ void Clients::populateTable() item.setNumericFld(col++, fld.next()); /* uname */ - item.setTextFld(col++, fld.next()); + if (fld.hasNext()) { + item.setTextFld(col++, fld.next()); + } else { + item.setTextFld(col++, ""); + } row++; } @@ -174,6 +175,7 @@ void Clients::populateTable() } } } + m_firstpopulation = false; } /* @@ -185,6 +187,9 @@ void Clients::PgSeltreeWidgetClicked() if(!m_populated) { populateTable(); } + if (!isOnceDocked()) { + dockPage(); + } } /* @@ -202,7 +207,6 @@ void Clients::tableItemChanged(QTableWidgetItem *currentwidgetitem, QTableWidget /* The Previous item */ if (previouswidgetitem) { /* avoid a segfault if first time */ tableWidget->removeAction(actionListJobsofClient); - tableWidget->removeAction(actionStatusClientInConsole); tableWidget->removeAction(actionStatusClientWindow); tableWidget->removeAction(actionPurgeJobs); tableWidget->removeAction(actionPrune); @@ -212,7 +216,6 @@ void Clients::tableItemChanged(QTableWidgetItem *currentwidgetitem, QTableWidget /* set a hold variable to the client name in case the context sensitive * menu is used */ tableWidget->addAction(actionListJobsofClient); - tableWidget->addAction(actionStatusClientInConsole); tableWidget->addAction(actionStatusClientWindow); tableWidget->addAction(actionPurgeJobs); tableWidget->addAction(actionPrune); @@ -239,8 +242,6 @@ void Clients::createContextMenu() SLOT(populateTable())); connect(actionListJobsofClient, SIGNAL(triggered()), this, SLOT(showJobs())); - connect(actionStatusClientInConsole, SIGNAL(triggered()), this, - SLOT(consoleStatusClient())); connect(actionStatusClientWindow, SIGNAL(triggered()), this, SLOT(statusClientWindow())); connect(actionPurgeJobs, SIGNAL(triggered()), this, @@ -319,6 +320,36 @@ void Clients::prune() */ void Clients::statusClientWindow() { - QTreeWidgetItem *parentItem = mainWin->getFromHash(this); - new ClientStat(m_currentlyselected, parentItem); + /* if one exists, then just set it current */ + bool found = false; + foreach(Pages *page, mainWin->m_pagehash) { + if (mainWin->currentConsole() == page->console()) { + if (page->name() == tr("Client Status %1").arg(m_currentlyselected)) { + found = true; + page->setCurrent(); + } + } + } + if (!found) { + QTreeWidgetItem *parentItem = mainWin->getFromHash(this); + new ClientStat(m_currentlyselected, parentItem); + } +} + +/* + * If first time, then check to see if there were status pages open the last time closed + * if so open + */ +void Clients::settingsOpenStatus(QString &client) +{ + QSettings settings(m_console->m_dir->name(), "bat"); + + settings.beginGroup("OpenOnExit"); + QString toRead = "ClientStatus_" + client; + if (settings.value(toRead) == 1) { + new ClientStat(client, mainWin->getFromHash(this)); + setCurrent(); + mainWin->getFromHash(this)->setExpanded(true); + } + settings.endGroup(); }