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"