File indexing completed on 2024-05-26 04:46:50

0001 /*
0002    SPDX-FileCopyrightText: 2013-2024 Laurent Montel <montel@kde.org>
0003 
0004    SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #pragma once
0008 
0009 #include "textcustomeditor_private_export.h"
0010 #include "texteditfindbarbase.h"
0011 #include <QWidget>
0012 
0013 class QAction;
0014 class QLineEdit;
0015 class QPushButton;
0016 namespace TextCustomEditor
0017 {
0018 class TEXTCUSTOMEDITOR_TESTS_EXPORT TextFindWidget : public QWidget
0019 {
0020     Q_OBJECT
0021 public:
0022     explicit TextFindWidget(QWidget *parent = nullptr);
0023     ~TextFindWidget() override;
0024 
0025     [[nodiscard]] TextEditFindBarBase::FindFlags searchOptions() const;
0026 
0027     QLineEdit *searchLineEdit() const;
0028 
0029     void setFoundMatch(bool match);
0030 
0031     [[nodiscard]] bool isRegularExpression() const;
0032     [[nodiscard]] QRegularExpression searchRegularExpression() const;
0033 
0034     [[nodiscard]] QString searchText() const;
0035 
0036 Q_SIGNALS:
0037     void findNext();
0038     void findPrev();
0039     void clearSearch();
0040     void autoSearch(const QString &);
0041     void updateSearchOptions();
0042     void searchStringEmpty(bool);
0043 
0044 private:
0045     void slotAutoSearch(const QString &str);
0046     void slotRegularExpressionChanged(bool b);
0047     QLineEdit *const mSearch;
0048     QAction *mCaseSensitiveAct = nullptr;
0049     QAction *mWholeWordAct = nullptr;
0050     QAction *mRegularExpressionAct = nullptr;
0051     QAction *mRespectDiacriticAct = nullptr;
0052 
0053     QPushButton *const mFindPrevBtn;
0054     QPushButton *const mFindNextBtn;
0055 };
0056 
0057 class TEXTCUSTOMEDITOR_TESTS_EXPORT TextReplaceWidget : public QWidget
0058 {
0059     Q_OBJECT
0060 public:
0061     explicit TextReplaceWidget(QWidget *parent = nullptr);
0062     ~TextReplaceWidget() override;
0063 
0064     QLineEdit *replaceLineEdit() const;
0065 
0066 public Q_SLOTS:
0067     void slotSearchStringEmpty(bool);
0068 
0069 Q_SIGNALS:
0070     void replaceText();
0071     void replaceAllText();
0072 
0073 private:
0074     QLineEdit *const mReplace;
0075     QPushButton *const mReplaceBtn;
0076     QPushButton *const mReplaceAllBtn;
0077 };
0078 }