From: Manuel Nickschas Date: Sun, 6 Jul 2008 00:03:03 +0000 (+0200) Subject: Move DBus- and other notification-related settings to their own SettingsPage X-Git-Tag: 0.3.0~229 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=9d32e4eb35cecd82d936d2de7da7e7e7dc606667 Move DBus- and other notification-related settings to their own SettingsPage We now have Behavior/Notifications for stuff like this. --- diff --git a/src/qtui/mainwin.cpp b/src/qtui/mainwin.cpp index e3f4e221..7efe5f22 100644 --- a/src/qtui/mainwin.cpp +++ b/src/qtui/mainwin.cpp @@ -59,7 +59,7 @@ #include "settingspages/highlightsettingspage.h" #include "settingspages/identitiessettingspage.h" #include "settingspages/networkssettingspage.h" - +#include "settingspages/notificationssettingspage.h" #include "debugconsole.h" #include "global.h" @@ -249,6 +249,7 @@ void MainWin::setupSettingsDlg() { settingsDlg->registerSettingsPage(new GeneralSettingsPage(settingsDlg)); settingsDlg->registerSettingsPage(new HighlightSettingsPage(settingsDlg)); settingsDlg->registerSettingsPage(new AliasesSettingsPage(settingsDlg)); + settingsDlg->registerSettingsPage(new NotificationsSettingsPage(settingsDlg)); //Category: General settingsDlg->registerSettingsPage(new IdentitiesSettingsPage(settingsDlg)); settingsDlg->registerSettingsPage(new NetworksSettingsPage(settingsDlg)); @@ -661,7 +662,7 @@ void MainWin::sendDesktopNotification(const QString &title, const QString &messa if(!reply.isValid()) { /* ERROR */ - qDebug() << "Error on sending notification..."; + qDebug() << "Error on sending notification..." << reply; return; } diff --git a/src/qtui/settingspages/generalsettingspage.cpp b/src/qtui/settingspages/generalsettingspage.cpp index db21c397..2e45e510 100644 --- a/src/qtui/settingspages/generalsettingspage.cpp +++ b/src/qtui/settingspages/generalsettingspage.cpp @@ -43,13 +43,6 @@ GeneralSettingsPage::GeneralSettingsPage(QWidget *parent) connect(ui.minimizeOnMinimize, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged())); connect(ui.minimizeOnClose, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged())); - connect(ui.animateTrayIcon, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged())); - connect(ui.bubbleBox, SIGNAL(toggled(bool)), this, SLOT(widgetHasChanged())); - connect(ui.desktopBox, SIGNAL(toggled(bool)), this, SLOT(widgetHasChanged())); - connect(ui.timeout_value, SIGNAL(valueChanged(int)), this, SLOT(widgetHasChanged())); - connect(ui.x_value, SIGNAL(valueChanged(int)), this, SLOT(widgetHasChanged())); - connect(ui.y_value, SIGNAL(valueChanged(int)), 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())); @@ -69,13 +62,6 @@ void GeneralSettingsPage::defaults() { ui.minimizeOnMinimize->setChecked(false); ui.minimizeOnClose->setChecked(false); - ui.animateTrayIcon->setChecked(true); - ui.bubbleBox->setChecked(true); - ui.desktopBox->setChecked(true); - ui.timeout_value->setValue(5000); - ui.x_value->setValue(0); - ui.y_value->setValue(0); - ui.userMessagesInStatusBuffer->setChecked(true); ui.userMessagesInQueryBuffer->setChecked(false); ui.userMessagesInCurrentBuffer->setChecked(false); @@ -104,21 +90,6 @@ void GeneralSettingsPage::load() { settings["MouseWheelChangesBuffers"] = uiSettings.value("MouseWheelChangesBuffers", QVariant(true)); ui.mouseWheelChangesBuffers->setChecked(settings["MouseWheelChangesBuffers"].toBool()); - settings["AnimateTrayIcon"] = uiSettings.value("AnimateTrayIcon", QVariant(true)); - ui.animateTrayIcon->setChecked(settings["AnimateTrayIcon"].toBool()); - - settings["NotificationBubble"] = uiSettings.value("NotificationBubble", QVariant(true)); - ui.bubbleBox->setChecked(settings["NotificationBubble"].toBool()); - - settings["NotificationDesktop"] = uiSettings.value("NotificationDesktop", QVariant(true)); - ui.desktopBox->setChecked(settings["NotificationDesktop"].toBool()); - settings["NotificationDesktopTimeout"] = uiSettings.value("NotificationDesktopTimeout", QVariant(5000)); - ui.timeout_value->setValue(settings["NotificationDesktopTimeout"].toInt()); - settings["NotificationDesktopHintX"] = uiSettings.value("NotificationDesktopHintX", QVariant(0)); - ui.x_value->setValue(settings["NotificationDesktopHintX"].toInt()); - settings["NotificationDesktopHintY"] = uiSettings.value("NotificationDesktopHintY", QVariant(0)); - ui.y_value->setValue(settings["NotificationDesktopHintY"].toInt()); - // bufferSettings: BufferSettings bufferSettings; settings["UserMessagesInStatusBuffer"] = bufferSettings.value("UserMessagesInStatusBuffer", QVariant(true)); @@ -147,19 +118,6 @@ void GeneralSettingsPage::save() { uiSettings.setValue("MinimizeOnClose", ui.minimizeOnClose->isChecked()); uiSettings.setValue("MouseWheelChangesBuffers", ui.mouseWheelChangesBuffers->isChecked()); - uiSettings.setValue("AnimateTrayIcon", ui.animateTrayIcon->isChecked()); -//<<< HEAD:src/qtui/settingspages/generalsettingspage.cpp -// uiSettings.setValue("DisplayPopupMessages", ui.displayPopupMessages->isChecked()); -// uiSettings.setValue("CompletionSuffix", ui.completionSuffix->text()); - -//======= - uiSettings.setValue("NotificationBubble", ui.bubbleBox->isChecked()); - uiSettings.setValue("NotificationDesktop", ui.desktopBox->isChecked()); - uiSettings.setValue("NotificationDesktopTimeout", ui.timeout_value->value()); - uiSettings.setValue("NotificationDesktopHintX", ui.x_value->value()); - uiSettings.setValue("NotificationDesktopHintY", ui.y_value->value()); - -//>>> Configuration support for desktop notifications.:src/qtui/settingspages/generalsettingspage.cpp BufferSettings bufferSettings; bufferSettings.setValue("UserMessagesInStatusBuffer", ui.userMessagesInStatusBuffer->isChecked()); bufferSettings.setValue("UserMessagesInQueryBuffer", ui.userMessagesInQueryBuffer->isChecked()); @@ -167,6 +125,8 @@ void GeneralSettingsPage::save() { bufferSettings.setValue("DisplayTopicInTooltip", ui.displayTopicInTooltip->isChecked()); + uiSettings.setValue("CompletionSuffix", ui.completionSuffix->text()); + load(); setChangedState(false); } @@ -181,13 +141,6 @@ bool GeneralSettingsPage::testHasChanged() { if(settings["MinimizeOnMinimize"].toBool() != ui.minimizeOnMinimize->isChecked()) return true; if(settings["MinimizeOnClose"].toBool() != ui.minimizeOnClose->isChecked()) return true; - if(settings["AnimateTrayIcon"].toBool() != ui.animateTrayIcon->isChecked()) return true; - if(settings["NotificationBubble"].toBool() != ui.bubbleBox->isChecked()) return true; - if(settings["NotificationDesktop"].toBool() != ui.desktopBox->isChecked()) return true; - if(settings["NotificationDesktopTimeout"].toInt() != ui.timeout_value->value()) return true; - if(settings["NotificationDesktopHintX"].toInt() != ui.x_value->value()) return true; - if(settings["NotificationDesktopHintY"].toInt() != ui.y_value->value()) 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; @@ -199,7 +152,3 @@ bool GeneralSettingsPage::testHasChanged() { return false; } - - - - diff --git a/src/qtui/settingspages/generalsettingspage.ui b/src/qtui/settingspages/generalsettingspage.ui index 81554657..d35bce19 100644 --- a/src/qtui/settingspages/generalsettingspage.ui +++ b/src/qtui/settingspages/generalsettingspage.ui @@ -6,7 +6,7 @@ 0 0 453 - 800 + 467 @@ -16,12 +16,12 @@ - Use system tray icon: + Show System Tray Icon true - + @@ -42,9 +42,9 @@ - Tray icon: + Tray Icon - + @@ -58,112 +58,10 @@ - - - - User Notification: - - - - - - Bubble - - - true - - - - - - - - Desktop - - - true - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - Timeout - - - - - - - -1 - - - 100000 - - - 5000 - - - - - - - X - - - - - - - Y - - - - - - - 10000 - - - - - - - 10000 - - - - - - - - - - - - - Animate tray icon - - - true - - - - - - - Display user related messages and private Notices: + Display User-Related Messages And Private Notices: @@ -205,7 +103,7 @@ - Buffer view: + Buffer View @@ -234,7 +132,7 @@ The suffix appended to a nick on completion via TAB. Default is ": " - Input Line: + Input Line diff --git a/src/qtui/settingspages/notificationssettingspage.cpp b/src/qtui/settingspages/notificationssettingspage.cpp new file mode 100644 index 00000000..9fbe7150 --- /dev/null +++ b/src/qtui/settingspages/notificationssettingspage.cpp @@ -0,0 +1,106 @@ +/*************************************************************************** + * Copyright (C) 2005-08 by the Quassel IRC Team * + * 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 "notificationssettingspage.h" + +#include "qtui.h" +#include "uisettings.h" +#include "buffersettings.h" + +NotificationsSettingsPage::NotificationsSettingsPage(QWidget *parent) + : SettingsPage(tr("Behaviour"), tr("Notifications"), parent) { + ui.setupUi(this); + + connect(ui.animateTrayIcon, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged())); + connect(ui.showBubble, SIGNAL(toggled(bool)), this, SLOT(widgetHasChanged())); + connect(ui.desktopBox, SIGNAL(toggled(bool)), this, SLOT(widgetHasChanged())); + connect(ui.timeout_value, SIGNAL(valueChanged(int)), this, SLOT(widgetHasChanged())); + connect(ui.x_value, SIGNAL(valueChanged(int)), this, SLOT(widgetHasChanged())); + connect(ui.y_value, SIGNAL(valueChanged(int)), this, SLOT(widgetHasChanged())); + +} + +bool NotificationsSettingsPage::hasDefaults() const { + return true; +} + +void NotificationsSettingsPage::defaults() { + ui.animateTrayIcon->setChecked(true); + ui.showBubble->setChecked(true); + ui.desktopBox->setChecked(true); + ui.timeout_value->setValue(5000); + ui.x_value->setValue(0); + ui.y_value->setValue(0); + + widgetHasChanged(); +} + +void NotificationsSettingsPage::load() { + // uiSettings: + UiSettings uiSettings; + + settings["AnimateTrayIcon"] = uiSettings.value("AnimateTrayIcon", QVariant(true)); + ui.animateTrayIcon->setChecked(settings["AnimateTrayIcon"].toBool()); + + settings["NotificationBubble"] = uiSettings.value("NotificationBubble", QVariant(true)); + ui.showBubble->setChecked(settings["NotificationBubble"].toBool()); + + settings["NotificationDesktop"] = uiSettings.value("NotificationDesktop", QVariant(true)); + ui.desktopBox->setChecked(settings["NotificationDesktop"].toBool()); + settings["NotificationDesktopTimeout"] = uiSettings.value("NotificationDesktopTimeout", QVariant(5000)); + ui.timeout_value->setValue(settings["NotificationDesktopTimeout"].toInt()); + settings["NotificationDesktopHintX"] = uiSettings.value("NotificationDesktopHintX", QVariant(0)); + ui.x_value->setValue(settings["NotificationDesktopHintX"].toInt()); + settings["NotificationDesktopHintY"] = uiSettings.value("NotificationDesktopHintY", QVariant(0)); + ui.y_value->setValue(settings["NotificationDesktopHintY"].toInt()); + + setChangedState(false); +} + +void NotificationsSettingsPage::save() { + UiSettings uiSettings; + + uiSettings.setValue("AnimateTrayIcon", ui.animateTrayIcon->isChecked()); + + uiSettings.setValue("NotificationBubble", ui.showBubble->isChecked()); + uiSettings.setValue("NotificationDesktop", ui.desktopBox->isChecked()); + uiSettings.setValue("NotificationDesktopTimeout", ui.timeout_value->value()); + uiSettings.setValue("NotificationDesktopHintX", ui.x_value->value()); + uiSettings.setValue("NotificationDesktopHintY", ui.y_value->value()); + + load(); + setChangedState(false); +} + +void NotificationsSettingsPage::widgetHasChanged() { + bool changed = testHasChanged(); + if(changed != hasChanged()) setChangedState(changed); +} + +bool NotificationsSettingsPage::testHasChanged() { + if(settings["AnimateTrayIcon"].toBool() != ui.animateTrayIcon->isChecked()) return true; + if(settings["NotificationBubble"].toBool() != ui.showBubble->isChecked()) return true; + if(settings["NotificationDesktop"].toBool() != ui.desktopBox->isChecked()) return true; + if(settings["NotificationDesktopTimeout"].toInt() != ui.timeout_value->value()) return true; + if(settings["NotificationDesktopHintX"].toInt() != ui.x_value->value()) return true; + if(settings["NotificationDesktopHintY"].toInt() != ui.y_value->value()) return true; + + return false; +} diff --git a/src/qtui/settingspages/notificationssettingspage.h b/src/qtui/settingspages/notificationssettingspage.h new file mode 100644 index 00000000..d1559141 --- /dev/null +++ b/src/qtui/settingspages/notificationssettingspage.h @@ -0,0 +1,52 @@ +/*************************************************************************** + * Copyright (C) 2005-08 by the Quassel IRC Team * + * 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 NOTIFICATIONSSETTINGSPAGE_H_ +#define NOTIFICATIONSSETTINGSPAGE_H_ + +#include + +#include "settingspage.h" +#include "ui_notificationssettingspage.h" + +class NotificationsSettingsPage : public SettingsPage { + Q_OBJECT + + public: + NotificationsSettingsPage(QWidget *parent = 0); + + bool hasDefaults() const; + + public slots: + void save(); + void load(); + void defaults(); + + private slots: + void widgetHasChanged(); + + private: + Ui::NotificationsSettingsPage ui; + QHash settings; + + bool testHasChanged(); +}; + +#endif diff --git a/src/qtui/settingspages/notificationssettingspage.ui b/src/qtui/settingspages/notificationssettingspage.ui new file mode 100644 index 00000000..c7ffda55 --- /dev/null +++ b/src/qtui/settingspages/notificationssettingspage.ui @@ -0,0 +1,136 @@ + + NotificationsSettingsPage + + + + 0 + 0 + 422 + 386 + + + + Form + + + + + + System Tray + + + + + + Animate tray icon + + + true + + + + + + + Show Bubble + + + + + + + + + + Desktop Notification (via DBus) + + + true + + + + + + + + Timeout + + + + + + + -1 + + + 100000 + + + 5000 + + + + + + + X + + + + + + + 10000 + + + + + + + Y + + + + + + + 10000 + + + + + + + + + Qt::Horizontal + + + + 261 + 20 + + + + + + + + + + + Qt::Vertical + + + + 20 + 143 + + + + + + + + + diff --git a/src/qtui/settingspages/settingspages.inc b/src/qtui/settingspages/settingspages.inc index db6a2403..d2072341 100644 --- a/src/qtui/settingspages/settingspages.inc +++ b/src/qtui/settingspages/settingspages.inc @@ -1,6 +1,7 @@ # Putting $FOO in SETTINGSPAGES automatically includes # $FOOsettingspage.cpp, $FOOsettingspage.h and $FOOsettingspage.ui -set(SETTINGSPAGES aliases appearance bufferview color fonts general highlight identities networks) + +set(SETTINGSPAGES aliases appearance bufferview color fonts general highlight identities networks notifications) # Specify additional files (e.g. for subdialogs) here! set(SP_SOURCES aliasesmodel.cpp)