From b369612070f3b46964e63982b7b13d6b442d69cc Mon Sep 17 00:00:00 2001 From: chendapao Date: Thu, 9 Dec 2021 18:40:51 +0800 Subject: [PATCH] setting tree match complete (#1932) --- src/data/extra/themes/pure/interface.qss | 4 ++++ .../dialogs/settings/settingsdialog.cpp | 21 +++++++++++++++++++ src/widgets/dialogs/settings/settingspage.cpp | 7 +++++-- src/widgets/dialogs/settings/settingspage.h | 2 +- src/widgets/propertydefs.cpp | 2 ++ src/widgets/propertydefs.h | 2 ++ 6 files changed, 35 insertions(+), 3 deletions(-) diff --git a/src/data/extra/themes/pure/interface.qss b/src/data/extra/themes/pure/interface.qss index 3e827831..853b18b4 100644 --- a/src/data/extra/themes/pure/interface.qss +++ b/src/data/extra/themes/pure/interface.qss @@ -31,6 +31,10 @@ QWidget[DialogCentralWidget="true"] { border: 1px solid @widgets#qwidget#error#border; } +[HitSettingWidget="true"] { + border: 4px solid @widgets#qwidget#info#border; +} + /* QAbstractScrollArea */ QAbstractScrollArea { border: 1px solid @widgets#qabstractscrollarea#border; diff --git a/src/widgets/dialogs/settings/settingsdialog.cpp b/src/widgets/dialogs/settings/settingsdialog.cpp index 695fe83c..36ee24a9 100644 --- a/src/widgets/dialogs/settings/settingsdialog.cpp +++ b/src/widgets/dialogs/settings/settingsdialog.cpp @@ -22,6 +22,14 @@ #include "vipage.h" #include "notemanagementpage.h" +#include +#include +#include +#include "settingspage.h" +#include "utils/widgetutils.h" +#include "../../propertydefs.h" +#include + using namespace vnotex; SettingsDialog::SettingsDialog(QWidget *p_parent) @@ -67,6 +75,19 @@ void SettingsDialog::setupPageExplorer(QBoxLayout *p_layout, QWidget *p_parent) m_searchEdit = WidgetsFactory::createLineEdit(p_parent); m_searchEdit->setPlaceholderText(tr("Search")); layout->addWidget(m_searchEdit); + connect(m_searchEdit,&QLineEdit::textChanged, + this, [this]() { QTimer::singleShot(500, this, [this](){ + forEachPage([this](SettingsPage *p_page) { + bool hit = p_page->search(m_searchEdit->text()); + if (hit) { + qDebug() << p_page->title(); + // 目前只能找到tree的 通过 外观 笔记管理,快速访问与编辑器好像没有加入到tree的搜索中 + // 不知道如何找到item并且高亮 + } + return hit; + }); + }); + }); m_pageExplorer = new TreeWidget(TreeWidget::None, p_parent); TreeWidget::setupSingleColumnHeaderlessTree(m_pageExplorer, false, false); diff --git a/src/widgets/dialogs/settings/settingspage.cpp b/src/widgets/dialogs/settings/settingspage.cpp index 3ba2682c..7597b0e1 100644 --- a/src/widgets/dialogs/settings/settingspage.cpp +++ b/src/widgets/dialogs/settings/settingspage.cpp @@ -1,4 +1,6 @@ #include "settingspage.h" +#include "utils/widgetutils.h" +#include "../../propertydefs.h" using namespace vnotex; @@ -19,16 +21,17 @@ bool SettingsPage::search(const QString &p_key) if (item.m_words.contains(p_key, Qt::CaseInsensitive)) { // Continue to search all the matched targets. hit = true; - searchHit(item.m_target); + searchHit(item.m_target, true); } } return hit; } -void SettingsPage::searchHit(QWidget *p_target) +void SettingsPage::searchHit(QWidget *p_target, bool hit) { Q_UNUSED(p_target); + WidgetUtils::setPropertyDynamically(p_target, PropertyDefs::c_hitSettingWidght, hit); } void SettingsPage::addSearchItem(const QString &p_words, QWidget *p_target) diff --git a/src/widgets/dialogs/settings/settingspage.h b/src/widgets/dialogs/settings/settingspage.h index 93c2578c..dcbbadd8 100644 --- a/src/widgets/dialogs/settings/settingspage.h +++ b/src/widgets/dialogs/settings/settingspage.h @@ -34,7 +34,7 @@ namespace vnotex virtual bool saveInternal() = 0; // Subclass could override this method to highlight matched target. - virtual void searchHit(QWidget *p_target); + virtual void searchHit(QWidget *p_target, bool hit); void addSearchItem(const QString &p_words, QWidget *p_target); diff --git a/src/widgets/propertydefs.cpp b/src/widgets/propertydefs.cpp index 1c96ba2a..cea90a6a 100644 --- a/src/widgets/propertydefs.cpp +++ b/src/widgets/propertydefs.cpp @@ -25,3 +25,5 @@ const char *PropertyDefs::c_embeddedLineEdit = "EmbeddedLineEdit"; const char *PropertyDefs::c_dockWidgetIndex = "DockIndex"; const char *PropertyDefs::c_dockWidgetTitle = "DockTitle"; + +const char *PropertyDefs::c_hitSettingWidght = "HitSettingWidget"; diff --git a/src/widgets/propertydefs.h b/src/widgets/propertydefs.h index 0e5d2e38..9d478beb 100644 --- a/src/widgets/propertydefs.h +++ b/src/widgets/propertydefs.h @@ -33,6 +33,8 @@ namespace vnotex static const char *c_dockWidgetIndex; static const char *c_dockWidgetTitle; + + static const char *c_hitSettingWidght; }; }