From 2cdbd53254371cd538a1437c39d22422249fea1a Mon Sep 17 00:00:00 2001 From: Manuel Nickschas Date: Tue, 1 Dec 2009 22:13:07 +0100 Subject: [PATCH] Refactorize settingspages a bit Some more sensible ordering/categorizing, plus the ability to disable certain settingspages in the settingspagedlg if we're not connected to a core. --- src/qtui/mainwin.cpp | 9 +- src/qtui/settingsdlg.cpp | 22 + src/qtui/settingsdlg.h | 6 +- .../settingspages/aliasessettingspage.cpp | 2 +- src/qtui/settingspages/aliasessettingspage.h | 1 + .../settingspages/appearancesettingspage.cpp | 75 +++ .../settingspages/appearancesettingspage.h | 2 + .../settingspages/appearancesettingspage.ui | 449 ++++++++++++++---- .../settingspages/backlogsettingspage.cpp | 2 +- .../settingspages/bufferviewsettingspage.cpp | 18 +- .../settingspages/connectionsettingspage.cpp | 2 +- .../settingspages/connectionsettingspage.h | 1 + .../settingspages/coreaccountsettingspage.cpp | 2 +- .../settingspages/generalsettingspage.cpp | 176 ------- src/qtui/settingspages/generalsettingspage.h | 52 -- src/qtui/settingspages/generalsettingspage.ui | 207 -------- .../settingspages/identitiessettingspage.cpp | 4 +- .../settingspages/identitiessettingspage.h | 2 + .../settingspages/ignorelistsettingspage.cpp | 2 +- .../settingspages/ignorelistsettingspage.h | 1 + .../settingspages/networkssettingspage.cpp | 6 +- src/qtui/settingspages/networkssettingspage.h | 2 + src/qtui/settingspages/settingspages.inc | 2 +- src/uisupport/settingspage.h | 6 + 24 files changed, 504 insertions(+), 547 deletions(-) delete mode 100644 src/qtui/settingspages/generalsettingspage.cpp delete mode 100644 src/qtui/settingspages/generalsettingspage.h delete mode 100644 src/qtui/settingspages/generalsettingspage.ui diff --git a/src/qtui/mainwin.cpp b/src/qtui/mainwin.cpp index 24d9ac6e..2e1ae409 100644 --- a/src/qtui/mainwin.cpp +++ b/src/qtui/mainwin.cpp @@ -112,7 +112,6 @@ #include "settingspages/chatviewsettingspage.h" #include "settingspages/connectionsettingspage.h" #include "settingspages/coreaccountsettingspage.h" -#include "settingspages/generalsettingspage.h" #include "settingspages/highlightsettingspage.h" #include "settingspages/identitiessettingspage.h" #include "settingspages/ignorelistsettingspage.h" @@ -938,23 +937,23 @@ void MainWin::showSettingsDlg() { //Category: Interface dlg->registerSettingsPage(new AppearanceSettingsPage(dlg)); dlg->registerSettingsPage(new ChatViewSettingsPage(dlg)); + dlg->registerSettingsPage(new ChatMonitorSettingsPage(dlg)); dlg->registerSettingsPage(new ItemViewSettingsPage(dlg)); + dlg->registerSettingsPage(new BufferViewSettingsPage(dlg)); dlg->registerSettingsPage(new InputWidgetSettingsPage(dlg)); dlg->registerSettingsPage(new TopicWidgetSettingsPage(dlg)); dlg->registerSettingsPage(new HighlightSettingsPage(dlg)); dlg->registerSettingsPage(new NotificationsSettingsPage(dlg)); dlg->registerSettingsPage(new BacklogSettingsPage(dlg)); - dlg->registerSettingsPage(new BufferViewSettingsPage(dlg)); - dlg->registerSettingsPage(new ChatMonitorSettingsPage(dlg)); - //Category: Misc - dlg->registerSettingsPage(new GeneralSettingsPage(dlg)); + //Category: IRC dlg->registerSettingsPage(new ConnectionSettingsPage(dlg)); dlg->registerSettingsPage(new IdentitiesSettingsPage(dlg)); dlg->registerSettingsPage(new NetworksSettingsPage(dlg)); dlg->registerSettingsPage(new AliasesSettingsPage(dlg)); dlg->registerSettingsPage(new IgnoreListSettingsPage(dlg)); + // Category: Remote Cores if(Quassel::runMode() != Quassel::Monolithic) { dlg->registerSettingsPage(new CoreAccountSettingsPage(dlg)); } 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) { diff --git a/src/qtui/settingsdlg.h b/src/qtui/settingsdlg.h index be8360fe..1c3cc786 100644 --- a/src/qtui/settingsdlg.h +++ b/src/qtui/settingsdlg.h @@ -40,6 +40,7 @@ public slots: void selectPage(SettingsPage *sp); // const QString &category, const QString &title); private slots: + void coreConnectionStateChanged(); void itemSelected(); void buttonClicked(QAbstractButton *); bool applyChanges(); @@ -47,10 +48,11 @@ private slots: void reload(); void loadDefaults(); void setButtonStates(); - + void setItemState(QTreeWidgetItem *); + private: Ui::SettingsDlg ui; - + SettingsPage *_currentPage; QHash pageIsLoaded; diff --git a/src/qtui/settingspages/aliasessettingspage.cpp b/src/qtui/settingspages/aliasessettingspage.cpp index 8ffd30a4..2a7feaee 100644 --- a/src/qtui/settingspages/aliasessettingspage.cpp +++ b/src/qtui/settingspages/aliasessettingspage.cpp @@ -26,7 +26,7 @@ #include "iconloader.h" AliasesSettingsPage::AliasesSettingsPage(QWidget *parent) - : SettingsPage(tr("Misc"), tr("Aliases"), parent) + : SettingsPage(tr("IRC"), tr("Aliases"), parent) { ui.setupUi(this); ui.newAliasButton->setIcon(SmallIcon("list-add")); diff --git a/src/qtui/settingspages/aliasessettingspage.h b/src/qtui/settingspages/aliasessettingspage.h index 0e2fa8b0..d6aea9d5 100644 --- a/src/qtui/settingspages/aliasessettingspage.h +++ b/src/qtui/settingspages/aliasessettingspage.h @@ -33,6 +33,7 @@ public: AliasesSettingsPage(QWidget *parent = 0); virtual inline bool hasDefaults() const { return true; } + virtual inline bool needsCoreConnection() const { return true; } public slots: void save(); diff --git a/src/qtui/settingspages/appearancesettingspage.cpp b/src/qtui/settingspages/appearancesettingspage.cpp index 0b33f0f4..5cd52df9 100644 --- a/src/qtui/settingspages/appearancesettingspage.cpp +++ b/src/qtui/settingspages/appearancesettingspage.cpp @@ -20,6 +20,7 @@ #include "appearancesettingspage.h" +#include "buffersettings.h" #include "qtui.h" #include "qtuisettings.h" #include "qtuistyle.h" @@ -34,6 +35,11 @@ AppearanceSettingsPage::AppearanceSettingsPage(QWidget *parent) : SettingsPage(tr("Interface"), QString(), parent) { ui.setupUi(this); + +#ifdef Q_WS_MAC + ui.minimizeOnClose->hide(); +#endif + initAutoWidgets(); initStyleComboBox(); initLanguageComboBox(); @@ -46,6 +52,18 @@ AppearanceSettingsPage::AppearanceSettingsPage(QWidget *parent) } connect(ui.chooseStyleSheet, SIGNAL(clicked()), SLOT(chooseStyleSheet())); + + connect(ui.userNoticesInDefaultBuffer, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged())); + connect(ui.userNoticesInStatusBuffer, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged())); + connect(ui.userNoticesInCurrentBuffer, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged())); + + connect(ui.serverNoticesInDefaultBuffer, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged())); + connect(ui.serverNoticesInStatusBuffer, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged())); + connect(ui.serverNoticesInCurrentBuffer, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged())); + + connect(ui.errorMsgsInDefaultBuffer, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged())); + connect(ui.errorMsgsInStatusBuffer, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged())); + connect(ui.errorMsgsInCurrentBuffer, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged())); } void AppearanceSettingsPage::initStyleComboBox() { @@ -99,6 +117,23 @@ void AppearanceSettingsPage::load() { ui.languageComboBox->setProperty("storedValue", ui.languageComboBox->currentIndex()); Quassel::loadTranslation(selectedLocale()); + // bufferSettings: + BufferSettings bufferSettings; + int redirectTarget = bufferSettings.userNoticesTarget(); + SettingsPage::load(ui.userNoticesInDefaultBuffer, redirectTarget & BufferSettings::DefaultBuffer); + SettingsPage::load(ui.userNoticesInStatusBuffer, redirectTarget & BufferSettings::StatusBuffer); + SettingsPage::load(ui.userNoticesInCurrentBuffer, redirectTarget & BufferSettings::CurrentBuffer); + + redirectTarget = bufferSettings.serverNoticesTarget(); + SettingsPage::load(ui.serverNoticesInDefaultBuffer, redirectTarget & BufferSettings::DefaultBuffer); + SettingsPage::load(ui.serverNoticesInStatusBuffer, redirectTarget & BufferSettings::StatusBuffer); + SettingsPage::load(ui.serverNoticesInCurrentBuffer, redirectTarget & BufferSettings::CurrentBuffer); + + redirectTarget = bufferSettings.errorMsgsTarget(); + SettingsPage::load(ui.errorMsgsInDefaultBuffer, redirectTarget & BufferSettings::DefaultBuffer); + SettingsPage::load(ui.errorMsgsInStatusBuffer, redirectTarget & BufferSettings::StatusBuffer); + SettingsPage::load(ui.errorMsgsInCurrentBuffer, redirectTarget & BufferSettings::CurrentBuffer); + SettingsPage::load(); setChangedState(false); } @@ -122,6 +157,34 @@ void AppearanceSettingsPage::save() { ui.useCustomStyleSheet->isChecked() != ui.useCustomStyleSheet->property("storedValue").toBool() || (ui.useCustomStyleSheet->isChecked() && ui.customStyleSheetPath->text() != ui.customStyleSheetPath->property("storedValue").toString()); + BufferSettings bufferSettings; + int redirectTarget = 0; + if(ui.userNoticesInDefaultBuffer->isChecked()) + redirectTarget |= BufferSettings::DefaultBuffer; + if(ui.userNoticesInStatusBuffer->isChecked()) + redirectTarget |= BufferSettings::StatusBuffer; + if(ui.userNoticesInCurrentBuffer->isChecked()) + redirectTarget |= BufferSettings::CurrentBuffer; + bufferSettings.setUserNoticesTarget(redirectTarget); + + redirectTarget = 0; + if(ui.serverNoticesInDefaultBuffer->isChecked()) + redirectTarget |= BufferSettings::DefaultBuffer; + if(ui.serverNoticesInStatusBuffer->isChecked()) + redirectTarget |= BufferSettings::StatusBuffer; + if(ui.serverNoticesInCurrentBuffer->isChecked()) + redirectTarget |= BufferSettings::CurrentBuffer; + bufferSettings.setServerNoticesTarget(redirectTarget); + + redirectTarget = 0; + if(ui.errorMsgsInDefaultBuffer->isChecked()) + redirectTarget |= BufferSettings::DefaultBuffer; + if(ui.errorMsgsInStatusBuffer->isChecked()) + redirectTarget |= BufferSettings::StatusBuffer; + if(ui.errorMsgsInCurrentBuffer->isChecked()) + redirectTarget |= BufferSettings::CurrentBuffer; + bufferSettings.setErrorMsgsTarget(redirectTarget); + SettingsPage::save(); setChangedState(false); if(needsStyleReload) @@ -162,5 +225,17 @@ bool AppearanceSettingsPage::testHasChanged() { if(selectedLocale() != QLocale()) return true; // QLocale() returns the default locale (manipulated via loadTranslation()) + if(SettingsPage::hasChanged(ui.userNoticesInStatusBuffer)) return true; + if(SettingsPage::hasChanged(ui.userNoticesInDefaultBuffer)) return true; + if(SettingsPage::hasChanged(ui.userNoticesInCurrentBuffer)) return true; + + if(SettingsPage::hasChanged(ui.serverNoticesInStatusBuffer)) return true; + if(SettingsPage::hasChanged(ui.serverNoticesInDefaultBuffer)) return true; + if(SettingsPage::hasChanged(ui.serverNoticesInCurrentBuffer)) return true; + + if(SettingsPage::hasChanged(ui.errorMsgsInStatusBuffer)) return true; + if(SettingsPage::hasChanged(ui.errorMsgsInDefaultBuffer)) return true; + if(SettingsPage::hasChanged(ui.errorMsgsInCurrentBuffer)) return true; + return false; } diff --git a/src/qtui/settingspages/appearancesettingspage.h b/src/qtui/settingspages/appearancesettingspage.h index a6fffa2f..1b9c0cf6 100644 --- a/src/qtui/settingspages/appearancesettingspage.h +++ b/src/qtui/settingspages/appearancesettingspage.h @@ -57,6 +57,8 @@ private: Ui::AppearanceSettingsPage ui; QHash settings; QList _locales; + + inline QString settingsKey() const { return QString("QtUi"); } }; #endif diff --git a/src/qtui/settingspages/appearancesettingspage.ui b/src/qtui/settingspages/appearancesettingspage.ui index ef10ae19..2e883240 100644 --- a/src/qtui/settingspages/appearancesettingspage.ui +++ b/src/qtui/settingspages/appearancesettingspage.ui @@ -6,110 +6,324 @@ 0 0 - 521 - 524 + 549 + 470 Form - + - - - Client Style - - - - - - Set application style + + + + + Client style: + + + + + + + Set application style + + + + + + + Language: + + + + + + + Set the application language. Requires restart! + + + + <System Default> - - - - + + + + <Original> + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + - - - Language + + + Use custom stylesheet + + + UseCustomStyleSheet + + + false - - - - - Set the application language. Requires restart! - - - - <System Default> - - - - - <Original> - - - - - - - - Use Custom Stylesheet - - - true + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 20 + 20 + + + + + + + + false + + + Path: + + + + + + + false + + + + 0 + 0 + + + + false + + + /UiStyle/CustomStyleSheetPath + + + + + + + + + + false + + + ... + + + + + + + + + Show system tray icon - false + true - /UiStyle/UseCustomStyleSheet + UseSystemTrayIcon - false + true + + + + + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 20 + 20 + + + + + + + + Hide to tray on close button + + + MinimizeOnClose + + + false + + + + + + + + + Message Redirection - - - - - - - Path: - - - - - - - - 0 - 0 - - - - false - - - /UiStyle/CustomStyleSheetPath - - - - - - - - - - ... - - - - + + + + + User Notices: + + + + + + + true + + + + + + true + + + + + + + true + + + + + + false + + + + + + + true + + + + + + + + + + Server Notices: + + + + + + + + + + + + + + Default Target + + + + + + + Status Window + + + + + + + Current Chat + + + + + + + Errors: + + + + + + + + + + true + + + + + + + + + + + + + + + + + true + + + + + + + + + + + + + + + + @@ -130,5 +344,70 @@ - + + + useCustomStyleSheet + toggled(bool) + customStyleSheetPath + setEnabled(bool) + + + 63 + 86 + + + 86 + 114 + + + + + useCustomStyleSheet + toggled(bool) + label + setEnabled(bool) + + + 45 + 80 + + + 38 + 113 + + + + + useCustomStyleSheet + toggled(bool) + chooseStyleSheet + setEnabled(bool) + + + 84 + 80 + + + 525 + 117 + + + + + useSystemTrayIcon + toggled(bool) + minimizeOnClose + setEnabled(bool) + + + 91 + 143 + + + 92 + 174 + + + + diff --git a/src/qtui/settingspages/backlogsettingspage.cpp b/src/qtui/settingspages/backlogsettingspage.cpp index 490cdaf1..5af18c4f 100644 --- a/src/qtui/settingspages/backlogsettingspage.cpp +++ b/src/qtui/settingspages/backlogsettingspage.cpp @@ -24,7 +24,7 @@ #include "backlogsettings.h" BacklogSettingsPage::BacklogSettingsPage(QWidget *parent) - : SettingsPage(tr("Misc"), tr("Backlog"), parent) + : SettingsPage(tr("Interface"), tr("Backlog Fetching"), parent) { ui.setupUi(this); initAutoWidgets(); diff --git a/src/qtui/settingspages/bufferviewsettingspage.cpp b/src/qtui/settingspages/bufferviewsettingspage.cpp index 166b2922..1d18e389 100644 --- a/src/qtui/settingspages/bufferviewsettingspage.cpp +++ b/src/qtui/settingspages/bufferviewsettingspage.cpp @@ -33,7 +33,7 @@ #include "util.h" BufferViewSettingsPage::BufferViewSettingsPage(QWidget *parent) - : SettingsPage(tr("Misc"), tr("Custom Chat Lists"), parent), + : SettingsPage(tr("Interface"), tr("Custom Chat Lists"), parent), _ignoreWidgetChanges(false), _useBufferViewHint(false), _bufferViewHint(0) @@ -52,7 +52,7 @@ BufferViewSettingsPage::BufferViewSettingsPage(QWidget *parent) coreConnectionStateChanged(Client::isConnected()); // need a core connection! connect(Client::instance(), SIGNAL(coreConnectionStateChanged(bool)), this, SLOT(coreConnectionStateChanged(bool))); connect(ui.bufferViewList->selectionModel(), SIGNAL(selectionChanged(const QItemSelection &, const QItemSelection &)), - this, SLOT(bufferViewSelectionChanged(const QItemSelection &, const QItemSelection &))); + this, SLOT(bufferViewSelectionChanged(const QItemSelection &, const QItemSelection &))); connect(ui.onlyStatusBuffers, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged())); connect(ui.onlyChannelBuffers, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged())); @@ -353,16 +353,16 @@ void BufferViewSettingsPage::on_deleteBufferView_clicked() { } else if(config) { QList::iterator iter = _newBufferViews.begin(); while(iter != _newBufferViews.end()) { - if(*iter == config) { - iter = _newBufferViews.erase(iter); - break; - } else { - iter++; - } + if(*iter == config) { + iter = _newBufferViews.erase(iter); + break; + } else { + iter++; + } } delete config; if(_deleteBufferViews.isEmpty() && _changedBufferViews.isEmpty() && _newBufferViews.isEmpty()) - setChangedState(false); + setChangedState(false); } } } diff --git a/src/qtui/settingspages/connectionsettingspage.cpp b/src/qtui/settingspages/connectionsettingspage.cpp index 7bdac2dd..969ccd8c 100644 --- a/src/qtui/settingspages/connectionsettingspage.cpp +++ b/src/qtui/settingspages/connectionsettingspage.cpp @@ -24,7 +24,7 @@ #include "networkconfig.h" ConnectionSettingsPage::ConnectionSettingsPage(QWidget *parent) - : SettingsPage(tr("Misc"), tr("Connection"), parent) { + : SettingsPage(tr("IRC"), QString(), parent) { ui.setupUi(this); initAutoWidgets(); diff --git a/src/qtui/settingspages/connectionsettingspage.h b/src/qtui/settingspages/connectionsettingspage.h index 34c5684a..4c86599e 100644 --- a/src/qtui/settingspages/connectionsettingspage.h +++ b/src/qtui/settingspages/connectionsettingspage.h @@ -33,6 +33,7 @@ class ConnectionSettingsPage : public SettingsPage { ConnectionSettingsPage(QWidget *parent = 0); bool hasDefaults() const; + bool needsCoreConnection() const { return true; } public slots: diff --git a/src/qtui/settingspages/coreaccountsettingspage.cpp b/src/qtui/settingspages/coreaccountsettingspage.cpp index 3dbb2996..11188ac2 100644 --- a/src/qtui/settingspages/coreaccountsettingspage.cpp +++ b/src/qtui/settingspages/coreaccountsettingspage.cpp @@ -26,7 +26,7 @@ #include "iconloader.h" CoreAccountSettingsPage::CoreAccountSettingsPage(QWidget *parent) -: SettingsPage(tr("Misc"), tr("Core Accounts"), parent), +: SettingsPage(tr("Remote Cores"), QString(), parent), _lastAccountId(0), _lastAutoConnectId(0), _standalone(false) diff --git a/src/qtui/settingspages/generalsettingspage.cpp b/src/qtui/settingspages/generalsettingspage.cpp deleted file mode 100644 index a16e1b69..00000000 --- a/src/qtui/settingspages/generalsettingspage.cpp +++ /dev/null @@ -1,176 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2005-09 by the Quassel Project * - * devel@quassel-irc.org * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ - -#include "generalsettingspage.h" - -#include "qtui.h" -#include "qtuisettings.h" -#include "buffersettings.h" - -GeneralSettingsPage::GeneralSettingsPage(QWidget *parent) - : SettingsPage(tr("Misc"), QString(), parent) { - ui.setupUi(this); - -#ifdef Q_WS_MAC - ui.useSystemTrayIcon->hide(); -#else - ui.macOnly->hide(); -#endif - - connect(ui.useSystemTrayIcon, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged())); - connect(ui.showSystemTrayIcon, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged())); - connect(ui.minimizeOnClose, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged())); - - connect(ui.userNoticesInDefaultBuffer, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged())); - connect(ui.userNoticesInStatusBuffer, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged())); - connect(ui.userNoticesInCurrentBuffer, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged())); - - connect(ui.serverNoticesInDefaultBuffer, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged())); - connect(ui.serverNoticesInStatusBuffer, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged())); - connect(ui.serverNoticesInCurrentBuffer, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged())); - - connect(ui.errorMsgsInDefaultBuffer, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged())); - connect(ui.errorMsgsInStatusBuffer, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged())); - connect(ui.errorMsgsInCurrentBuffer, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged())); -} - -bool GeneralSettingsPage::hasDefaults() const { - return true; -} - -void GeneralSettingsPage::defaults() { - ui.useSystemTrayIcon->setChecked(true); - ui.showSystemTrayIcon->setChecked(true); - ui.minimizeOnClose->setChecked(false); - - ui.userNoticesInDefaultBuffer->setChecked(true); - ui.userNoticesInStatusBuffer->setChecked(false); - ui.userNoticesInCurrentBuffer->setChecked(false); - - ui.serverNoticesInDefaultBuffer->setChecked(false); - ui.serverNoticesInStatusBuffer->setChecked(true); - ui.serverNoticesInCurrentBuffer->setChecked(false); - - ui.errorMsgsInDefaultBuffer->setChecked(true); - ui.errorMsgsInStatusBuffer->setChecked(false); - ui.errorMsgsInCurrentBuffer->setChecked(false); - - widgetHasChanged(); -} - -void GeneralSettingsPage::load() { - // uiSettings: - QtUiSettings qtuiSettings; - UiSettings uiSettings; - settings["UseSystemTrayIcon"] = qtuiSettings.value("UseSystemTrayIcon", QVariant(true)); - ui.useSystemTrayIcon->setChecked(settings["UseSystemTrayIcon"].toBool()); - ui.showSystemTrayIcon->setChecked(settings["UseSystemTrayIcon"].toBool()); - - settings["MinimizeOnClose"] = qtuiSettings.value("MinimizeOnClose", QVariant(false)); - ui.minimizeOnClose->setChecked(settings["MinimizeOnClose"].toBool()); - - // bufferSettings: - BufferSettings bufferSettings; - int redirectTarget = bufferSettings.userNoticesTarget(); - SettingsPage::load(ui.userNoticesInDefaultBuffer, redirectTarget & BufferSettings::DefaultBuffer); - SettingsPage::load(ui.userNoticesInStatusBuffer, redirectTarget & BufferSettings::StatusBuffer); - SettingsPage::load(ui.userNoticesInCurrentBuffer, redirectTarget & BufferSettings::CurrentBuffer); - - redirectTarget = bufferSettings.serverNoticesTarget(); - SettingsPage::load(ui.serverNoticesInDefaultBuffer, redirectTarget & BufferSettings::DefaultBuffer); - SettingsPage::load(ui.serverNoticesInStatusBuffer, redirectTarget & BufferSettings::StatusBuffer); - SettingsPage::load(ui.serverNoticesInCurrentBuffer, redirectTarget & BufferSettings::CurrentBuffer); - - redirectTarget = bufferSettings.errorMsgsTarget(); - SettingsPage::load(ui.errorMsgsInDefaultBuffer, redirectTarget & BufferSettings::DefaultBuffer); - SettingsPage::load(ui.errorMsgsInStatusBuffer, redirectTarget & BufferSettings::StatusBuffer); - SettingsPage::load(ui.errorMsgsInCurrentBuffer, redirectTarget & BufferSettings::CurrentBuffer); - - setChangedState(false); -} - -void GeneralSettingsPage::save() { - QtUiSettings qtuiSettings; -#ifdef Q_WS_MAC - qtuiSettings.setValue("UseSystemTrayIcon", ui.showSystemTrayIcon->isChecked()); -#else - qtuiSettings.setValue("UseSystemTrayIcon", ui.useSystemTrayIcon->isChecked()); -#endif - qtuiSettings.setValue("MinimizeOnClose", ui.minimizeOnClose->isChecked()); - - BufferSettings bufferSettings; - int redirectTarget = 0; - if(ui.userNoticesInDefaultBuffer->isChecked()) - redirectTarget |= BufferSettings::DefaultBuffer; - if(ui.userNoticesInStatusBuffer->isChecked()) - redirectTarget |= BufferSettings::StatusBuffer; - if(ui.userNoticesInCurrentBuffer->isChecked()) - redirectTarget |= BufferSettings::CurrentBuffer; - bufferSettings.setUserNoticesTarget(redirectTarget); - - redirectTarget = 0; - if(ui.serverNoticesInDefaultBuffer->isChecked()) - redirectTarget |= BufferSettings::DefaultBuffer; - if(ui.serverNoticesInStatusBuffer->isChecked()) - redirectTarget |= BufferSettings::StatusBuffer; - if(ui.serverNoticesInCurrentBuffer->isChecked()) - redirectTarget |= BufferSettings::CurrentBuffer; - bufferSettings.setServerNoticesTarget(redirectTarget); - - redirectTarget = 0; - if(ui.errorMsgsInDefaultBuffer->isChecked()) - redirectTarget |= BufferSettings::DefaultBuffer; - if(ui.errorMsgsInStatusBuffer->isChecked()) - redirectTarget |= BufferSettings::StatusBuffer; - if(ui.errorMsgsInCurrentBuffer->isChecked()) - redirectTarget |= BufferSettings::CurrentBuffer; - bufferSettings.setErrorMsgsTarget(redirectTarget); - - load(); - setChangedState(false); -} - -void GeneralSettingsPage::widgetHasChanged() { - bool changed = testHasChanged(); - if(changed != hasChanged()) setChangedState(changed); -} - -bool GeneralSettingsPage::testHasChanged() { -#ifdef Q_WS_MAC - if(settings["UseSystemTrayIcon"].toBool() != ui.showSystemTrayIcon->isChecked()) return true; -#else - if(settings["UseSystemTrayIcon"].toBool() != ui.useSystemTrayIcon->isChecked()) return true; -#endif - if(settings["MinimizeOnClose"].toBool() != ui.minimizeOnClose->isChecked()) return true; - - if(SettingsPage::hasChanged(ui.userNoticesInStatusBuffer)) return true; - if(SettingsPage::hasChanged(ui.userNoticesInDefaultBuffer)) return true; - if(SettingsPage::hasChanged(ui.userNoticesInCurrentBuffer)) return true; - - if(SettingsPage::hasChanged(ui.serverNoticesInStatusBuffer)) return true; - if(SettingsPage::hasChanged(ui.serverNoticesInDefaultBuffer)) return true; - if(SettingsPage::hasChanged(ui.serverNoticesInCurrentBuffer)) return true; - - if(SettingsPage::hasChanged(ui.errorMsgsInStatusBuffer)) return true; - if(SettingsPage::hasChanged(ui.errorMsgsInDefaultBuffer)) return true; - if(SettingsPage::hasChanged(ui.errorMsgsInCurrentBuffer)) return true; - - return false; -} diff --git a/src/qtui/settingspages/generalsettingspage.h b/src/qtui/settingspages/generalsettingspage.h deleted file mode 100644 index 33715e5a..00000000 --- a/src/qtui/settingspages/generalsettingspage.h +++ /dev/null @@ -1,52 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2005-09 by the Quassel Project * - * devel@quassel-irc.org * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ - -#ifndef GENERALSETTINGSPAGE_H -#define GENERALSETTINGSPAGE_H - -#include - -#include "settingspage.h" -#include "ui_generalsettingspage.h" - -class GeneralSettingsPage : public SettingsPage { - Q_OBJECT - -public: - GeneralSettingsPage(QWidget *parent = 0); - - bool hasDefaults() const; - -public slots: - void save(); - void load(); - void defaults(); - -private slots: - void widgetHasChanged(); - -private: - Ui::GeneralSettingsPage ui; - QHash settings; - - bool testHasChanged(); -}; - -#endif diff --git a/src/qtui/settingspages/generalsettingspage.ui b/src/qtui/settingspages/generalsettingspage.ui deleted file mode 100644 index 45103dcd..00000000 --- a/src/qtui/settingspages/generalsettingspage.ui +++ /dev/null @@ -1,207 +0,0 @@ - - - GeneralSettingsPage - - - - 0 - 0 - 467 - 515 - - - - Form - - - - - - Show System Tray Icon - - - true - - - - - - Hide to tray on close button - - - - - - - - - - Tray Icon - - - - - - Show system tray icon - - - true - - - - - - - - - - Message Redirection - - - - - - User Notices: - - - - - - - true - - - - - - true - - - - - - - true - - - - - - false - - - - - - - true - - - - - - - - - - Server Notices: - - - - - - - - - - - - - - Default Target - - - - - - - Status Window - - - - - - - Current Chat - - - - - - - Errors: - - - - - - - - - - true - - - - - - - - - - - - - - - - - true - - - - - - - - - - - - - - - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - diff --git a/src/qtui/settingspages/identitiessettingspage.cpp b/src/qtui/settingspages/identitiessettingspage.cpp index 47463f6d..55be6917 100644 --- a/src/qtui/settingspages/identitiessettingspage.cpp +++ b/src/qtui/settingspages/identitiessettingspage.cpp @@ -28,7 +28,7 @@ #include "signalproxy.h" IdentitiesSettingsPage::IdentitiesSettingsPage(QWidget *parent) - : SettingsPage(tr("Misc"), tr("Identities"), parent), + : SettingsPage(tr("IRC"), tr("Identities"), parent), _editSsl(false) { ui.setupUi(this); @@ -159,7 +159,7 @@ bool IdentitiesSettingsPage::testHasChanged() { ui.identityEditor->saveToIdentity(&temp); temp.setIdentityName(identities[currentId]->identityName()); if(temp != *Client::identity(currentId) || temp.isDirty()) - changedIdentities.append(currentId); + changedIdentities.append(currentId); } return changedIdentities.count(); } diff --git a/src/qtui/settingspages/identitiessettingspage.h b/src/qtui/settingspages/identitiessettingspage.h index 27be75c8..277cee87 100644 --- a/src/qtui/settingspages/identitiessettingspage.h +++ b/src/qtui/settingspages/identitiessettingspage.h @@ -38,6 +38,8 @@ class IdentitiesSettingsPage : public SettingsPage { public: IdentitiesSettingsPage(QWidget *parent = 0); + virtual inline bool needsCoreConnection() const { return true; } + bool aboutToSave(); public slots: diff --git a/src/qtui/settingspages/ignorelistsettingspage.cpp b/src/qtui/settingspages/ignorelistsettingspage.cpp index a832e5d0..aa73396b 100644 --- a/src/qtui/settingspages/ignorelistsettingspage.cpp +++ b/src/qtui/settingspages/ignorelistsettingspage.cpp @@ -31,7 +31,7 @@ #include "iconloader.h" IgnoreListSettingsPage::IgnoreListSettingsPage(QWidget *parent) - : SettingsPage(tr("Misc"), tr("Ignore List"), parent) + : SettingsPage(tr("IRC"), tr("Ignore List"), parent) { ui.setupUi(this); _delegate = new IgnoreListDelegate(ui.ignoreListView); diff --git a/src/qtui/settingspages/ignorelistsettingspage.h b/src/qtui/settingspages/ignorelistsettingspage.h index 251018c4..2313ba9f 100644 --- a/src/qtui/settingspages/ignorelistsettingspage.h +++ b/src/qtui/settingspages/ignorelistsettingspage.h @@ -75,6 +75,7 @@ public: IgnoreListSettingsPage(QWidget *parent = 0); ~IgnoreListSettingsPage(); virtual inline bool hasDefaults() const { return false; } + virtual inline bool needsCoreConnection() const { return true; } void editIgnoreRule(const QString &ignoreRule); public slots: diff --git a/src/qtui/settingspages/networkssettingspage.cpp b/src/qtui/settingspages/networkssettingspage.cpp index 516fb3ce..1b20c2a1 100644 --- a/src/qtui/settingspages/networkssettingspage.cpp +++ b/src/qtui/settingspages/networkssettingspage.cpp @@ -33,8 +33,8 @@ #include "settingspages/identitiessettingspage.h" -NetworksSettingsPage::NetworksSettingsPage(QWidget *parent) -: SettingsPage(tr("Misc"), tr("Networks"), parent) { +NetworksSettingsPage::NetworksSettingsPage(QWidget *parent) +: SettingsPage(tr("IRC"), tr("Networks"), parent) { ui.setupUi(this); // set up icons @@ -316,7 +316,7 @@ void NetworksSettingsPage::clientIdentityRemoved(IdentityId id) { foreach(NetworkInfo info, networkInfos.values()) { if(info.identity == id) { if(info.networkId == currentId) - ui.identityList->setCurrentIndex(0); + ui.identityList->setCurrentIndex(0); info.identity = defaultId; networkInfos[info.networkId] = info; if(info.networkId > 0) Client::updateNetwork(info); diff --git a/src/qtui/settingspages/networkssettingspage.h b/src/qtui/settingspages/networkssettingspage.h index d0eed919..db209a74 100644 --- a/src/qtui/settingspages/networkssettingspage.h +++ b/src/qtui/settingspages/networkssettingspage.h @@ -38,6 +38,8 @@ class NetworksSettingsPage : public SettingsPage { public: NetworksSettingsPage(QWidget *parent = 0); + virtual inline bool needsCoreConnection() const { return true; } + bool aboutToSave(); public slots: diff --git a/src/qtui/settingspages/settingspages.inc b/src/qtui/settingspages/settingspages.inc index 62ab5903..48966bf2 100644 --- a/src/qtui/settingspages/settingspages.inc +++ b/src/qtui/settingspages/settingspages.inc @@ -1,7 +1,7 @@ # Putting $FOO in SETTINGSPAGES automatically includes # $FOOsettingspage.cpp, $FOOsettingspage.h and $FOOsettingspage.ui -set(SETTINGSPAGES aliases appearance backlog bufferview chatview connection chatmonitor coreaccount general +set(SETTINGSPAGES aliases appearance backlog bufferview chatview connection chatmonitor coreaccount highlight identities ignorelist inputwidget itemview networks topicwidget) # Specify additional files (e.g. for subdialogs) here! diff --git a/src/uisupport/settingspage.h b/src/uisupport/settingspage.h index 3ef6d2cc..b68b78b1 100644 --- a/src/uisupport/settingspage.h +++ b/src/uisupport/settingspage.h @@ -67,6 +67,12 @@ public: //! The title of this settings page. inline virtual QString title() const { return _title; } + //! Whether the settingspage needs a core connection to be selectable + /** This is a hint for the settingspage dialog. Do not rely on the settingspage not being + * visible if disconnected, and care about disabling it yourself. + */ + inline virtual bool needsCoreConnection() const { return false; } + //! The key this settings page stores its values under /** This needs to be overriden to enable automatic loading/saving/hasChanged checking of widgets. * The child widgets' values will be stored in client settings under this key. Every widget that -- 2.20.1