File indexing completed on 2025-02-16 13:03:42
0001 /* 0002 SPDX-FileCopyrightText: 2014 Vishesh Handa <me@vhanda.in> 0003 0004 SPDX-License-Identifier: LGPL-2.1-or-later 0005 */ 0006 0007 #include "usermetadata.h" 0008 #include "xattr_p.h" 0009 0010 0011 using namespace KFileMetaData; 0012 0013 class KFileMetaData::UserMetaDataPrivate 0014 { 0015 public: 0016 QString filePath; 0017 }; 0018 0019 UserMetaData::UserMetaData(const QString& filePath) 0020 : d(new UserMetaDataPrivate) 0021 { 0022 d->filePath = filePath; 0023 } 0024 0025 UserMetaData::UserMetaData(const UserMetaData& rhs) 0026 : d(new UserMetaDataPrivate(*rhs.d)) 0027 { 0028 } 0029 0030 UserMetaData::~UserMetaData() = default; 0031 0032 const UserMetaData& UserMetaData::operator=(const UserMetaData& rhs) 0033 { 0034 d->filePath = rhs.d->filePath; 0035 return *this; 0036 } 0037 0038 QString UserMetaData::filePath() const 0039 { 0040 return d->filePath; 0041 } 0042 0043 UserMetaData::Error UserMetaData::setTags(const QStringList& tags) 0044 { 0045 if (!tags.isEmpty()) { 0046 k_setxattr(d->filePath, QStringLiteral("user.xdg.tags"), tags.join(QLatin1Char(','))); 0047 } else { 0048 k_removexattr(d->filePath, QStringLiteral("user.xdg.tags")); 0049 } 0050 0051 return NoError; 0052 } 0053 0054 QStringList UserMetaData::tags() const 0055 { 0056 QString value; 0057 0058 k_getxattr(d->filePath, QStringLiteral("user.xdg.tags"), &value); 0059 return value.split(QLatin1Char(','), Qt::SkipEmptyParts); 0060 } 0061 0062 int UserMetaData::rating() const 0063 { 0064 QString value; 0065 0066 k_getxattr(d->filePath, QStringLiteral("user.baloo.rating"), &value); 0067 return value.toInt(); 0068 } 0069 0070 UserMetaData::Error UserMetaData::setRating(int rating) 0071 { 0072 if (rating) { 0073 k_setxattr(d->filePath, QStringLiteral("user.baloo.rating"), QString::number(rating)); 0074 } else { 0075 k_removexattr(d->filePath, QStringLiteral("user.baloo.rating")); 0076 } 0077 0078 return NoError; 0079 } 0080 0081 QString UserMetaData::userComment() const 0082 { 0083 QString value; 0084 k_getxattr(d->filePath, QStringLiteral("user.xdg.comment"), &value); 0085 0086 return value; 0087 } 0088 0089 UserMetaData::Error UserMetaData::setUserComment(const QString& userComment) 0090 { 0091 if (!userComment.isEmpty()) { 0092 k_setxattr(d->filePath, QStringLiteral("user.xdg.comment"), userComment); 0093 } else { 0094 k_removexattr(d->filePath, QStringLiteral("user.xdg.comment")); 0095 } 0096 0097 return NoError; 0098 } 0099 0100 QUrl UserMetaData::originUrl() const 0101 { 0102 QString value; 0103 k_getxattr(d->filePath, QStringLiteral("user.xdg.origin.url"), &value); 0104 0105 return QUrl(value); 0106 } 0107 0108 UserMetaData::Error UserMetaData::setOriginUrl(const QUrl &originUrl) 0109 { 0110 if (!originUrl.isEmpty()) { 0111 k_setxattr(d->filePath, QStringLiteral("user.xdg.origin.url"), originUrl.toString()); 0112 } else { 0113 k_removexattr(d->filePath, QStringLiteral("user.xdg.origin.url")); 0114 } 0115 0116 return NoError; 0117 } 0118 0119 QString UserMetaData::originEmailSubject() const 0120 { 0121 QString value; 0122 k_getxattr(d->filePath, QStringLiteral("user.xdg.origin.email.subject"), &value); 0123 return value; 0124 } 0125 0126 UserMetaData::Error UserMetaData::setOriginEmailSubject(const QString &originEmailSubject) 0127 { 0128 if (!originEmailSubject.isEmpty()) { 0129 k_setxattr(d->filePath, QStringLiteral("user.xdg.origin.email.subject"), originEmailSubject); 0130 } else { 0131 k_removexattr(d->filePath, QStringLiteral("user.xdg.origin.email.subject")); 0132 } 0133 0134 return NoError; 0135 } 0136 0137 QString UserMetaData::originEmailSender() const 0138 { 0139 QString value; 0140 k_getxattr(d->filePath, QStringLiteral("user.xdg.origin.email.sender"), &value); 0141 return value; 0142 } 0143 0144 UserMetaData::Error UserMetaData::setOriginEmailSender(const QString &originEmailSender) 0145 { 0146 if (!originEmailSender.isEmpty()) { 0147 k_setxattr(d->filePath, QStringLiteral("user.xdg.origin.email.sender"), originEmailSender); 0148 } else { 0149 k_removexattr(d->filePath, QStringLiteral("user.xdg.origin.email.sender")); 0150 } 0151 0152 return NoError; 0153 } 0154 0155 QString UserMetaData::originEmailMessageId() const 0156 { 0157 QString value; 0158 k_getxattr(d->filePath, QStringLiteral("user.xdg.origin.email.message-id"), &value); 0159 return value; 0160 } 0161 0162 UserMetaData::Error UserMetaData::setOriginEmailMessageId(const QString &originEmailMessageId) 0163 { 0164 if (!originEmailMessageId.isEmpty()) { 0165 k_setxattr(d->filePath, QStringLiteral("user.xdg.origin.email.message-id"), originEmailMessageId); 0166 } else { 0167 k_removexattr(d->filePath, QStringLiteral("user.xdg.origin.email.message-id")); 0168 } 0169 0170 return NoError; 0171 } 0172 0173 UserMetaData::Error UserMetaData::setAttribute(const QString& key, const QString& value) 0174 { 0175 if (!value.isEmpty()) { 0176 k_setxattr(d->filePath, QStringLiteral("user.") + key, value); 0177 } else { 0178 k_removexattr(d->filePath, QStringLiteral("user.") + key); 0179 } 0180 0181 return NoError; 0182 } 0183 0184 bool UserMetaData::hasAttribute(const QString& key) 0185 { 0186 return k_hasAttribute(d->filePath, QStringLiteral("user.") + key); 0187 } 0188 0189 QString UserMetaData::attribute(const QString& key) 0190 { 0191 QString value; 0192 k_getxattr(d->filePath, QStringLiteral("user.") + key, &value); 0193 0194 return value; 0195 } 0196 0197 bool UserMetaData::isSupported() const 0198 { 0199 return k_isSupported(d->filePath); 0200 } 0201 0202 UserMetaData::Attributes UserMetaData::queryAttributes(UserMetaData::Attributes attributes) const 0203 { 0204 return k_queryAttributes(d->filePath, attributes); 0205 }