File indexing completed on 2025-03-09 04:54:31

0001 /* SPDX-FileCopyrightText: 2011-2024 Laurent Montel <montel@kde.org>
0002  *
0003  * SPDX-License-Identifier: LGPL-2.0-or-later
0004  */
0005 #include "findbarsourceview.h"
0006 #include <PimCommon/LineEditWithCompleterNg>
0007 
0008 #include <QAction>
0009 #include <QPlainTextEdit>
0010 
0011 using namespace MessageViewer;
0012 
0013 FindBarSourceView::FindBarSourceView(QPlainTextEdit *view, QWidget *parent)
0014     : WebEngineViewer::FindBarBase(parent)
0015     , mView(view)
0016 {
0017 }
0018 
0019 FindBarSourceView::~FindBarSourceView() = default;
0020 
0021 void FindBarSourceView::searchText(bool backward, bool isAutoSearch)
0022 {
0023     QTextDocument::FindFlags searchOptions = {};
0024     if (backward) {
0025         searchOptions |= QTextDocument::FindBackward;
0026     }
0027     if (mCaseSensitiveAct->isChecked()) {
0028         searchOptions |= QTextDocument::FindCaseSensitively;
0029     }
0030 
0031     if (isAutoSearch) {
0032         QTextCursor cursor = mView->textCursor();
0033         cursor.setPosition(cursor.selectionStart());
0034         mView->setTextCursor(cursor);
0035     } else if (!mLastSearchStr.contains(mSearch->text(), Qt::CaseSensitive)) {
0036         clearSelections();
0037     }
0038     mLastSearchStr = mSearch->text();
0039     const bool found = mView->find(mLastSearchStr, searchOptions);
0040 
0041     setFoundMatch(found);
0042 }
0043 
0044 void FindBarSourceView::clearSelections()
0045 {
0046     QTextCursor textCursor = mView->textCursor();
0047     textCursor.clearSelection();
0048     textCursor.setPosition(0);
0049     mView->setTextCursor(textCursor);
0050 
0051     WebEngineViewer::FindBarBase::clearSelections();
0052 }
0053 
0054 void FindBarSourceView::updateHighLight(bool)
0055 {
0056     clearSelections();
0057 }
0058 
0059 void FindBarSourceView::updateSensitivity(bool)
0060 {
0061     QTextDocument::FindFlags searchOptions = {};
0062     if (mCaseSensitiveAct->isChecked()) {
0063         searchOptions |= QTextDocument::FindCaseSensitively;
0064     }
0065     mLastSearchStr = mSearch->text();
0066     const bool found = mView->find(mLastSearchStr, searchOptions);
0067     setFoundMatch(found);
0068 }
0069 
0070 #include "moc_findbarsourceview.cpp"