[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: koffice/kexi
From: Jarosław Staniek <staniek () kde ! org>
Date: 2010-01-18 23:40:49
Message-ID: 1263858049.566824.12071.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 1076862 by staniek:
Main Window
*Added tabbar for the project navigator
M +6 -0 doc/dev/CHANGELOG-Kexi-js
M +44 -1 main/KexiMainWindow.cpp
M +2 -0 main/KexiMainWindow.h
M +2 -0 main/KexiMainWindow_p.h
--- trunk/koffice/kexi/doc/dev/CHANGELOG-Kexi-js #1076861:1076862
@@ -63,6 +63,12 @@
~~~~~~~~~~~~~~~~ 2.2 alpha 1 ~~~~~~~~~~~~~~~~
+2010-01-18
+Main Window
+*Added tabbar for the project navigator
+TODO: make it work also when the pane on the right/top/bottom
+TODO: support propeditor
+
2010-01-17
Main Window
*Added view menu to the statusbar (but disabled for now)
--- trunk/koffice/kexi/main/KexiMainWindow.cpp #1076861:1076862
@@ -69,6 +69,7 @@
#include <krecentdocument.h>
#include <KMenu>
#include <KXMLGUIFactory>
+#include <KMultiTabBar>
#include <kexidb/connection.h>
#include <kexidb/utils.h>
@@ -1952,10 +1953,26 @@
d->tabbedToolBar = new KexiTabbedToolBar(tabbedToolBarContainer);
tabbedToolBarContainerLyr->addWidget(d->tabbedToolBar);
+ QWidget *mainWidgetContainer = new QWidget();
+ vlyr->addWidget(mainWidgetContainer, 1);
+ QHBoxLayout *mainWidgetContainerLyr = new QHBoxLayout(mainWidgetContainer);
+ mainWidgetContainerLyr->setContentsMargins(0, 0, 0, 0);
+ mainWidgetContainerLyr->setSpacing(0);
+
+ KMultiTabBar *mtbar = new KMultiTabBar(KMultiTabBar::Left);
+ mtbar->setStyle(KMultiTabBar::KDEV3ICON);
+ mainWidgetContainerLyr->addWidget(mtbar, 0);
+ d->multiTabBars.insert(mtbar->position(), mtbar);
+
d->mainWidget = new KexiMainWidget();
- vlyr->addWidget(d->mainWidget, 1);
d->mainWidget->setParent(this);
+ mainWidgetContainerLyr->addWidget(d->mainWidget, 1);
+ mtbar = new KMultiTabBar(KMultiTabBar::Right);
+ mtbar->setStyle(KMultiTabBar::KDEV3ICON);
+ mainWidgetContainerLyr->addWidget(mtbar, 0);
+ d->multiTabBars.insert(mtbar->position(), mtbar);
+
d->statusBar = new KexiStatusBar(this);
#if 0 // still disabled, see KexiStatusBar
connect(d->statusBar->m_showNavigatorAction, SIGNAL(triggered(bool)),
@@ -1978,6 +1995,30 @@
d->propEditorDockWidget->setVisible(set);
}
+void KexiMainWindow::slotProjectNavigatorVisibilityChanged(bool visible)
+{
+ KMultiTabBar *mtbar = d->multiTabBars[KMultiTabBar::Left];
+ int id = 0; //todo
+ if (visible) {
+ mtbar->removeTab(id);
+ }
+ else {
+ QString t(d->navDockWidget->windowTitle());
+ t.remove('&');
+ mtbar->appendTab(QPixmap(), id, t);
+ KMultiTabBarTab *tab = mtbar->tab(0);
+ connect(tab, SIGNAL(clicked(int)), this, \
SLOT(slotMultiTabBarTabClicked(int))); + }
+}
+
+void KexiMainWindow::slotMultiTabBarTabClicked(int id)
+{
+ if (id == 0) { // todo
+ slotProjectNavigatorVisibilityChanged(true);
+ d->navDockWidget->show();
+ }
+}
+
static Qt::DockWidgetArea loadDockAreaSetting(KConfigGroup& group, const char* \
configEntry, Qt::DockWidgetArea defaultArea) {
const QString areaName = group.readEntry(configEntry).toLower();
@@ -2073,6 +2114,8 @@
}
connect(d->nav, SIGNAL(selectionChanged(KexiPart::Item*)),
this, SLOT(slotPartItemSelectedInNavigator(KexiPart::Item*)));
+ connect(d->navDockWidget, SIGNAL(visibilityChanged(bool)),
+ this, SLOT(slotProjectNavigatorVisibilityChanged(bool)));
// d->restoreNavigatorWidth();
}
--- trunk/koffice/kexi/main/KexiMainWindow.h #1076861:1076862
@@ -705,6 +705,8 @@
void slotSetProjectNavigatorVisible(bool set);
void slotSetPropertyEditorVisible(bool set);
+ void slotProjectNavigatorVisibilityChanged(bool visible);
+ void slotMultiTabBarTabClicked(int id);
private:
class MessageHandler;
--- trunk/koffice/kexi/main/KexiMainWindow_p.h #1076861:1076862
@@ -1093,6 +1093,8 @@
//2.0: unused KMdi::MdiMode mdiModeToSwitchAfterRestart;
+ QMap<KMultiTabBar::KMultiTabBarPosition, KMultiTabBar*> multiTabBars;
+
private:
//! @todo move to KexiProject
KexiWindowDict windows;
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic