12#include <QStandardPaths>
17#include <KLocalizedString>
67 d->name = rhs.
d->name;
68 d->comment = rhs.
d->comment;
69 d->names = rhs.
d->names;
70 d->comments = rhs.
d->comments;
71 d->defaultResources = rhs.
d->defaultResources;
d->resourceType = rhs.
d->resourceType;
72 d->filename = rhs.
d->filename;
74 d->active = rhs.
d->active;
86 const QStringList languages = KLocalizedString::languages();
88 if (languages.isEmpty()) {
89 locale = QLocale().name();
92 locale = languages.first();
127 Q_ASSERT(!
d->name.isEmpty());
182 return d->resourceType;
192 return d->defaultResources;
203 io.open(QIODevice::ReadOnly);
209 QTextStream stream(&io);
214 while (stream.readLineInto(&line)) {
218 if (lines.length() < 6 ) {
219 qWarning() <<
d->filename <<
": Incomplete tag file" << lines.length();
222 if (lines[0].toUpper() !=
s_desktop.toUpper()) {
223 qWarning() <<
d->filename <<
":Invalid tag file" << lines[0];
229 Q_FOREACH(
const QString line, lines) {
230 if (line.isEmpty()) {
234 if (!line.contains(
"=")) {
235 qWarning() <<
"Found invalid line:" << line;
238 int isPos = line.indexOf(
"=");
239 QString key = line.left(isPos).trimmed();
240 QString
value = line.right(line.size() - (isPos + 1)).trimmed();
249 d->defaultResources =
value.split(
',', Qt::SkipEmptyParts);
257 else if (key.startsWith(
s_name +
"[")) {
258 int start = key.indexOf(
'[') + 1;
259 int len = key.size() - (
s_name.size() + 2);
260 QString language = key.mid(start, len);
261 d->names[language] =
value;
263 else if (key.startsWith(
s_comment +
"[")) {
264 int start = key.indexOf(
'[') + 1;
265 int len = key.size() - (
s_comment.size() + 2);
266 QString language = key.mid(start, len);
267 d->comments[language] =
value;
279 io.open(QIODevice::WriteOnly | QIODevice::Text);
282 QTextStream stream(&io);
286 stream <<
s_url <<
'=' <<
d->url <<
'\n';
288 stream <<
s_name <<
'=' <<
d->name <<
'\n';
289 stream <<
s_comment <<
'=' <<
d->comment <<
'\n';
292 Q_FOREACH(
const QString &language,
d->names) {
293 stream <<
s_name <<
'[' << language <<
"]=" <<
d->names[language] <<
'\n';
296 Q_FOREACH(
const QString &language,
d->comments) {
297 stream <<
s_comment <<
'[' << language <<
"]=" <<
d->comments[language] <<
'\n';
float value(const T *src, size_t ch)
QSharedPointer< KisTag > KisTagSP
QMap< QString, QString > comments
QStringList defaultResources
QMap< QString, QString > names
The KisTag loads a tag from a .tag file. A .tag file is a .desktop file. The following fields are imp...
static const QString s_desktop
QString name(bool translated=true) const
The translated names of the tag.
void setName(const QString &name)
void setUrl(const QString &url)
void setComments(const QMap< QString, QString > &comments)
static QString currentLocale()
static const QString s_defaultResources
void setValid(bool valid)
static const QString s_url
static const QString s_comment
static const QString s_name
static const QString s_tag
QString comment(bool translated=true) const
The translated tooltips for the tag.
KisTag & operator=(const KisTag &rhs)
void setDefaultResources(const QStringList &defaultResources)
QStringList defaultResources() const
QString resourceType() const
void setActive(bool active)
void setNames(const QMap< QString, QString > &names)
static const QString s_resourceType
QScopedPointer< Private > d
void setResourceType(const QString &resourceType)
QMap< QString, QString > names() const
static const QString s_type
void setComment(const QString comment)
QMap< QString, QString > comments() const
QString url() const
The unique identifier for the tag. Since tag urls are compared COLLATE NOCASE, tag urls must be ASCII...
void setFilename(const QString &fileName)
static const QString s_group
void setUtf8OnStream(QTextStream &stream)