]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/qt-console/clients/clients.cpp
I could not get a few files to compile until I opened and saved these
[bacula/bacula] / bacula / src / qt-console / clients / clients.cpp
index c78cd37635b09d294290c65180e80be974d70f28..96f2d2eac067a1d92f4f77c394106ad1c3833f9c 100644 (file)
@@ -1,14 +1,14 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2000-2007 Free Software Foundation Europe e.V.
+   Copyright (C) 2007-2008 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 plus additions
-   that are listed in the file LICENSE.
+   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
@@ -27,7 +27,7 @@
 */
  
 /*
- *   Version $Id: client.cpp 4230 2007-02-21 20:07:37Z kerns $
+ *   Version $Id$
  *
  *  Clients Class
  *
 #include <QMenu>
 #include "bat.h"
 #include "clients/clients.h"
+#include "run/run.h"
 
 Clients::Clients()
 {
    setupUi(this);
-   m_name = "Clients";
+   m_name = tr("Clients");
    pgInitialize();
+   QTreeWidgetItem* thisitem = mainWin->getFromHash(this);
+   thisitem->setIcon(0,QIcon(QString::fromUtf8(":images/network-server.png")));
 
    /* mp_treeWidget, Storage Tree Tree Widget inherited from ui_client.h */
    m_populated = false;
    m_checkcurwidget = true;
    m_closeable = false;
-   setTitle();
+   /* 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()
@@ -65,24 +72,24 @@ void Clients::populateTree()
 {
    QTreeWidgetItem *clientItem, *topItem;
 
+   if (!m_console->preventInUseConnect())
+      return;
    m_checkcurwidget = false;
    mp_treeWidget->clear();
    m_checkcurwidget = true;
 
-   QStringList headerlist = (QStringList() << "Client Name" << "File Retention"
-       << "Job Retention" << "AutoPrune" << "ClientId" << "Uname" );
+   QStringList headerlist = (QStringList() << tr("Client Name") << tr("File Retention")
+       << tr("Job Retention") << tr("AutoPrune") << tr("ClientId") << tr("Uname") );
 
    topItem = new QTreeWidgetItem(mp_treeWidget);
-   topItem->setText(0, "Clients");
+   topItem->setText(0, tr("Clients"));
    topItem->setData(0, Qt::UserRole, 0);
    topItem->setExpanded(true);
 
    mp_treeWidget->setColumnCount(headerlist.count());
    mp_treeWidget->setHeaderLabels(headerlist);
-   /* This could be a log item */
-   //printf("In Clients::populateTree()\n");
 
-   foreach(QString clientName, m_console->client_list){
+   foreach (QString clientName, m_console->client_list){
       clientItem = new QTreeWidgetItem(topItem);
       clientItem->setText(0, clientName);
       clientItem->setData(0, Qt::UserRole, 1);
@@ -98,7 +105,9 @@ void Clients::populateTree()
 
       QStringList results;
       /* This could be a log item */
-      //printf("Clients query cmd : %s\n",query.toUtf8().data());
+      if (mainWin->m_sqlDebug) {
+         Pmsg1(000, "Clients query cmd : %s\n",query.toUtf8().data());
+      }
       if (m_console->sql_cmd(query, results)) {
          int resultCount = results.count();
          if (resultCount == 1){
@@ -122,6 +131,10 @@ void Clients::populateTree()
          }
       }
    }
+   /* Resize the columns */
+   for(int cnter=0; cnter<headerlist.size(); cnter++) {
+      mp_treeWidget->resizeColumnToContents(cnter);
+   }
 }
 
 /*
@@ -132,7 +145,6 @@ void Clients::PgSeltreeWidgetClicked()
 {
    if(!m_populated) {
       populateTree();
-      createContextMenu();
       m_populated=true;
    }
 }
@@ -151,6 +163,8 @@ void Clients::treeItemChanged(QTreeWidgetItem *currentwidgetitem, QTreeWidgetIte
          if (treedepth == 1){
             mp_treeWidget->removeAction(actionListJobsofClient);
             mp_treeWidget->removeAction(actionStatusClientInConsole);
+            mp_treeWidget->removeAction(actionPurgeJobs);
+            mp_treeWidget->removeAction(actionPrune);
          }
       }
 
@@ -161,6 +175,8 @@ void Clients::treeItemChanged(QTreeWidgetItem *currentwidgetitem, QTreeWidgetIte
          m_currentlyselected=currentwidgetitem->text(0);
          mp_treeWidget->addAction(actionListJobsofClient);
          mp_treeWidget->addAction(actionStatusClientInConsole);
+         mp_treeWidget->addAction(actionPurgeJobs);
+         mp_treeWidget->addAction(actionPrune);
       }
    }
 }
@@ -184,6 +200,10 @@ void Clients::createContextMenu()
                 SLOT(showJobs()));
    connect(actionStatusClientInConsole, SIGNAL(triggered()), this,
                 SLOT(consoleStatusClient()));
+   connect(actionPurgeJobs, SIGNAL(triggered()), this,
+                SLOT(consolePurgeJobs()));
+   connect(actionPrune, SIGNAL(triggered()), this,
+                SLOT(prune()));
 }
 
 /*
@@ -192,9 +212,8 @@ void Clients::createContextMenu()
  */
 void Clients::showJobs()
 {
-   QString emptymedia("");
    QTreeWidgetItem *parentItem = mainWin->getFromHash(this);
-   mainWin->createPageJobList(emptymedia, m_currentlyselected, parentItem);
+   mainWin->createPageJobList("", m_currentlyselected, "", "", parentItem);
 }
 
 /*
@@ -215,12 +234,39 @@ void Clients::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(actionRefreshClients);
       /* Create the context menu for the client tree */
-      createContextMenu();
       m_populated=true;
    }
 }
+
+/*
+ * Function responding to actionPurgeJobs 
+ */
+void Clients::consolePurgeJobs()
+{
+   if (QMessageBox::warning(this, "Bat",
+      tr("Are you sure you want to purge ??  !!!.\n"
+"The Purge command will delete associated Catalog database records from Jobs and"
+" Volumes without considering the retention period. Purge  works only on the"
+" Catalog database and does not affect data written to Volumes. This command can"
+" be dangerous because you can delete catalog records associated with current"
+" backups of files, and we recommend that you do not use it unless you know what"
+" you are doing.\n\n"
+" Is there any way I can get you to click Cancel here?  You really don't want to do"
+" this\n\n"
+      "Press OK to proceed with the purge operation?"),
+      QMessageBox::Ok | QMessageBox::Cancel)
+      == QMessageBox::Cancel) { return; }
+
+   QString cmd("purge jobs client=");
+   cmd += m_currentlyselected;
+   consoleCommand(cmd);
+}
+
+/*
+ * Function responding to actionPrune
+ */
+void Clients::prune()
+{
+   new prunePage("", m_currentlyselected);
+}