File indexing completed on 2024-05-12 17:08:51

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 <QObject>
0010 #include <QPointer>
0011 #include <QStringList>
0012 
0013 class KConfigLoader;
0014 
0015 /**
0016  * @brief The SystemTraySettings class
0017  */
0018 class SystemTraySettings : public QObject
0019 {
0020     Q_OBJECT
0021 public:
0022     explicit SystemTraySettings(KConfigLoader *config, QObject *parent = nullptr);
0023 
0024     bool isKnownPlugin(const QString &pluginId);
0025     const QStringList knownPlugins() const;
0026     void addKnownPlugin(const QString &pluginId);
0027     void removeKnownPlugin(const QString &pluginId);
0028 
0029     bool isEnabledPlugin(const QString &pluginId) const;
0030     const QStringList enabledPlugins() const;
0031     void addEnabledPlugin(const QString &pluginId);
0032     void removeEnabledPlugin(const QString &pluginId);
0033 
0034     bool isShowAllItems() const;
0035     const QStringList shownItems() const;
0036     const QStringList hiddenItems() const;
0037 
0038     void cleanupPlugin(const QString &pluginId);
0039 
0040 Q_SIGNALS:
0041     void configurationChanged();
0042     void enabledPluginsChanged(const QStringList &enabledPlugins, const QStringList &disabledPlugins);
0043 
0044 private:
0045     void loadConfig();
0046     void writeConfigValue(const QString &key, const QVariant &value);
0047     void notifyAboutChangedEnabledPlugins(const QStringList &enabledPluginsOld, const QStringList &enabledPluginsNew);
0048 
0049     QPointer<KConfigLoader> config;
0050 
0051     bool updatingConfigValue = false;
0052     QStringList m_extraItems;
0053     QStringList m_knownItems;
0054 };