File indexing completed on 2024-05-12 05:13:33
0001 /* 0002 SPDX-FileCopyrightText: 2013-2024 Laurent Montel <montel@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.1-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include "grantleetheme.h" 0010 #include "grantleetheme_export.h" 0011 #include <QMap> 0012 #include <QObject> 0013 0014 #include <memory> 0015 0016 class QActionGroup; 0017 class KActionCollection; 0018 class KToggleAction; 0019 class KActionMenu; 0020 0021 namespace GrantleeTheme 0022 { 0023 class ThemeManagerPrivate; 0024 0025 /** 0026 * @brief The ThemeManager class 0027 * @author Laurent montel <montel@kde.org> 0028 */ 0029 class GRANTLEETHEME_EXPORT ThemeManager : public QObject 0030 { 0031 Q_OBJECT 0032 public: 0033 explicit ThemeManager(const QString &themeType, 0034 const QString &defaultDesktopFileName, 0035 KActionCollection *actionCollection = nullptr, 0036 const QString &path = QString(), 0037 const QString &configFileName = QString(), 0038 QObject *parent = nullptr); 0039 ~ThemeManager() override; 0040 0041 [[nodiscard]] QMap<QString, GrantleeTheme::Theme> themes() const; 0042 0043 void setActionGroup(QActionGroup *actionGroup); 0044 0045 [[nodiscard]] KToggleAction *actionForTheme(); 0046 0047 void setThemeMenu(KActionMenu *menu); 0048 0049 [[nodiscard]] QStringList displayExtraVariables(const QString &themename) const; 0050 0051 [[nodiscard]] GrantleeTheme::Theme theme(const QString &themeName); 0052 0053 [[nodiscard]] QString configuredThemeName() const; 0054 [[nodiscard]] static QString configuredThemeName(const QString &themeType); 0055 0056 [[nodiscard]] static QString pathFromThemes(const QString &path, const QString &themeName, const QString &defaultDesktopFilename); 0057 [[nodiscard]] static GrantleeTheme::Theme loadTheme(const QString &themePath, const QString &dirName, const QString &defaultDesktopFilename); 0058 0059 Q_SIGNALS: 0060 void themesChanged(); 0061 void grantleeThemeSelected(); 0062 void updateThemes(); 0063 0064 private: 0065 friend class ThemeManagerPrivate; 0066 std::unique_ptr<ThemeManagerPrivate> const d; 0067 Q_PRIVATE_SLOT(d, void directoryChanged()) 0068 }; 0069 }