]> git.sur5r.net Git - bacula/bacula/commitdiff
dhb use the stack widget signal currentChanged to trigger function
authorDirk H Bartley <dbartley@schupan.com>
Sun, 8 Apr 2007 17:17:33 +0000 (17:17 +0000)
committerDirk H Bartley <dbartley@schupan.com>
Sun, 8 Apr 2007 17:17:33 +0000 (17:17 +0000)
     stackItemChanged to call pages virtual function currentStackItem.
     This prevents a window becoming the top visible window without getting
     the chance to populate it's screen.

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

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

index 51cf958ed2ff990a06527f69b37bd4e13b316c33..01a0b0031105990123b03ad88dd8a6db24e4ba39 100644 (file)
@@ -196,6 +196,8 @@ void MainWin::createConnections()
    connect(treeWidget, SIGNAL(
            currentItemChanged(QTreeWidgetItem *, QTreeWidgetItem *)),
            this, SLOT(treeItemChanged(QTreeWidgetItem *, QTreeWidgetItem *)));
+   connect(stackedWidget, SIGNAL(currentChanged(int)),
+           this, SLOT(stackItemChanged(int)));
 
    connect(actionQuit, SIGNAL(triggered()), app, SLOT(closeAllWindows()));
    connect(actionConnect, SIGNAL(triggered()), m_console, SLOT(connect()));
@@ -307,8 +309,6 @@ void MainWin::treeItemChanged(QTreeWidgetItem *currentitem, QTreeWidgetItem *pre
          /* put this page on the top of the stack */
          stackedWidget->setCurrentIndex(stackindex);
       }
-      /* run the virtual function in case this class overrides it */
-      page->PgSeltreeWidgetCurrentItem();
       setContextMenuDockText(page, currentitem);
 
       treeWidget->addAction(actionToggleDock);
@@ -411,6 +411,9 @@ void MainWin::toggleDockContextWindow()
    if( m_pagehash.value(treeindex) ){
       Pages* page = m_pagehash.value(treeindex);
       page->togglePageDocking();
+      if ( page->isDocked() ){
+         stackedWidget->setCurrentWidget(page);
+      }
       /* Toggle the menu item.  The window's dock status has been toggled */
       setContextMenuDockText(page, currentitem);
    }
@@ -453,3 +456,10 @@ void MainWin::setContextMenuDockText( Pages* page, QTreeWidgetItem* item )
    
    actionToggleDock->setText(docktext);
 }
+
+void MainWin::stackItemChanged(int)
+{
+   Pages* page = (Pages*)stackedWidget->currentWidget();
+   /* run the virtual function in case this class overrides it */
+   page->currentStackItem();
+}
index a563e627ddac6b61de7d03b286af438401b5df19..87af42f73a9c669ebe5d7bd2055f87bab0a45fd2 100644 (file)
@@ -72,6 +72,7 @@ public slots:
    void restoreDialogClicked();
    void undockWindowButton();
    void treeItemChanged(QTreeWidgetItem *, QTreeWidgetItem *);
+   void stackItemChanged(int);
    void toggleDockContextWindow();
    void setContextMenuDockText();
    void setContextMenuDockText(Pages *, QTreeWidgetItem *);
index f21b68b07422c0d5a4dfe3297c0af8f693b9b223..13c14d0fefd563f7dcb9e64e7c0f59ba1e951b50 100644 (file)
@@ -232,9 +232,9 @@ void MediaList::createContextMenu()
 }
 
 /*
- * Virtual function which is called when this page is selected in the page selector tree
+ * Virtual function which is called when this page is visible on the stack
  */
-void MediaList::PgSeltreeWidgetCurrentItem()
+void MediaList::currentStackItem()
 {
    if(!m_populated) {
       populateTree();
index 3ab3eb32f4d2d2a8d5bb691c3d724188426de1ca..875da89d7b03ff6f5ae9025ca6b5be61a241b92c 100644 (file)
@@ -47,7 +47,7 @@ public:
    ~MediaList();
    virtual void PgSeltreeWidgetClicked();
    virtual void PgSeltreeWidgetDoubleClicked();
-   virtual void PgSeltreeWidgetCurrentItem();
+   virtual void currentStackItem();
 
 public slots:
    void treeItemClicked(QTreeWidgetItem *item, int column);
index fb262a8b5bdd3d57f29e7afc42381c2df92cdc72..a3b076fb1c66717828ba5671d8a940a420676c94 100644 (file)
@@ -65,7 +65,7 @@ void Pages::undockPage()
    /* Change from a stacked widget to a normal window */
    m_parent->removeWidget(this);
    setWindowFlags(Qt::Window);
-   showNormal();
+   show();
    /* Clear docked flag */
    m_docked = false;
 }
@@ -99,7 +99,7 @@ bool Pages::isDocked()
 /*
  * When a window is closed, this slot is called.  The idea is to put it back in the
  * stack here, and it works.  I wanted to get it to the top of the stack so that the
- * user immediately sees where his window went.  Also, if he floats the window, then
+ * user immediately sees where his window went.  Also, if he undocks the window, then
  * closes it with the tree item highlighted, it may be confusing that the highlighted
  * treewidgetitem is not the stack item in the front.
  */
@@ -117,21 +117,25 @@ printf("In Pages closeEvent a\n");
    if( stackindex >= 0 ){
 printf("In Pages closeEvent b\n");
       m_parent->setCurrentIndex(0);
-      //m_parent->setCurrentIndex(stackindex);
       m_parent->setCurrentWidget(this);
-      m_parent->update();
+      show();
+      //m_parent->setCurrentIndex(stackindex);
+//      m_parent->setCurrentWidget(this);
+/*      m_parent->update();
       update();
       setUpdatesEnabled(true);
+      setVisible(true);
       m_parent->show();
       show();
-      m_parent->repaint();
+      m_parent->repaint();*/
       repaint();
+      raise();
    }
 #endif
 }
 
 /*
- * The next two are virtual functions.  The idea here is that each subclass will have the
+ * The next three are virtual functions.  The idea here is that each subclass will have the
  * built in virtual function to override if the programmer wants to populate the window
  * when it it is first clicked.
  */
@@ -143,12 +147,15 @@ void Pages::PgSeltreeWidgetDoubleClicked()
 {
 }
 
-void Pages::PgSeltreeWidgetCurrentItem()
+/*
+ *  * Virtual function which is called when this page is visible on the stack
+ */
+void Pages::currentStackItem()
 {
 }
 
 /*
- * This function exists because I wanted to have an easy way for new programmers to understand
+ * 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.
index 5840ce0929ec0d9119586a128a66b89071ce9213..8ed89208752806dc581b911bb0e3066f451146c8 100644 (file)
@@ -63,7 +63,7 @@ public:
    void SetPassedValues(QStackedWidget*, QTreeWidgetItem*, int );
    virtual void PgSeltreeWidgetClicked();
    virtual void PgSeltreeWidgetDoubleClicked();
-   virtual void PgSeltreeWidgetCurrentItem();
+   virtual void currentStackItem();
 
 public slots:
    /* closeEvent is a virtual function inherited from QWidget */