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 }