]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/qt-console/medialist/medialist.cpp
Change copyright as per agreement with FSFE
[bacula/bacula] / bacula / src / qt-console / medialist / medialist.cpp
index f48d287ad8dc7a939e1d295c6994590d15b43e42..b8a255f1a57984508f4b732b80b35e2317c0c3af 100644 (file)
@@ -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$
- *
  *  MediaList Class
  *
  *   Dirk Bartley, March 2007
 #include <math.h>
 #include "medialist.h"
 #include "mediaedit/mediaedit.h"
+#include "mediainfo/mediainfo.h"
 #include "joblist/joblist.h"
 #include "relabel/relabel.h"
 #include "run/run.h"
 #include "util/fmtwidgetitem.h"
 
-MediaList::MediaList()
+MediaList::MediaList() : Pages()
 {
    setupUi(this);
-   m_name = tr("Media");
+   m_name = tr("Pools");
    pgInitialize();
    QTreeWidgetItem* thisitem = mainWin->getFromHash(this);
    thisitem->setIcon(0,QIcon(QString::fromUtf8(":images/cartridge.png")));
@@ -75,8 +65,11 @@ MediaList::~MediaList()
  */
 void MediaList::populateTree()
 {
-   if (m_populated)
+   QTreeWidgetItem *pooltreeitem = NULL;
+
+   if (m_populated) {
       writeExpandedSettings();
+   }
    m_populated = true;
 
    Freeze frz(*mp_treeWidget); /* disable updating*/
@@ -86,7 +79,7 @@ void MediaList::populateTree()
       << tr("Jobs") << tr("Retention") << tr("Media Type") << tr("Slot") << tr("Use Duration")
       << tr("Max Jobs") << tr("Max Files") << tr("Max Bytes") << tr("Recycle")
       << tr("Last Written") << tr("First Written") << tr("Read Time")
-      << tr("Write Time") << tr("Recycle Count") << tr("Recycle Pool") << tr("Scratch Pool"));
+      << tr("Write Time") << tr("Recycle Count") << tr("Recycle Pool"));
 
    m_checkcurwidget = false;
    mp_treeWidget->clear();
@@ -103,7 +96,6 @@ void MediaList::populateTree()
    settings.beginGroup("MediaListTreeExpanded");
    QString query;
 
-   QTreeWidgetItem *pooltreeitem;
 
    /* Comma separated list of pools first */
    bool first = true;
@@ -132,11 +124,10 @@ void MediaList::populateTree()
          " Media.FirstWritten AS FirstWritten,"
          " (VolReadTime/1000000) AS ReadTime, (VolWriteTime/1000000) AS WriteTime,"
          " RecycleCount AS ReCyCount,"
-         " RecPool.Name AS RecyclePool, ScrPool.Name AS ScratchPool"
+         " RecPool.Name AS RecyclePool"
          " FROM Media"
          " JOIN Pool ON (Media.PoolId=Pool.PoolId)"
          " LEFT OUTER JOIN Pool AS RecPool ON (Media.RecyclePoolId=RecPool.PoolId)"
-         " LEFT OUTER JOIN Pool AS ScrPool ON (Media.ScratchPoolId=ScrPool.PoolId)"
          " WHERE ";
       query += " Pool.Name IN (" + pool_comsep + ")";
       query += " ORDER BY Pool.Name, Media";
@@ -167,9 +158,10 @@ void MediaList::populateTree()
                pooltreeitem->setExpanded(true);
             }
 
-            if (fieldlist.size() < 18)
+            if (fieldlist.size() < 21) { // Handle recyclepool specifically, and pool is already removed
+               Pmsg2(000, "Unexpected line %s %d", resultline.toUtf8().data(), fieldlist.size());
                continue; // some fields missing, ignore row
-
+            }
             int index = 0;
             TreeItemFormatter mediaitem(*pooltreeitem, 2);
   
@@ -245,10 +237,11 @@ void MediaList::populateTree()
             mediaitem.setNumericFld(index++, fld.next()); 
 
             /* recycle pool */
-            mediaitem.setTextFld(index++, fld.next()); 
-
-            /* Scratch pool */
-            mediaitem.setTextFld(index++, fld.next()); 
+            if (fld.hasNext()) {
+               mediaitem.setTextFld(index++, fld.next());
+            } else {
+               mediaitem.setTextFld(index++, "");
+            }
 
          } /* foreach resultline */
          counter += 1;
@@ -279,6 +272,17 @@ void MediaList::showJobs()
    mainWin->createPageJobList(m_currentVolumeName, "", "", "", parentItem);
 }
 
+/*
+ * Called from the signal of the context sensitive menu!
+ */
+void MediaList::viewVolume()
+{
+   QTreeWidgetItem *parentItem = mainWin->getFromHash(this);
+   MediaInfo* view = new MediaInfo(parentItem, m_currentVolumeName);
+   connect(view, SIGNAL(destroyed()), this, SLOT(populateTree()));
+
+}
+
 /*
  * When the treeWidgetItem in the page selector tree is singleclicked, Make sure
  * The tree has been populated.
@@ -289,7 +293,9 @@ void MediaList::PgSeltreeWidgetClicked()
       populateTree();
       createContextMenu();
    }
-   dockPage();
+   if (!isOnceDocked()) {
+      dockPage();
+   }
 }
 
 /*
@@ -333,6 +339,7 @@ void MediaList::treeItemChanged(QTreeWidgetItem *currentwidgetitem, QTreeWidgetI
 void MediaList::createContextMenu()
 {
    mp_treeWidget->setContextMenuPolicy(Qt::ActionsContextMenu);
+   connect(mp_treeWidget, SIGNAL(itemDoubleClicked(QTreeWidgetItem *, int)), this, SLOT(viewVolume()));
    connect(actionEditVolume, SIGNAL(triggered()), this, SLOT(editVolume()));
    connect(actionListJobsOnVolume, SIGNAL(triggered()), this, SLOT(showJobs()));
    connect(actionDeleteVolume, SIGNAL(triggered()), this, SLOT(deleteVolume()));