X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fsettingsdlg.cpp;h=50c64137913ef6e3a93c24be5c49eb38910b409c;hp=d1db2cef902787af52b8ba07a2c7226712dc2f0e;hb=2cdbd53254371cd538a1437c39d22422249fea1a;hpb=bc77491a09c15f5170d4c1eb9608d5da75e81697 diff --git a/src/qtui/settingsdlg.cpp b/src/qtui/settingsdlg.cpp index d1db2cef..50c64137 100644 --- a/src/qtui/settingsdlg.cpp +++ b/src/qtui/settingsdlg.cpp @@ -20,6 +20,7 @@ #include "settingsdlg.h" +#include "client.h" #include "iconloader.h" SettingsDlg::SettingsDlg(QWidget *parent) @@ -38,9 +39,28 @@ SettingsDlg::SettingsDlg(QWidget *parent) connect(ui.settingsTree, SIGNAL(itemSelectionChanged()), this, SLOT(itemSelected())); connect(ui.buttonBox, SIGNAL(clicked(QAbstractButton *)), this, SLOT(buttonClicked(QAbstractButton *))); + connect(Client::instance(), SIGNAL(coreConnectionStateChanged(bool)), SLOT(coreConnectionStateChanged())); + setButtonStates(); } +void SettingsDlg::coreConnectionStateChanged() { + for(int i = 0; i < ui.settingsTree->topLevelItemCount(); i++) { + QTreeWidgetItem *catItem = ui.settingsTree->topLevelItem(i); + for(int j = 0; j < catItem->childCount(); j++) { + QTreeWidgetItem *item = catItem->child(j); + setItemState(item); + } + setItemState(catItem); + } +} + +void SettingsDlg::setItemState(QTreeWidgetItem *item) { + SettingsPage *sp = qobject_cast(item->data(0, SettingsPageRole).value()); + Q_ASSERT(sp); + item->setDisabled(!Client::isConnected() && sp->needsCoreConnection()); +} + void SettingsDlg::registerSettingsPage(SettingsPage *sp) { sp->setParent(ui.settingsStack); ui.settingsStack->addWidget(sp); @@ -68,6 +88,8 @@ void SettingsDlg::registerSettingsPage(SettingsPage *sp) { pageIsLoaded[sp] = false; if(!ui.settingsTree->selectedItems().count()) ui.settingsTree->setCurrentItem(item); + + setItemState(item); } void SettingsDlg::selectPage(SettingsPage *sp) {