This commit is contained in:
Martin Rotter 2023-02-01 12:05:57 +01:00
parent a96024aebd
commit 92c00c0c8a
3 changed files with 64 additions and 11 deletions

View file

@ -99,6 +99,17 @@ FormMessageFiltersManager::FormMessageFiltersManager(FeedReader* reader,
this, this,
&FormMessageFiltersManager::showMessageContextMenu); &FormMessageFiltersManager::showMessageContextMenu);
connect(m_ui.m_searchWidget, &SearchTextWidget::searchCancelled, this, [this]() {
m_ui.m_txtScript->find(QString());
});
connect(m_ui.m_searchWidget, &SearchTextWidget::searchForText, this, [this](const QString& text, bool backwards) {
m_ui.m_txtScript->find(text, backwards ? QTextDocument::FindFlag::FindBackward : QTextDocument::FindFlags());
m_ui.m_searchWidget->setFocus();
});
m_ui.m_txtScript->installEventFilter(this);
m_ui.m_searchWidget->hide();
initializeTestingMessage(); initializeTestingMessage();
initializePremadeFilters(); initializePremadeFilters();
loadFilters(); loadFilters();
@ -119,6 +130,30 @@ MessageFilter* FormMessageFiltersManager::selectedFilter() const {
} }
} }
bool FormMessageFiltersManager::eventFilter(QObject* watched, QEvent* event) {
Q_UNUSED(watched)
if (event->type() == QEvent::KeyPress) {
QKeyEvent* key_event = static_cast<QKeyEvent*>(event);
// Find text.
if (key_event->matches(QKeySequence::StandardKey::Find)) {
m_ui.m_searchWidget->clear();
m_ui.m_searchWidget->show();
m_ui.m_searchWidget->setFocus();
return true;
}
// Hide visible search box.
if (key_event->key() == Qt::Key::Key_Escape && m_ui.m_searchWidget->isVisible()) {
m_ui.m_searchWidget->hide();
return true;
}
}
return false;
}
ServiceRoot* FormMessageFiltersManager::selectedAccount() const { ServiceRoot* FormMessageFiltersManager::selectedAccount() const {
auto dat = m_ui.m_cmbAccounts->currentData(Qt::ItemDataRole::UserRole); auto dat = m_ui.m_cmbAccounts->currentData(Qt::ItemDataRole::UserRole);

View file

@ -26,6 +26,9 @@ class FormMessageFiltersManager : public QDialog {
MessageFilter* selectedFilter() const; MessageFilter* selectedFilter() const;
ServiceRoot* selectedAccount() const; ServiceRoot* selectedAccount() const;
protected:
virtual bool eventFilter(QObject* watched, QEvent* event);
private slots: private slots:
void filterMessagesLikeThis(const Message& msg); void filterMessagesLikeThis(const Message& msg);
void showMessageContextMenu(QPoint pos); void showMessageContextMenu(QPoint pos);

View file

@ -179,17 +179,24 @@
</widget> </widget>
</item> </item>
<item row="1" column="1"> <item row="1" column="1">
<widget class="QPlainTextEdit" name="m_txtScript"> <layout class="QVBoxLayout" name="verticalLayout_2">
<property name="sizePolicy"> <item>
<sizepolicy hsizetype="Expanding" vsizetype="Expanding"> <widget class="QPlainTextEdit" name="m_txtScript">
<horstretch>0</horstretch> <property name="sizePolicy">
<verstretch>1</verstretch> <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
</sizepolicy> <horstretch>0</horstretch>
</property> <verstretch>1</verstretch>
<property name="placeholderText"> </sizepolicy>
<string>Your JavaScript-based article filtering logic</string> </property>
</property> <property name="placeholderText">
</widget> <string>Your JavaScript-based article filtering logic</string>
</property>
</widget>
</item>
<item>
<widget class="SearchTextWidget" name="m_searchWidget" native="true"/>
</item>
</layout>
</item> </item>
<item row="2" column="1"> <item row="2" column="1">
<layout class="QHBoxLayout" name="horizontalLayout_2"> <layout class="QHBoxLayout" name="horizontalLayout_2">
@ -445,6 +452,14 @@
</item> </item>
</layout> </layout>
</widget> </widget>
<customwidgets>
<customwidget>
<class>SearchTextWidget</class>
<extends>QWidget</extends>
<header>searchtextwidget.h</header>
<container>1</container>
</customwidget>
</customwidgets>
<tabstops> <tabstops>
<tabstop>m_listFilters</tabstop> <tabstop>m_listFilters</tabstop>
<tabstop>m_btnAddNew</tabstop> <tabstop>m_btnAddNew</tabstop>