diff options
Diffstat (limited to 'tools/linguist/shared')
-rw-r--r-- | tools/linguist/shared/translator.cpp | 28 | ||||
-rw-r--r-- | tools/linguist/shared/translator.h | 1 | ||||
-rw-r--r-- | tools/linguist/shared/translatormessage.cpp | 19 | ||||
-rw-r--r-- | tools/linguist/shared/translatormessage.h | 4 |
4 files changed, 25 insertions, 27 deletions
diff --git a/tools/linguist/shared/translator.cpp b/tools/linguist/shared/translator.cpp index 5bdd133..0a59668 100644 --- a/tools/linguist/shared/translator.cpp +++ b/tools/linguist/shared/translator.cpp @@ -82,7 +82,7 @@ QList<Translator::FileFormat> &Translator::registeredFileFormats() void Translator::replaceSorted(const TranslatorMessage &msg) { - int index = m_messages.indexOf(msg); + int index = find(msg); if (index == -1) appendSorted(msg); else @@ -91,7 +91,7 @@ void Translator::replaceSorted(const TranslatorMessage &msg) void Translator::extend(const TranslatorMessage &msg) { - int index = m_messages.indexOf(msg); + int index = find(msg); if (index == -1) { m_messages.append(msg); } else { @@ -302,6 +302,18 @@ bool Translator::release(QFile *iod, ConversionData &cd) const return false; } +int Translator::find(const TranslatorMessage &msg) const +{ + for (int i = 0; i < m_messages.count(); ++i) { + const TranslatorMessage &tmsg = m_messages.at(i); + if (msg.context() == tmsg.context() + && msg.sourceText() == tmsg.sourceText() + && msg.comment() == tmsg.comment()) + return i; + } + return -1; +} + TranslatorMessage Translator::find(const QString &context, const QString &comment, const TranslatorMessage::References &refs) const { @@ -429,12 +441,20 @@ Q_DECLARE_TYPEINFO(TranslatorMessagePtr, Q_MOVABLE_TYPE); inline int qHash(TranslatorMessagePtr tmp) { - return qHash(*tmp.ptr); + return + qHash(tmp->context()) ^ + qHash(tmp->sourceText()) ^ + qHash(tmp->comment()) ^ + qHash(tmp->id()); } inline bool operator==(TranslatorMessagePtr tmp1, TranslatorMessagePtr tmp2) { - return *tmp1.ptr == *tmp2.ptr; + // Special treatment for context comments (empty source). + return (tmp1->context() == tmp2->context()) + && tmp1->sourceText() == tmp2->sourceText() + && tmp1->id() == tmp2->id() + && (tmp1->sourceText().isEmpty() || tmp1->comment() == tmp2->comment()); } Translator::Duplicates Translator::resolveDuplicates() diff --git a/tools/linguist/shared/translator.h b/tools/linguist/shared/translator.h index 654c6ab..b957fa2 100644 --- a/tools/linguist/shared/translator.h +++ b/tools/linguist/shared/translator.h @@ -113,6 +113,7 @@ public: bool save(const QString &filename, ConversionData &err, const QString &format /*= "auto"*/) const; bool release(QFile *iod, ConversionData &cd) const; + int find(const TranslatorMessage &msg) const; TranslatorMessage find(const QString &context, const QString &comment, const TranslatorMessage::References &refs) const; diff --git a/tools/linguist/shared/translatormessage.cpp b/tools/linguist/shared/translatormessage.cpp index 876b129..5151ebd 100644 --- a/tools/linguist/shared/translatormessage.cpp +++ b/tools/linguist/shared/translatormessage.cpp @@ -143,25 +143,6 @@ bool TranslatorMessage::needs8Bit() const } -bool TranslatorMessage::operator==(const TranslatorMessage& m) const -{ - // Special treatment for context comments (empty source). - return (m_context == m.m_context) - && m_sourcetext == m.m_sourcetext - && m_id == m.m_id - && (m_sourcetext.isEmpty() || m_comment == m.m_comment); -} - - -int qHash(const TranslatorMessage &msg) -{ - return - qHash(msg.context()) ^ - qHash(msg.sourceText()) ^ - qHash(msg.comment()) ^ - qHash(msg.id()); -} - bool TranslatorMessage::hasExtra(const QString &key) const { return m_extra.contains(key); diff --git a/tools/linguist/shared/translatormessage.h b/tools/linguist/shared/translatormessage.h index 2eb6e5e..60b60c5 100644 --- a/tools/linguist/shared/translatormessage.h +++ b/tools/linguist/shared/translatormessage.h @@ -109,8 +109,6 @@ public: return false; } - bool operator==(const TranslatorMessage& m) const; - QString fileName() const { return m_fileName; } void setFileName(const QString &fileName) { m_fileName = fileName; } int lineNumber() const { return m_lineNumber; } @@ -176,8 +174,6 @@ private: Q_DECLARE_TYPEINFO(TranslatorMessage, Q_MOVABLE_TYPE); -int qHash(const TranslatorMessage &msg); - QT_END_NAMESPACE #endif // QT_NO_TRANSLATION |