7#include "findbarbase.h"
8#include <KStatefulBrush>
10#include <PimCommon/LineEditWithCompleterNg>
12#include <KColorScheme>
13#include <KLocalizedString>
17#include <QApplication>
27using namespace WebEngineViewer;
29FindBarBase::FindBarBase(
QWidget *parent)
33 lay->setContentsMargins({});
38 closeBtn->setIconSize(
QSize(16, 16));
39 closeBtn->setToolTip(
i18nc(
"@info:tooltip",
"Close"));
41#ifndef QT_NO_ACCESSIBILITY
42 closeBtn->setAccessibleName(
i18n(
"Close"));
45 closeBtn->setAutoRaise(
true);
46 lay->addWidget(closeBtn);
49 lay->addWidget(label);
53 mSearch->setToolTip(
i18nc(
"@info:tooltip",
"Text to search for"));
54 mSearch->setClearButtonEnabled(
true);
55 label->setBuddy(mSearch);
56 lay->addWidget(mSearch);
59 mFindNextBtn->setToolTip(
i18nc(
"@info:tooltip",
"Jump to next match"));
61 lay->addWidget(mFindNextBtn);
62 mFindNextBtn->setEnabled(
false);
65 mFindPrevBtn->setToolTip(
i18nc(
"@info:tooltip",
"Jump to previous match"));
67 lay->addWidget(mFindPrevBtn);
68 mFindPrevBtn->setEnabled(
false);
71 optionsBtn->setText(
i18n(
"Options"));
72 optionsBtn->setToolTip(
i18nc(
"@info:tooltip",
"Modify search behavior"));
73 mOptionsMenu =
new QMenu(optionsBtn);
74 mCaseSensitiveAct = mOptionsMenu->addAction(
i18n(
"Case sensitive"));
75 mCaseSensitiveAct->setCheckable(
true);
77 optionsBtn->setMenu(mOptionsMenu);
78 lay->addWidget(optionsBtn);
87 mStatus =
new QLabel(
this);
91 mNotFoundString =
i18n(
"Phrase not found");
92 mStatus->setFixedWidth(fm.boundingRect(mNotFoundString).width());
93 lay->addWidget(mStatus);
97 qGuiApp->installEventFilter(
this);
100FindBarBase::~FindBarBase() =
default;
102QMenu *FindBarBase::optionsMenu()
const
107QString FindBarBase::text()
const
109 return mSearch->text();
112void FindBarBase::setText(
const QString &text)
114 mSearch->setText(text);
115 addToCompletion(text);
118void FindBarBase::focusAndSetCursor()
122 mSearch->selectAll();
126void FindBarBase::slotClearSearch()
131void FindBarBase::autoSearch(
const QString &str)
133 const bool isNotEmpty = (!str.
isEmpty());
134 mFindPrevBtn->setEnabled(isNotEmpty);
135 mFindNextBtn->setEnabled(isNotEmpty);
146void FindBarBase::slotSearchText(
bool backward,
bool isAutoSearch)
148 searchText(backward, isAutoSearch);
151void FindBarBase::updatePalette()
154 mPositiveBackground = QStringLiteral(
"QLineEdit{ background-color:%1 }").arg(bgBrush.brush(mSearch->palette()).color().name());
156 mNegativeBackground = QStringLiteral(
"QLineEdit{ background-color:%1 }").arg(bgBrush.brush(mSearch->palette()).color().name());
159void FindBarBase::setFoundMatch(
bool match)
161#ifndef QT_NO_STYLE_STYLESHEET
164 if (!mSearch->text().isEmpty()) {
165 if (mNegativeBackground.isEmpty()) {
173 mStatus->setText(mNotFoundString);
180void FindBarBase::searchText(
bool backward,
bool isAutoSearch)
183 Q_UNUSED(isAutoSearch)
186void FindBarBase::addToCompletion(
const QString &text)
188 mSearch->addCompletionItem(text);
191void FindBarBase::findNext()
193 searchText(
false,
false);
194 addToCompletion(mLastSearchStr);
197void FindBarBase::findPrev()
199 searchText(
true,
false);
200 addToCompletion(mLastSearchStr);
203void FindBarBase::caseSensitivityChanged(
bool b)
205 updateSensitivity(b);
208void FindBarBase::updateSensitivity(
bool)
212void FindBarBase::slotHighlightAllChanged(
bool b)
217void FindBarBase::updateHighLight(
bool)
221void FindBarBase::clearSelections()
223 setFoundMatch(
false);
226void FindBarBase::closeBar()
231 mSearch->clearFocus();
235bool FindBarBase::event(QEvent *e)
243 auto kev =
static_cast<QKeyEvent *
>(e);
245 if (shortCutOverride) {
254 if (shortCutOverride) {
257 if (mSearch->text().isEmpty()) {
271bool FindBarBase::eventFilter(QObject *obj, QEvent *event)
280#include "moc_findbarbase.cpp"
QString i18nc(const char *context, const char *text, const TYPE &arg...)
QString i18n(const char *text, const TYPE &arg...)
QString label(StandardShortcut id)
void toggled(bool checked)
QIcon fromTheme(const QString &name)
void textChanged(const QString &text)
bool isEmpty() const const
QFuture< ArgsType< Signal > > connect(Sender *sender, Signal signal)