diff --git a/data/org.ukui.search.data.gschema.xml b/data/org.ukui.search.data.gschema.xml index 2494b22..f4f0158 100644 --- a/data/org.ukui.search.data.gschema.xml +++ b/data/org.ukui.search.data.gschema.xml @@ -5,5 +5,10 @@ search method Is current search-method index-search. + + "baidu" + web engine + Web engine to search keyword online. + diff --git a/debian/ukui-search.install b/debian/ukui-search.install index db54699..d7f1780 100644 --- a/debian/ukui-search.install +++ b/debian/ukui-search.install @@ -2,3 +2,4 @@ usr/bin/ukui-search etc/xdg/autostart/*.desktop usr/share/applications/*.desktop src/.qm/*.qm usr/share/ukui-search/translations +usr/share/glib-2.0/schemas/*.xml diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 66c65ab..f8706a8 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -214,6 +214,16 @@ void MainWindow::initUi() return; } m_settingsWidget = new SettingsWidget(); + connect(this, &MainWindow::webEngineChanged, m_settingsWidget, [ = ]() { + m_settingsWidget->resetWebEngine(); + }); + connect(m_settingsWidget, &SettingsWidget::webEngineChanged, this, [ = ](const QString &engine) { + if (m_search_gsettings && m_search_gsettings->keys().contains(WEB_ENGINE_KEY)) { + m_search_gsettings->set(WEB_ENGINE_KEY, engine); + } else { + GlobalSettings::getInstance()->setValue(WEB_ENGINE, engine); + } + }); centerToScreen(m_settingsWidget); m_settingsWidget->show(); connect(m_settingsWidget, &SettingsWidget::settingWidgetClosed, this, [ = ]() { @@ -475,12 +485,20 @@ void MainWindow::initGsettings() if (key == SEARCH_METHOD_KEY) { bool is_index_search = m_search_gsettings->get(SEARCH_METHOD_KEY).toBool(); this->setSearchMethod(is_index_search); + } else if (key == WEB_ENGINE_KEY) { + QString web_engine = m_search_gsettings->get(WEB_ENGINE_KEY).toString(); + GlobalSettings::getInstance()->setValue(WEB_ENGINE, web_engine); + Q_EMIT this->webEngineChanged(); } }); if (m_search_gsettings->keys().contains(SEARCH_METHOD_KEY)) { bool is_index_search = m_search_gsettings->get(SEARCH_METHOD_KEY).toBool(); this->setSearchMethod(is_index_search); } + if (m_search_gsettings->keys().contains(WEB_ENGINE_KEY)) { + QString web_engine = m_search_gsettings->get(WEB_ENGINE_KEY).toString(); + GlobalSettings::getInstance()->setValue(WEB_ENGINE, web_engine); + } } } diff --git a/src/mainwindow.h b/src/mainwindow.h index fea8092..21074a8 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -54,9 +54,9 @@ #include "xatom-helper.h" #include "create-index-ask-dialog.h" - #define UKUI_SEARCH_SCHEMAS "org.ukui.search.settings" #define SEARCH_METHOD_KEY "indexSearch" +#define WEB_ENGINE_KEY "webEngine" class SearchResult; class MainWindow : public QMainWindow @@ -99,8 +99,6 @@ private: SearchBarHLayout * m_searchLayout = nullptr; // Search bar layout SeachBarWidget * m_searchWidget = nullptr; // Search bar - - QStringList m_dirList; QQueue *m_search_result_file = nullptr; @@ -133,6 +131,7 @@ protected: Q_SIGNALS: void searchMethodChanged(FileUtils::SearchMethod); + void webEngineChanged(); public Q_SLOTS: /** diff --git a/src/settings-widget.cpp b/src/settings-widget.cpp index 0581fac..04fe3a1 100644 --- a/src/settings-widget.cpp +++ b/src/settings-widget.cpp @@ -315,7 +315,7 @@ void SettingsWidget::onBtnDelClicked(const QString& path) { } /** - * @brief SettingsWidget::resetWebEngine 获取当前的搜索引擎并反应在UI控件上 + * @brief SettingsWidget::resetWebEngine 获取当前的搜索引擎并反映在UI控件上 */ void SettingsWidget::resetWebEngine() { @@ -341,7 +341,8 @@ void SettingsWidget::resetWebEngine() */ void SettingsWidget::setWebEngine(const QString& engine) { - GlobalSettings::getInstance()->setValue(WEB_ENGINE, engine); +// GlobalSettings::getInstance()->setValue(WEB_ENGINE, engine); + Q_EMIT this->webEngineChanged(engine); } /** diff --git a/src/settings-widget.h b/src/settings-widget.h index fdb1c87..87ce459 100644 --- a/src/settings-widget.h +++ b/src/settings-widget.h @@ -45,6 +45,7 @@ public: void setIndexState(bool); void setIndexNum(int); void showWidget(); + void resetWebEngine(); private: void initUi(); @@ -54,7 +55,6 @@ private: void paintEvent(QPaintEvent *); void resize(); void showWarningDialog(const int&); - void resetWebEngine(); MotifWmHints m_hints; @@ -109,6 +109,7 @@ private: Q_SIGNALS: void settingWidgetClosed(); + void webEngineChanged(const QString&); private Q_SLOTS: // void onBtnConfirmClicked();