File indexing completed on 2024-03-24 05:39:28
0001 /* 0002 SPDX-FileCopyrightText: 2013 Reza Fatahilah Shah <rshah0385@kireihana.com> 0003 SPDX-FileCopyrightText: 2014 David Edmundson <davidedmundson@kde.org> 0004 0005 SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 #include "thememetadata.h" 0008 0009 #include <QFile> 0010 #include <QSharedData> 0011 #include <QSharedPointer> 0012 0013 #include <KConfigGroup> 0014 #include <KDesktopFile> 0015 0016 class ThemeMetadataPrivate : public QSharedData 0017 { 0018 public: 0019 QString themeid; 0020 QString name; 0021 QString description; 0022 QString author; 0023 QString email; 0024 QString version; 0025 QString website; 0026 QString license; 0027 QString themeapi; 0028 QString mainscript; 0029 QString screenshot; 0030 QString copyright; 0031 QString path; 0032 QString configfile; 0033 bool supportsBackground; 0034 }; 0035 0036 ThemeMetadata::ThemeMetadata(const QString &id, const QString &path) 0037 : d(new ThemeMetadataPrivate) 0038 { 0039 d->path = path + QLatin1Char('/'); 0040 read(d->path + QStringLiteral("metadata.desktop")); 0041 d->themeid = id; 0042 } 0043 0044 ThemeMetadata::ThemeMetadata(const ThemeMetadata &other) 0045 : d(other.d) 0046 { 0047 } 0048 0049 ThemeMetadata &ThemeMetadata::operator=(const ThemeMetadata &other) 0050 { 0051 if (this != &other) { 0052 d = other.d; 0053 } 0054 0055 return *this; 0056 } 0057 0058 ThemeMetadata::~ThemeMetadata() 0059 { 0060 } 0061 0062 void ThemeMetadata::read(const QString &filename) 0063 { 0064 if (filename.isEmpty()) { 0065 return; 0066 } 0067 0068 QSharedPointer<KConfig> configFile = QSharedPointer<KConfig>(new KConfig(filename, KConfig::SimpleConfig)); 0069 0070 KConfigGroup config = configFile->group("SddmGreeterTheme"); 0071 0072 // d->themeid = config.readEntry("Theme-Id"); 0073 d->name = config.readEntry("Name"); 0074 d->description = config.readEntry("Description"); 0075 d->author = config.readEntry("Author"); 0076 d->email = config.readEntry("Email"); 0077 d->version = config.readEntry("Version"); 0078 d->website = config.readEntry("Website"); 0079 d->license = config.readEntry("License"); 0080 d->themeapi = config.readEntry("Theme-API"); 0081 d->mainscript = config.readEntry("MainScript"); 0082 d->screenshot = config.readEntry("Screenshot"); 0083 d->copyright = config.readEntry("Copyright"); 0084 d->configfile = config.readEntry("ConfigFile"); 0085 0086 d->supportsBackground = QFile::exists(d->path + d->configfile); 0087 } 0088 0089 QString ThemeMetadata::path() const 0090 { 0091 return d->path; 0092 } 0093 0094 QString ThemeMetadata::themeid() const 0095 { 0096 return d->themeid; 0097 } 0098 0099 QString ThemeMetadata::name() const 0100 { 0101 return d->name; 0102 } 0103 0104 QString ThemeMetadata::description() const 0105 { 0106 return d->description; 0107 } 0108 0109 QString ThemeMetadata::author() const 0110 { 0111 return d->author; 0112 } 0113 0114 QString ThemeMetadata::version() const 0115 { 0116 return d->version; 0117 } 0118 0119 QString ThemeMetadata::email() const 0120 { 0121 return d->email; 0122 } 0123 0124 QString ThemeMetadata::website() const 0125 { 0126 return d->website; 0127 } 0128 0129 QString ThemeMetadata::license() const 0130 { 0131 return d->license; 0132 } 0133 0134 QString ThemeMetadata::themeapi() const 0135 { 0136 return d->themeapi; 0137 } 0138 0139 QString ThemeMetadata::mainscript() const 0140 { 0141 return d->mainscript; 0142 } 0143 0144 QString ThemeMetadata::screenshot() const 0145 { 0146 return d->screenshot; 0147 } 0148 0149 QString ThemeMetadata::copyright() const 0150 { 0151 return d->copyright; 0152 } 0153 0154 QString ThemeMetadata::configfile() const 0155 { 0156 return d->configfile; 0157 } 0158 0159 bool ThemeMetadata::supportsBackground() const 0160 { 0161 return d->supportsBackground; 0162 }