8#include "quicksearchline.h"
9#include "messagelistsettings.h"
10#include <KStringHandler>
12#include "core/filter.h"
13#include "searchlinestatus.h"
14#include <KLocalizedString>
19#include <QStandardPaths>
22QuickSearchLine::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"));
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);
61 installEventFilter(
this);
62 mTagFilterCombo->installEventFilter(
this);
63 changeQuicksearchVisibility(MessageListSettings::self()->showQuickSearch());
66QuickSearchLine::~QuickSearchLine() =
default;
68void QuickSearchLine::slotSearchEditTextEdited(
const QString &text)
74 if (!text.trimmed().
isEmpty()) {
76 Q_EMIT searchEditTextEdited(text);
79 slotClearButtonClicked();
83void QuickSearchLine::slotClearButtonClicked()
88 mSearchEdit->clearFilterButtonClicked();
89 Q_EMIT clearButtonClicked();
94 mSearchEdit->setSearchOptions(
opts);
99 return mSearchEdit->searchOptions();
102void QuickSearchLine::focusQuickSearch(
const QString &selectedText)
105 mSearchEdit->
setText(selectedText);
110QComboBox *QuickSearchLine::tagFilterComboBox()
const
112 return mTagFilterCombo;
115SearchLineStatus *QuickSearchLine::searchEdit()
const
120void QuickSearchLine::resetFilter()
125 mSearchEdit->clearFilterButtonClicked();
126 mSearchEdit->setLocked(
false);
132 Q_EMIT statusButtonsClicked();
138 mSearchEdit->setFilterMessageStatus(mLstStatus);
146bool QuickSearchLine::containsOutboundMessages()
const
148 return mSearchEdit->containsOutboundMessages();
151void QuickSearchLine::setContainsOutboundMessages(
bool containsOutboundMessages)
153 mSearchEdit->setContainsOutboundMessages(containsOutboundMessages);
156void QuickSearchLine::updateComboboxVisibility()
171void QuickSearchLine::changeQuicksearchVisibility(
bool show)
177void QuickSearchLine::addCompletionItem(
const QString &str)
179 mSearchEdit->addCompletionItem(
str);
182#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)
T qobject_cast(QObject *object)
bool isEmpty() const const
QFuture< ArgsType< Signal > > connect(Sender *sender, Signal signal)