gui: PreviewGenerator*: Fallback to partial highlighting if no whole word match
Αυτή η υποβολή περιλαμβάνεται σε:
γονέας
5a47f5949f
υποβολή
2df273dee3
@ -49,6 +49,10 @@ QSharedPointer<PreviewResult> PreviewGeneratorPdf::generate(RenderConfig config,
|
|||||||
{
|
{
|
||||||
QList<QRectF> rects =
|
QList<QRectF> rects =
|
||||||
pdfPage->search(word, Poppler::Page::SearchFlag::IgnoreCase | Poppler::Page::SearchFlag::WholeWords);
|
pdfPage->search(word, Poppler::Page::SearchFlag::IgnoreCase | Poppler::Page::SearchFlag::WholeWords);
|
||||||
|
if(rects.empty())
|
||||||
|
{
|
||||||
|
rects = pdfPage->search(word, Poppler::Page::SearchFlag::IgnoreCase);
|
||||||
|
}
|
||||||
for(QRectF &rect : rects)
|
for(QRectF &rect : rects)
|
||||||
{
|
{
|
||||||
QPainter painter(&img);
|
QPainter painter(&img);
|
||||||
|
@ -103,10 +103,25 @@ QString PreviewGeneratorPlainText::generateLineBasedPreviewText(QTextStream &in,
|
|||||||
for(QString &word : config.wordsToHighlight)
|
for(QString &word : config.wordsToHighlight)
|
||||||
{
|
{
|
||||||
QRegularExpression searchRegex("\\b" + word + "\\b");
|
QRegularExpression searchRegex("\\b" + word + "\\b");
|
||||||
if(line.contains(searchRegex))
|
bool containsRegex = line.contains(searchRegex);
|
||||||
|
bool contains = false;
|
||||||
|
if(!containsRegex)
|
||||||
|
{
|
||||||
|
contains = line.contains(word, Qt::CaseInsensitive);
|
||||||
|
}
|
||||||
|
if(containsRegex || contains)
|
||||||
{
|
{
|
||||||
currentSnippet.wordCountMap[word] = currentSnippet.wordCountMap.value(word, 0) + 1;
|
currentSnippet.wordCountMap[word] = currentSnippet.wordCountMap.value(word, 0) + 1;
|
||||||
line.replace(searchRegex, "<span style=\"background-color: yellow;\">" + word + "</span>");
|
|
||||||
|
QString replacementString = "<span style=\"background-color: yellow;\">" + word + "</span>";
|
||||||
|
if(containsRegex)
|
||||||
|
{
|
||||||
|
line.replace(searchRegex, replacementString);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
line.replace(word, replacementString, Qt::CaseInsensitive);
|
||||||
|
}
|
||||||
++foundWordsCount;
|
++foundWordsCount;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -143,7 +158,7 @@ QString PreviewGeneratorPlainText::generateLineBasedPreviewText(QTextStream &in,
|
|||||||
}
|
}
|
||||||
for(QString &word : config.wordsToHighlight)
|
for(QString &word : config.wordsToHighlight)
|
||||||
{
|
{
|
||||||
if(currentLine.contains(QRegularExpression("\\b" + word + "\\b")))
|
if(currentLine.contains(word, Qt::CaseInsensitive))
|
||||||
{
|
{
|
||||||
matched = true;
|
matched = true;
|
||||||
break;
|
break;
|
||||||
|
Φόρτωση…
Αναφορά σε νέο ζήτημα
Block a user