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 #pragma once 0007 0008 #include "grantleetheme_export.h" 0009 0010 #include <QSharedDataPointer> 0011 #include <QString> 0012 #include <QStringList> 0013 #include <QVariantHash> 0014 0015 class GrantleeThemeTest; 0016 0017 namespace GrantleeTheme 0018 { 0019 class ThemeManager; 0020 class ThemeManagerPrivate; 0021 class ThemePrivate; 0022 0023 /** 0024 * @brief The Theme class 0025 */ 0026 class GRANTLEETHEME_EXPORT Theme 0027 { 0028 public: 0029 explicit Theme(); 0030 Theme(const Theme &other); 0031 ~Theme(); 0032 0033 [[nodiscard]] bool operator==(const Theme &other) const; 0034 Theme &operator=(const Theme &other); 0035 0036 [[nodiscard]] bool isValid() const; 0037 0038 [[nodiscard]] QString description() const; 0039 [[nodiscard]] QString themeFilename() const; 0040 [[nodiscard]] QString name() const; 0041 [[nodiscard]] QStringList displayExtraVariables() const; 0042 [[nodiscard]] QString dirName() const; 0043 [[nodiscard]] QString absolutePath() const; 0044 [[nodiscard]] QString author() const; 0045 [[nodiscard]] QString authorEmail() const; 0046 0047 void addThemePath(const QString &path); 0048 0049 [[nodiscard]] QString render(const QString &templateName, const QVariantHash &data, const QByteArray &applicationDomain = QByteArray()); 0050 0051 static void addPluginPath(const QString &path); 0052 0053 private: 0054 friend class ::GrantleeThemeTest; 0055 friend class ThemeManager; 0056 friend class ThemeManagerPrivate; 0057 Theme(const QString &themePath, const QString &dirName, const QString &defaultDesktopFileName); 0058 0059 QSharedDataPointer<ThemePrivate> d; 0060 }; 0061 }