File indexing completed on 2024-05-26 05:56:49
0001 /* 0002 This file is part of the Okteta Kasten Framework, made within the KDE community. 0003 0004 SPDX-FileCopyrightText: 2022 Friedrich W. H. Kossebau <kossebau@kde.org> 0005 0006 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0007 */ 0008 0009 #include "structuremetadata.hpp" 0010 0011 // tool 0012 #include <structureslogging.hpp> 0013 // KF 0014 #include <KDesktopFile> 0015 #include <KConfigGroup> 0016 #include <KAboutData> 0017 // Qt 0018 #include <QSharedData> 0019 0020 class StructureMetaDataPrivsate : public QSharedData 0021 { 0022 public: 0023 StructureMetaDataPrivsate(); 0024 0025 public: 0026 QString id; 0027 QString name; 0028 QString comment; 0029 QString categoryId; 0030 QString version; 0031 QString authorName; 0032 QString authorEmailAddress; 0033 QString iconName; 0034 QString website; 0035 QString entryPath; 0036 0037 KAboutLicense license; 0038 }; 0039 0040 StructureMetaDataPrivsate::StructureMetaDataPrivsate() = default; 0041 0042 0043 StructureMetaData::StructureMetaData(const QString& filename) 0044 : d(new StructureMetaDataPrivsate) 0045 { 0046 KDesktopFile file(filename); 0047 0048 KConfigGroup cg = file.desktopGroup(); 0049 if (!cg.exists()) { 0050 qCWarning(LOG_KASTEN_OKTETA_CONTROLLERS_STRUCTURES) << filename << "has no [Desktop] group, cannot construct a StructureMetaData object from it."; 0051 return; 0052 } 0053 d->id = cg.readEntryUntranslated("X-KDE-PluginInfo-Name"); 0054 if (d->id.isEmpty()) { 0055 qCWarning(LOG_KASTEN_OKTETA_CONTROLLERS_STRUCTURES) << filename << "has an empty X-KDE-PluginInfo-Name entry, cannot construct a StructureMetaData object from it."; 0056 return; 0057 } 0058 0059 d->entryPath = filename; 0060 0061 d->name = file.readName(); 0062 d->comment = file.readComment(); 0063 d->iconName = cg.readEntryUntranslated("Icon"); 0064 d->authorName = cg.readEntryUntranslated("X-KDE-PluginInfo-Author"); 0065 d->authorEmailAddress = cg.readEntryUntranslated("X-KDE-PluginInfo-Email"); 0066 d->version = cg.readEntryUntranslated("X-KDE-PluginInfo-Version"); 0067 d->website = cg.readEntryUntranslated("X-KDE-PluginInfo-Website"); 0068 d->categoryId = cg.readEntryUntranslated("X-KDE-PluginInfo-Category"); 0069 d->license = KAboutLicense::byKeyword(cg.readEntryUntranslated("X-KDE-PluginInfo-License")); 0070 } 0071 0072 StructureMetaData::StructureMetaData() 0073 : d(new StructureMetaDataPrivsate()) 0074 { 0075 } 0076 0077 0078 StructureMetaData::StructureMetaData(const StructureMetaData &rhs) = default; 0079 0080 StructureMetaData::~StructureMetaData() = default; 0081 0082 StructureMetaData& StructureMetaData::operator=(const StructureMetaData& rhs) = default; 0083 0084 bool StructureMetaData::isValid() const 0085 { 0086 return !d->id.isEmpty(); 0087 } 0088 0089 QString StructureMetaData::id() const 0090 { 0091 return d->id; 0092 } 0093 0094 QString StructureMetaData::name() const 0095 { 0096 return d->name; 0097 } 0098 0099 QString StructureMetaData::comment() const 0100 { 0101 return d->comment; 0102 } 0103 0104 QString StructureMetaData::categoryId() const 0105 { 0106 return d->categoryId; 0107 } 0108 0109 QString StructureMetaData::version() const 0110 { 0111 return d->version; 0112 } 0113 0114 bool StructureMetaData::hasAuthorName() const 0115 { 0116 return !d->authorName.isEmpty(); 0117 } 0118 0119 QString StructureMetaData::authorName() const 0120 { 0121 return d->authorName; 0122 } 0123 0124 bool StructureMetaData::hasAuthorEmailAddress() const 0125 { 0126 return !d->authorEmailAddress.isEmpty(); 0127 } 0128 0129 QString StructureMetaData::authorEmailAddress() const 0130 { 0131 return d->authorEmailAddress; 0132 } 0133 0134 bool StructureMetaData::hasIconName() const 0135 { 0136 return !d->iconName.isEmpty(); 0137 } 0138 0139 QString StructureMetaData::iconName() const 0140 { 0141 return d->iconName; 0142 } 0143 0144 bool StructureMetaData::hasWebsite() const 0145 { 0146 return !d->website.isEmpty(); 0147 } 0148 0149 QString StructureMetaData::website() const 0150 { 0151 return d->website; 0152 } 0153 0154 QString StructureMetaData::entryPath() const 0155 { 0156 return d->entryPath; 0157 } 0158 0159 const KAboutLicense& StructureMetaData::license() const 0160 { 0161 return d->license; 0162 }