Removed a few references to this-pointer and made some small cosmetic changes
[situare] / src / ui / tabbedpanel.cpp
index a35d9aa..0e28947 100644 (file)
@@ -20,7 +20,6 @@
     USA.
 */
 
-#include <QButtonGroup>
 #include <QDebug>
 #include <QPropertyAnimation>
 #include <QSignalTransition>
 #include <QStateMachine>
 
 #include "panelbar.h"
-#include "panelcontent.h"
-#include "paneltab.h"
-#include "userinfo.h"
+#include "panelcontentstack.h"
+#include "paneltabbar.h"
 
 #include "tabbedpanel.h"
 
 TabbedPanel::TabbedPanel(QWidget *parent)
     : QWidget(parent),
-      m_isOpen(false),
-      m_activeTab(-1) ///< @todo magic
+      m_isOpen(false)
 {
     qDebug() << __PRETTY_FUNCTION__;
 
-    ///< @todo Do not use this, REMOVE ALL OCCURENCES!
-    this->resize(PANEL_BAR_TABBED_WIDTH + PANEL_WIDTH, PANEL_HEIGHT);
-    this->move(PANEL_CLOSED_X, PANEL_TOP_PADDING);
+    resize(PANEL_BAR_TABBED_WIDTH + PANEL_WIDTH, PANEL_HEIGHT);
+    move(PANEL_CLOSED_X, PANEL_TOP_PADDING);
 
     // --- TABS ---
-    m_panelWidgetStack = new QStackedWidget(this);
+    m_panelTabBar = new PanelTabBar(this);
 
-    m_tabButtonGroup = new QButtonGroup(this);
+    connect(m_panelTabBar, SIGNAL(currentChanged(int)),
+            this, SLOT(setCurrentIndex(int)));
 
-    connect(m_tabButtonGroup, SIGNAL(buttonPressed(int)),
-            this, SLOT(setActiveTab(int)));
+    connect(m_panelTabBar, SIGNAL(tabCloseRequested(int)),
+             this, SLOT(closePanel()));
+
+    connect(this, SIGNAL(panelClosed()),
+            m_panelTabBar, SLOT(deselectTabs()));
 
     // --- BAR ---
     m_panelBar = new PanelBar(this);
     m_panelBar->move(PANEL_TAB_WIDTH, 0);
 
     // --- PANEL CONTENT ---
-    m_panelContent = new PanelContent(this);
-    m_panelContent->setContentWidget(m_panelWidgetStack);
-    m_panelContent->move(PANEL_TAB_WIDTH + PANEL_BAR_WIDTH, 0);
+    m_panelContentStack = new PanelContentStack(this);
+    m_panelContentStack->move(PANEL_TAB_WIDTH + PANEL_BAR_WIDTH, 0);
 
     // --- PANEL ANIMATION ---
     m_panelStateMachine = new QStateMachine(this);
@@ -95,31 +94,25 @@ int TabbedPanel::addTab(QWidget *widget, const QIcon& icon)
 {
     qDebug() << __PRETTY_FUNCTION__;
 
-    ///< @todo magic
-    return insertTab(-1, widget, icon);
+    const int APPEND_INDEX = -1;
+
+    return insertTab(APPEND_INDEX, widget, icon);
 }
 
-int TabbedPanel::insertTab(int index, QWidget *widget, const QIcon& icon)
+void TabbedPanel::closePanel()
 {
     qDebug() << __PRETTY_FUNCTION__;
 
-    ///< @todo callers responsibility to call with right parameters
-    if(!widget)
-        return -1;
-
-    ///< @todo magic
-    int verticalStartPoint = 8;
-
-    index = m_panelWidgetStack->insertWidget(index, widget);
-    m_tabButtonGroup->addButton(new PanelTab(this), index);
-    m_tabButtonGroup->button(index)->setIcon(icon);
+    if (m_isOpen)
+        emit toggleState();
+}
 
-    ///< @todo [BEGIN]: Purkkaa (to be removed ASAP!!!)
-    if(index > 0)
-        verticalStartPoint += 65 * index;
+int TabbedPanel::insertTab(int index, QWidget *widget, const QIcon& icon)
+{
+    qDebug() << __PRETTY_FUNCTION__;
 
-    m_tabButtonGroup->button(index)->move(0, verticalStartPoint);
-    // [END]: Purkkaa
+    index = m_panelContentStack->insertWidget(index, widget);
+    m_panelTabBar->insertTab(index, icon);
 
     return index;
 }
@@ -128,77 +121,54 @@ void TabbedPanel::removeTab(int index)
 {
     qDebug() << __PRETTY_FUNCTION__;
 
-    if(QWidget *widget = m_panelWidgetStack->widget(index)) {
-        m_panelWidgetStack->removeWidget(widget);
-
-        QAbstractButton *tab = m_tabButtonGroup->button(index);
-        m_tabButtonGroup->removeButton(tab);
-        delete tab;
+    if (QWidget *widget = m_panelContentStack->widget(index)) {
+        m_panelContentStack->removeWidget(widget);
+        m_panelTabBar->removeTab(index);
     }
 }
 
-///< @todo sort alphabetically (other methods too)
-void TabbedPanel::closePanel()
+void TabbedPanel::resizePanel(const QSize &size)
 {
     qDebug() << __PRETTY_FUNCTION__;
 
-    if(m_isOpen)
-        emit toggleState();
-}
-
-void TabbedPanel::openPanel()
-{
-    qDebug() << __PRETTY_FUNCTION__;
+    resize(PANEL_BAR_TABBED_WIDTH + PANEL_WIDTH,
+           size.height() - PANEL_TOP_PADDING - PANEL_BOTTOM_PADDING);
 
-    if(!m_isOpen)
-        emit toggleState();
-}
+    if (!m_isOpen)
+        move(size.width() - PANEL_TAB_WIDTH - PANEL_BAR_WIDTH, PANEL_TOP_PADDING);
+    else
+        move(size.width() - PANEL_TAB_WIDTH - PANEL_BAR_WIDTH - PANEL_WIDTH, PANEL_TOP_PADDING);
 
-void TabbedPanel::resizePanel(const QSize &size)
-{
-    qDebug() << __PRETTY_FUNCTION__;
+    m_panelBar->resizeBar(size);
 
-    this->resize(PANEL_BAR_TABBED_WIDTH + PANEL_WIDTH,
-                 size.height() - PANEL_TOP_PADDING - PANEL_BOTTOM_PADDING);
+    m_panelContentStack->resizePanelContentStack(size);
 
-    if(!m_isOpen) {
-        this->move(size.width() - PANEL_TAB_WIDTH - PANEL_BAR_WIDTH, PANEL_TOP_PADDING);
-    }
-    else {
-        this->move(size.width() - PANEL_TAB_WIDTH - PANEL_BAR_WIDTH - PANEL_WIDTH,
-                   PANEL_TOP_PADDING);
-    }
+    QPoint closedPosition(size.width() - PANEL_TAB_WIDTH - PANEL_BAR_WIDTH, PANEL_TOP_PADDING);
+    m_panelStateClosed->assignProperty(this, "pos", closedPosition);
 
-    m_panelBar->resizeBar(size);
+    QPoint openedPosition(size.width() - PANEL_TAB_WIDTH - PANEL_BAR_WIDTH - PANEL_WIDTH,
+                          PANEL_TOP_PADDING);
+    m_panelStateOpened->assignProperty(this, "pos", openedPosition);
+}
 
-    m_panelContent->resizePanelContent(size);
+void TabbedPanel::showPanel(QWidget *widget)
+{
+    qDebug() << __PRETTY_FUNCTION__;
 
-    ///< @todo alignment
-    m_panelStateClosed->assignProperty(this, "pos",
-                        QPoint(size.width() - PANEL_TAB_WIDTH - PANEL_BAR_WIDTH, PANEL_TOP_PADDING));
-    m_panelStateOpened->assignProperty(this, "pos",
-                        QPoint(size.width() - PANEL_TAB_WIDTH - PANEL_BAR_WIDTH - PANEL_WIDTH,
-                               PANEL_TOP_PADDING));
+    m_panelTabBar->selectTab(m_panelContentStack->indexOf(widget));
 }
 
-void TabbedPanel::setActiveTab(int index)
+void TabbedPanel::setCurrentIndex(int index)
 {
     qDebug() << __PRETTY_FUNCTION__;
 
-    ///< @todo magic
-    ///< @todo short comments?
-    if(m_activeTab == -1) {
-        m_activeTab = index;
-        m_panelWidgetStack->setCurrentIndex(index);
-        emit tabChanged();
-        emit toggleState();
-    } else if(m_activeTab == index) {
-        m_activeTab = -1;
-        emit toggleState();
-    } else {
-        m_activeTab = index;
-        m_panelWidgetStack->setCurrentIndex(index);
-        emit tabChanged();
+    if ((index < m_panelContentStack->count()) && (index >= 0)) {
+        m_panelContentStack->setCurrentIndex(index);
+
+        if (!m_isOpen)
+            emit toggleState();
+
+        emit currentChanged(index);
     }
 }
 
@@ -206,16 +176,11 @@ void TabbedPanel::stateChanged()
 {
     qDebug() << __PRETTY_FUNCTION__;
 
-    if(!m_isOpen) {
+    if (!m_isOpen) {
         m_isOpen = true;
         emit panelOpened();
     } else {
         m_isOpen = false;
-
-        m_tabButtonGroup->setExclusive(false);
-        m_tabButtonGroup->button(m_tabButtonGroup->checkedId())->setChecked(false);
-        m_tabButtonGroup->setExclusive(true);
-
         emit panelClosed();
     }
 }