From fb79eb15820419ee346148abd7ce1a52d83becaf Mon Sep 17 00:00:00 2001 From: liuxinhao Date: Wed, 10 Aug 2022 14:42:05 +0800 Subject: [PATCH 1/2] fix(search): when the relevant setting interface cannot be searched, a prompt will be added MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 当未能搜索到相关设置界面时加入提示。修改跳转逻辑,不通过补全直接输入并回车也可以触发跳转功能 Closes #I5H192 --- src/search-edit/search-edit.cpp | 30 +++++++++++++++++++++-- translations/kiran-control-panel.zh_CN.ts | 13 ++++++++++ 2 files changed, 41 insertions(+), 2 deletions(-) diff --git a/src/search-edit/search-edit.cpp b/src/search-edit/search-edit.cpp index a4b9d9e..5ffcfb6 100644 --- a/src/search-edit/search-edit.cpp +++ b/src/search-edit/search-edit.cpp @@ -21,12 +21,14 @@ #include #include #include +#include #include #include #include #include #include #include +#include SearchEdit::SearchEdit(QWidget *parent) : KiranSearchBox(parent) @@ -53,17 +55,41 @@ void SearchEdit::init() m_completer->installEventFilter(this); setCompleter(m_completer); - // clang-format off connect(m_completer, QOverload::of(&QCompleter::activated), [this](const QModelIndex &index) { if( !index.isValid() ) + { return ; - + } QString categoryID,subItemID; auto filterModel = m_completer->completionModel(); categoryID = filterModel->data(index,SearchModel::roleCategoryID).toString(); subItemID = filterModel->data(index,SearchModel::roleSubItemID).toString(); emit requestJumpTo(categoryID,subItemID); + QTimer::singleShot(0,this,&QLineEdit::clear); + }); + connect(this,&QLineEdit::returnPressed,[this](){ + QString searchkey = text(); + if( searchkey.isEmpty() ) + { + return; + } + + auto items = m_searchModel->findItems(searchkey); + if( items.isEmpty() ) + { + auto clickedButton = KiranMessageBox::message(this,tr("Info"),tr("Failed to find related items, please re-enter!"),KiranMessageBox::Ok|KiranMessageBox::No); + if( clickedButton == KiranMessageBox::Ok ) + clear(); + return; + } + + auto item = items.at(0); + auto categoryID = item->data(SearchModel::roleCategoryID).toString(); + auto subItemID = item->data(SearchModel::roleSubItemID).toString(); + clear(); + + emit requestJumpTo(categoryID,subItemID); }); // clang-format on } \ No newline at end of file diff --git a/translations/kiran-control-panel.zh_CN.ts b/translations/kiran-control-panel.zh_CN.ts index 4da29a1..8e4a4a0 100644 --- a/translations/kiran-control-panel.zh_CN.ts +++ b/translations/kiran-control-panel.zh_CN.ts @@ -30,4 +30,17 @@ 控制面板 + + SearchEdit + + + Info + 提示 + + + + Failed to find related items, please re-enter! + 未能搜索到相关项,请重新输入! + + -- 2.33.0