/***************************************************************************
- * Copyright (C) 2005-2013 by the Quassel Project *
+ * Copyright (C) 2005-2019 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)
+SettingsDlg::SettingsDlg(QWidget* parent)
+ : 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();
}
-
void SettingsDlg::coreConnectionStateChanged()
{
for (int i = 0; i < ui.settingsTree->topLevelItemCount(); i++) {
- QTreeWidgetItem *catItem = ui.settingsTree->topLevelItem(i);
+ QTreeWidgetItem* catItem = ui.settingsTree->topLevelItem(i);
for (int j = 0; j < catItem->childCount(); j++) {
- QTreeWidgetItem *item = catItem->child(j);
+ QTreeWidgetItem* item = catItem->child(j);
setItemState(item);
}
setItemState(catItem);
}
}
-
-void SettingsDlg::setItemState(QTreeWidgetItem *item)
+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);
}
-
-void SettingsDlg::registerSettingsPage(SettingsPage *sp)
+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);
+ 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 = cats[0];
}
- QTreeWidgetItem *item;
+ 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);
+ item->setData(0, SettingsPageRole, QVariant::fromValue(sp));
pageIsLoaded[sp] = false;
if (!ui.settingsTree->selectedItems().count())
ui.settingsTree->setCurrentItem(item);
setItemState(item);
}
-
-void SettingsDlg::selectPage(SettingsPage *sp)
+void SettingsDlg::selectPage(SettingsPage* sp)
{
if (!sp) {
- _currentPage = 0;
+ _currentPage = nullptr;
ui.settingsStack->setCurrentIndex(0);
ui.pageTitle->setText(tr("Settings"));
return;
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?"),
- QMessageBox::Discard|QMessageBox::Save|QMessageBox::Cancel, QMessageBox::Cancel);
+ 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);
if (ret == QMessageBox::Save) {
- if (!applyChanges()) sp = currentPage();
+ if (!applyChanges())
+ sp = currentPage();
}
else if (ret == QMessageBox::Discard) {
undoChanges();
}
- else sp = currentPage();
+ else
+ sp = currentPage();
}
if (sp != currentPage()) {
setButtonStates();
}
-
void SettingsDlg::itemSelected()
{
- QList<QTreeWidgetItem *> items = ui.settingsTree->selectedItems();
- SettingsPage *sp = 0;
+ QList<QTreeWidgetItem*> items = ui.settingsTree->selectedItems();
+ SettingsPage* sp = nullptr;
if (!items.isEmpty()) {
- sp = qobject_cast<SettingsPage *>(items[0]->data(0, SettingsPageRole).value<QObject *>());
+ sp = qobject_cast<SettingsPage*>(items[0]->data(0, SettingsPageRole).value<QObject*>());
}
selectPage(sp);
}
-
void SettingsDlg::setButtonStates()
{
- SettingsPage *sp = currentPage();
+ SettingsPage* sp = currentPage();
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());
}
-
-void SettingsDlg::buttonClicked(QAbstractButton *button)
+void SettingsDlg::buttonClicked(QAbstractButton* button)
{
switch (ui.buttonBox->standardButton(button)) {
case QDialogButtonBox::Ok:
if (currentPage() && currentPage()->hasChanged()) {
- if (applyChanges()) accept();
+ if (applyChanges())
+ accept();
}
- else accept();
+ else
+ accept();
break;
case QDialogButtonBox::Apply:
applyChanges();
}
}
-
bool SettingsDlg::applyChanges()
{
- if (!currentPage()) return false;
+ if (!currentPage())
+ return false;
if (currentPage()->aboutToSave()) {
currentPage()->save();
return true;
return false;
}
-
void SettingsDlg::undoChanges()
{
if (currentPage()) {
}
}
-
void SettingsDlg::reload()
{
- if (!currentPage()) return;
- int ret = QMessageBox::question(this, tr("Reload Settings"), tr("Do you like to reload the settings, undoing your changes on this page?"),
- QMessageBox::Yes|QMessageBox::No, QMessageBox::No);
+ if (!currentPage())
+ return;
+ int ret = QMessageBox::question(this,
+ tr("Reload Settings"),
+ tr("Do you like to reload the settings, undoing your changes on this page?"),
+ QMessageBox::Yes | QMessageBox::No,
+ QMessageBox::No);
if (ret == QMessageBox::Yes) {
currentPage()->load();
}
}
-
void SettingsDlg::loadDefaults()
{
- if (!currentPage()) return;
- int ret = QMessageBox::question(this, tr("Restore Defaults"), tr("Do you like to restore the default values for this page?"),
- QMessageBox::RestoreDefaults|QMessageBox::Cancel, QMessageBox::Cancel);
+ if (!currentPage())
+ return;
+ int ret = QMessageBox::question(this,
+ tr("Restore Defaults"),
+ tr("Do you like to restore the default values for this page?"),
+ QMessageBox::RestoreDefaults | QMessageBox::Cancel,
+ QMessageBox::Cancel);
if (ret == QMessageBox::RestoreDefaults) {
currentPage()->defaults();
}