#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();