-void SettingsDlg::registerSettingsPage(SettingsPage *sp) {
- sp->setParent(ui.settingsStack);
- ui.settingsStack->addWidget(sp);
-
- connect(sp, SIGNAL(changed(bool)), this, SLOT(setButtonStates()));
-
- QTreeWidgetItem *cat;
- QList<QTreeWidgetItem *> cats = ui.settingsTree->findItems(sp->category(), Qt::MatchExactly);
- if(!cats.count()) {
- cat = new QTreeWidgetItem(ui.settingsTree, QStringList(sp->category()));
- cat->setExpanded(true);
- cat->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
- } else {
- cat = cats[0];
- }
-
- QTreeWidgetItem *item;
- if(sp->title().isEmpty())
- item = cat;
- else
- item = new QTreeWidgetItem(cat, QStringList(sp->title()));
-
- item->setData(0, SettingsPageRole, QVariant::fromValue<QObject *>(sp));
- ui.settingsTree->setMinimumWidth(ui.settingsTree->header()->sectionSizeHint(0) + 5);
- pageIsLoaded[sp] = false;
- if(!ui.settingsTree->selectedItems().count())
- ui.settingsTree->setCurrentItem(item);
+
+void SettingsDlg::setItemState(QTreeWidgetItem *item)
+{
+ SettingsPage *sp = qobject_cast<SettingsPage *>(item->data(0, SettingsPageRole).value<QObject *>());
+ Q_ASSERT(sp);
+ item->setDisabled(!Client::isConnected() && sp->needsCoreConnection());