X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fsettingspages%2Fnotificationssettingspage.cpp;h=a473bc83c5032a9b4f587cbe41b22b5d47c50bca;hp=9fbe715097ca60d62961aa7c5a2d7f45400b962f;hb=3f354bcce2cecfe88a46de90cbf94ffd1bc7c506;hpb=9d32e4eb35cecd82d936d2de7da7e7e7dc606667 diff --git a/src/qtui/settingspages/notificationssettingspage.cpp b/src/qtui/settingspages/notificationssettingspage.cpp index 9fbe7150..a473bc83 100644 --- a/src/qtui/settingspages/notificationssettingspage.cpp +++ b/src/qtui/settingspages/notificationssettingspage.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-08 by the Quassel IRC Team * + * Copyright (C) 2005-09 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -18,89 +18,61 @@ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ +#include + #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())); - + : SettingsPage(tr("Interface"), tr("Notifications"), parent), + _hasDefaults(false) +{ + + QVBoxLayout *layout = new QVBoxLayout(this); + foreach(AbstractNotificationBackend *backend, QtUi::notificationBackends()) { + SettingsPage *cw = backend->createConfigWidget(); + if(cw) { + cw->setParent(this); + _configWidgets.append(cw); + layout->addWidget(cw); + connect(cw, SIGNAL(changed(bool)), SLOT(widgetHasChanged())); + _hasDefaults |= cw->hasDefaults(); + } + } + layout->addStretch(1); + load(); } bool NotificationsSettingsPage::hasDefaults() const { - return true; + return _hasDefaults; } 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); - + foreach(SettingsPage *cw, _configWidgets) + cw->defaults(); 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()); - + foreach(SettingsPage *cw, _configWidgets) + cw->load(); 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(); + foreach(SettingsPage *cw, _configWidgets) + cw->save(); setChangedState(false); } void NotificationsSettingsPage::widgetHasChanged() { - bool changed = testHasChanged(); + bool changed = false; + foreach(SettingsPage *cw, _configWidgets) { + if(cw->hasChanged()) { + changed = true; + break; + } + } 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; -}