modernize: Migrate action-related things to PMF connects
[quassel.git] / src / qtui / settingsdlg.cpp
index 11a8bca..56c3cdc 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2013 by the Quassel Project                        *
+ *   Copyright (C) 2005-2018 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
  *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.         *
  ***************************************************************************/
 
+#include "settingsdlg.h"
+
 #include <QMessageBox>
 #include <QPushButton>
 
-#include "settingsdlg.h"
-
 #include "client.h"
-#include "iconloader.h"
+#include "icon.h"
 
 SettingsDlg::SettingsDlg(QWidget *parent)
-    : QDialog(parent),
-    _currentPage(0)
+    : QDialog(parent)
 {
     ui.setupUi(this);
     setModal(true);
     setAttribute(Qt::WA_DeleteOnClose, true);
-    setWindowIcon(SmallIcon("configure"));
+    setWindowIcon(icon::get("configure"));
 
     updateGeometry();
 
     ui.settingsTree->setRootIsDecorated(false);
 
-    connect(ui.settingsTree, SIGNAL(itemSelectionChanged()), this, SLOT(itemSelected()));
-    connect(ui.buttonBox, SIGNAL(clicked(QAbstractButton *)), this, SLOT(buttonClicked(QAbstractButton *)));
+    connect(ui.settingsTree, &QTreeWidget::itemSelectionChanged, this, &SettingsDlg::itemSelected);
+    connect(ui.buttonBox, &QDialogButtonBox::clicked, this, &SettingsDlg::buttonClicked);
 
-    connect(Client::instance(), SIGNAL(coreConnectionStateChanged(bool)), SLOT(coreConnectionStateChanged()));
+    connect(Client::instance(), &Client::coreConnectionStateChanged, this, &SettingsDlg::coreConnectionStateChanged);
 
     setButtonStates();
 }
@@ -63,9 +62,11 @@ void SettingsDlg::coreConnectionStateChanged()
 
 void SettingsDlg::setItemState(QTreeWidgetItem *item)
 {
-    SettingsPage *sp = qobject_cast<SettingsPage *>(item->data(0, SettingsPageRole).value<QObject *>());
+    auto *sp = qobject_cast<SettingsPage *>(item->data(0, SettingsPageRole).value<QObject *>());
     Q_ASSERT(sp);
-    item->setDisabled(!Client::isConnected() && sp->needsCoreConnection());
+    bool disabledDueToConnection = !Client::isConnected() && sp->needsCoreConnection();
+    bool disabledDueToOwnChoice = !sp->isSelectable();
+    item->setDisabled(disabledDueToConnection || disabledDueToOwnChoice);
 }
 
 
@@ -74,7 +75,7 @@ void SettingsDlg::registerSettingsPage(SettingsPage *sp)
     sp->setParent(ui.settingsStack);
     ui.settingsStack->addWidget(sp);
 
-    connect(sp, SIGNAL(changed(bool)), this, SLOT(setButtonStates()));
+    connect(sp, &SettingsPage::changed, this, &SettingsDlg::setButtonStates);
 
     QTreeWidgetItem *cat;
     QList<QTreeWidgetItem *> cats = ui.settingsTree->findItems(sp->category(), Qt::MatchExactly);
@@ -94,7 +95,6 @@ void SettingsDlg::registerSettingsPage(SettingsPage *sp)
         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);
@@ -106,7 +106,7 @@ void SettingsDlg::registerSettingsPage(SettingsPage *sp)
 void SettingsDlg::selectPage(SettingsPage *sp)
 {
     if (!sp) {
-        _currentPage = 0;
+        _currentPage = nullptr;
         ui.settingsStack->setCurrentIndex(0);
         ui.pageTitle->setText(tr("Settings"));
         return;
@@ -117,7 +117,7 @@ void SettingsDlg::selectPage(SettingsPage *sp)
         pageIsLoaded[sp] = true;
     }
 
-    if (sp != currentPage() && currentPage() != 0 && currentPage()->hasChanged()) {
+    if (sp != currentPage() && currentPage() != nullptr && 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?"),
             QMessageBox::Discard|QMessageBox::Save|QMessageBox::Cancel, QMessageBox::Cancel);
@@ -150,7 +150,7 @@ void SettingsDlg::selectPage(SettingsPage *sp)
 void SettingsDlg::itemSelected()
 {
     QList<QTreeWidgetItem *> items = ui.settingsTree->selectedItems();
-    SettingsPage *sp = 0;
+    SettingsPage *sp = nullptr;
     if (!items.isEmpty()) {
         sp = qobject_cast<SettingsPage *>(items[0]->data(0, SettingsPageRole).value<QObject *>());
     }