X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fqtgui%2Fsettingsdlg.cpp;h=420648223536f1ec1b65bc8f9097d0091ee419e2;hb=717e077612ef073a6b3d2f3b19f56b8e1ed136f8;hp=33a6e4107407a7edf205fc6bda35153e7d4ea9c4;hpb=f53a40aa9d3e0f2c1f15191b665780595d52348a;p=quassel.git diff --git a/src/qtgui/settingsdlg.cpp b/src/qtgui/settingsdlg.cpp index 33a6e410..42064822 100644 --- a/src/qtgui/settingsdlg.cpp +++ b/src/qtgui/settingsdlg.cpp @@ -27,12 +27,12 @@ SettingsDlg::SettingsDlg(QWidget *parent) : QDialog(parent) { ui.settingsFrame->setWidget(ui.settingsStack); ui.settingsTree->setRootIsDecorated(false); - connect(ui.settingsTree, SIGNAL(itemSelectionChanged()), this, SLOT(pageSelected())); + connect(ui.settingsTree, SIGNAL(itemSelectionChanged()), this, SLOT(itemSelected())); connect(ui.buttonBox, SIGNAL(clicked(QAbstractButton *)), this, SLOT(buttonClicked(QAbstractButton *))); } -void SettingsDlg::registerSettingsPage(SettingsInterface *sp) { - QWidget *w = sp->settingsWidget(); +void SettingsDlg::registerSettingsPage(SettingsPage *sp) { + QWidget *w = sp->widget(); w->setParent(this); ui.settingsStack->addWidget(w); @@ -44,17 +44,25 @@ void SettingsDlg::registerSettingsPage(SettingsInterface *sp) { cat->setFlags(Qt::ItemIsEnabled); } else cat = cats[0]; QTreeWidgetItem *p = new QTreeWidgetItem(cat, QStringList(sp->title())); - p->setData(0, Qt::UserRole, QVariant::fromValue(w)); + pages[QString("%1$%2").arg(sp->category()).arg(sp->title())] = sp; } -void SettingsDlg::pageSelected() { +void SettingsDlg::selectPage(const QString &cat, const QString &title) { + QWidget *w = pages[QString("%1$%2").arg(cat).arg(title)]->widget(); + Q_ASSERT(w); + ui.settingsStack->setCurrentWidget(w); +} + +void SettingsDlg::itemSelected() { QList items = ui.settingsTree->selectedItems(); if(!items.count()) { return; } else { - QWidget *sp = items[0]->data(0, Qt::UserRole).value(); - Q_ASSERT(sp); - ui.settingsStack->setCurrentWidget(sp); + QTreeWidgetItem *parent = items[0]->parent(); + if(!parent) return; + QString cat = parent->text(0); + QString title = items[0]->text(0); + selectPage(cat, title); } } @@ -76,6 +84,6 @@ void SettingsDlg::buttonClicked(QAbstractButton *button) { } void SettingsDlg::applyChanges() { - SettingsInterface *sp = qobject_cast(ui.settingsStack->currentWidget()); - if(sp) sp->applyChanges(); + //SettingsInterface *sp = qobject_cast(ui.settingsStack->currentWidget()); + //if(sp) sp->applyChanges(); }