]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/qt-console/jobs/jobs.cpp
Merge branch 'master' into basejobv3
[bacula/bacula] / bacula / src / qt-console / jobs / jobs.cpp
index 02faf498399c74984b53e6b9246598345ee1ebe3..9029eef9b1d82b836f5365e6a167784504806119 100644 (file)
@@ -1,7 +1,7 @@
 /*
    Bacula® - The Network Backup Solution
 
-   Copyright (C) 2007-2008 Free Software Foundation Europe e.V.
+   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.
@@ -20,7 +20,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   Bacula® is a registered trademark of John Walker.
+   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.
@@ -56,7 +56,9 @@ Jobs::Jobs()
     * selector tree. m_contextActions is QList of QActions */
    m_contextActions.append(actionRefreshJobs);
    createContextMenu();
-   dockPage();
+
+   connect(tableWidget, SIGNAL(itemDoubleClicked(QTableWidgetItem*)),
+           this, SLOT(runJob()));
 }
 
 Jobs::~Jobs()
@@ -69,10 +71,12 @@ Jobs::~Jobs()
  */
 void Jobs::populateTable()
 {
-   QBrush blackBrush(Qt::black);
+   m_populated = true;
+   mainWin->waitEnter();
 
-   if (!m_console->preventInUseConnect())
-      return;
+   Freeze frz(*tableWidget); /* disable updating*/
+
+   QBrush blackBrush(Qt::black);
    m_checkcurwidget = false;
    tableWidget->clear();
    m_checkcurwidget = true;
@@ -98,20 +102,19 @@ void Jobs::populateTable()
       job_defaults job_defs;
       job_defs.job_name = jobName;
       if (m_console->get_job_defaults(job_defs)) {
-        int col = 0;
-        TableItemFormatter jobsItem(*tableWidget, row);
-        jobsItem.setTextFld(col++, jobName); 
-        jobsItem.setTextFld(col++, job_defs.pool_name);
-        jobsItem.setTextFld(col++, job_defs.messages_name);
-        jobsItem.setTextFld(col++, job_defs.client_name);
-        jobsItem.setTextFld(col++, job_defs.store_name);
-        jobsItem.setTextFld(col++, job_defs.level);
-        jobsItem.setTextFld(col++, job_defs.type);
-        jobsItem.setTextFld(col++, job_defs.fileset_name);
-        jobsItem.setTextFld(col++, job_defs.catalog_name);
-        jobsItem.setBoolFld(col++, job_defs.enabled);
-        jobsItem.setTextFld(col++, job_defs.where);
-
+         int col = 0;
+         TableItemFormatter jobsItem(*tableWidget, row);
+         jobsItem.setTextFld(col++, jobName); 
+         jobsItem.setTextFld(col++, job_defs.pool_name);
+         jobsItem.setTextFld(col++, job_defs.messages_name);
+         jobsItem.setTextFld(col++, job_defs.client_name);
+         jobsItem.setTextFld(col++, job_defs.store_name);
+         jobsItem.setTextFld(col++, job_defs.level);
+         jobsItem.setTextFld(col++, job_defs.type);
+         jobsItem.setTextFld(col++, job_defs.fileset_name);
+         jobsItem.setTextFld(col++, job_defs.catalog_name);
+         jobsItem.setBoolFld(col++, job_defs.enabled);
+         jobsItem.setTextFld(col++, job_defs.where);
       }
       row++;
    }
@@ -122,6 +125,12 @@ void Jobs::populateTable()
    /* Resize rows and columns */
    tableWidget->resizeColumnsToContents();
    tableWidget->resizeRowsToContents();
+
+   /* make read only */
+   tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
+
+   mainWin->waitExit();
+   dockPage();
 }
 
 /*
@@ -132,7 +141,6 @@ void Jobs::PgSeltreeWidgetClicked()
 {
    if(!m_populated) {
       populateTable();
-      m_populated=true;
    }
 }
 
@@ -143,7 +151,7 @@ void Jobs::PgSeltreeWidgetClicked()
 void Jobs::tableItemChanged(QTableWidgetItem *currentwidgetitem, QTableWidgetItem *previouswidgetitem )
 {
    /* m_checkcurwidget checks to see if this is during a refresh, which will segfault */
-   if (m_checkcurwidget) {
+   if (m_checkcurwidget && currentwidgetitem) {
       /* The Previous item */
       if (previouswidgetitem) { /* avoid a segfault if first time */
          foreach(QAction* jobAction, tableWidget->actions()) {
@@ -159,6 +167,7 @@ void Jobs::tableItemChanged(QTableWidgetItem *currentwidgetitem, QTableWidgetIte
       if (m_currentlyselected.length() != 0) {
          /* set a hold variable to the client name in case the context sensitive
           * menu is used */
+         tableWidget->addAction(actionRefreshJobs);
          tableWidget->addAction(actionConsoleListFiles);
          tableWidget->addAction(actionConsoleListVolumes);
          tableWidget->addAction(actionConsoleListNextVolume);
@@ -201,10 +210,9 @@ void Jobs::createContextMenu()
  */
 void Jobs::currentStackItem()
 {
-   populateTable();
    if(!m_populated) {
       /* Create the context menu for the client table */
-      m_populated=true;
+      populateTable();
    }
 }