diff options
-rw-r--r-- | filewidget.cpp | 31 |
1 files changed, 18 insertions, 13 deletions
diff --git a/filewidget.cpp b/filewidget.cpp index 31dfa92..6294487 100644 --- a/filewidget.cpp +++ b/filewidget.cpp @@ -395,22 +395,27 @@ void FileWidget::guessSubject(){ QModelIndexList sel = mFileView->selectionModel()->selectedRows(NameColumn); if(!sel.isEmpty()){ QFileInfo fi(sel.first().data().toString()); - QString fRe = QString(".*%1.*").arg(fi.completeBaseName()); - const QRegExp fnRe(fRe); - int index = mDescript.indexOf(fnRe); - if(index > -1){ - QString subject(mDescript.at(index)); - if(subject.startsWith('"')){ - int nextQuot = subject.indexOf('"', 1); - if(nextQuot > -1){ - subject = subject.remove(0, nextQuot + 1).trimmed(); + QString fRe = QRegularExpression::escape(fi.completeBaseName()); + const QRegularExpression fnRe(fRe); + QRegularExpressionMatch m; + for(QString l : mDescript){ + m = fnRe.match(l); + if(m.hasMatch()){ + QString subject; + if(l.startsWith('"')){ + int nextQuot = l.indexOf('"', 1); + if(nextQuot > -1){ + subject = l.remove(0, nextQuot + 1).trimmed(); + } } + subject.replace(QRegularExpression("\\d+$"), ""); + subject = subject.trimmed(); + qApp->clipboard()->setText(subject); + emit statusMessage(subject); + return; } - qApp->clipboard()->setText(subject); - emit statusMessage(subject); - }else{ - emit statusMessage(tr("No subject found!")); } + emit statusMessage(tr("No subject found!")); } } |