File indexing completed on 2024-05-12 17:08:26
0001 /* 0002 * SPDX-FileCopyrightText: 2016 Marco Martin <mart@kde.org> 0003 * 0004 * SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #ifndef LNFLOGIC_H 0008 #define LNFLOGIC_H 0009 0010 #include <QAbstractListModel> 0011 #include <kpackage/package.h> 0012 0013 class LnfListModel; 0014 0015 class LnfLogic : public QObject 0016 { 0017 Q_OBJECT 0018 0019 Q_PROPERTY(LnfListModel *lnfList READ lnfList CONSTANT) 0020 Q_PROPERTY(QString theme READ theme WRITE setTheme NOTIFY themeChanged) 0021 Q_PROPERTY(bool isWritable READ isWritable NOTIFY themeChanged) 0022 Q_PROPERTY(QString themeFolder READ themeFolder NOTIFY themeChanged) 0023 0024 Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) 0025 Q_PROPERTY(QString comment READ comment WRITE setComment NOTIFY commentChanged) 0026 Q_PROPERTY(QString author READ author WRITE setAuthor NOTIFY authorChanged) 0027 Q_PROPERTY(QString email READ email WRITE setEmail NOTIFY emailChanged) 0028 Q_PROPERTY(QString version READ version WRITE setVersion NOTIFY versionChanged) 0029 Q_PROPERTY(QString website READ website WRITE setWebsite NOTIFY websiteChanged) 0030 Q_PROPERTY(QString license READ license WRITE setLicense NOTIFY licenseChanged) 0031 Q_PROPERTY(QString thumbnailPath READ thumbnailPath NOTIFY themeChanged) 0032 0033 Q_PROPERTY(bool performLayoutDump READ performLayoutDump WRITE setPerformLayoutDump NOTIFY performLayoutDumpChanged) 0034 Q_PROPERTY(bool performDefaultsDump READ performDefaultsDump WRITE setPerformDefaultsDump NOTIFY performDefaultsDumpChanged) 0035 0036 Q_PROPERTY(bool needsSave READ needsSave NOTIFY needsSaveChanged) 0037 0038 public: 0039 enum ErrorLevel { 0040 Info, 0041 Error, 0042 }; 0043 Q_ENUMS(ErrorLevel) 0044 0045 explicit LnfLogic(QObject *parent = nullptr); 0046 ~LnfLogic() override; 0047 0048 LnfListModel *lnfList(); 0049 0050 void setTheme(const QString &theme); 0051 QString theme() const; 0052 0053 bool isWritable() const; 0054 QString themeFolder() const; 0055 0056 QString name() const; 0057 void setName(const QString &name); 0058 0059 QString comment() const; 0060 void setComment(const QString &comment); 0061 0062 QString author() const; 0063 void setAuthor(const QString &author); 0064 0065 QString email() const; 0066 void setEmail(const QString &email); 0067 0068 QString version() const; 0069 void setVersion(const QString &version); 0070 0071 QString website() const; 0072 void setWebsite(const QString &website); 0073 0074 QString license() const; 0075 void setLicense(const QString &license); 0076 0077 bool performLayoutDump() const; 0078 void setPerformLayoutDump(bool dump); 0079 0080 bool performDefaultsDump() const; 0081 void setPerformDefaultsDump(bool dump); 0082 0083 QString thumbnailPath() const; 0084 0085 void dumpPlasmaLayout(const QString &pluginName); 0086 0087 bool needsSave(); 0088 0089 Q_INVOKABLE void save(); 0090 Q_INVOKABLE void createNewTheme(const QString &pluginName, 0091 const QString &name, 0092 const QString &comment, 0093 const QString &author, 0094 const QString &email, 0095 const QString &license, 0096 const QString &website); 0097 Q_INVOKABLE void processThumbnail(const QString &path); 0098 Q_INVOKABLE QString openFile(); 0099 0100 void dumpCurrentPlasmaLayout(); 0101 void dumpDefaultsConfigFile(const QString &pluginName); 0102 0103 Q_SIGNALS: 0104 void themeChanged(); 0105 void messageRequested(ErrorLevel level, const QString &message); 0106 void needsSaveChanged(); 0107 void nameChanged(); 0108 void commentChanged(); 0109 void authorChanged(); 0110 void emailChanged(); 0111 void versionChanged(); 0112 void websiteChanged(); 0113 void licenseChanged(); 0114 void performLayoutDumpChanged(); 0115 void performDefaultsDumpChanged(); 0116 0117 private: 0118 QString m_themeName; 0119 KPackage::Package m_package; 0120 LnfListModel *m_lnfListModel; 0121 QHash<QString, QString> m_tempMetadata; 0122 bool m_performLayoutDump : 1; 0123 bool m_performDefaultsDump : 1; 0124 bool m_needsSave; 0125 }; 0126 0127 #endif // LNFLOGIC_H