From 4ec0f5fc03c28c7bc810d88ecfdf6b07efc9afcd Mon Sep 17 00:00:00 2001 From: Marcus Eggenberger Date: Thu, 13 Nov 2008 21:23:50 +0100 Subject: [PATCH] adding new settings for proper message redirection --- .../settingspages/generalsettingspage.cpp | 72 ++++++++--- src/qtui/settingspages/generalsettingspage.h | 30 ++--- src/qtui/settingspages/generalsettingspage.ui | 119 ++++++++++++++++-- src/uisupport/settingspage.cpp | 11 ++ src/uisupport/settingspage.h | 10 +- 5 files changed, 195 insertions(+), 47 deletions(-) diff --git a/src/qtui/settingspages/generalsettingspage.cpp b/src/qtui/settingspages/generalsettingspage.cpp index ce7bacc9..f7c55e3a 100644 --- a/src/qtui/settingspages/generalsettingspage.cpp +++ b/src/qtui/settingspages/generalsettingspage.cpp @@ -44,10 +44,18 @@ GeneralSettingsPage::GeneralSettingsPage(QWidget *parent) connect(ui.minimizeOnMinimize, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged())); connect(ui.minimizeOnClose, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged())); - connect(ui.userMessagesInStatusBuffer, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged())); - connect(ui.userMessagesInQueryBuffer, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged())); - connect(ui.userMessagesInCurrentBuffer, 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())); + connect(ui.displayTopicInTooltip, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged())); connect(ui.mouseWheelChangesBuffers, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged())); connect(ui.completionSuffix, SIGNAL(textEdited(const QString&)), this, SLOT(widgetHasChanged())); @@ -65,9 +73,17 @@ void GeneralSettingsPage::defaults() { ui.minimizeOnMinimize->setChecked(false); ui.minimizeOnClose->setChecked(false); - ui.userMessagesInStatusBuffer->setChecked(true); - ui.userMessagesInQueryBuffer->setChecked(false); - ui.userMessagesInCurrentBuffer->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); ui.displayTopicInTooltip->setChecked(false); ui.mouseWheelChangesBuffers->setChecked(true); @@ -96,15 +112,19 @@ void GeneralSettingsPage::load() { // bufferSettings: BufferSettings bufferSettings; - settings["UserMessagesInStatusBuffer"] = bufferSettings.value("UserMessagesInStatusBuffer", QVariant(true)); - ui.userMessagesInStatusBuffer->setChecked(settings["UserMessagesInStatusBuffer"].toBool()); + SettingsPage::load(ui.userNoticesInDefaultBuffer, bufferSettings.value("UserNoticesInDefaultBuffer", QVariant(true)).toBool()); + SettingsPage::load(ui.userNoticesInStatusBuffer, bufferSettings.value("UserNoticesInStatusBuffer", QVariant(false)).toBool()); + SettingsPage::load(ui.userNoticesInCurrentBuffer, bufferSettings.value("UserNoticesInCurrentBuffer", QVariant(false)).toBool()); - settings["UserMessagesInQueryBuffer"] = bufferSettings.value("UserMessagesInQueryBuffer", QVariant(false)); - ui.userMessagesInQueryBuffer->setChecked(settings["UserMessagesInQueryBuffer"].toBool()); + SettingsPage::load(ui.serverNoticesInDefaultBuffer, bufferSettings.value("serverNoticesInDefaultBuffer", QVariant(false)).toBool()); + SettingsPage::load(ui.serverNoticesInStatusBuffer, bufferSettings.value("serverNoticesInStatusBuffer", QVariant(true)).toBool()); + SettingsPage::load(ui.serverNoticesInCurrentBuffer, bufferSettings.value("serverNoticesInCurrentBuffer", QVariant(false)).toBool()); - settings["UserMessagesInCurrentBuffer"] = bufferSettings.value("UserMessagesInCurrentBuffer", QVariant(false)); - ui.userMessagesInCurrentBuffer->setChecked(settings["UserMessagesInCurrentBuffer"].toBool()); + SettingsPage::load(ui.errorMsgsInDefaultBuffer, bufferSettings.value("ErrorMsgsInDefaultBuffer", QVariant(true)).toBool()); + SettingsPage::load(ui.errorMsgsInStatusBuffer, bufferSettings.value("ErrorMsgsInStatusBuffer", QVariant(false)).toBool()); + SettingsPage::load(ui.errorMsgsInCurrentBuffer, bufferSettings.value("ErrorMsgsInCurrentBuffer", QVariant(false)).toBool()); + settings["DisplayTopicInTooltip"] = bufferSettings.value("DisplayTopicInTooltip", QVariant(false)); ui.displayTopicInTooltip->setChecked(settings["DisplayTopicInTooltip"].toBool()); @@ -133,9 +153,17 @@ void GeneralSettingsPage::save() { uiSettings.setValue("MouseWheelChangesBuffers", ui.mouseWheelChangesBuffers->isChecked()); BufferSettings bufferSettings; - bufferSettings.setValue("UserMessagesInStatusBuffer", ui.userMessagesInStatusBuffer->isChecked()); - bufferSettings.setValue("UserMessagesInQueryBuffer", ui.userMessagesInQueryBuffer->isChecked()); - bufferSettings.setValue("UserMessagesInCurrentBuffer", ui.userMessagesInCurrentBuffer->isChecked()); + bufferSettings.setValue("UserNoticesInDefaultBuffer", ui.userNoticesInDefaultBuffer->isChecked()); + bufferSettings.setValue("UserNoticesInStatusBuffer", ui.userNoticesInStatusBuffer->isChecked()); + bufferSettings.setValue("UserNoticesInCurrentBuffer", ui.userNoticesInCurrentBuffer->isChecked()); + + bufferSettings.setValue("ServerNoticesInDefaultBuffer", ui.serverNoticesInDefaultBuffer->isChecked()); + bufferSettings.setValue("ServerNoticesInStatusBuffer", ui.serverNoticesInStatusBuffer->isChecked()); + bufferSettings.setValue("ServerNoticesInCurrentBuffer", ui.serverNoticesInCurrentBuffer->isChecked()); + + bufferSettings.setValue("ErrorMsgsInDefaultBuffer", ui.errorMsgsInDefaultBuffer->isChecked()); + bufferSettings.setValue("ErrorMsgsInStatusBuffer", ui.errorMsgsInStatusBuffer->isChecked()); + bufferSettings.setValue("ErrorMsgsInCurrentBuffer", ui.errorMsgsInCurrentBuffer->isChecked()); bufferSettings.setValue("DisplayTopicInTooltip", ui.displayTopicInTooltip->isChecked()); @@ -160,9 +188,17 @@ bool GeneralSettingsPage::testHasChanged() { if(settings["MinimizeOnMinimize"].toBool() != ui.minimizeOnMinimize->isChecked()) return true; if(settings["MinimizeOnClose"].toBool() != ui.minimizeOnClose->isChecked()) return true; - if(settings["UserMessagesInStatusBuffer"].toBool() != ui.userMessagesInStatusBuffer->isChecked()) return true; - if(settings["UserMessagesInQueryBuffer"].toBool() != ui.userMessagesInQueryBuffer->isChecked()) return true; - if(settings["UserMessagesInCurrentBuffer"].toBool() != ui.userMessagesInCurrentBuffer->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; if(settings["DisplayTopicInTooltip"].toBool() != ui.displayTopicInTooltip->isChecked()) return true; if(settings["MouseWheelChangesBuffers"].toBool() != ui.mouseWheelChangesBuffers->isChecked()) return true; diff --git a/src/qtui/settingspages/generalsettingspage.h b/src/qtui/settingspages/generalsettingspage.h index 42216d82..72b6be30 100644 --- a/src/qtui/settingspages/generalsettingspage.h +++ b/src/qtui/settingspages/generalsettingspage.h @@ -18,8 +18,8 @@ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ -#ifndef _GENERALSETTINGSPAGE_H_ -#define _GENERALSETTINGSPAGE_H_ +#ifndef GENERALSETTINGSPAGE_H +#define GENERALSETTINGSPAGE_H #include @@ -29,24 +29,24 @@ class GeneralSettingsPage : public SettingsPage { Q_OBJECT - public: - GeneralSettingsPage(QWidget *parent = 0); +public: + GeneralSettingsPage(QWidget *parent = 0); - bool hasDefaults() const; + bool hasDefaults() const; - public slots: - void save(); - void load(); - void defaults(); +public slots: + void save(); + void load(); + void defaults(); - private slots: - void widgetHasChanged(); +private slots: + void widgetHasChanged(); - private: - Ui::GeneralSettingsPage ui; - QHash settings; +private: + Ui::GeneralSettingsPage ui; + QHash settings; - bool testHasChanged(); + bool testHasChanged(); }; #endif diff --git a/src/qtui/settingspages/generalsettingspage.ui b/src/qtui/settingspages/generalsettingspage.ui index 317c2f07..9257cc17 100644 --- a/src/qtui/settingspages/generalsettingspage.ui +++ b/src/qtui/settingspages/generalsettingspage.ui @@ -5,8 +5,8 @@ 0 0 - 542 - 599 + 549 + 621 @@ -61,39 +61,132 @@ - Display User-Related Messages And Private Notices: + Message Redirection - - - + + + + + User Notices: + + + + + true - in status buffer + true - - + + true - in query buffer (if exists) + + + + false - - + + true - in current buffer + + + + + + + + Server Notices: + + + + + + + + + + + + + + Default Target + + + + + + + Status Buffer + + + + + + + Current Buffer + + + + + + + Errors + + + + + + + + + + true + + + + + + + + + + + + + + + + + true + + + + + + + + + + + + + + diff --git a/src/uisupport/settingspage.cpp b/src/uisupport/settingspage.cpp index e752ec72..c815d98f 100644 --- a/src/uisupport/settingspage.cpp +++ b/src/uisupport/settingspage.cpp @@ -20,6 +20,9 @@ #include "settingspage.h" +#include +#include + SettingsPage::SettingsPage(const QString &category, const QString &title, QWidget *parent) : QWidget(parent), _category(category), @@ -35,3 +38,11 @@ void SettingsPage::setChangedState(bool hasChanged) { } } +void SettingsPage::load(QCheckBox *box, bool checked) { + box->setProperty("StoredValue", checked); + box->setChecked(checked); +} + +bool SettingsPage::hasChanged(QCheckBox *box) { + return box->property("StoredValue").toBool() == box->isChecked(); +} diff --git a/src/uisupport/settingspage.h b/src/uisupport/settingspage.h index a9f32b8f..2c5ffb4e 100644 --- a/src/uisupport/settingspage.h +++ b/src/uisupport/settingspage.h @@ -23,6 +23,8 @@ #include +class QCheckBox; + //! A SettingsPage is a page in the settings dialog. /** The SettingsDlg provides suitable standard buttons, such as Ok, Apply, Cancel, Restore Defaults and Reset. * Some pages might also be used in standalone dialogs or other containers. A SettingsPage provides suitable @@ -57,7 +59,11 @@ public: * \return false, if the SettingsPage cannot be saved in its current state. */ inline virtual bool aboutToSave() { return true; } - + + //! sets checked state depending on \checked and stores the value for later comparision + static void load(QCheckBox *box, bool checked); + static bool hasChanged(QCheckBox *box); + public slots: //! Save settings to permanent storage. virtual void save() = 0; @@ -86,4 +92,6 @@ private: bool _changed; }; + + #endif -- 2.20.1