diff --git a/libnotificationmanager/CMakeLists.txt b/libnotificationmanager/CMakeLists.txt --- a/libnotificationmanager/CMakeLists.txt +++ b/libnotificationmanager/CMakeLists.txt @@ -38,10 +38,10 @@ install(FILES libnotificationmanager.categories DESTINATION ${KDE_INSTALL_LOGGINGCATEGORIESDIR}) # Settings -kconfig_add_kcfg_files(notificationmanager_LIB_SRCS kcfg/donotdisturbsettings.kcfgc) -kconfig_add_kcfg_files(notificationmanager_LIB_SRCS kcfg/notificationsettings.kcfgc) -kconfig_add_kcfg_files(notificationmanager_LIB_SRCS kcfg/jobsettings.kcfgc) -kconfig_add_kcfg_files(notificationmanager_LIB_SRCS kcfg/badgesettings.kcfgc) +kconfig_add_kcfg_files(notificationmanager_LIB_SRCS kcfg/donotdisturbsettings.kcfgc GENERATE_MOC) +kconfig_add_kcfg_files(notificationmanager_LIB_SRCS kcfg/notificationsettings.kcfgc GENERATE_MOC) +kconfig_add_kcfg_files(notificationmanager_LIB_SRCS kcfg/jobsettings.kcfgc GENERATE_MOC) +kconfig_add_kcfg_files(notificationmanager_LIB_SRCS kcfg/badgesettings.kcfgc GENERATE_MOC) # DBus # Notifications @@ -93,6 +93,10 @@ jobsmodel.h job.h settings.h + ${CMAKE_CURRENT_BINARY_DIR}/donotdisturbsettings.h + ${CMAKE_CURRENT_BINARY_DIR}/notificationsettings.h + ${CMAKE_CURRENT_BINARY_DIR}/jobsettings.h + ${CMAKE_CURRENT_BINARY_DIR}/badgesettings.h ${CMAKE_CURRENT_BINARY_DIR}/notificationmanager_export.h DESTINATION ${KDE_INSTALL_INCLUDEDIR}/notificationmanager COMPONENT Devel ) diff --git a/libnotificationmanager/kcfg/badgesettings.kcfg b/libnotificationmanager/kcfg/badgesettings.kcfg --- a/libnotificationmanager/kcfg/badgesettings.kcfg +++ b/libnotificationmanager/kcfg/badgesettings.kcfg @@ -3,7 +3,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.kde.org/standards/kcfg/1.0 http://www.kde.org/standards/kcfg/1.0/kcfg.xsd" > - + diff --git a/libnotificationmanager/kcfg/badgesettings.kcfgc b/libnotificationmanager/kcfg/badgesettings.kcfgc --- a/libnotificationmanager/kcfg/badgesettings.kcfgc +++ b/libnotificationmanager/kcfg/badgesettings.kcfgc @@ -1,7 +1,10 @@ File=badgesettings.kcfg NameSpace=NotificationManager ClassName=BadgeSettings -Singleton=true +Visibility=NOTIFICATIONMANAGER_EXPORT +IncludeFiles=\"notificationmanager_export.h\" Mutators=true DefaultValueGetters=true Notifiers=true +GenerateProperties=true +ParentInConstructor=true diff --git a/libnotificationmanager/kcfg/donotdisturbsettings.kcfg b/libnotificationmanager/kcfg/donotdisturbsettings.kcfg --- a/libnotificationmanager/kcfg/donotdisturbsettings.kcfg +++ b/libnotificationmanager/kcfg/donotdisturbsettings.kcfg @@ -3,7 +3,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.kde.org/standards/kcfg/1.0 http://www.kde.org/standards/kcfg/1.0/kcfg.xsd" > - + diff --git a/libnotificationmanager/kcfg/donotdisturbsettings.kcfgc b/libnotificationmanager/kcfg/donotdisturbsettings.kcfgc --- a/libnotificationmanager/kcfg/donotdisturbsettings.kcfgc +++ b/libnotificationmanager/kcfg/donotdisturbsettings.kcfgc @@ -1,7 +1,10 @@ File=donotdisturbsettings.kcfg NameSpace=NotificationManager ClassName=DoNotDisturbSettings -Singleton=true +Visibility=NOTIFICATIONMANAGER_EXPORT +IncludeFiles=\"notificationmanager_export.h\" Mutators=true DefaultValueGetters=true Notifiers=true +GenerateProperties=true +ParentInConstructor=true diff --git a/libnotificationmanager/kcfg/jobsettings.kcfg b/libnotificationmanager/kcfg/jobsettings.kcfg --- a/libnotificationmanager/kcfg/jobsettings.kcfg +++ b/libnotificationmanager/kcfg/jobsettings.kcfg @@ -3,7 +3,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.kde.org/standards/kcfg/1.0 http://www.kde.org/standards/kcfg/1.0/kcfg.xsd" > - + diff --git a/libnotificationmanager/kcfg/jobsettings.kcfgc b/libnotificationmanager/kcfg/jobsettings.kcfgc --- a/libnotificationmanager/kcfg/jobsettings.kcfgc +++ b/libnotificationmanager/kcfg/jobsettings.kcfgc @@ -1,7 +1,10 @@ File=jobsettings.kcfg NameSpace=NotificationManager ClassName=JobSettings -Singleton=true +Visibility=NOTIFICATIONMANAGER_EXPORT +IncludeFiles=\"notificationmanager_export.h\" Mutators=true DefaultValueGetters=true Notifiers=true +GenerateProperties=true +ParentInConstructor=true diff --git a/libnotificationmanager/kcfg/notificationsettings.kcfg b/libnotificationmanager/kcfg/notificationsettings.kcfg --- a/libnotificationmanager/kcfg/notificationsettings.kcfg +++ b/libnotificationmanager/kcfg/notificationsettings.kcfg @@ -3,7 +3,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.kde.org/standards/kcfg/1.0 http://www.kde.org/standards/kcfg/1.0/kcfg.xsd" > - + diff --git a/libnotificationmanager/kcfg/notificationsettings.kcfgc b/libnotificationmanager/kcfg/notificationsettings.kcfgc --- a/libnotificationmanager/kcfg/notificationsettings.kcfgc +++ b/libnotificationmanager/kcfg/notificationsettings.kcfgc @@ -1,10 +1,12 @@ File=notificationsettings.kcfg NameSpace=NotificationManager ClassName=NotificationSettings -Singleton=true +Visibility=NOTIFICATIONMANAGER_EXPORT Mutators=true DefaultValueGetters=true Notifiers=true +GenerateProperties=true +ParentInConstructor=true # For Settings::PopupPosition -IncludeFiles=\"settings.h\" -UseEnumTypes=true +IncludeFiles=\"settings.h\",\"notificationmanager_export.h\" +UseEnumTypes=false diff --git a/libnotificationmanager/settings.cpp b/libnotificationmanager/settings.cpp --- a/libnotificationmanager/settings.cpp +++ b/libnotificationmanager/settings.cpp @@ -62,6 +62,11 @@ MirroredScreensTracker::Ptr mirroredScreensTracker; + DoNotDisturbSettings dndSettings; + NotificationSettings notificationSettings; + JobSettings jobSettings; + BadgeSettings badgeSettings; + bool live = false; // set to true initially in constructor bool dirty = false; @@ -168,23 +173,14 @@ { d->config = config; - static bool s_settingsInited = false; - if (!s_settingsInited) { - DoNotDisturbSettings::instance(config); - NotificationSettings::instance(config); - JobSettings::instance(config); - BadgeSettings::instance(config); - s_settingsInited = true; - } - setLive(true); connect(&Server::self(), &Server::inhibitedByApplicationChanged, this, &Settings::notificationsInhibitedByApplicationChanged); connect(&Server::self(), &Server::inhibitionApplicationsChanged, this, &Settings::notificationInhibitionApplicationsChanged); - if (DoNotDisturbSettings::whenScreensMirrored()) { + if (d->dndSettings.whenScreensMirrored()) { d->mirroredScreensTracker = MirroredScreensTracker::createTracker(); connect(d->mirroredScreensTracker.data(), &MirroredScreensTracker::screensMirroredChanged, this, &Settings::screensMirroredChanged); } @@ -260,31 +256,33 @@ { d->config->markAsClean(); d->config->reparseConfiguration(); - DoNotDisturbSettings::self()->load(); - NotificationSettings::self()->load(); - JobSettings::self()->load(); - BadgeSettings::self()->load(); + d->dndSettings.load(); + d->notificationSettings.load(); + d->jobSettings.load(); + d->badgeSettings.load(); emit settingsChanged(); d->setDirty(false); } void Settings::save() { - DoNotDisturbSettings::self()->save(); - NotificationSettings::self()->save(); - JobSettings::self()->save(); - BadgeSettings::self()->save(); + d->dndSettings.save(); + d->notificationSettings.save(); + d->jobSettings.save(); + d->badgeSettings.save(); d->config->sync(); d->setDirty(false); } void Settings::defaults() { - DoNotDisturbSettings::self()->setDefaults(); - NotificationSettings::self()->setDefaults(); - JobSettings::self()->setDefaults(); - BadgeSettings::self()->setDefaults(); + d->dndSettings.setDefaults(); + d->notificationSettings.setDefaults(); + d->jobSettings.setDefaults(); + d->badgeSettings.setDefaults(); + emit settingsChanged(); + d->setDirty(false); } bool Settings::live() const @@ -307,10 +305,10 @@ Q_UNUSED(names); if (group.name() == QLatin1String("DoNotDisturb")) { - DoNotDisturbSettings::self()->load(); + d->dndSettings.load(); bool emitScreensMirroredChanged = false; - if (DoNotDisturbSettings::whenScreensMirrored()) { + if (d->dndSettings.whenScreensMirrored()) { if (!d->mirroredScreensTracker) { d->mirroredScreensTracker = MirroredScreensTracker::createTracker(); emitScreensMirroredChanged = d->mirroredScreensTracker->screensMirrored(); @@ -325,11 +323,11 @@ emit screensMirroredChanged(); } } else if (group.name() == QLatin1String("Notifications")) { - NotificationSettings::self()->load(); + d->notificationSettings.load(); } else if (group.name() == QLatin1String("Jobs")) { - JobSettings::self()->load(); + d->jobSettings.load(); } else if (group.name() == QLatin1String("Badges")) { - BadgeSettings::self()->load(); + d->badgeSettings.load(); } emit settingsChanged(); @@ -352,145 +350,145 @@ bool Settings::keepCriticalAlwaysOnTop() const { - return NotificationSettings::criticalAlwaysOnTop(); + return d->notificationSettings.criticalAlwaysOnTop(); } void Settings::setKeepCriticalAlwaysOnTop(bool enable) { if (this->keepCriticalAlwaysOnTop() == enable) { return; } - NotificationSettings::setCriticalAlwaysOnTop(enable); + d->notificationSettings.setCriticalAlwaysOnTop(enable); d->setDirty(true); } bool Settings::criticalPopupsInDoNotDisturbMode() const { - return NotificationSettings::criticalInDndMode(); + return d->notificationSettings.criticalInDndMode(); } void Settings::setCriticalPopupsInDoNotDisturbMode(bool enable) { if (this->criticalPopupsInDoNotDisturbMode() == enable) { return; } - NotificationSettings::setCriticalInDndMode(enable); + d->notificationSettings.setCriticalInDndMode(enable); d->setDirty(true); } bool Settings::lowPriorityPopups() const { - return NotificationSettings::lowPriorityPopups(); + return d->notificationSettings.lowPriorityPopups(); } void Settings::setLowPriorityPopups(bool enable) { if (this->lowPriorityPopups() == enable) { return; } - NotificationSettings::setLowPriorityPopups(enable); + d->notificationSettings.setLowPriorityPopups(enable); d->setDirty(true); } bool Settings::lowPriorityHistory() const { - return NotificationSettings::lowPriorityHistory(); + return d->notificationSettings.lowPriorityHistory(); } void Settings::setLowPriorityHistory(bool enable) { if (this->lowPriorityHistory() == enable) { return; } - NotificationSettings::setLowPriorityHistory(enable); + d->notificationSettings.setLowPriorityHistory(enable); d->setDirty(true); } Settings::PopupPosition Settings::popupPosition() const { - return NotificationSettings::popupPosition(); + return static_cast(d->notificationSettings.popupPosition()); } void Settings::setPopupPosition(Settings::PopupPosition position) { if (this->popupPosition() == position) { return; } - NotificationSettings::setPopupPosition(position); + d->notificationSettings.setPopupPosition(position); d->setDirty(true); } int Settings::popupTimeout() const { - return NotificationSettings::popupTimeout(); + return d->notificationSettings.popupTimeout(); } void Settings::setPopupTimeout(int timeout) { if (this->popupTimeout() == timeout) { return; } - NotificationSettings::setPopupTimeout(timeout); + d->notificationSettings.setPopupTimeout(timeout); d->setDirty(true); } void Settings::resetPopupTimeout() { - setPopupTimeout(NotificationSettings::defaultPopupTimeoutValue()); + setPopupTimeout(d->notificationSettings.defaultPopupTimeoutValue()); } bool Settings::jobsInTaskManager() const { - return JobSettings::inTaskManager(); + return d->jobSettings.inTaskManager(); } void Settings::setJobsInTaskManager(bool enable) { if (jobsInTaskManager() == enable) { return; } - JobSettings::setInTaskManager(enable); + d->jobSettings.setInTaskManager(enable); d->setDirty(true); } bool Settings::jobsInNotifications() const { - return JobSettings::inNotifications(); + return d->jobSettings.inNotifications(); } void Settings::setJobsInNotifications(bool enable) { if (jobsInNotifications() == enable) { return; } - JobSettings::setInNotifications(enable); + d->jobSettings.setInNotifications(enable); d->setDirty(true); } bool Settings::permanentJobPopups() const { - return JobSettings::permanentPopups(); + return d->jobSettings.permanentPopups(); } void Settings::setPermanentJobPopups(bool enable) { if (permanentJobPopups() == enable) { return; } - JobSettings::setPermanentPopups(enable); + d->jobSettings.setPermanentPopups(enable); d->setDirty(true); } bool Settings::badgesInTaskManager() const { - return BadgeSettings::inTaskManager(); + return d->badgeSettings.inTaskManager(); } void Settings::setBadgesInTaskManager(bool enable) { if (badgesInTaskManager() == enable) { return; } - BadgeSettings::setInTaskManager(enable); + d->badgeSettings.setInTaskManager(enable); d->setDirty(true); } @@ -536,18 +534,18 @@ QDateTime Settings::notificationsInhibitedUntil() const { - return DoNotDisturbSettings::until(); + return d->dndSettings.until(); } void Settings::setNotificationsInhibitedUntil(const QDateTime &time) { - DoNotDisturbSettings::setUntil(time); + d->dndSettings.setUntil(time); d->setDirty(true); } void Settings::resetNotificationsInhibitedUntil() { - setNotificationsInhibitedUntil(QDateTime());// FIXME DoNotDisturbSettings::defaultUntilValue()); + setNotificationsInhibitedUntil(QDateTime());// FIXME d->dndSettings.defaultUntilValue()); } bool Settings::notificationsInhibitedByApplication() const @@ -567,16 +565,16 @@ bool Settings::inhibitNotificationsWhenScreensMirrored() const { - return DoNotDisturbSettings::whenScreensMirrored(); + return d->dndSettings.whenScreensMirrored(); } void Settings::setInhibitNotificationsWhenScreensMirrored(bool inhibit) { if (inhibit == inhibitNotificationsWhenScreensMirrored()) { return; } - DoNotDisturbSettings::setWhenScreensMirrored(inhibit); + d->dndSettings.setWhenScreensMirrored(inhibit); d->setDirty(true); } @@ -604,15 +602,15 @@ bool Settings::notificationSoundsInhibited() const { - return DoNotDisturbSettings::notificationSoundsMuted(); + return d->dndSettings.notificationSoundsMuted(); } void Settings::setNotificationSoundsInhibited(bool inhibited) { if (inhibited == notificationSoundsInhibited()) { return; } - DoNotDisturbSettings::setNotificationSoundsMuted(inhibited); + d->dndSettings.setNotificationSoundsMuted(inhibited); d->setDirty(true); }