File indexing completed on 2025-02-23 05:00:19
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 WebEngineViewer; 0012 0013 class WebEngineViewer::FindBarWebEngineViewPrivate 0014 { 0015 public: 0016 FindBarWebEngineViewPrivate(QWebEngineView *view) 0017 : mView(view) 0018 { 0019 } 0020 0021 QWebEngineView *const mView; 0022 }; 0023 0024 FindBarWebEngineView::FindBarWebEngineView(QWebEngineView *view, QWidget *parent) 0025 : FindBarBase(parent) 0026 , d(new WebEngineViewer::FindBarWebEngineViewPrivate(view)) 0027 { 0028 } 0029 0030 FindBarWebEngineView::~FindBarWebEngineView() = default; 0031 0032 void FindBarWebEngineView::searchText(bool backward, bool isAutoSearch) 0033 { 0034 QWebEnginePage::FindFlags searchOptions; 0035 0036 if (backward) { 0037 searchOptions |= QWebEnginePage::FindBackward; 0038 } 0039 if (mCaseSensitiveAct->isChecked()) { 0040 searchOptions |= QWebEnginePage::FindCaseSensitively; 0041 } 0042 const QString searchWord(mSearch->text()); 0043 if (!isAutoSearch && !mLastSearchStr.contains(searchWord, Qt::CaseSensitive)) { 0044 clearSelections(); 0045 } 0046 d->mView->findText(QString()); // Clear an existing highlight 0047 mLastSearchStr = searchWord; 0048 d->mView->findText(mLastSearchStr, searchOptions, [this](const QWebEngineFindTextResult &result) { 0049 setFoundMatch(result.numberOfMatches() > 0); 0050 }); 0051 } 0052 0053 void FindBarWebEngineView::updateSensitivity(bool sensitivity) 0054 { 0055 QWebEnginePage::FindFlags searchOptions; 0056 if (sensitivity) { 0057 searchOptions |= QWebEnginePage::FindCaseSensitively; 0058 d->mView->findText(QString()); // Clear an existing highlight 0059 } 0060 d->mView->findText(QString(), searchOptions, [this](const QWebEngineFindTextResult &result) { 0061 setFoundMatch(result.numberOfMatches() > 0); 0062 }); 0063 } 0064 0065 void FindBarWebEngineView::clearSelections() 0066 { 0067 d->mView->findText(QString()); 0068 mLastSearchStr.clear(); 0069 FindBarBase::clearSelections(); 0070 } 0071 0072 #include "moc_findbarwebengineview.cpp"