MessageItem *ContextItem::findMessage(const QString &sourcetext, const QString &comment) const { for (int i = 0; i < messageCount(); ++i) { MessageItem *mi = messageItem(i); if (mi->text() == sourcetext && mi->comment() == comment) return mi; } return 0; }
static int calcMergeScore(const DataModel *one, const DataModel *two) { int inBoth = 0; for (int i = 0; i < two->contextCount(); ++i) { ContextItem *oc = two->contextItem(i); if (ContextItem *c = one->findContext(oc->context())) { for (int j = 0; j < oc->messageCount(); ++j) { MessageItem *m = oc->messageItem(j); if (c->findMessage(m->text(), m->comment())) ++inBoth; } } } return inBoth * 100 / two->messageCount(); }
MessageItem *MessageModel::findMessage(const char *context, const char *sourcetext, const char *comment /*= 0*/) const { for (int c = 0; c < cntxtList.count(); ++c) { ContextItem *ctx = cntxtList.at(c); if (ctx->context() == QLatin1String(context)) { QList<MessageItem*> items = ctx->messageItemList(); for (int i = 0; i < items.count(); ++i) { MessageItem *mi = items.at(i); if (mi->sourceText() == QLatin1String(sourcetext)) { if (comment) { if (mi->comment() != QLatin1String(comment)) continue; } return mi; } } break; } } return 0; }
bool MessageModel::findMessage(int *contextNo, int *itemNo, const QString &findText, int findWhere, bool matchSubstring, Qt::CaseSensitivity cs) { bool found = false; if (contextsInList() <= 0) return false; int pass = 0; int scopeNum = *contextNo; int itemNum = *itemNo; MessageItem *m = 0; // We want to search the scope we started from *again*, since we did not necessarily search that *completely* when we started. // (Problaby we started somewhere in the middle of it.) // Therefore, "pass <=" and not "pass < " while (!found && pass <= contextsInList()) { ContextItem *c = contextList().at(scopeNum); for (int mit = itemNum; mit < c->messageItemsInList() ; ++mit) { m = c->messageItem(mit); QString searchText; switch (findWhere) { case SourceText: searchText = m->sourceText(); break; case Translations: searchText = m->translation(); break; case Comments: searchText = m->comment(); break; } if (matchSubstring) { if (searchText.indexOf(findText,0, cs) >= 0) { found = true; break; } } else { if (cs == Qt::CaseInsensitive) { if (findText.toLower() == searchText.toLower()) { found = true; break; } } else { if ( findText == searchText ) { found = true; break; } } } } itemNum = 0; ++pass; ++scopeNum; if (scopeNum >= contextsInList()) { scopeNum = 0; //delayedMsg = tr("Search wrapped."); } } if (found) { *itemNo = itemNum; *contextNo = scopeNum; } return found; }