File indexing completed on 2025-02-16 04:56:04

0001 /* SPDX-FileCopyrightText: 2016-2024 Laurent Montel <montel@kde.org>
0002  *
0003  * SPDX-License-Identifier: LGPL-2.0-or-later
0004  */
0005 
0006 #include "findbarwebengineview.h"
0007 #include <PimCommon/LineEditWithCompleterNg>
0008 #include <QAction>
0009 #include <QWebEngineFindTextResult>
0010 #include <QWebEngineView>
0011 using namespace KSieveUi;
0012 
0013 class KSieveUi::FindBarWebEngineViewPrivate
0014 {
0015 public:
0016     FindBarWebEngineViewPrivate() = default;
0017 
0018     QWebEngineView *mView = nullptr;
0019 };
0020 
0021 FindBarWebEngineView::FindBarWebEngineView(QWebEngineView *view, QWidget *parent)
0022     : FindBarBase(parent)
0023     , d(new KSieveUi::FindBarWebEngineViewPrivate)
0024 {
0025     d->mView = view;
0026 }
0027 
0028 FindBarWebEngineView::~FindBarWebEngineView() = default;
0029 
0030 void FindBarWebEngineView::searchText(bool backward, bool isAutoSearch)
0031 {
0032     QWebEnginePage::FindFlags searchOptions;
0033 
0034     if (backward) {
0035         searchOptions |= QWebEnginePage::FindBackward;
0036     }
0037     if (mCaseSensitiveAct->isChecked()) {
0038         searchOptions |= QWebEnginePage::FindCaseSensitively;
0039     }
0040     const QString searchWord(mSearch->text());
0041     if (!isAutoSearch && !mLastSearchStr.contains(searchWord, Qt::CaseSensitive)) {
0042         clearSelections();
0043     }
0044     d->mView->findText(QString()); // Clear an existing highlight
0045     mLastSearchStr = searchWord;
0046     d->mView->findText(mLastSearchStr, searchOptions, [this](const QWebEngineFindTextResult &result) {
0047         setFoundMatch(result.numberOfMatches() > 0);
0048     });
0049 }
0050 
0051 void FindBarWebEngineView::updateSensitivity(bool sensitivity)
0052 {
0053     QWebEnginePage::FindFlags searchOptions;
0054     if (sensitivity) {
0055         searchOptions |= QWebEnginePage::FindCaseSensitively;
0056         d->mView->findText(QString()); // Clear an existing highligh
0057     }
0058     d->mView->findText(QString(), searchOptions, [this](const QWebEngineFindTextResult &result) {
0059         setFoundMatch(result.numberOfMatches() > 0);
0060     });
0061 }
0062 
0063 void FindBarWebEngineView::clearSelections()
0064 {
0065     d->mView->findText(QString());
0066     mLastSearchStr.clear();
0067     FindBarBase::clearSelections();
0068 }
0069 
0070 #include "moc_findbarwebengineview.cpp"