15 MessageItem mi{ msg.sourceText(), msg.context(), msg.comment(),
18 if (
const auto it = m_messages.find(mi); it != m_messages.end())
20 else if (QString id = msg.id(); id.isEmpty()) {
21 mi.id = calculateId(msg);
22 m_messages.emplace(mi);
24 mi.id =
std::move(id);
25 for (
const TranslatorMessage::Reference &ref : msg.allReferences()) {
26 auto ref_mi = std::make_shared<MessageItem>(mi);
27 ref_mi->lineNo = ref.lineNumber();
28 ref_mi->startOffset = ref.startOffset();
29 ref_mi->endOffset = ref.endOffset();
30 m_msgLocations[ref.fileName()].insert(std::move(ref_mi));
50int RecordDirectory::addedLines(
const QString &file,
int line)
const
53 if (
const auto fit = m_fileAddedLines.find(file); fit != m_fileAddedLines.cend()) {
54 const auto &fileAddedLines = fit->second;
55 auto itr = fileAddedLines.upper_bound(line);
56 if (itr != fileAddedLines.cbegin()) {
58 addedLines = itr->second;
75 const QString &source = msg.sourceText();
79 while (index < source.size()) {
80 QChar c = source[index];
82 while (!c.isLetterOrNumber()) {
83 id += QChar(
'a' + c.unicode() % 32);
85 if (++index == source.size())
98 if (!id.isEmpty() && id.front() ==
'-')
99 id = msg.context() + id;
101 id = msg.context() +
'-' + id;
103 if (index < source.size() || !msg.comment().isEmpty())
104 id +=
'-' + QString::number(qHash(source + msg.comment()) % 100000);
106 if (m_existingIds.count(id))