8 #include "quicksearchline.h"
9 #include "messagelistsettings.h"
10 #include <KStringHandler>
12 #include "core/filter.h"
13 #include "searchlinestatus.h"
14 #include <KLocalizedString>
17 #include <QHBoxLayout>
18 #include <QPushButton>
19 #include <QStandardPaths>
22 QuickSearchLine::QuickSearchLine(
QWidget *parent)
24 , mSearchEdit(new SearchLineStatus(this))
28 vbox->setContentsMargins({});
33 hbox->setContentsMargins({});
37 connect(mSearchEdit, &SearchLineStatus::filterActionChanged,
this, &QuickSearchLine::slotFilterActionChanged);
38 connect(mSearchEdit, &SearchLineStatus::searchOptionChanged,
this, &QuickSearchLine::searchOptionChanged);
39 connect(mSearchEdit, &SearchLineStatus::forceLostFocus,
this, &QuickSearchLine::forceLostFocus);
40 mSearchEdit->setPlaceholderText(
i18nc(
"Search for messages.",
"Search"));
41 mSearchEdit->setObjectName(QStringLiteral(
"quicksearch"));
42 mSearchEdit->setClearButtonEnabled(
true);
45 connect(mSearchEdit, &SearchLineStatus::clearButtonClicked,
this, &QuickSearchLine::slotClearButtonClicked);
46 connect(mSearchEdit, &SearchLineStatus::saveFilter,
this, &QuickSearchLine::saveFilter);
47 connect(mSearchEdit, &SearchLineStatus::activateFilter,
this, &QuickSearchLine::activateFilter);
49 hbox->addWidget(mSearchEdit);
52 mTagFilterCombo->setMaximumWidth(300);
53 mTagFilterCombo->setMaximumWidth(200);
54 mTagFilterCombo->hide();
55 hbox->addWidget(mTagFilterCombo);
58 mSearchEdit->setEnabled(
false);
59 mTagFilterCombo->setEnabled(
false);
62 mTagFilterCombo->installEventFilter(
this);
63 changeQuicksearchVisibility(MessageListSettings::self()->showQuickSearch());
66 QuickSearchLine::~QuickSearchLine() =
default;
68 void QuickSearchLine::slotSearchEditTextEdited(
const QString &text)
70 int minimumStringLength = 3;
72 minimumStringLength = 5;
74 if (!text.trimmed().
isEmpty()) {
76 Q_EMIT searchEditTextEdited(text);
79 slotClearButtonClicked();
83 void QuickSearchLine::slotClearButtonClicked()
85 if (mTagFilterCombo->isVisible()) {
86 mTagFilterCombo->setCurrentIndex(0);
88 mSearchEdit->clearFilterButtonClicked();
89 Q_EMIT clearButtonClicked();
94 mSearchEdit->setSearchOptions(opts);
99 return mSearchEdit->searchOptions();
102 void QuickSearchLine::focusQuickSearch(
const QString &selectedText)
105 mSearchEdit->setText(selectedText);
107 mSearchEdit->setFocus();
110 QComboBox *QuickSearchLine::tagFilterComboBox()
const
112 return mTagFilterCombo;
115 SearchLineStatus *QuickSearchLine::searchEdit()
const
120 void QuickSearchLine::resetFilter()
122 if (mTagFilterCombo->isVisible()) {
125 mSearchEdit->clearFilterButtonClicked();
126 mSearchEdit->setLocked(
false);
132 Q_EMIT statusButtonsClicked();
137 mLstStatus = newLstStatus;
138 mSearchEdit->setFilterMessageStatus(mLstStatus);
146 bool QuickSearchLine::containsOutboundMessages()
const
148 return mSearchEdit->containsOutboundMessages();
151 void QuickSearchLine::setContainsOutboundMessages(
bool containsOutboundMessages)
153 mSearchEdit->setContainsOutboundMessages(containsOutboundMessages);
156 void QuickSearchLine::updateComboboxVisibility()
158 mTagFilterCombo->setVisible(!mSearchEdit->isHidden() && mTagFilterCombo->count());
161 bool QuickSearchLine::eventFilter(
QObject *
object,
QEvent *e)
164 if (shortCutOverride) {
171 void QuickSearchLine::changeQuicksearchVisibility(
bool show)
173 mSearchEdit->setVisible(show);
174 mTagFilterCombo->setVisible(show && mTagFilterCombo->count());
177 void QuickSearchLine::addCompletionItem(
const QString &str)
179 mSearchEdit->addCompletionItem(str);