File indexing completed on 2024-04-28 09:31:27

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 }