summaryrefslogtreecommitdiffstats
path: root/kcontrol/kcontrol/indexwidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kcontrol/kcontrol/indexwidget.cpp')
-rw-r--r--kcontrol/kcontrol/indexwidget.cpp142
1 files changed, 142 insertions, 0 deletions
diff --git a/kcontrol/kcontrol/indexwidget.cpp b/kcontrol/kcontrol/indexwidget.cpp
new file mode 100644
index 000000000..d427b5707
--- /dev/null
+++ b/kcontrol/kcontrol/indexwidget.cpp
@@ -0,0 +1,142 @@
+/*
+ Copyright (c) 2000 Matthias Elter <elter@kde.org>
+ Copyright (c) 2003 Frauke Oster <frauke.oster@t-online.de>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+*/
+
+#include <qlistview.h>
+
+
+#include "indexwidget.h"
+#include "indexwidget.moc"
+#include "moduletreeview.h"
+#include "moduleiconview.h"
+
+IndexWidget::IndexWidget(ConfigModuleList *modules, QWidget *parent ,const char *name)
+ : QWidgetStack(parent, name)
+ , _tree(0L)
+ , _icon(0L)
+ , _modules(modules)
+ , viewMode(Icon)
+{
+ activateView(Icon);
+}
+
+IndexWidget::~IndexWidget() {}
+
+void IndexWidget::reload()
+{
+ if (_icon)
+ _icon->fill();
+}
+
+QListViewItem *IndexWidget::firstTreeViewItem()
+{
+ if (_tree)
+ return _tree->firstChild();
+ else
+ return 0L;
+}
+
+
+void IndexWidget::resizeEvent(QResizeEvent *e)
+{
+ QWidgetStack::resizeEvent( e );
+}
+
+void IndexWidget::moduleSelected(ConfigModule *m)
+{
+ const QObject *obj = sender();
+ if(!m) return;
+
+ emit moduleActivated(m);
+
+ if (obj->inherits("ModuleIconView") && _tree)
+ {
+ _tree->makeVisible(m);
+
+ _tree->disconnect(SIGNAL(moduleSelected(ConfigModule*)));
+ _tree->makeSelected(m);
+ connect(_tree, SIGNAL(moduleSelected(ConfigModule*)),
+ this, SLOT(moduleSelected(ConfigModule*)));
+ }
+ else if (obj->inherits("ModuleTreeView") && _icon)
+ {
+ _icon->makeVisible(m);
+
+ _icon->disconnect(SIGNAL(moduleSelected(ConfigModule*)));
+ _icon->makeSelected(m);
+ connect(_icon, SIGNAL(moduleSelected(ConfigModule*)),
+ this, SLOT(moduleSelected(ConfigModule*)));
+ }
+}
+
+void IndexWidget::makeSelected(ConfigModule *module)
+{
+ if (_icon)
+ {
+ _icon->disconnect(SIGNAL(moduleSelected(ConfigModule*)));
+ _icon->makeSelected(module);
+ connect(_icon, SIGNAL(moduleSelected(ConfigModule*)),
+ this, SLOT(moduleSelected(ConfigModule*)));
+ }
+ if (_tree)
+ {
+ _tree->disconnect(SIGNAL(moduleSelected(ConfigModule*)));
+ _tree->makeSelected(module);
+ connect(_tree, SIGNAL(moduleSelected(ConfigModule*)),
+ this, SLOT(moduleSelected(ConfigModule*)));
+ }
+}
+
+void IndexWidget::makeVisible(ConfigModule *module)
+{
+ if (_icon)
+ _icon->makeVisible(module);
+ if (_tree)
+ _tree->makeVisible(module);
+}
+
+void IndexWidget::activateView(IndexViewMode mode)
+{
+ viewMode = mode;
+
+ if (mode == Icon)
+ {
+ if (!_icon)
+ {
+ _icon=new ModuleIconView(_modules, this);
+ _icon->fill();
+ connect(_icon, SIGNAL(moduleSelected(ConfigModule*)),
+ this, SLOT(moduleSelected(ConfigModule*)));
+ }
+ raiseWidget( _icon );
+ }
+ else
+ {
+ if (!_tree)
+ {
+ _tree=new ModuleTreeView(_modules, this);
+ _tree->fill();
+ connect(_tree, SIGNAL(moduleSelected(ConfigModule*)),
+ this, SLOT(moduleSelected(ConfigModule*)));
+ connect(_tree, SIGNAL(categorySelected(QListViewItem*)),
+ this, SIGNAL(categorySelected(QListViewItem*)));
+ }
+ raiseWidget( _tree );
+ }
+}