]> git.sur5r.net Git - bacula/bacula/commitdiff
dhb This solves the really not elegant at all way to determine what tree item
authorDirk H Bartley <dbartley@schupan.com>
Sat, 24 Mar 2007 20:05:09 +0000 (20:05 +0000)
committerDirk H Bartley <dbartley@schupan.com>
Sat, 24 Mar 2007 20:05:09 +0000 (20:05 +0000)
     goes with what stacked widget item.  ( When a tree item is clicked )
     This begins the framework for being able to add and destroy tree widget
     items and associated stacked widget items on the fly.
     I still need to fix a few items such as the ability to close a window and
     never get it back, ... ever.

git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@4407 91ce42f0-d328-0410-95d8-f526ca767f89

bacula/src/qt-console/batstack.cpp
bacula/src/qt-console/batstack.h
bacula/src/qt-console/mainwin.cpp
bacula/src/qt-console/mainwin.h
bacula/src/qt-console/medialist/medialist.cpp
bacula/src/qt-console/medialist/medialist.h
bacula/src/qt-console/restore/brestore.cpp
bacula/src/qt-console/restore/restore.cpp
bacula/src/qt-console/restore/restore.h

index d144ea4b32a557371a69321ba59c989742507ee8..369f07e44010d2b5cca07f4d2929a6e25d80ed3f 100644 (file)
@@ -64,3 +64,7 @@ void BatStack::Togglestack()
       AddTostack();
    }
 }
+
+void BatStack::SetBSTreeWidgetItem(QTreeWidgetItem *treeItem){
+   m_treeItem=treeItem;
+}
index beb086d46999145dcedc05678dd8142de09b9532..a21a04b87b1d6a5d0b029c58066a32d8ceb04d4f 100644 (file)
  */
 
 #include <QtGui>
+#include <QList>
 
 class BatStack : public QWidget
 {
-//   Q_OBJECT
-
 public:
    void AddTostack();
    void RemoveFromstack();
    void Togglestack();
+   void SetBSTreeWidgetItem(QTreeWidgetItem *treeItem);
    QStackedWidget *m_parent;
-//   BatStack();
+   QTreeWidgetItem *m_treeItem;
 
 private:
    bool m_stacked;
-//   int m_PgSelTreeIndex;
 };
+
 #endif /* _BATSTACK_H_ */
index 3009edf102302d016d58b9b9b8d69f337d846387..fa81992be0426d1e06187559ab75c13664bd54a2 100644 (file)
@@ -65,39 +65,56 @@ MainWin::MainWin(QWidget *parent) : QMainWindow(parent)
 void MainWin::createPages()
 {
    DIRRES *dir;
-
    QTreeWidgetItem *item, *topItem;
-   m_console = new Console(stackedWidget);
-   m_console->AddTostack();
-
-   m_brestore = new bRestore(stackedWidget);
-   m_brestore->AddTostack();
-
-   m_medialist = new MediaList(stackedWidget, m_console);
-   m_medialist->AddTostack();
 
+   /* Create console tree stacked widget item */
+   m_console = new Console(stackedWidget);
+   /* Console is special needs director*/
    /* Just take the first Director */
    LockRes();
    dir = (DIRRES *)GetNextRes(R_DIRECTOR, NULL);
    m_console->setDirRes(dir);
    UnlockRes();
-
+   /* The top tree item representing the director */
    topItem = createTopPage(dir->name(), false);
    topItem->setIcon(0, QIcon(QString::fromUtf8("images/server.png")));
-
+   /* Create Tree Widget Item */
    item = createPage("Console", topItem, true);
+   /* Append to bstacklist */
+   m_bstacklist.append(m_console);
+   /* FIXME Associate tree item with console, may not be needed. */
    m_console->setTreeItem(item);
+   /* Set BatStack m_treeItem */
+   m_console->SetBSTreeWidgetItem(item);
    QBrush redBrush(Qt::red);
    item->setForeground(0, redBrush);
 
+   /* Now with the console created, on with the rest, these are easy */
+   /* All should be
+ * 1. create tree widget item
+ * 2. create object passing pointer to tree widget item (modified constructors to pass QTreeWidget pointers)
+ * 3. append to stacklist  */ 
+
+   /* brestore */
    item = createPage("brestore", topItem, true);
+   m_brestore = new bRestore(stackedWidget,item);
+   m_bstacklist.append(m_brestore);
+
+   /* lastly for now, the medialist */
    item = createPage("Storage Tree", topItem, true);
+   m_medialist = new MediaList(stackedWidget, m_console, item);
+   m_bstacklist.append(m_medialist);
 
-   treeWidget->expandItem(topItem);
+   /* Iterate through and add to the stack */
+   for ( QList<BatStack*>::iterator bstackItem = m_bstacklist.begin(); bstackItem != m_bstacklist.end(); ++bstackItem ) {
+      (*bstackItem)->AddTostack();
+   }
 
+   treeWidget->expandItem(topItem);
    stackedWidget->setCurrentIndex(0);
 }
 
