diff options
Diffstat (limited to 'kcontrol/kcontrol/indexwidget.cpp')
-rw-r--r-- | kcontrol/kcontrol/indexwidget.cpp | 142 |
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 ); + } +} |