8#include "quicksearchline.h"
9#include "messagelistsettings.h"
10#include <KStringHandler>
12#include "core/filter.h"
13#include "searchlinestatus.h"
14#include "searchstatusbuttons.h"
15#include <KLocalizedString>
21#include <QStandardPaths>
24QuickSearchLine::QuickSearchLine(
QWidget *parent)
26 , mSearchEdit(new SearchLineStatus(this))
27 , mSearchStatusButtons(new SearchStatusButtons(this))
28 , mSearchMessageByButtons(new SearchMessageByButtons(this))
32 vbox->setContentsMargins({});
37 hbox->setContentsMargins({});
41 vbox->addWidget(mSearchMessageByButtons);
42 mSearchMessageByButtons->setVisible(
false);
44 connect(mSearchEdit, &SearchLineStatus::forceLostFocus,
this, &QuickSearchLine::forceLostFocus);
45 mSearchEdit->setPlaceholderText(
i18nc(
"Search for messages.",
"Search"));
47 mSearchEdit->setClearButtonEnabled(
true);
48 connect(mSearchMessageByButtons, &SearchMessageByButtons::searchOptionChanged,
this, [
this]() {
49 mSearchEdit->filterAdded();
50 Q_EMIT searchOptionChanged();
54 connect(mSearchEdit, &SearchLineStatus::clearButtonClicked,
this, &QuickSearchLine::slotClearButtonClicked);
55 connect(mSearchEdit, &SearchLineStatus::saveFilter,
this, &QuickSearchLine::saveFilter);
56 connect(mSearchEdit, &SearchLineStatus::activateFilter,
this, &QuickSearchLine::activateFilter);
58 hbox->addWidget(mSearchEdit);
60 hbox->addWidget(mSearchStatusButtons);
61 connect(mSearchStatusButtons, &SearchStatusButtons::filterStatusChanged,
this, &QuickSearchLine::slotFilterActionChanged);
65 mTagFilterCombo->setMaximumWidth(300);
66 mTagFilterCombo->setMaximumWidth(200);
67 mTagFilterCombo->hide();
68 hbox->addWidget(mTagFilterCombo);
71 mSearchEdit->setEnabled(
false);
72 mTagFilterCombo->setEnabled(
false);
74 installEventFilter(
this);
75 mTagFilterCombo->installEventFilter(
this);
76 changeQuicksearchVisibility(MessageListSettings::self()->showQuickSearch());
79QuickSearchLine::~QuickSearchLine() =
default;
81void QuickSearchLine::slotSearchEditTextEdited(
const QString &text)
83 int minimumStringLength = 3;
85 minimumStringLength = 5;
87 if (!text.trimmed().
isEmpty()) {
90 Q_EMIT searchEditTextEdited(text);
93 slotClearButtonClicked();
97void QuickSearchLine::slotClearButtonClicked()
102 mSearchEdit->clearFilterButtonClicked();
103 mSearchStatusButtons->clearFilter();
104 mSearchMessageByButtons->clearFilter();
106 Q_EMIT clearButtonClicked();
111 mSearchMessageByButtons->setSearchOptions(opts);
113 mSearchEdit->filterAdded();
118 return mSearchMessageByButtons->searchOptions();
121void QuickSearchLine::focusQuickSearch(
const QString &selectedText)
124 mSearchEdit->
setText(selectedText);
129QComboBox *QuickSearchLine::tagFilterComboBox()
const
131 return mTagFilterCombo;
134SearchLineStatus *QuickSearchLine::searchEdit()
const
139void QuickSearchLine::resetFilter()
144 mSearchEdit->clearFilterButtonClicked();
145 mSearchEdit->setLocked(
false);
146 mSearchStatusButtons->clearFilter();
152 mSearchEdit->filterAdded();
153 Q_EMIT statusButtonsClicked();
158 mLstStatus = newLstStatus;
159 mSearchEdit->filterAdded();
160 mSearchStatusButtons->setFilterMessageStatus(mLstStatus);
168bool QuickSearchLine::containsOutboundMessages()
const
170 return mSearchMessageByButtons->containsOutboundMessages();
173void QuickSearchLine::setContainsOutboundMessages(
bool containsOutboundMessages)
175 mSearchMessageByButtons->setContainsOutboundMessages(containsOutboundMessages);
178void QuickSearchLine::updateComboboxVisibility()
186 if (shortCutOverride) {
193void QuickSearchLine::changeQuicksearchVisibility(
bool show)
200void QuickSearchLine::addCompletionItem(
const QString &str)
202 mSearchEdit->addCompletionItem(str);
205#include "moc_quicksearchline.cpp"
constexpr bool isEmpty() const
QString i18nc(const char *context, const char *text, const TYPE &arg...)
KCOREADDONS_EXPORT int logicalLength(const QString &text)
The implementation independent part of the MessageList library.
void setCurrentIndex(int index)
void setText(const QString &)
void textChanged(const QString &text)
virtual bool eventFilter(QObject *watched, QEvent *event)
bool isEmpty() const const
QFuture< ArgsType< Signal > > connect(Sender *sender, Signal signal)