+/* FIXME These Two are not needed any more because UserRole is not used. */
 /* Create a root Tree Widget */
 QTreeWidgetItem *MainWin::createTopPage(char *name, bool canDisplay)
 {
@@ -111,7 +128,7 @@ QTreeWidgetItem *MainWin::createTopPage(char *name, bool canDisplay)
    return item;
 }
 
-/* Create A Tree Widget Item Representing a Page */
+/* Create A Tree Widget Item which will be associated with a Page in the stacked widget */
 QTreeWidgetItem *MainWin::createPage(char *name, QTreeWidgetItem *parent, bool canDisplay)
 {
    QTreeWidgetItem *item = new QTreeWidgetItem(parent);
@@ -124,7 +141,6 @@ QTreeWidgetItem *MainWin::createPage(char *name, QTreeWidgetItem *parent, bool c
    return item;
 }
 
-
 /*
  * Handle up and down arrow keys for the command line
  *  history.
@@ -218,21 +234,15 @@ void MainWin::readSettings()
 
 void MainWin::treeItemClicked(QTreeWidgetItem *item, int column)
 {
-   /* There just has to be a more elegant way of doing this
- * as more and more pages get added, this could get realllly long */
-   int treeindex = item->data(column, Qt::UserRole).toInt();
-   int stackindex=-1;
-   if( treeindex == 0 ) {
-     stackindex=stackedWidget->indexOf( m_console );
-   }
-   if( treeindex == 1 ) {
-     stackindex=stackedWidget->indexOf( m_brestore );
-   }
-   if( treeindex == 2 ) {
-     stackindex=stackedWidget->indexOf( m_medialist );
-   }
-   if( stackindex >= 0 ){
-      stackedWidget->setCurrentIndex(stackindex);
+   /* Iterate through and find the tree widget item clicked */
+   column+=0;
+   for ( QList<BatStack*>::iterator bstackItem = m_bstacklist.begin(); bstackItem != m_bstacklist.end(); ++bstackItem ) {
+      if ( item == (*bstackItem)->m_treeItem ) {
+         int stackindex=stackedWidget->indexOf( *bstackItem );
+         if( stackindex >= 0 ){
+            stackedWidget->setCurrentIndex(stackindex);
+         }
+      }
    }
 }
 
@@ -240,17 +250,12 @@ void MainWin::treeItemClicked(QTreeWidgetItem *item, int column)
  */
 void MainWin::treeItemDoubleClicked(QTreeWidgetItem *item, int column)
 {
-   /* There just has to be a more elegant way of doing this
- * as more and more pages get added, this could get realllly long */
-   int treeindex = item->data(column, Qt::UserRole).toInt();
-   if( treeindex == 0 ) {
-     m_console->Togglestack();
-   }
-   if( treeindex == 1 ) {
-     m_brestore->Togglestack();
-   }
-   if( treeindex == 2 ) {
-     m_medialist->Togglestack();
+   /* Iterate through and find the tree widget item double clicked */
+   column+=0;
+   for ( QList<BatStack*>::iterator bstackItem = m_bstacklist.begin(); bstackItem != m_bstacklist.end(); ++bstackItem ) {
+      if ( item == (*bstackItem)->m_treeItem ) {
+         (*bstackItem)->Togglestack();
+      }
    }
 }
 
index e44a54bc427ffb93fef9aaeac84d46b277339da6..61082e5103c34ac3f06a51242f673f23578ff4d7 100644 (file)
@@ -38,6 +38,7 @@
 #define _MAINWIN_H_
 
 #include <QtGui>
+#include <QList>
 #include "ui_main.h"
 #include "label/label.h"
 #include "run/run.h"
@@ -84,6 +85,8 @@ private:
    Console *m_console;
    bRestore *m_brestore;
    MediaList *m_medialist;
+   BatStack *m_bstack;
+   QList<BatStack*> m_bstacklist;
    QStringList m_cmd_history;
    int m_cmd_last;
    int m_pages;
index 9189855f00c91fff78a940f477c3fd9bf2acc2c9..ad8af3950acf1d893ea8800c5015091d80532e9c 100644 (file)
 #include <QMenu>
 //#include <QSize>
 
-MediaList::MediaList(QStackedWidget *parent, Console *console)
+MediaList::MediaList(QStackedWidget *parent, Console *console, QTreeWidgetItem *treeItem)
 {
    setupUi(this);
    m_parent=parent;
 //   AddTostack();
    m_poollist = new QStringList();
 
-   m_treeWidget = treeWidget;   /* our medialist screen */
+   m_treeWidget = treeWidget;   /* our Storage Tree Tree Widget */
    m_console = console;
+   m_treeItem = treeItem;
    createConnections();
    m_popupmedia="";
 }
@@ -78,7 +79,7 @@ void MediaList::populateTree()
    }
    for ( QStringList::Iterator poolitem = m_poollist->begin(); poolitem != m_poollist->end(); ++poolitem ) {
       treeitem = new QTreeWidgetItem(topItem);
-      m_console->setTreeItem(treeitem);
+      //m_console->setTreeItem(treeitem);
       poolitem->replace(QRegExp("\n"), "");
       treeitem->setText(0, poolitem->toUtf8().data());
       treeitem->setData(0, Qt::UserRole, 1);
index 73a120b148466b73c37ee8f9606e19b01123d65d..bb01cab5bfd148896cd14c8bbe911a4b0135c967 100644 (file)
@@ -44,7 +44,7 @@ class MediaList : public BatStack, public Ui::MediaListForm
    Q_OBJECT 
 
 public:
-   MediaList(QStackedWidget *parent,Console *console);
+   MediaList(QStackedWidget *parent,Console *console, QTreeWidgetItem *treeItem);
    void populateTree();
 
 public slots:
index 5c339756a24f344fdad98cf47e614fa39b44200f..94d79ecbefb6c25e292ad54d9cbc3f2c8ddf1deb 100644 (file)
 #include "bat.h"
 #include "restore.h"
 
-bRestore::bRestore(QStackedWidget *parent)
+bRestore::bRestore(QStackedWidget *parent, QTreeWidgetItem *treeItem)
 {
    (void)parent;
    setupUi(this);
    m_parent=parent;
+   m_treeItem = treeItem;
 }
index f02aa1cd2344e9192cb2d223edb643a688d0a2f5..039db0c76837728b4e4fc39f6f3f58d97934dfb1 100644 (file)
@@ -38,7 +38,7 @@
 #include "bat.h"
 #include "restore.h"
 
-restoreDialog::restoreDialog(Console *console)
+restoreDialog::restoreDialog(Console *console )
 {
    QStringList titles;
 
index a2c585e4b8f1bbf53b77031de087199d5575ce50..91f29252db1581499bfa92ba69636eae220ff983 100644 (file)
@@ -97,7 +97,7 @@ class bRestore : public BatStack, public Ui::bRestoreForm
    Q_OBJECT 
 
 public:
-   bRestore(QStackedWidget *parent);
+   bRestore(QStackedWidget *parent, QTreeWidgetItem *treeItem);
 
 public slots: