X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fsettingsdlg.cpp;h=0b372f62f49f167d6f8f748bf7e6a65117669c21;hp=035993b9e6723ac1181ddc2d4927bfb79149834f;hb=52cba0963e0714f4d58296a20d02164b57f9f4ba;hpb=43159be08b173c4c1c973eb3ea26cdaae191fc2f diff --git a/src/qtui/settingsdlg.cpp b/src/qtui/settingsdlg.cpp index 035993b9..0b372f62 100644 --- a/src/qtui/settingsdlg.cpp +++ b/src/qtui/settingsdlg.cpp @@ -65,9 +65,9 @@ void SettingsDlg::registerSettingsPage(SettingsPage *sp) { QTreeWidgetItem *item = new QTreeWidgetItem(cat, QStringList(sp->title())); treeItems[sp] = item; pages[QString("%1$%2").arg(sp->category(), sp->title())] = sp; - sp->load(); + pageIsLoaded[sp] = false; // TESTING - selectPage(sp->category(), sp->title()); + // selectPage(sp->category(), sp->title()); } void SettingsDlg::selectPage(const QString &cat, const QString &title) { @@ -78,6 +78,10 @@ void SettingsDlg::selectPage(const QString &cat, const QString &title) { ui.settingsTree->setCurrentItem(0); return; } + if(!pageIsLoaded[sp]) { + sp->load(); + pageIsLoaded[sp] = true; + } if(sp != currentPage() && currentPage() != 0 && currentPage()->hasChanged()) { int ret = QMessageBox::warning(this, tr("Save changes"), tr("There are unsaved changes on the current configuration page. Would you like to apply your changes now?"), @@ -113,7 +117,6 @@ void SettingsDlg::itemSelected() { void SettingsDlg::setButtonStates() { SettingsPage *sp = currentPage(); - ui.buttonBox->button(QDialogButtonBox::Ok)->setEnabled(sp && sp->hasChanged()); ui.buttonBox->button(QDialogButtonBox::Apply)->setEnabled(sp && sp->hasChanged()); ui.buttonBox->button(QDialogButtonBox::Reset)->setEnabled(sp && sp->hasChanged()); ui.buttonBox->button(QDialogButtonBox::RestoreDefaults)->setEnabled(sp && sp->hasDefaults()); @@ -122,7 +125,9 @@ void SettingsDlg::setButtonStates() { void SettingsDlg::buttonClicked(QAbstractButton *button) { switch(ui.buttonBox->standardButton(button)) { case QDialogButtonBox::Ok: - if(applyChanges()) accept(); + if(currentPage() && currentPage()->hasChanged()) { + if(applyChanges()) accept(); + } else accept(); break; case QDialogButtonBox::Apply: applyChanges();