]> git.sur5r.net Git - bacula/bacula/commitdiff
bat: Put the content panel as a child of the Storage item
authorEric Bollengier <eric@eb.homelinux.org>
Wed, 12 Aug 2009 08:21:31 +0000 (10:21 +0200)
committerEric Bollengier <eric@eb.homelinux.org>
Wed, 12 Aug 2009 08:21:31 +0000 (10:21 +0200)
bat: use slot selection in update slots command and in label command

bacula/src/qt-console/storage/content.cpp
bacula/src/qt-console/storage/content.h
bacula/src/qt-console/storage/storage.cpp
bacula/src/qt-console/storage/storage.h

index 63c063ab65b0ed5b121b201b0446d50ee3246f1b..a8b6a120a44b2993af9b9c36dc19dd170ff9c528 100644 (file)
 //       use user selection to add slot= argument
 // 
 
-Content::Content(QString storage)
+Content::Content(QString storage, QTreeWidgetItem *parentWidget)
 {
    setupUi(this);
-   pgInitialize(tr("Storage Content"));
+   pgInitialize(storage, parentWidget);
    QTreeWidgetItem* thisitem = mainWin->getFromHash(this);
    thisitem->setIcon(0,QIcon(QString::fromUtf8(":images/package-x-generic.png")));
 
@@ -76,10 +76,49 @@ Content::Content(QString storage)
    setCurrent();
 }
 
+void table_get_selection(QTableWidget *table, QString &sel)
+{
+   QTableWidgetItem *item;
+   int current;
+
+   /* The QT selection returns each cell, so you
+    * have x times the same row number...
+    * We take only one instance
+    */
+   int s = table->rowCount();
+   bool *tab = (bool *)malloc(s * sizeof(bool));
+   memset(tab, 0, s); 
+
+   foreach (item, table->selectedItems()) {
+      current = item->row();
+      tab[current]=true;
+   }
+
+   sel += "=";
+
+   for(int i=0; i<s; i++) {
+      if (tab[i]) {
+         sel += table->item(i, 0)->text();
+         sel += ",";
+      }
+   }
+   sel.chop(1);                 // remove trailing , or useless =
+   free(tab);
+}
+
 /* Label Media populating current storage by default */
 void Content::consoleLabelStorage()
 {
-   new labelPage(m_currentStorage);
+   QString sel;
+   table_get_selection(tableContent, sel);
+   if (sel == "") {
+      new labelPage(m_currentStorage);
+   } else {
+      QString cmd = "label barcodes slots";
+      cmd += sel;
+      cmd += " storage=" + m_currentStorage;
+      consoleCommand(cmd);
+   }
 }
 
 /* Mount currently selected storage */
@@ -230,10 +269,19 @@ void Content::treeItemChanged(QTreeWidgetItem *, QTreeWidgetItem *)
 /* Update Slots */
 void Content::consoleUpdateSlots()
 {
-   // TODO: get selected slots
-   QString cmd("update slots storage=");
-   cmd += m_currentStorage;
+   QString sel = "";
+   table_get_selection(tableContent, sel);
+   
+   QString cmd("update slots");
+   if (sel != "") {
+      cmd += sel;
+   }
+   cmd += " storage=" + m_currentStorage;
+
+   Pmsg1(0, "cmd=%s\n", cmd.toUtf8().data());
+
    consoleCommand(cmd);
+   populateContent();
 }
 
 /* Release a tape in the drive */
index b4cf68bc7593dc88e3b47f1072f6f01643da4b82..94eb35ed088e226b5e011742cacd38ca5beceacd 100644 (file)
@@ -38,7 +38,7 @@ class Content : public Pages, public Ui::ContentForm
    Q_OBJECT 
 
 public:
-   Content(QString storage);
+   Content(QString storage, QTreeWidgetItem *parentWidget);
 //   virtual void PgSeltreeWidgetClicked();
    virtual void currentStackItem();
 
index 1e5cd6e8a3f10dd533a372b063d83b09b550037c..2f26b550fdcb6ac345807787a329cab76e6c7f24 100644 (file)
@@ -335,7 +335,8 @@ void Storage::createContextMenu()
 void Storage::contentWindow()
 {
    if (m_currentStorage != "" && m_currentAutoChanger) { 
-      new Content(m_currentStorage);
+      QTreeWidgetItem *parentItem = mainWin->getFromHash(this);
+      new Content(m_currentStorage, parentItem);
    }
 }
 
index 7facc1ad3e1a825226fb74ac76bafd7f21a87ff8..e08e229ce0efe804d43f8c89e1dd26271967192c 100644 (file)
@@ -76,4 +76,6 @@ private:
    QTreeWidgetItem *m_topItem;
 };
 
+void table_get_selection(QTableWidget *table, QString &sel);
+
 #endif /* _STORAGE_H_ */