From bb1e6536905482c4dedef831304d6324fecc1fd0 Mon Sep 17 00:00:00 2001 From: Albert S Date: Mon, 30 May 2022 18:35:54 +0200 Subject: [PATCH] gui: PreviewGeneratorPlainText: Truncate dirtily to avoid lags It was possible the text was getting too big. The GUI was lagging for previews of some text files. The first assumption was that we would only have a couple of hits, which is unreasonable for large .txt files and common words. We only ever see a handful of previews, it makes no sense to get all snippets. So just allow 7 snippets, that's it. Also, just cut after 1000 chars no matter what. --- gui/previewgeneratorplaintext.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/gui/previewgeneratorplaintext.cpp b/gui/previewgeneratorplaintext.cpp index 4fcaac7..ce39116 100644 --- a/gui/previewgeneratorplaintext.cpp +++ b/gui/previewgeneratorplaintext.cpp @@ -23,12 +23,14 @@ QSharedPointer PreviewGeneratorPlainText::generate(RenderConfig c int lastWordPos = 0; QHash countmap; + const unsigned int maxSnippets = 7; + unsigned int currentSnippets = 0; for(QString &word : config.wordsToHighlight) { int lastPos = 0; int index = content.indexOf(word, lastPos, Qt::CaseInsensitive); - while(index != -1) + while(index != -1 && currentSnippets < maxSnippets) { countmap[word] = countmap.value(word, 0) + 1; @@ -52,6 +54,7 @@ QSharedPointer PreviewGeneratorPlainText::generate(RenderConfig c lastPos = index; index = content.indexOf(word, lastPos + 1, Qt::CaseInsensitive); + ++currentSnippets; } lastWordPos = lastPos; } @@ -75,8 +78,13 @@ QSharedPointer PreviewGeneratorPlainText::generate(RenderConfig c { header += word + ": " + QString::number(countmap[word]) + " "; } + if(currentSnippets == maxSnippets) + { + header += "(truncated)"; + } + header += "
"; - result->setText(header + resulText.replace("\n", "
")); + result->setText(header + resulText.replace("\n", "
").mid(0, 1000)); return QSharedPointer(result); }