Warning, file /plasma/plasma-workspace/kcms/desktoptheme/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: 2014 Marco Martin <mart@kde.org> 0003 SPDX-FileCopyrightText: 2014 Vishesh Handa <me@vhanda.in> 0004 SPDX-FileCopyrightText: 2016 David Rosca <nowrep@gmail.com> 0005 SPDX-FileCopyrightText: 2018 Kai Uwe Broulik <kde@privat.broulik.de> 0006 SPDX-FileCopyrightText: 2019 Kevin Ottens <kevin.ottens@enioka.com> 0007 0008 SPDX-License-Identifier: LGPL-2.0-only 0009 */ 0010 0011 #pragma once 0012 0013 #include <KQuickAddons/ManagedConfigModule> 0014 0015 #include "desktopthemesettings.h" 0016 #include "themesmodel.h" 0017 0018 class QTemporaryFile; 0019 0020 namespace Plasma 0021 { 0022 class Theme; 0023 } 0024 0025 namespace KIO 0026 { 0027 class FileCopyJob; 0028 } 0029 0030 class QQuickItem; 0031 class DesktopThemeData; 0032 class FilterProxyModel; 0033 0034 class KCMDesktopTheme : public KQuickAddons::ManagedConfigModule 0035 { 0036 Q_OBJECT 0037 0038 Q_PROPERTY(DesktopThemeSettings *desktopThemeSettings READ desktopThemeSettings CONSTANT) 0039 Q_PROPERTY(FilterProxyModel *filteredModel READ filteredModel CONSTANT) 0040 Q_PROPERTY(ThemesModel *desktopThemeModel READ desktopThemeModel CONSTANT) 0041 Q_PROPERTY(bool downloadingFile READ downloadingFile NOTIFY downloadingFileChanged) 0042 Q_PROPERTY(bool canEditThemes READ canEditThemes CONSTANT) 0043 0044 public: 0045 KCMDesktopTheme(QObject *parent, const KPluginMetaData &data, const QVariantList &args); 0046 ~KCMDesktopTheme() override; 0047 0048 DesktopThemeSettings *desktopThemeSettings() const; 0049 ThemesModel *desktopThemeModel() const; 0050 FilterProxyModel *filteredModel() const; 0051 0052 bool downloadingFile() const; 0053 0054 bool canEditThemes() const; 0055 0056 Q_INVOKABLE void installThemeFromFile(const QUrl &url); 0057 0058 Q_INVOKABLE void applyPlasmaTheme(QQuickItem *item, const QString &themeName); 0059 0060 Q_INVOKABLE void editTheme(const QString &themeName); 0061 0062 Q_SIGNALS: 0063 void downloadingFileChanged(); 0064 0065 void showSuccessMessage(const QString &message); 0066 void showErrorMessage(const QString &message); 0067 0068 public Q_SLOTS: 0069 void load() override; 0070 void save() override; 0071 void defaults() override; 0072 0073 private: 0074 bool isSaveNeeded() const override; 0075 0076 void processPendingDeletions(); 0077 0078 void installTheme(const QString &path); 0079 0080 DesktopThemeData *m_data; 0081 0082 ThemesModel *m_model; 0083 FilterProxyModel *m_filteredModel; 0084 QHash<QString, Plasma::Theme *> m_themes; 0085 bool m_haveThemeExplorerInstalled; 0086 0087 std::unique_ptr<QTemporaryFile> m_tempInstallFile; 0088 QPointer<KIO::FileCopyJob> m_tempCopyJob; 0089 }; 0090 0091 Q_DECLARE_LOGGING_CATEGORY(KCM_DESKTOP_THEME)