X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fsettingsdlg.cpp;h=1750fa4770d0cc7b0bf055f417ab63feeb9e503f;hp=9d9d4e646fd62c882d203cc372478f87e3f1dffe;hb=d1f2e1324046ad4108d30434c92fc0a2d688ef09;hpb=d6b056e936ec441258d291b7a8af7b83f9f53016 diff --git a/src/qtui/settingsdlg.cpp b/src/qtui/settingsdlg.cpp index 9d9d4e64..1750fa47 100644 --- a/src/qtui/settingsdlg.cpp +++ b/src/qtui/settingsdlg.cpp @@ -23,18 +23,18 @@ SettingsDlg::SettingsDlg(QWidget *parent) : QDialog(parent) { ui.setupUi(this); - ui.settingsFrame->setWidgetResizable(true); - ui.settingsFrame->setWidget(ui.settingsStack); + //ui.settingsFrame->setWidgetResizable(true); + //ui.settingsFrame->setWidget(ui.settingsStack); ui.settingsTree->setRootIsDecorated(false); connect(ui.settingsTree, SIGNAL(itemSelectionChanged()), this, SLOT(itemSelected())); connect(ui.buttonBox, SIGNAL(clicked(QAbstractButton *)), this, SLOT(buttonClicked(QAbstractButton *))); } + void SettingsDlg::registerSettingsPage(SettingsPage *sp) { - QWidget *w = sp->widget(); - w->setParent(this); - ui.settingsStack->addWidget(w); + sp->setParent(ui.settingsStack); + ui.settingsStack->addWidget(sp); QTreeWidgetItem *cat; QList cats = ui.settingsTree->findItems(sp->category(), Qt::MatchExactly); @@ -43,12 +43,15 @@ void SettingsDlg::registerSettingsPage(SettingsPage *sp) { cat->setExpanded(true); cat->setFlags(Qt::ItemIsEnabled); } else cat = cats[0]; - QTreeWidgetItem *p = new QTreeWidgetItem(cat, QStringList(sp->title())); - pages[QString("%1$%2").arg(sp->category()).arg(sp->title())] = sp; + new QTreeWidgetItem(cat, QStringList(sp->title())); + pages[QString("%1$%2").arg(sp->category(), sp->title())] = sp; + updateGeometry(); + // TESTING + selectPage(sp->category(), sp->title()); } void SettingsDlg::selectPage(const QString &cat, const QString &title) { - QWidget *w = pages[QString("%1$%2").arg(cat).arg(title)]->widget(); + QWidget *w = pages[QString("%1$%2").arg(cat, title)]; Q_ASSERT(w); ui.settingsStack->setCurrentWidget(w); } @@ -63,27 +66,45 @@ void SettingsDlg::itemSelected() { QString cat = parent->text(0); QString title = items[0]->text(0); selectPage(cat, title); + ui.pageTitle->setText(title); } } void SettingsDlg::buttonClicked(QAbstractButton *button) { - switch(ui.buttonBox->buttonRole(button)) { - case QDialogButtonBox::AcceptRole: + switch(ui.buttonBox->standardButton(button)) { + case QDialogButtonBox::Ok: applyChanges(); accept(); break; - case QDialogButtonBox::ApplyRole: + case QDialogButtonBox::Apply: applyChanges(); break; - case QDialogButtonBox::RejectRole: + case QDialogButtonBox::Cancel: reject(); break; + case QDialogButtonBox::Reset: + reload(); + break; + case QDialogButtonBox::RestoreDefaults: + loadDefaults(); + break; default: break; } } void SettingsDlg::applyChanges() { - //SettingsInterface *sp = qobject_cast(ui.settingsStack->currentWidget()); - //if(sp) sp->applyChanges(); + foreach(SettingsPage *page, pages.values()) { + page->save(); + } +} + +void SettingsDlg::reload() { + SettingsPage *page = qobject_cast(ui.settingsStack->currentWidget()); + if(page) page->load(); +} + +void SettingsDlg::loadDefaults() { + SettingsPage *page = qobject_cast(ui.settingsStack->currentWidget()); + if(page) page->defaults(); }