]> git.sur5r.net Git - bacula/bacula/commitdiff
Use a hash QHash<QTreeWidgetItem*,Pages*> instead of QHash<int,Pages*> m_pagehash
authorDirk H Bartley <dbartley@schupan.com>
Mon, 9 Apr 2007 01:47:56 +0000 (01:47 +0000)
committerDirk H Bartley <dbartley@schupan.com>
Mon, 9 Apr 2007 01:47:56 +0000 (01:47 +0000)
This way, the integer stored in QT::UserRole is not needed at all.  The hash
directly allows for conversion from a known treeWidgetItem to a page.  Since
the integer is not required to be passed and held in subclasses of the pages
class, clean up the constructors of Subclasses to not get the integer value
and set back to nearly like they were before.

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

bacula/src/qt-console/console/console.cpp
bacula/src/qt-console/console/console.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/pages.cpp
bacula/src/qt-console/pages.h
bacula/src/qt-console/restore/brestore.cpp
bacula/src/qt-console/restore/restore.h

index e37843173dd21601ed383c1689f35889b4311177..2dc8b1b73970ddcbb84da6701c7644d7c26e2059 100644 (file)
@@ -118,7 +118,7 @@ void Console::connect()
       /* Update page selector to green to indicate that Console is connected */
       mainWin->actionConnect->setIcon(QIcon(QString::fromUtf8("images/connected.png")));
       QBrush greenBrush(Qt::green);
-      m_treeItem->setForeground(0, greenBrush);
+      m_consoleItem->setForeground(0, greenBrush);
    }
 
    jcr.dir_bsock = m_sock;
@@ -416,7 +416,7 @@ void Console::write_dir(const char *msg)
       mainWin->set_status(" Director not connected. Click on connect button.");
       mainWin->actionConnect->setIcon(QIcon(QString::fromUtf8("images/disconnected.png")));
       QBrush redBrush(Qt::red);
-      m_treeItem->setForeground(0, redBrush);
+      m_consoleItem->setForeground(0, redBrush);
       m_at_prompt = false;
    }
 }
@@ -570,7 +570,7 @@ int Console::read()
          m_sock = NULL;
          mainWin->actionConnect->setIcon(QIcon(QString::fromUtf8("images/disconnected.png")));
          QBrush redBrush(Qt::red);
-         m_treeItem->setForeground(0, redBrush);
+         m_consoleItem->setForeground(0, redBrush);
          m_notifier->setEnabled(false);
          delete m_notifier;
          m_notifier = NULL;
@@ -610,27 +610,12 @@ void Console::notify(bool enable)
    m_notifier->setEnabled(enable);   
 }
 
+void Console::setTreeItem(QTreeWidgetItem *item)
+{
+   m_consoleItem = item;
+}
+
 void Console::setDirRes(DIRRES *dir) 
 { 
    m_dir = dir;
 }
-#ifdef xxx
-******FIXME******  Just Delete me
-void Console::dosql(QString* sqlcmd, QStringList& strlstret)
-{
-   int stat;
-   /* don't effect the string coming in */
-   QString cmd(*sqlcmd);
-
-   cmd = ".sql \"" + cmd + "\"";
-
-   write_dir(cmd.toUtf8().data());
-   while ((stat=read()) > 0) {
-      QString line = msg();
-      QRegExp regex("^Using Catalog");
-      if ( regex.indexIn(line) < 0 ){
-         strlstret.append(line);
-      }
-   }
-}
-#endif
index d25ceb15245b1147994cd3e319d093ffc321df04..e3274359f4218c6450db6853c60cbf49de6b26c4 100644 (file)
@@ -94,6 +94,7 @@ public:
    void beginNewCommand();
    void displayToPrompt();
    void discardToPrompt();
+   void setTreeItem(QTreeWidgetItem *item);
    void setDirRes(DIRRES *dir);
 
    QStringList job_list;
@@ -123,6 +124,7 @@ private:
    bool m_at_prompt;
    QSocketNotifier *m_notifier;
    QTextCursor *m_cursor;
+   QTreeWidgetItem *m_consoleItem;
    bool m_api_set;
    bool m_messages_pending;
    QTimer *m_timer;
index 3fd51f1b31e719202c682e4affa20b5fce1f7a3b..c3b569000d505726f5094c511c1b8fc298f04a38 100644 (file)
@@ -47,7 +47,6 @@ MainWin::MainWin(QWidget *parent) : QMainWindow(parent)
    treeWidget->setHeaderLabel("Select Page");
    treeWidget->setContextMenuPolicy(Qt::ActionsContextMenu);
 
-   m_pages = 0;
    createPages();
 
    resetFocus();
@@ -78,16 +77,15 @@ void MainWin::createPages()
 
    /* The top tree item representing the director */
    topItem = createTopPage(dir->name());
-   topItem->setData(0, Qt::UserRole, QVariant(m_pages));
-   m_pages++;
    topItem->setIcon(0, QIcon(QString::fromUtf8("images/server.png")));
 
    /* Create Tree Widget Item */
    item = createPage("Console", topItem);
