Documentation
[situare] / src / ui / tabbedpanel.h
index a54332c..87a056d 100644 (file)
 
 class QPropertyAnimation;
 class QSignalTransition;
-class QStackedWidget;
 class QState;
 class QStateMachine;
 
+class ListItemContextButtonBar;
 class PanelBar;
-class PanelContent;
+class PanelContentStack;
+class PanelContextButtonBar;
 class PanelTabBar;
 
 /**
  * @brief Class for tabbed panels
  *
  * @author Kaj Wallin - kaj.wallin (at) ixonos.com
- * @author Pekka Nissinen - pekka.nissinen@ixonos.com
+ * @author Pekka Nissinen - pekka.nissinen (at) ixonos.com
  */
 class TabbedPanel : public QWidget
 {
@@ -70,7 +71,6 @@ public:
      */
     int addTab(QWidget *widget, const QIcon& icon);
 
-    ///< @todo define "out of range"
     /**
      * @brief Inserts a tab to the panel
      *
@@ -96,16 +96,29 @@ public:
      */
     void removeTab(int index);
 
+    /**
+    * @brief Sets tabs enabled.
+    *
+    * If disabled tab is currently selected, panel will be closed also
+    * @param tabIndexes tab indexes to set
+    * @param enabled true if should be enabled, false otherwise
+    */
+    void setTabsEnabled(const QList<int> &tabIndexes, bool enabled);
+
 public slots:
     /**
-     * @brief Public slot that will close the panel unless already closed
+     * @brief Slot that closes the panel
      */
     void closePanel();
 
     /**
-     * @brief Public slot that will open the panel unless already open
+     * @brief Slot that opens the panel
+     *
+     * If widget pointer is provided the corresponding tab is also set active
+     *
+     * @param widget Widget
      */
-    void openPanel();
+    void openPanel(QWidget *widget = 0);
 
     /**
      * @brief Slot to redraw the panel after window resize event
@@ -114,16 +127,28 @@ public slots:
      */
     void resizePanel(const QSize &size);
 
+private slots:
     /**
-     * @brief Shows the tab at given index active
+     * @brief Calculates mask for tabbed panel
      *
-     * @param index Index of the tab
+     * Mask is constructed from PanelTabBar, PanelContextButtonBar and panel content sizes
      */
-    void showTab(int index);
+    void calculateMask();
+
+    /**
+     * @brief Repositions context button bar
+     */
+    void repositionContextButtonBar();
 
-private slots:
     /**
-     * @brief Internal slot used to track statemachine state
+     * @brief Sets the panel at current index active
+     *
+     * @param index Index of the panel
+     */
+    void setCurrentIndex(int index);
+
+    /**
+     * @brief Internal slot used to set the panel state
      */
     void stateChanged();
 
@@ -132,11 +157,20 @@ private slots:
  ******************************************************************************/
 signals:
     /**
-     * @brief This signal is emitted whenever the current page index changes
+     * @brief This signal is emitted whenever the current tab page changes
+     *
+     * @param index Index of the new tab page
      */
     void currentChanged(int index);
 
     /**
+     * @brief Emitted when there is a change in list item selection
+     *
+     * @param itemIsSelected True if any item is selected.
+     */
+    void listItemSelectionChanged(bool itemIsSelected);
+
+    /**
      * @brief Signal that is sent when panel is closed
      *
      * @sa openPanel
@@ -153,7 +187,7 @@ signals:
     void panelOpened();
 
     /**
-     * @brief Signal that is sent to state machine when panel state must be changed
+     * @brief Signal that is sent when the panel state must be changed
      *
      * @sa openPanel
      * @sa closePanel
@@ -164,23 +198,17 @@ signals:
  * DATA MEMBERS
  ******************************************************************************/
 private:
-    bool m_isOpen;      ///< Boolean used to track the current state of the statemachine
-
-    QPropertyAnimation *m_panelAnimation;       ///< Animation for panel state changes
-
-    QSignalTransition *m_panelTransitionClose;  ///< Transition signal for closing the panel
-    QSignalTransition *m_panelTransitionOpen;   ///< Transition signal for opening the panel
-
-    QStackedWidget *m_panelWidgetStack;         ///< Stack for panel widgets
-
-    QState *m_panelStateClosed;                 ///< State of the closed panel
-    QState *m_panelStateOpened;                 ///< State of the opened panel
+    bool m_open;                ///< Current state of the panel
+    bool m_closeRequestPending; ///< Indicates wheater the panel is waiting to be closed
 
-    QStateMachine *m_panelStateMachine;         ///< State machine for sliding the panel
+    QState *m_stateClosed;      ///< State of the closed panel
+    QState *m_stateOpened;      ///< State of the opened panel
 
-    PanelBar *m_panelBar;                       ///< Widget for panel bar
-    PanelContent *m_panelContent;               ///< Widget for panel content
-    PanelTabBar *m_panelTabBar;                 ///< Widget for panel tab bar
+    ListItemContextButtonBar *m_itemContextButtonBar;   ///< Widget for list item context button bar
+    PanelBar *m_panelBar;                               ///< Widget for panel bar
+    PanelContentStack *m_panelContentStack;             ///< Stack for panel widgets
+    PanelContextButtonBar * m_panelContextButtonBar;    ///< Widget for panel context button bar
+    PanelTabBar *m_panelTabBar;                         ///< Widget for panel tab bar
 };
 
 #endif // TABBEDPANEL_H