Warning, file /plasma/plasma-workspace/kcms/notifications/kcm.h was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001 /* 0002 SPDX-FileCopyrightText: 2019 Kai Uwe Broulik <kde@privat.broulik.de> 0003 0004 SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0005 */ 0006 0007 #pragma once 0008 0009 #include <KQuickAddons/ManagedConfigModule> 0010 0011 #include <QHash> 0012 #include <QKeySequence> 0013 0014 #include "badgesettings.h" 0015 #include "donotdisturbsettings.h" 0016 #include "filterproxymodel.h" 0017 #include "jobsettings.h" 0018 #include "notificationsettings.h" 0019 #include "sourcesmodel.h" 0020 0021 class QAction; 0022 0023 class NotificationsData; 0024 0025 namespace NotificationManager 0026 { 0027 class BehaviorSettings; 0028 } 0029 0030 class KCMNotifications : public KQuickAddons::ManagedConfigModule 0031 { 0032 Q_OBJECT 0033 0034 Q_PROPERTY(SourcesModel *sourcesModel READ sourcesModel CONSTANT) 0035 Q_PROPERTY(FilterProxyModel *filteredModel READ filteredModel CONSTANT) 0036 0037 Q_PROPERTY(NotificationManager::DoNotDisturbSettings *dndSettings READ dndSettings CONSTANT) 0038 Q_PROPERTY(NotificationManager::NotificationSettings *notificationSettings READ notificationSettings CONSTANT) 0039 Q_PROPERTY(NotificationManager::JobSettings *jobSettings READ jobSettings CONSTANT) 0040 Q_PROPERTY(NotificationManager::BadgeSettings *badgeSettings READ badgeSettings CONSTANT) 0041 Q_PROPERTY(bool isDefaultsBehaviorSettings READ isDefaultsBehaviorSettings NOTIFY isDefaultsBehaviorSettingsChanged) 0042 0043 Q_PROPERTY( 0044 QKeySequence toggleDoNotDisturbShortcut READ toggleDoNotDisturbShortcut WRITE setToggleDoNotDisturbShortcut NOTIFY toggleDoNotDisturbShortcutChanged) 0045 0046 // So it can show the respective settings module right away 0047 Q_PROPERTY(QString initialDesktopEntry READ initialDesktopEntry WRITE setInitialDesktopEntry NOTIFY initialDesktopEntryChanged) 0048 Q_PROPERTY(QString initialNotifyRcName READ initialNotifyRcName WRITE setInitialNotifyRcName NOTIFY initialNotifyRcNameChanged) 0049 Q_PROPERTY(QString initialEventId READ initialEventId WRITE setInitialEventId NOTIFY initialEventIdChanged) 0050 0051 public: 0052 KCMNotifications(QObject *parent, const KPluginMetaData &data, const QVariantList &args); 0053 ~KCMNotifications() override; 0054 0055 SourcesModel *sourcesModel() const; 0056 FilterProxyModel *filteredModel() const; 0057 0058 NotificationManager::DoNotDisturbSettings *dndSettings() const; 0059 NotificationManager::NotificationSettings *notificationSettings() const; 0060 NotificationManager::JobSettings *jobSettings() const; 0061 NotificationManager::BadgeSettings *badgeSettings() const; 0062 0063 QKeySequence toggleDoNotDisturbShortcut() const; 0064 void setToggleDoNotDisturbShortcut(const QKeySequence &shortcut); 0065 Q_SIGNAL void toggleDoNotDisturbShortcutChanged(); 0066 0067 QString initialDesktopEntry() const; 0068 void setInitialDesktopEntry(const QString &desktopEntry); 0069 0070 QString initialNotifyRcName() const; 0071 void setInitialNotifyRcName(const QString ¬ifyRcName); 0072 0073 QString initialEventId() const; 0074 void setInitialEventId(const QString &eventId); 0075 0076 Q_INVOKABLE void configureEvents(const QString ¬ifyRcName, const QString &eventId, QQuickItem *ctx = nullptr); 0077 0078 Q_INVOKABLE NotificationManager::BehaviorSettings *behaviorSettings(const QModelIndex &index); 0079 0080 bool isDefaultsBehaviorSettings() const; 0081 0082 public Q_SLOTS: 0083 void load() override; 0084 void save() override; 0085 void defaults() override; 0086 0087 Q_SIGNALS: 0088 void initialDesktopEntryChanged(); 0089 void initialNotifyRcNameChanged(); 0090 void initialEventIdChanged(); 0091 void firstLoadDone(); 0092 void isDefaultsBehaviorSettingsChanged(); 0093 0094 private Q_SLOTS: 0095 void onDefaultsIndicatorsVisibleChanged(); 0096 void updateModelIsDefaultStatus(const QModelIndex &index); 0097 0098 private: 0099 bool isSaveNeeded() const override; 0100 bool isDefaults() const override; 0101 void createConnections(NotificationManager::BehaviorSettings *settings, const QModelIndex &index); 0102 0103 SourcesModel *const m_sourcesModel; 0104 FilterProxyModel *const m_filteredModel; 0105 0106 NotificationsData *const m_data; 0107 0108 QAction *m_toggleDoNotDisturbAction; 0109 QKeySequence m_toggleDoNotDisturbShortcut; 0110 bool m_toggleDoNotDisturbShortcutDirty = false; 0111 bool m_firstLoad = true; 0112 0113 QString m_initialDesktopEntry; 0114 QString m_initialNotifyRcName; 0115 QString m_initialEventId; 0116 };