-   m_console->SetPassedValues(stackedWidget, item, m_pages );
+   m_console->setTreeItem(item);
 
    /* Append to pagelist */
-   m_pagehash.insert(m_pages, m_console);
+   m_pagehash.insert(item, m_console);
+   m_widgethash.insert(m_console, item);
 
    /* Set Color of treeWidgetItem for the console
    * It will be set to gree in the console class if the connection is made.
@@ -104,17 +102,17 @@ void MainWin::createPages()
     */
 
    /* brestore */
-   m_pages++;
    item=createPage("brestore", topItem);
-   bRestore* brestore=new bRestore(stackedWidget, item, m_pages);
-   m_pagehash.insert(m_pages, brestore);
+   bRestore* brestore=new bRestore(stackedWidget);
+   m_pagehash.insert(item, brestore);
+   m_widgethash.insert(brestore, item);
 
 
    /* lastly for now, the medialist */
-   m_pages++;
    item=createPage("Media", topItem );
-   MediaList* medialist=new MediaList(stackedWidget, m_console, item, m_pages);
-   m_pagehash.insert(m_pages, medialist);
+   MediaList* medialist=new MediaList(stackedWidget, m_console);
+   m_pagehash.insert(item, medialist);
+   m_widgethash.insert(medialist, item);
 
    /* Iterate through and add to the stack */
    foreach(Pages *page, m_pagehash)
@@ -248,14 +246,11 @@ void MainWin::readSettings()
  * This subroutine is called with an item in the Page Selection window
  *   is clicked 
  */
-void MainWin::treeItemClicked(QTreeWidgetItem *item, int column)
+void MainWin::treeItemClicked(QTreeWidgetItem *item, int /*column*/)
 {
-   /* Use tree item's Qt::UserRole to get treeindex */
-   int treeindex = item->data(column, Qt::UserRole).toInt();
-
    /* Is this one of the first level pages */
-   if( m_pagehash.value(treeindex) ){
-      Pages* page = m_pagehash.value(treeindex);
+   if( m_pagehash.value(item) ){
+      Pages* page = m_pagehash.value(item);
       int stackindex=stackedWidget->indexOf(page);
 
       if( stackindex >= 0 ){
@@ -263,9 +258,7 @@ void MainWin::treeItemClicked(QTreeWidgetItem *item, int column)
          stackedWidget->setCurrentWidget(page);
       }
       /* run the virtual function in case this class overrides it */
-      if( treeindex > 0 ){
-         page->PgSeltreeWidgetClicked();
-      }
+      page->PgSeltreeWidgetClicked();
    }
 }
 
@@ -282,15 +275,12 @@ void MainWin::treeItemDoubleClicked(QTreeWidgetItem * /*item*/, int /*column*/)
  */
 void MainWin::treeItemChanged(QTreeWidgetItem *currentitem, QTreeWidgetItem *previousitem)
 {
-   int treeindex;
    /* The Previous item */
 
-   /* Use tree item's Qt::UserRole to get treeindex now for the previousitem */
    if ( previousitem ){
-      treeindex = previousitem->data(0, Qt::UserRole).toInt();
       /* Is this one of the first level pages */
-      if( m_pagehash.value(treeindex) ){
-         Pages* page = m_pagehash.value(treeindex);
+      if( m_pagehash.value(previousitem) ){
+         Pages* page = m_pagehash.value(previousitem);
          treeWidget->removeAction(actionToggleDock);
          foreach( QAction* pageaction, page->m_contextActions ){
             treeWidget->removeAction(pageaction);
@@ -298,12 +288,9 @@ void MainWin::treeItemChanged(QTreeWidgetItem *currentitem, QTreeWidgetItem *pre
       }
    }
 
-   /* Use tree item's Qt::UserRole to get treeindex */
-   treeindex = currentitem->data(0, Qt::UserRole).toInt();
-
    /* Is this one of the first level pages */
-   if( m_pagehash.value(treeindex) ){
-      Pages* page = m_pagehash.value(treeindex);
+   if( m_pagehash.value(currentitem) ){
+      Pages* page = m_pagehash.value(currentitem);
       int stackindex = stackedWidget->indexOf(page);
    
       /* Is this page currently on the stack */
@@ -406,12 +393,9 @@ void MainWin::toggleDockContextWindow()
 {
    QTreeWidgetItem *currentitem = treeWidget->currentItem();
    
-   /* Use tree item's Qt::UserRole to get treeindex */
-   int treeindex = currentitem->data(0, Qt::UserRole).toInt();
-
    /* Is this one of the first level pages */
-   if( m_pagehash.value(treeindex) ){
-      Pages* page = m_pagehash.value(treeindex);
+   if( m_pagehash.value(currentitem) ){
+      Pages* page = m_pagehash.value(currentitem);
       page->togglePageDocking();
       if ( page->isDocked() ){
          stackedWidget->setCurrentWidget(page);
@@ -432,12 +416,9 @@ void MainWin::setContextMenuDockText()
 {
    QTreeWidgetItem *currentitem = treeWidget->currentItem();
    
-   /* Use tree item's Qt::UserRole to get treeindex */
-   int treeindex = currentitem->data(0, Qt::UserRole).toInt();
-
    /* Is this one of the first level pages */
-   if( m_pagehash.value(treeindex) ){
-      Pages* page = m_pagehash.value(treeindex);
+   if( m_pagehash.value(currentitem) ){
+      Pages* page = m_pagehash.value(currentitem);
       setContextMenuDockText(page, currentitem);
    }
 }
index 21f6cfa95601b64dc07b0fa11d415a70961084d0..18d5792667e821ed5c2685c512ce4a2b6533c4ab 100644 (file)
@@ -90,10 +90,10 @@ private:
 private:
    Console *m_console;
    Pages *m_pagespophold;
-   QHash<int,Pages*> m_pagehash;
+   QHash<QTreeWidgetItem*,Pages*> m_pagehash;
+   QHash<Pages*,QTreeWidgetItem*> m_widgethash;
    QStringList m_cmd_history;
    int m_cmd_last;
-   int m_pages;
 };
 
 #endif /* _MAINWIN_H_ */
index 13c14d0fefd563f7dcb9e64e7c0f59ba1e951b50..663e34901cba33017ad1050f15ccb95f30e50973 100644 (file)
 #include "mediaedit/mediaedit.h"
 #include "joblist/joblist.h"
 
-MediaList::MediaList(QStackedWidget *parent, Console *console, QTreeWidgetItem *treeItem, int indexseq)
+MediaList::MediaList(QStackedWidget *parent, Console *console)
 {
-   SetPassedValues(parent, treeItem, indexseq );
    setupUi(this);
 
    /* mp_treeWidget, Storage Tree Tree Widget inherited from ui_medialist.h */
    mp_console = console;
+   m_parent = parent;
    createConnections();
    m_populated = false;
    m_checkcurwidget = true;
index 875da89d7b03ff6f5ae9025ca6b5be61a241b92c..fb4e2c94e48b7a7ced2715e88ea3a174efc69c1b 100644 (file)
@@ -43,7 +43,7 @@ class MediaList : public Pages, public Ui::MediaListForm
    Q_OBJECT 
 
 public:
-   MediaList(QStackedWidget *parent,Console *console, QTreeWidgetItem *treeItem, int indexseq);
+   MediaList(QStackedWidget *parent, Console *console);
    ~MediaList();
    virtual void PgSeltreeWidgetClicked();
    virtual void PgSeltreeWidgetDoubleClicked();
index 19d225f4dae0964876e9458285e5153cc9a8cc91..6cd60eba72588b58c1c766494653e78f35cc7b4d 100644 (file)
@@ -159,16 +159,3 @@ void Pages::PgSeltreeWidgetDoubleClicked()
 void Pages::currentStackItem()
 {
 }
-
-/*
- * This function exists because to have an easy way for programmers adding new features to understand
- * exactly what values needed to be set in order to behave correctly in the interface.  It can
- * be called from the constructor, like with medialist or after being constructed, like with
- * Console.
- */
-void Pages::SetPassedValues(QStackedWidget* passedStackedWidget, QTreeWidgetItem* passedTreeItem, int indexseq )
-{
-   m_parent = passedStackedWidget;
-   m_treeItem = passedTreeItem;
-   m_treeItem->setData(0, Qt::UserRole, QVariant(indexseq));
-}
index 8ed89208752806dc581b911bb0e3066f451146c8..a1b3eb2995337b67a5bfbbf86c771128e1f90b9d 100644 (file)
@@ -58,9 +58,7 @@ public:
    void togglePageDocking();
    bool isDocked();
    QStackedWidget *m_parent;
-   QTreeWidgetItem *m_treeItem;
    QList<QAction*> m_contextActions;
-   void SetPassedValues(QStackedWidget*, QTreeWidgetItem*, int );
    virtual void PgSeltreeWidgetClicked();
    virtual void PgSeltreeWidgetDoubleClicked();
    virtual void currentStackItem();
index bfe4fdc210020111f748125389c4b4f73ac9b5a6..0e38dd69ded8a2bc395fd21a571ebf78a86f57ac 100644 (file)
@@ -38,9 +38,9 @@
 #include "bat.h"
 #include "restore.h"
 
-bRestore::bRestore(QStackedWidget *parent, QTreeWidgetItem *treeItem, int indexseq)
+bRestore::bRestore(QStackedWidget *parent)
 {
-   SetPassedValues(parent, treeItem, indexseq );
+   m_parent = parent;
    (void)parent;
    setupUi(this);
 }
index 5822ee24940333f3b1f5526746983c92361bda40..4bbe1fcbb1083881493d431479ca352da6babf7f 100644 (file)
@@ -97,7 +97,7 @@ class bRestore : public Pages, public Ui::bRestoreForm
    Q_OBJECT 
 
 public:
-   bRestore(QStackedWidget *parent, QTreeWidgetItem *treeItem, int indexseq);
+   bRestore(QStackedWidget *parent);
    ~bRestore();
 
 public slots: