[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-core-devel
Subject:    Re: [Patch] System Settings : Improve General/Advanced tabs visibility
From:       "Nicolas Ternisien" <nicolas.ternisien () gmail ! com>
Date:       2008-03-28 0:14:29
Message-ID: ccba71b50803271714t5d512b42l2a1b308c728b8571 () mail ! gmail ! com
[Download RAW message or body]

[Attachment #2 (multipart/alternative)]


Next attempt ++

http://stuff.forum-software.org/kde/systemsettings-tab-and-tool.png
http://stuff.forum-software.org/kde/systemsettings-tab-and-tool2.png

Appart the fact that the setFlat() option does not work with Oxygen theme, I
particularly like this version, which compiles all requests and comments.

Please give me your opinions.

PS: I also think this is my last attempt to match all-people-requests for
System Settings =)

On Thu, Mar 27, 2008 at 2:02 PM, Michael Lentner <michaell@gmx.net> wrote:

> Am Donnerstag, 27. Mrz 2008 schrieb Nicolas Ternisien:
> > It's an incredible long debate ;-)
> >
> > Why not having General Settings / Advanced Settings tabs, like to
> > previous patch, but having a trailing Settings word, to improve
> > visibility of those tabs ? About font size and icons, I have no
> > personal opinion, while those tabs are visible and easily clickable.
> > (and yes, why not having the frame border again, by using KTabWidget)
>
> The (little) issue I had with the previous appearance of systemsettings
> was
> that the white space on the right side made it appear asymmetric. My
> mockup
> fixes this and removes by the oppurtunity the unnecessary overview button,
> what makes it simpler without removing functionality. Imho that's what all
> want. My idea was to have dynamic widgets on the bar, the overview button
> should only be visible if a kcm is shown, while the general / advances
> settings buttons and the search bar only if the overview is shown. But I'm
> unsure, how it would feel if the overview button gets pressed and another
> button appears directly under the mouse. Could be also no problem at all
> ;)
>
> Michael
>

[Attachment #5 (text/html)]

Next attempt ++<br><br><a \
href="http://stuff.forum-software.org/kde/systemsettings-tab-and-tool.png">http://stuff.forum-software.org/kde/systemsettings-tab-and-tool.png</a><br><a \
href="http://stuff.forum-software.org/kde/systemsettings-tab-and-tool2.png">http://stuff.forum-software.org/kde/systemsettings-tab-and-tool2.png</a><br>
 <br>Appart the fact that the setFlat() option does not work with Oxygen theme, I \
particularly like this version, which compiles all requests and \
comments.<br><br>Please give me your opinions.<br><br>PS: I also think this is my \
last attempt to match all-people-requests for System Settings =)<br> <br><div \
class="gmail_quote">On Thu, Mar 27, 2008 at 2:02 PM, Michael Lentner &lt;<a \
href="mailto:michaell@gmx.net">michaell@gmx.net</a>&gt; wrote:<br><blockquote \
class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt \
0pt 0.8ex; padding-left: 1ex;"> Am Donnerstag, 27. Mrz 2008 schrieb Nicolas \
Ternisien:<br> <div class="Ih2E3d">&gt; It&#39;s an incredible long debate ;-)<br>
&gt;<br>
&gt; Why not having General Settings / Advanced Settings tabs, like to<br>
&gt; previous patch, but having a trailing Settings word, to improve<br>
&gt; visibility of those tabs ? About font size and icons, I have no<br>
&gt; personal opinion, while those tabs are visible and easily clickable.<br>
&gt; (and yes, why not having the frame border again, by using KTabWidget)<br>
<br>
</div>The (little) issue I had with the previous appearance of systemsettings was<br>
that the white space on the right side made it appear asymmetric. My mockup<br>
fixes this and removes by the oppurtunity the unnecessary overview button,<br>
what makes it simpler without removing functionality. Imho that&#39;s what all<br>
want. My idea was to have dynamic widgets on the bar, the overview button<br>
should only be visible if a kcm is shown, while the general / advances<br>
settings buttons and the search bar only if the overview is shown. But I&#39;m<br>
unsure, how it would feel if the overview button gets pressed and another<br>
button appears directly under the mouse. Could be also no problem at all ;)<br>
<font color="#888888"><br>
Michael<br>
</font></blockquote></div><br>


["system-settings-tab-and-toolbar.patch" (text/x-diff)]

Index: moduletabbar.cpp
===================================================================
--- moduletabbar.cpp	(révision 790624)
+++ moduletabbar.cpp	(copie de travail)
@@ -28,15 +28,11 @@
 ModuleTabBar::ModuleTabBar ( QWidget *parent ) 
 	: KTabBar(parent) 
 {
-	
+	/*
+    QFont modifiedFont = font();
+    modifiedFont.setPointSize( modifiedFont.pointSize() * 1.2 );
+    setFont(modifiedFont);
+	*/
 }
 
-QSize ModuleTabBar::tabSizeHint ( int index ) const {
-	QSize tabSize = KTabBar::tabSizeHint(index);
-	
-	tabSize.setWidth( size().width() / count() -2);
-	
-	return tabSize;
-}
-
 #include "moduletabbar.moc"
Index: categories/settings-general.desktop
===================================================================
--- categories/settings-general.desktop	(révision 790624)
+++ categories/settings-general.desktop	(copie de travail)
@@ -4,8 +4,9 @@
 X-KDE-Weight=100
 X-KDE-System-Settings-Category=general
 X-KDE-System-Settings-Parent-Category=
+Icon=preferences-system
 
-Name=General
+Name=General Settings
 Name[ar]=عام
 Name[be]=Агульныя
 Name[bg]=Основно
Index: categories/settings-advanced.desktop
===================================================================
--- categories/settings-advanced.desktop	(révision 790624)
+++ categories/settings-advanced.desktop	(copie de travail)
@@ -4,8 +4,9 @@
 X-KDE-Weight=200
 X-KDE-System-Settings-Category=advanced
 X-KDE-System-Settings-Parent-Category=
+Icon=applications-engineering
 
-Name=Advanced
+Name=Advanced Settings
 Name[af]=Gevorderde
 Name[ar]=متقدم
 Name[be]=Асаблівы
Index: moduletabbar.h
===================================================================
--- moduletabbar.h	(révision 790624)
+++ moduletabbar.h	(copie de travail)
@@ -31,9 +31,6 @@
 public:
 	ModuleTabBar (QWidget *parent=0);
 
-protected:
-	
-	virtual QSize tabSizeHint(int index) const;
 };
 
 #endif
Index: mainwindow.cpp
===================================================================
--- mainwindow.cpp	(révision 790624)
+++ mainwindow.cpp	(copie de travail)
@@ -25,6 +25,7 @@
 #include <QApplication>
 #include <QLabel>
 
+#include <QPushButton>
 #include <QLayout>
 #include <QStackedWidget>
 
@@ -147,8 +148,13 @@
 
 void MainWindow::buildMainWidget()
 {
-    windowStack = new QStackedWidget(this);
-
+	QWidget* mainWidget = new QWidget(this);
+	QVBoxLayout* mainLayout = new QVBoxLayout();
+	mainWidget->setLayout(mainLayout);
+	
+	mainLayout->setContentsMargins(0, 4, 0, 0);
+	mainLayout->addWidget(moduleTabs);
+	
     // Top level pages.
 
     moduleTabs->show();
@@ -180,94 +186,32 @@
             connect( tv, SIGNAL(doubleClicked(const QModelIndex&)),
                      SLOT(selectionChanged(const QModelIndex&)));
         }
-        connect( search, SIGNAL(textChanged(const QString&)),
+        connect( moduleTabs->searchLineEdit(), SIGNAL(textChanged(const QString&)),
                 kcsfpm, SLOT(setFilterRegExp(const QString&)));
         connect( kcsfpm, SIGNAL(layoutChanged()),
                 this, SLOT(updateSearchHits()) );
-        moduleTabs->addTab(tv, item->service->name() );
         
+        QStackedWidget* moduleStackedWidget = new QStackedWidget(this);
+        moduleStackedWidget->addWidget(tv);
+        moduleStackedWidget->setCurrentWidget(tv);
+        moduleTabs->addTab(moduleStackedWidget, SmallIcon(item->service->icon()), \
item->service->name() );  
+        
 
         // record the index of the newly added tab so that we can later update the \
label showing  // number of search hits
         modelToTabHash.insert( kcsfpm, moduleTabs->count() - 1 );
     }
-    windowStack->addWidget(moduleTabs);
-    windowStack->setCurrentWidget(moduleTabs);
-    setCentralWidget(windowStack);
+
+    setCentralWidget(mainWidget);
 }
 
 void MainWindow::buildActions()
 {
 	addAction(actionCollection()->addAction(KStandardAction::Quit, \
qobject_cast<QObject*>(this), SLOT(close())));  
-	showOverviewAction = actionCollection()->addAction("showAll");
-	showOverviewAction->setIcon( KIcon(QApplication::layoutDirection() == \
                Qt::RightToLeft?"go-next":"go-previous") );
-	showOverviewAction->setText( i18n("Overview") );
-	connect(showOverviewAction, SIGNAL(triggered()), this, SLOT(showOverview()));
-	showOverviewAction->setEnabled(false);
-	addAction(showOverviewAction);
+	connect(moduleTabs->showOverviewButton(), SIGNAL(clicked()), this, \
SLOT(showOverview()));  
-	QWidget *searchWid = new QWidget( this );
-	QLabel * searchIcon = new QLabel( searchWid );
-	searchIcon->setPixmap( BarIcon( "system-search" ) );
-	QLabel *searchLabel = new QLabel( searchWid );
-	searchLabel->setObjectName( QLatin1String("SearchLabel"));
-	searchLabel->setText( i18n("S&earch:") );
-	searchLabel->setFont(KGlobalSettings::toolBarFont());
-	searchLabel->setMargin(2);
-	QHBoxLayout * hlay = new QHBoxLayout( searchWid );
-	hlay->addWidget( searchIcon );
-	hlay->addWidget( searchLabel );
-	searchWid->setLayout( hlay );
-
-	searchText = new KAction( this );
-	searchText->setDefaultWidget(searchWid);
-
-	actionCollection()->addAction( "searchText", searchText );
-	searchText->setShortcut(Qt::Key_F6);
-	addAction(searchText);
-
-	// Search edit box and result labels
-	QWidget *hbox = new QWidget( this );
-
-    search = new KLineEdit( hbox );
-	search->setObjectName(QLatin1String("search"));
-    search->setClearButtonShown( true );
-    search->setFocusPolicy( Qt::StrongFocus );
-	searchLabel->setBuddy( search );
-    // Is that needed? I thought that's what a buddy is for?
-	connect(searchText, SIGNAL(triggered()), search, SLOT(setFocus()));
-
-	QWidget* vbox = new QWidget(hbox);
-	// Set a non empty content to prevent the toolbar from getting taller when
-	// starting a search (at least with Oxygen style).
-	generalHitLabel = new QLabel(" ", vbox);
-	advancedHitLabel = new QLabel(" ", vbox);
-
-	QVBoxLayout* vlayout = new QVBoxLayout;
-	vlayout->setMargin(0);
-	vlayout->setSpacing(0);
-	vlayout->addWidget(generalHitLabel);
-	vlayout->addWidget(advancedHitLabel);
-	vlayout->setStretchFactor(generalHitLabel,1);
-	vlayout->setStretchFactor(advancedHitLabel,1);
-	vbox->setLayout(vlayout);
-
-	QHBoxLayout* hlayout = new QHBoxLayout;
-	hlayout->setMargin(0);
-	hlayout->addWidget(search);
-	hlayout->addWidget(vbox);
-	hlayout->setStretchFactor(search,1);
-	hlayout->setStretchFactor(vbox,1);
-	hbox->setLayout(hlayout);
-
-	searchAction = new KAction( "none", this );
-	searchAction->setDefaultWidget(hbox);
-	actionCollection()->addAction( "search", searchAction );
-	searchAction->setShortcutConfigurable( false );
-	hbox->setWhatsThis( i18n("Search Bar<p>Enter a search term.</p>") );
-
 }
 
 
@@ -276,18 +220,19 @@
     if (!groupWidget->queryClose()) {
         return;
     }
-	windowStack->setCurrentWidget(moduleTabs);
+    
+    QStackedWidget* moduleStackedWidget = qobject_cast<QStackedWidget*>( \
moduleTabs->currentWidget() ); +    moduleStackedWidget->setCurrentIndex(0);
 
 	// Reset the widget for normal all widget viewing
 	groupWidget = 0;
 	widgetChange();
 
-	showOverviewAction->setEnabled(false);
+	moduleTabs->showOverviewButton()->setEnabled(false);
 
-	searchText->setEnabled(true);
-    search->setEnabled(true);
-	searchAction->setEnabled(true);
-
+	moduleTabs->searchText()->setEnabled(true);
+    moduleTabs->searchLineEdit()->setEnabled(true);
+    moduleTabs->setTabsEnabled(true);
 }
 
 void MainWindow::selectionChanged( const QModelIndex& selected )
@@ -310,11 +255,13 @@
     if ( groupWidget )
         return;
 
+	QStackedWidget* moduleStackedWidget = qobject_cast<QStackedWidget*>( \
moduleTabs->currentWidget() ); +	
     groupWidget = moduleItemToWidgetDict[mItem->service];
 
     if( !groupWidget ) {
-        groupWidget = new KCMultiWidget(windowStack, Qt::NonModal); // THAT ZERO IS \
                NEW (actually the 0 can go, jr)
-        windowStack->addWidget(groupWidget);
+        groupWidget = new KCMultiWidget(moduleStackedWidget, Qt::NonModal); // THAT \
ZERO IS NEW (actually the 0 can go, jr) +        \
moduleStackedWidget->addWidget(groupWidget);  \
moduleItemToWidgetDict.insert(mItem->service,groupWidget);  
         // That shouldn't be needed.
@@ -334,13 +281,14 @@
     // which makes the show() call below segfault.  The groupWidget test
     // above should prevent execution reaching here while the KCMultiWidget is
     // visible
-    windowStack->setCurrentWidget( groupWidget );
+    moduleStackedWidget->setCurrentWidget( groupWidget );
 
     setCaption( mItem->service->name() );
-    showOverviewAction->setEnabled(true);
-    searchText->setEnabled(false);
-    search->setEnabled(false);
-    searchAction->setEnabled(false);
+    moduleTabs->showOverviewButton()->setEnabled(true);
+
+    moduleTabs->searchText()->setEnabled(false);
+    moduleTabs->searchLineEdit()->setEnabled(false);
+    moduleTabs->setTabsEnabled(false);
 }
 
 
@@ -351,7 +299,8 @@
 void MainWindow::widgetChange() {
     if( !groupWidget ) {
         setCaption(QString());
-        KCategorizedView * currentView = qobject_cast<KCategorizedView *>( \
moduleTabs->currentWidget() ); +        QStackedWidget* moduleStackedWidget = \
qobject_cast<QStackedWidget*>( moduleTabs->currentWidget() ); +        \
KCategorizedView * currentView = qobject_cast<KCategorizedView *>( \
moduleStackedWidget->widget(0) );  currentView->selectionModel()->clear();
     }
 }
@@ -365,19 +314,19 @@
 void MainWindow::updateSearchHits()
 {
     // if the search lineedit is empty, clear the search labels
-    if ( search->text().isEmpty() ) {
-        generalHitLabel->setText(QString());
-        advancedHitLabel->setText(QString());
+    if ( moduleTabs->searchLineEdit()->text().isEmpty() ) {
+    	moduleTabs->generalHitLabel()->setText(QString());
+    	moduleTabs->advancedHitLabel()->setText(QString());
     } else { // otherwise update the tab for the sender()
         for ( int i = 0; i < moduleTabs->count(); i++ ) {
             const KCategorizedSortFilterProxyModel * kcsfpm = \
static_cast<KCategorizedSortFilterProxyModel*>( sender() );  if (kcsfpm && \
modelToTabHash.contains( kcsfpm ) ) {  switch ( modelToTabHash[ kcsfpm ] ) {
                     case 0:
-                        generalHitLabel->setText(i18np("%1 hit in General","%1 hits \
in General", kcsfpm->rowCount())); +                    \
moduleTabs->generalHitLabel()->setText(i18np("%1 hit in General","%1 hits in \
General", kcsfpm->rowCount()));  break;
                     case 1:
-                        advancedHitLabel->setText(i18np("%1 hit in Advanced","%1 \
hits in Advanced",kcsfpm->rowCount())); +                    \
moduleTabs->advancedHitLabel()->setText(i18np("%1 hit in Advanced","%1 hits in \
Advanced",kcsfpm->rowCount()));  break;
                     default:
                         kDebug() << "Hits found in top level system settings other \
                than General, Advanced, and the UI is hardcoded to only indicate hits \
                in these tabs";
Index: moduletab.cpp
===================================================================
--- moduletab.cpp	(révision 790624)
+++ moduletab.cpp	(copie de travail)
@@ -21,44 +21,48 @@
 #include "moduletab.h"
 
 #include <QTabBar>
-#include <QFont>
-#include <QStackedWidget>
+#include <QLabel>
 #include <QVBoxLayout>
+#include <QPushButton>
+#include <QApplication>
 
 #include <kdebug.h>
+#include <kiconloader.h>
+#include <kicon.h>
+#include <kglobalsettings.h>
+#include <klocale.h>
+#include <klineedit.h>
 
 #include "moduletabbar.h"
 
 class ModuleTabPrivate {
 public:
-	ModuleTabBar* tabBar;
-	
-	QStackedWidget* stackedWidget;
-	
+    KLineEdit * search;
+    QWidget* searchText;
+    
+    QWidget* searchBar;
+    
+	QPushButton *showOverviewButton;
+
+	QLabel *generalHitLabel;
+	QLabel *advancedHitLabel;
+
 };
 
 ModuleTab::ModuleTab ( QWidget *parent )
-    : QWidget( parent ), d(new ModuleTabPrivate())
+    : KTabWidget( parent ), d(new ModuleTabPrivate())
 {
-	QVBoxLayout* mainLayout = new QVBoxLayout(this);
-	mainLayout->setSpacing(0);
 	
-	d->tabBar = new ModuleTabBar(this);
-	d->tabBar->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Minimum);
-	d->tabBar->setShape(QTabBar::TriangularNorth);
-	mainLayout->addWidget(d->tabBar);
+	ModuleTabBar* moduleTabBar = new ModuleTabBar(this);
+	moduleTabBar->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Minimum);
 	
-    QFont font = d->tabBar->font();
-    font.setBold(true);
-    font.setPointSize( font.pointSize() * 1.2 );
-    d->tabBar->setFont(font);
+	setTabBar(moduleTabBar);
     
-    d->stackedWidget = new QStackedWidget(this);
-    mainLayout->addWidget(d->stackedWidget);
-    
-    connect(d->tabBar, SIGNAL(currentChanged( int )), d->stackedWidget, \
                SLOT(setCurrentIndex(int)));
-    connect(d->tabBar, SIGNAL(currentChanged( int )), this, \
                SIGNAL(currentChanged(int)));
-
+	createShowOverviewButton();
+	createSearchBar();
+	
+	setCornerWidget(d->showOverviewButton, Qt::TopLeftCorner);
+	setCornerWidget(d->searchBar, Qt::TopRightCorner);
 }
 
 ModuleTab::~ModuleTab()
@@ -66,22 +70,118 @@
 	delete d;
 }
 
-int ModuleTab::count() const 
-{
-	return d->stackedWidget->count();
+void ModuleTab::createShowOverviewButton() {
+	d->showOverviewButton = new QPushButton(this);
+	d->showOverviewButton->setFlat(true);
+	d->showOverviewButton->setIcon( KIcon(QApplication::layoutDirection() == \
Qt::RightToLeft?"go-next":"go-previous") ); +	d->showOverviewButton->setText( \
i18n("Overview") ); +	d->showOverviewButton->setEnabled(false);
+
+	
 }
 
+void ModuleTab::createSearchBar() {
 
-QWidget* ModuleTab::currentWidget() const
-{
-	return d->stackedWidget->currentWidget();
+	d->searchText = new QWidget( this );
+	QLabel * searchIcon = new QLabel( d->searchText );
+	searchIcon->setPixmap( SmallIcon( "system-search" ) );
+	QLabel *searchLabel = new QLabel( d->searchText );
+	searchLabel->setObjectName( QLatin1String("SearchLabel"));
+	searchLabel->setText( i18n("S&earch:") );
+	searchLabel->setFont(KGlobalSettings::toolBarFont());
+	searchLabel->setMargin(0);
+	QHBoxLayout * hlay = new QHBoxLayout( d->searchText );
+	hlay->addWidget( searchIcon );
+	hlay->addWidget( searchLabel );
+	d->searchText->setLayout( hlay );
+
+	//d->searchText = new KAction( this );
+	//d->searchText->setDefaultWidget(d->searchText);
+
+	//actionCollection()->addAction( "d->searchText", d->searchText );
+	//d->searchText->setShortcut(Qt::Key_F6);
+	//addAction(d->searchText);
+
+	// Search edit box and result labels
+	QWidget *hbox = new QWidget( this );
+
+    d->search = new KLineEdit( hbox );
+    d->search->setObjectName(QLatin1String("search"));
+    d->search->setClearButtonShown( true );
+    d->search->setFocusPolicy( Qt::StrongFocus );
+	searchLabel->setBuddy( d->search );
+    // Is that needed? I thought that's what a buddy is for?
+	//connect(d->searchText, SIGNAL(triggered()), d->search, SLOT(setFocus()));
+
+	QWidget* vbox = new QWidget(hbox);
+	// Set a non empty content to prevent the toolbar from getting taller when
+	// starting a search (at least with Oxygen style).
+	d->generalHitLabel = new QLabel(" ", vbox);
+	d->advancedHitLabel = new QLabel(" ", vbox);
+
+	QVBoxLayout* vlayout = new QVBoxLayout;
+	vlayout->setMargin(0);
+	vlayout->setSpacing(0);
+	vlayout->addWidget(d->generalHitLabel);
+	vlayout->addWidget(d->advancedHitLabel);
+	vlayout->setStretchFactor(d->generalHitLabel,1);
+	vlayout->setStretchFactor(d->advancedHitLabel,1);
+	vbox->setLayout(vlayout);
+
+	QHBoxLayout* hlayout = new QHBoxLayout;
+	hlayout->setMargin(0);
+	hlayout->addWidget(d->search);
+	hlayout->addWidget(vbox);
+	hlayout->setStretchFactor(d->search,1);
+	hlayout->setStretchFactor(vbox,1);
+	hbox->setLayout(hlayout);
+
+	/*
+	searchAction = new KAction( "none", this );
+	searchAction->setDefaultWidget(hbox);
+	actionCollection()->addAction( "search", searchAction );
+	searchAction->setShortcutConfigurable( false );
+	*/
+	
+	hbox->setWhatsThis( i18n("Search Bar<p>Enter a search term.</p>") );
+	
+	d->searchBar = new QWidget( this );
+	QHBoxLayout* searchBarLayout = new QHBoxLayout();
+	
+	d->searchBar->setLayout(searchBarLayout);
+	
+	searchBarLayout->setSpacing(0);
+	searchBarLayout->setMargin(0);
+	searchBarLayout->addWidget(d->searchText);
+	searchBarLayout->addWidget(d->search);
+
 }
 
-void ModuleTab::addTab(QWidget* view, const QString& name)
-{
-	d->tabBar->addTab(name);
-	d->stackedWidget->addWidget(view);
+KLineEdit* ModuleTab::searchLineEdit() {
+	return d->search;
 }
 
+QWidget* ModuleTab::searchText() {
+	return d->searchText;
+}
+QLabel* ModuleTab::generalHitLabel() {
+	return d->generalHitLabel;
+}
+QLabel* ModuleTab::advancedHitLabel() {
+	return d->advancedHitLabel;
+}
 
+QPushButton* ModuleTab::showOverviewButton() {
+	return d->showOverviewButton;
+}
+
+void ModuleTab::setTabsEnabled(bool enabled) {
+	for (int i=0; i<count(); ++i) {
+		if (i==currentIndex())
+			continue;
+		
+		setTabEnabled(i, enabled);
+	}
+}
+
 #include "moduletab.moc"
Index: mainwindow.h
===================================================================
--- mainwindow.h	(révision 790624)
+++ mainwindow.h	(copie de travail)
@@ -28,6 +28,7 @@
 
 class QAbstractItemModel;
 class QAction;
+class QActionGroup;
 class QLabel;
 class QModelIndex;
 class QStackedWidget;
@@ -66,26 +67,16 @@
 	KCModuleModel *model;
 	KService::List categories;
 	KService::List modules;
-	MenuItem * rootItem;
-	QStackedWidget *windowStack;
+	MenuItem *rootItem;
 	ModuleTab *moduleTabs;
-    KLineEdit * search;
 
 	KCMultiWidget *groupWidget;
 
 	QHash<KService::Ptr,KCMultiWidget*> moduleItemToWidgetDict;
 	QHash<const QAbstractItemModel *,int> modelToTabHash;
 
-	QAction *showOverviewAction;
-	KAction *searchText;
-	KAction *searchClear;
-	KAction *searchAction;
-
 	void buildMainWidget();
 	void buildActions();
-
-	QLabel *generalHitLabel;
-	QLabel *advancedHitLabel;
 };
 
 bool pageLessThan( MenuItem *page1, MenuItem *page2 );
Index: moduletab.h
===================================================================
--- moduletab.h	(révision 790624)
+++ moduletab.h	(copie de travail)
@@ -22,31 +22,37 @@
 
 #include <QList>
 #include <QString>
+#include <QIcon>
 
 #include <ktabwidget.h>
 #include <ktabbar.h>
 
 class ModuleTabPrivate;
 
-class ModuleTab : public QWidget {
+class QLabel;
+class QPushButton;
+class KLineEdit;
+
+class ModuleTab : public KTabWidget {
 	Q_OBJECT
 public:
 	ModuleTab (QWidget *parent=0);
 
 	~ModuleTab();
-
-	int count() const;
 	
-	QWidget* currentWidget() const;
+	QPushButton* showOverviewButton();
+	QWidget* searchText();
+	KLineEdit* searchLineEdit();
 	
-	void addTab(QWidget* view, const QString& name);
+	QLabel* generalHitLabel();
+	QLabel* advancedHitLabel();
 	
-signals:
-
-	void currentChanged ( int index );
-	
+	void setTabsEnabled(bool enabled);
 private:
 	
+	void createShowOverviewButton();
+	void createSearchBar();
+	
 	ModuleTabPrivate* const d;
 	
 };
Index: systemsettingsui.rc
===================================================================
--- systemsettingsui.rc	(révision 790624)
+++ systemsettingsui.rc	(copie de travail)
@@ -1,6 +1,7 @@
 <!DOCTYPE kpartgui>
 <kpartgui name="systemsettings" version="1">
 
+<!--
 <ToolBar name="mainToolBar" iconText="icontextright">
 	<Action name="showAll"/>
 	<Separator/>
@@ -8,6 +9,7 @@
 	<Action name="searchText"/>
 	<Action name="search"/>
 </ToolBar>
+-->
 
 <ActionProperties>
 	<Action shortcut="Ctrl+O" name="showAll" />



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic