Hi guys,
review board is not feeling well (upgrading i suppose?) so posting it here
anyways, with this patch could be possible to use Plasma::TabBar like a
QStackedWidget, i think it makes sense since it has already the double use of
a tabbar and a tabwidget, so it would be one thing to rule them all...
Index: tabbar.h
===================================================================
--- tabbar.h (revision 917950)
+++ tabbar.h (working copy)
@@ -51,6 +51,7 @@
Q_PROPERTY(int currentIndex READ currentIndex WRITE setCurrentIndex)
Q_PROPERTY(int count READ count)
Q_PROPERTY(QString styleSheet READ styleSheet WRITE setStyleSheet)
+ Q_PROPERTY(bool tabBarShown READ isTabBarShown WRITE setTabBarShown)
public:
/**
@@ -158,6 +159,20 @@
QIcon tabIcon(int index) const;
/**
+ * shows or hides the tabbar, used if you just want to display the
+ * pages, when the tabbar doesn't have content pages at all this
+ * function has no effect
+ *
+ * @arg show true if we want to show the tabbar
+ */
+ void setTabBarShown(bool show);
+
+ /**
+ * @return true if the tabbar is shown
+ */
+ bool isTabBarShown() const;
+
+ /**
* Sets the stylesheet used to control the visual display of this TabBar
*
* @arg stylesheet a CSS string
Index: tabbar.cpp
===================================================================
--- tabbar.cpp (revision 917950)
+++ tabbar.cpp (working copy)
@@ -71,7 +71,7 @@
: q(parent),
tabProxy(0),
currentIndex(0),
- isTabWidget(true),
+ tabWidgetMode(true),
oldPage(0),
newPage(0),
oldPageAnimId(-1),
@@ -94,7 +94,7 @@
QGraphicsLinearLayout *tabWidgetLayout;
QGraphicsLinearLayout *tabBarLayout;
int currentIndex;
- bool isTabWidget;
+ bool tabWidgetMode;
QGraphicsWidget *oldPage;
QGraphicsWidget *newPage;
@@ -113,7 +113,7 @@
}
}
- if (tabWidget != isTabWidget) {
+ if (tabWidget != tabWidgetMode) {
if (tabWidget) {
mainLayout->removeAt(0);
tabBarLayout->insertItem(1, tabProxy);
@@ -125,7 +125,12 @@
}
}
- isTabWidget = tabWidget;
+ //always show the tabbar
+ if (!tabWidget) {
+ q->setTabBarShown(true);
+ }
+
+ tabWidgetMode = tabWidget;
}
void TabBarPrivate::slidingCompleted(QGraphicsItem *item)
@@ -270,7 +275,7 @@
void TabBar::resizeEvent(QGraphicsSceneResizeEvent * event)
{
- if (!d->isTabWidget) {
+ if (!d->tabWidgetMode) {
d->tabProxy->setMinimumSize(event->newSize().toSize());
} else {
d->tabProxy->native->setMinimumSize(QSize(0,0));
@@ -405,6 +410,26 @@
return d->tabProxy->native->tabIcon(index);
}
+void TabBar::setTabBarShown(bool show)
+{
+ if (!show && !d->tabWidgetMode) {
+ return;
+ }
+
+ if (!show && d->tabProxy->isVisible()) {
+ d->tabProxy->hide();
+ d->tabBarLayout->removeItem(d->tabProxy);
+ } else if (show && !d->tabProxy->isVisible()) {
+ d->tabProxy->show();
+ d->tabBarLayout->insertItem(0, d->tabProxy);
+ }
+}
+
+bool TabBar::isTabBarShown() const
+{
+ return d->tabProxy->isVisible();
+}
+
void TabBar::setStyleSheet(const QString &stylesheet)
{
d->tabProxy->native->setStyleSheet(stylesheet);
_______________________________________________
Plasma-devel mailing list
[email protected]
https://mail.kde.org/mailman/listinfo/plasma-devel