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 &notifyRcName);
0072 
0073     QString initialEventId() const;
0074     void setInitialEventId(const QString &eventId);
0075 
0076     Q_INVOKABLE void configureEvents(const QString &notifyRcName, 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 };