Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
translatormessage.cpp
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
3
5
6#include <qplatformdefs.h>
7
8#include <QDataStream>
9#include <QDebug>
10
11#include <stdlib.h>
12
13
14QT_BEGIN_NAMESPACE
15
16TranslatorMessage::TranslatorMessage()
17 : m_lineNumber(-1), m_type(Unfinished), m_plural(false)
18{
19}
20
21TranslatorMessage::TranslatorMessage(const QString &context,
22 const QString &sourceText, const QString &comment,
23 const QString &userData,
24 const QString &fileName, int lineNumber, const QStringList &translations,
25 Type type, bool plural)
28 m_translations(translations), m_fileName(fileName), m_lineNumber(lineNumber),
29 m_type(type), m_plural(plural)
30{
31}
32
33void TranslatorMessage::addReference(const QString &fileName, int lineNumber, int startOffset, int endOffset)
34{
35 if (m_fileName.isEmpty()) {
36 m_fileName = fileName;
37 m_lineNumber = lineNumber;
38 m_startOffset = startOffset;
39 m_endOffset = endOffset;
40 } else {
41 m_extraRefs.append(Reference(fileName, lineNumber, startOffset, endOffset));
42 }
43}
44
45void TranslatorMessage::addReferenceUniq(const QString &fileName, int lineNumber, int startOffset, int endOffset)
46{
47 if (m_fileName.isEmpty()) {
48 m_fileName = fileName;
49 m_lineNumber = lineNumber;
50 m_startOffset = startOffset;
51 m_endOffset = endOffset;
52 } else {
53 if (fileName == m_fileName && lineNumber == m_lineNumber && startOffset == m_startOffset)
54 return;
55 if (!m_extraRefs.isEmpty()) { // Rather common case, so special-case it
56 for (const Reference &ref : std::as_const(m_extraRefs)) {
57 if (fileName == ref.fileName() && lineNumber == ref.lineNumber() && startOffset == m_startOffset)
58 return;
59 }
60 }
61 m_extraRefs.append(Reference(fileName, lineNumber, startOffset, endOffset));
62 }
63}
64
66{
67 m_fileName.clear();
68 m_lineNumber = -1;
69 m_extraRefs.clear();
70}
71
73{
74 if (!refs0.isEmpty()) {
75 References refs = refs0;
76 const Reference &ref = refs.takeFirst();
77 m_fileName = ref.fileName();
78 m_lineNumber = ref.lineNumber();
79 m_startOffset = ref.startOffset();
80 m_endOffset = ref.endOffset();
81 m_extraRefs = refs;
82 } else {
84 }
85}
86
88{
89 References refs;
90 if (!m_fileName.isEmpty()) {
91 refs.append(Reference(m_fileName, m_lineNumber, m_startOffset, m_endOffset));
92 refs += m_extraRefs;
93 }
94 return refs;
95}
96
97
98bool TranslatorMessage::hasExtra(const QString &key) const
99{
100 return m_extra.contains(key);
101}
102
103QString TranslatorMessage::extra(const QString &key) const
104{
105 return m_extra[key];
106}
107
108void TranslatorMessage::setExtra(const QString &key, const QString &value)
109{
110 m_extra[key] = value;
111}
112
113void TranslatorMessage::unsetExtra(const QString &key)
114{
115 m_extra.remove(key);
116}
117
119{
120 qDebug()
121 << "\nId : " << m_id
122 << "\nContext : " << m_context
123 << "\nSource : " << m_sourcetext
124 << "\nComment : " << m_comment
125 << "\nUserData : " << m_userData
126 << "\nExtraComment : " << m_extraComment
127 << "\nTranslatorComment : " << m_translatorComment
128 << "\nTranslations : " << m_translations
129 << "\nFileName : " << m_fileName
130 << "\nLineNumber : " << m_lineNumber
131 << "\nType : " << m_type
132 << "\nPlural : " << m_plural
133 << "\nExtra : " << m_extra;
134}
135
136
137QT_END_NAMESPACE
void addReferenceUniq(const QString &fileName, int lineNumber, int startOffset, int endOffset)
TranslatorMessage(const QString &context, const QString &sourceText, const QString &comment, const QString &userData, const QString &fileName, int lineNumber, const QStringList &translations=QStringList(), Type type=Unfinished, bool plural=false)
void addReference(const QString &fileName, int lineNumber, int startOffset, int endOffset)
void setReferences(const References &refs)
QString extra(const QString &ba) const
void setExtra(const QString &ba, const QString &var)
void unsetExtra(const QString &key)
const References allReferences() const
QList< Reference > References
bool hasExtra(const QString &ba) const