File indexing completed on 2024-05-12 17:08:50
0001 /* 0002 SPDX-FileCopyrightText: 2020 Konrad Materka <materka@gmail.com> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include <QMap> 0010 #include <QObject> 0011 #include <QPointer> 0012 0013 class DBusServiceObserver; 0014 class KPluginMetaData; 0015 class SystemTraySettings; 0016 0017 class PlasmoidRegistry : public QObject 0018 { 0019 Q_OBJECT 0020 public: 0021 explicit PlasmoidRegistry(QPointer<SystemTraySettings> settings, QObject *parent = nullptr); 0022 0023 void init(); 0024 0025 virtual QMap<QString, KPluginMetaData> systemTrayApplets(); 0026 bool isSystemTrayApplet(const QString &pluginId); 0027 0028 Q_SIGNALS: 0029 /** 0030 * @brief Emitted when new plasmoid configuration is registered. 0031 * Emitted on initial run or when new plasmoid is installed in the system. 0032 * 0033 * @param pluginMetaData @see KPluginMetaData 0034 */ 0035 void pluginRegistered(const KPluginMetaData &pluginMetaData); 0036 /** 0037 * @brief Emitten when new plasmoid configuration is unregistered. 0038 * As of now, the only case is when plasmoid is uninstalled for the system. 0039 * 0040 * @param pluginId also known as applet Id 0041 */ 0042 void pluginUnregistered(const QString &pluginId); 0043 0044 /** 0045 * @brief Emittend when plasmoid id enabled. 0046 * Note: this signal can be emitted for already enabled plasmoid. 0047 * 0048 * @param pluginId also known as applet Id 0049 */ 0050 void plasmoidEnabled(const QString &pluginId); 0051 /** 0052 * @brief Emitted when plasmoid should be stopped, for example when DBus service is no longer available. 0053 * Note: this signal can be emitted for already stopped plasmoid. 0054 * 0055 * @param pluginId also known as applet Id 0056 */ 0057 void plasmoidStopped(const QString &pluginId); 0058 /** 0059 * @brief Emitted when plasmoid is disabled entirely by user. 0060 * 0061 * @param pluginId also known as applet Id 0062 */ 0063 void plasmoidDisabled(const QString &pluginId); 0064 0065 private Q_SLOTS: 0066 void onEnabledPluginsChanged(const QStringList &enabledPlugins, const QStringList &disabledPlugins); 0067 void packageInstalled(const QString &pluginId); 0068 void packageUninstalled(const QString &pluginId); 0069 0070 private: 0071 void registerPlugin(const KPluginMetaData &pluginMetaData); 0072 void unregisterPlugin(const QString &pluginId); 0073 void sanitizeSettings(); 0074 0075 QPointer<SystemTraySettings> m_settings; 0076 QPointer<DBusServiceObserver> m_dbusObserver; 0077 0078 QMap<QString /*plugin id*/, KPluginMetaData> m_systrayApplets; 0079 };