adding new settings for proper message redirection
authorMarcus Eggenberger <egs@quassel-irc.org>
Thu, 13 Nov 2008 20:23:50 +0000 (21:23 +0100)
committerMarcus Eggenberger <egs@quassel-irc.org>
Thu, 13 Nov 2008 20:23:50 +0000 (21:23 +0100)
src/qtui/settingspages/generalsettingspage.cpp
src/qtui/settingspages/generalsettingspage.h
src/qtui/settingspages/generalsettingspage.ui
src/uisupport/settingspage.cpp
src/uisupport/settingspage.h

index ce7bacc..f7c55e3 100644 (file)
@@ -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;
index 42216d8..72b6be3 100644 (file)
@@ -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 <QHash>
 
 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<QString, QVariant> settings;
+private:
+  Ui::GeneralSettingsPage ui;
+  QHash<QString, QVariant> settings;
 
-    bool testHasChanged();
+  bool testHasChanged();
 };
 
 #endif
index 317c2f0..9257cc1 100644 (file)
@@ -5,8 +5,8 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>542</width>
-    <height>599</height>
+    <width>549</width>
+    <height>621</height>
    </rect>
   </property>
   <property name="windowTitle" >
    <item>
     <widget class="QGroupBox" name="groupBox" >
      <property name="title" >
-      <string>Display User-Related Messages And Private Notices:</string>
+      <string>Message Redirection</string>
      </property>
-     <layout class="QVBoxLayout" >
-      <item>
-       <widget class="QCheckBox" name="userMessagesInStatusBuffer" >
+     <layout class="QGridLayout" name="gridLayout_2" >
+      <item row="1" column="0" >
+       <widget class="QLabel" name="label_3" >
+        <property name="text" >
+         <string>User Notices:</string>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="1" >
+       <widget class="QCheckBox" name="userNoticesInDefaultBuffer" >
         <property name="enabled" >
          <bool>true</bool>
         </property>
         <property name="text" >
-         <string>in status buffer</string>
+         <string/>
         </property>
         <property name="checked" >
          <bool>true</bool>
         </property>
        </widget>
       </item>
-      <item>
-       <widget class="QCheckBox" name="userMessagesInQueryBuffer" >
+      <item row="1" column="2" >
+       <widget class="QCheckBox" name="userNoticesInStatusBuffer" >
         <property name="enabled" >
          <bool>true</bool>
         </property>
         <property name="text" >
-         <string>in query buffer (if exists)</string>
+         <string/>
+        </property>
+        <property name="checked" >
+         <bool>false</bool>
         </property>
        </widget>
       </item>
-      <item>
-       <widget class="QCheckBox" name="userMessagesInCurrentBuffer" >
+      <item row="1" column="3" >
+       <widget class="QCheckBox" name="userNoticesInCurrentBuffer" >
         <property name="enabled" >
          <bool>true</bool>
         </property>
         <property name="text" >
-         <string>in current buffer</string>
+         <string/>
+        </property>
+       </widget>
+      </item>
+      <item row="2" column="0" >
+       <widget class="QLabel" name="label_4" >
+        <property name="text" >
+         <string>Server Notices:</string>
+        </property>
+       </widget>
+      </item>
+      <item row="2" column="1" >
+       <widget class="QCheckBox" name="serverNoticesInDefaultBuffer" >
+        <property name="text" >
+         <string/>
+        </property>
+       </widget>
+      </item>
+      <item row="0" column="1" >
+       <widget class="QLabel" name="label_5" >
+        <property name="text" >
+         <string>Default Target</string>
+        </property>
+       </widget>
+      </item>
+      <item row="0" column="2" >
+       <widget class="QLabel" name="label_6" >
+        <property name="text" >
+         <string>Status Buffer</string>
+        </property>
+       </widget>
+      </item>
+      <item row="0" column="3" >
+       <widget class="QLabel" name="label_7" >
+        <property name="text" >
+         <string>Current Buffer</string>
+        </property>
+       </widget>
+      </item>
+      <item row="3" column="0" >
+       <widget class="QLabel" name="label_8" >
+        <property name="text" >
+         <string>Errors</string>
+        </property>
+       </widget>
+      </item>
+      <item row="2" column="2" >
+       <widget class="QCheckBox" name="serverNoticesInStatusBuffer" >
+        <property name="text" >
+         <string/>
+        </property>
+        <property name="checked" >
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+      <item row="2" column="3" >
+       <widget class="QCheckBox" name="serverNoticesInCurrentBuffer" >
+        <property name="text" >
+         <string/>
+        </property>
+       </widget>
+      </item>
+      <item row="3" column="1" >
+       <widget class="QCheckBox" name="errorMsgsInDefaultBuffer" >
+        <property name="text" >
+         <string/>
+        </property>
+        <property name="checked" >
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+      <item row="3" column="2" >
+       <widget class="QCheckBox" name="errorMsgsInStatusBuffer" >
+        <property name="text" >
+         <string/>
+        </property>
+       </widget>
+      </item>
+      <item row="3" column="3" >
+       <widget class="QCheckBox" name="errorMsgsInCurrentBuffer" >
+        <property name="text" >
+         <string/>
         </property>
        </widget>
       </item>
index e752ec7..c815d98 100644 (file)
@@ -20,6 +20,9 @@
 
 #include "settingspage.h"
 
+#include <QCheckBox>
+#include <QVariant>
+
 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();
+}
index a9f32b8..2c5ffb4 100644 (file)
@@ -23,6 +23,8 @@
 
 #include <QWidget>
 
+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