*/
void listItemClicked(QListWidgetItem *item);
+/******************************************************************************
+* SIGNALS
+******************************************************************************/
signals:
+ /**
+ * @brief Emitted when list item selection changes.
+ */
void listItemSelectionChanged();
/*******************************************************************************
#include <QDebug>
#include <QPainter>
-#include <QRegion>
#include "panelbar.h"
const int PANEL_OPENED_X = DEFAULT_SCREEN_WIDTH - PANEL_TAB_WIDTH - PANEL_BAR_WIDTH
- PANEL_WIDTH; ///< Horizontal position of a open panel
+const int TAB_WIDTH_ACTIVE = 74; ///< Active tab's width
+
// Zoom button panel settings
const int ZOOM_BUTTON_PANEL_POSITION_X = 10; ///< Horizontal position of zoom panel
const int ZOOM_BUTTON_PANEL_POSITION_Y = 10; ///< Vertical position of zoom panel
painter.drawPixmap(CONTEXT_BUTTON_BAR_TOP_X, CONTEXT_BUTTON_BAR_TOP_Y, m_barTop);
painter.drawTiledPixmap(m_barRect, m_barTile);
-
- // Temporary border, REMOVE WHEN NOT NEEDED ANYMORE!
- painter.setPen(Qt::red);
- painter.drawRect(this->rect().x(), this->rect().y(),
- this->rect().width() - 1, this->rect().height() - 1);
-
}
void PanelContextButtonBar::setContextButtons(QWidget *contextButtons)
#include <QPainter>
#include <QRect>
+#include "panelcommon.h"
#include "paneltab.h"
-const int TAB_WIDTH_ACTIVE = 74;
const int TAB_HEIGHT = 66;
PanelTab::PanelTab(QWidget *parent)
#include <QDebug>
#include <QButtonGroup>
+#include "panelcommon.h"
#include "paneltab.h"
#include "paneltabbar.h"
-// REMOVE WHEN NOT NEEDED ANYMORE
-#include <QPainter>
-
const int APPEND_INDEX = -1;
const int NO_ACTIVE_TABS = -1;
return index;
}
-// Used to draw temporary border around widget, REMOVE WHEN NOT NEEDED ANYMORE!
-void PanelTabBar::paintEvent(QPaintEvent *event)
-{
- qDebug() << __PRETTY_FUNCTION__;
-
- Q_UNUSED(event);
-
- QPainter painter(this);
-
- painter.setPen(Qt::red);
- painter.drawRect(this->rect().x(), this->rect().y(),
- this->rect().width() - 1, this->rect().height() - 1);
-}
-
void PanelTabBar::removeTab(int index)
{
qDebug() << __PRETTY_FUNCTION__;
const int TAB_BUTTON_STEPPING = 65;
QList<QAbstractButton *> tabList = m_tabButtonGroup->buttons();
-
+ int tabListHeight = 0;
for (int i = 0; i < tabList.size(); i ++) {
tabList.at(i)->move(0, i * TAB_BUTTON_STEPPING);
+ tabListHeight += TAB_BUTTON_STEPPING;
}
+
+ resize(TAB_WIDTH_ACTIVE, tabListHeight);
+
+ emit sizeChangeRequested();
}
PanelTabBar(QWidget *parent = 0);
/*******************************************************************************
- * BASE CLASS INHERITED AND REIMPLEMENTED MEMBER FUNCTIONS
- ******************************************************************************/
-protected:
- // Used to draw temporary border around widget, REMOVE WHEN NOT NEEDED ANYMORE!
- void paintEvent(QPaintEvent *event);
-
-/*******************************************************************************
* MEMBER FUNCTIONS AND SLOTS
******************************************************************************/
public:
void currentChanged(int index);
/**
+ * @brief This signal is emitted whenever content is changed.
+ */
+ void sizeChangeRequested();
+
+ /**
* @brief This signal is emitted whenever user wants to close a tab
*
* @param index Index of the currently active tab
#include <QDebug>
#include <QPropertyAnimation>
+#include <QRegion>
#include <QSignalTransition>
#include <QStackedWidget>
#include <QStateMachine>
#include "tabbedpanel.h"
const int PANEL_CONTEXT_BUTTON_BAR_LEFT_X = 1;
+const int PANEL_TAB_BAR_TOP_SPACING = 8;
TabbedPanel::TabbedPanel(QWidget *parent)
: QWidget(parent),
const int PANEL_LEFT_X = 0;
const int PANEL_TOP_Y = 0;
- const int PANEL_TAB_BAR_TOP_SPACING = 8;
resize(PANEL_BAR_TABBED_WIDTH + PANEL_WIDTH, PANEL_HEIGHT);
move(PANEL_CLOSED_X, PANEL_TOP_PADDING);
connect(this, SIGNAL(panelClosed()),
m_panelTabBar, SLOT(deselectTabs()));
+ connect(m_panelTabBar, SIGNAL(sizeChangeRequested()),
+ this, SLOT(calculateMask()));
+
// --- BAR ---
m_panelBar = new PanelBar(this);
m_panelBar->move(PANEL_TAB_WIDTH, PANEL_TOP_Y);
return insertTab(APPEND_INDEX, widget, icon);
}
+void TabbedPanel::calculateMask()
+{
+ qDebug() << __PRETTY_FUNCTION__;
+
+ QRect panelTabBarRect = m_panelTabBar->rect();
+ QRect panelContextButtonBarRect = m_panelContextButtonBar->rect();
+ int panelContextButtonBarY = height() - panelContextButtonBarRect.height();
+
+ if (!m_open)
+ panelContextButtonBarY = height();
+
+ QRegion panelTabBarRegion(0, PANEL_TAB_BAR_TOP_SPACING,
+ panelTabBarRect.width(), panelTabBarRect.height());
+ QRegion panelContextButtonBarRegion(0, panelContextButtonBarY,
+ panelContextButtonBarRect.width(),
+ panelContextButtonBarRect.height());
+ QRegion panelContentRegion(panelTabBarRect.right() + 1, 0,
+ PANEL_WIDTH, height());
+ QRegion panelRegion = panelTabBarRegion + panelContentRegion + panelContextButtonBarRegion;
+
+ setMask(panelRegion);
+}
+
void TabbedPanel::closePanel()
{
qDebug() << __PRETTY_FUNCTION__;
qDebug() << __PRETTY_FUNCTION__;
m_panelContextButtonBar->move(PANEL_CONTEXT_BUTTON_BAR_LEFT_X, height());
+ calculateMask();
}
void TabbedPanel::resizePanel(const QSize &size)
QPoint openedPosition(size.width() - PANEL_TAB_WIDTH - PANEL_BAR_WIDTH - PANEL_WIDTH,
PANEL_TOP_PADDING);
m_stateOpened->assignProperty(this, "pos", openedPosition);
+
+ calculateMask();
}
void TabbedPanel::setCurrentIndex(int index)
{
qDebug() << __PRETTY_FUNCTION__;
+ calculateMask();
+
if (m_open) {
m_panelContextButtonBar->showContextButtonBar();
emit panelOpened();
private slots:
/**
+ * @brief Calculates mask for this widget.
+ *
+ * Mask is constructed from PanelTabBar, PanelContextButtonBar and panel content sizes.
+ */
+ void calculateMask();
+
+ /**
* @brief Repositions context button bar
*/
void repositionContextButtonBar();