diff --git a/libchinese-segmentation/chinese-segmentation.cpp b/libchinese-segmentation/chinese-segmentation.cpp index 095d6a7..ea80a67 100644 --- a/libchinese-segmentation/chinese-segmentation.cpp +++ b/libchinese-segmentation/chinese-segmentation.cpp @@ -65,7 +65,7 @@ QVector ChineseSegmentation::callSegement(QString str) { convert(keywordres, vecNeeds); keywordres.clear(); - keywordres.shrink_to_fit(); +// keywordres.shrink_to_fit(); return vecNeeds; diff --git a/libsearch/plugininterface/search-plugin-iface.h b/libsearch/plugininterface/search-plugin-iface.h index d4ccdb9..a2cb769 100644 --- a/libsearch/plugininterface/search-plugin-iface.h +++ b/libsearch/plugininterface/search-plugin-iface.h @@ -11,19 +11,24 @@ namespace Zeeker { class SearchPluginIface : public PluginInterface { public: + struct DescriptionInfo + { + QString key; + QString value; + }; /** - * @brief The resultInfo struct + * @brief The ResultInfo struct */ - struct resultInfo + struct ResultInfo { QIcon icon; QString name; - QString description; + QVector description; QMap actionMap;//action name and action key }; virtual ~SearchPluginIface() {} virtual QString getPluginName() = 0; - virtual void KeywordSearch(QString keyword,QQueue *searchResult) = 0; + virtual void KeywordSearch(QString keyword,QQueue *searchResult) = 0; virtual void openAction(QString name, QString key) = 0; }; diff --git a/src/create-index-ask-dialog.cpp b/src/create-index-ask-dialog.cpp index 78d43e1..0d1fc1e 100644 --- a/src/create-index-ask-dialog.cpp +++ b/src/create-index-ask-dialog.cpp @@ -116,6 +116,10 @@ void CreateIndexAskDialog::initUi() { m_contentLyt->addWidget(m_btnFrame); m_mainLyt->addWidget(m_contentFrame); +#if (QT_VERSION < QT_VERSION_CHECK(5, 12, 0)) + m_titleFrame->hide(); + this->setFixedSize(380, 162); +#endif } /** diff --git a/src/main.cpp b/src/main.cpp index e7203e2..54dbe8b 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -29,7 +29,9 @@ #include #include #include +#if (QT_VERSION >= QT_VERSION_CHECK(5, 12, 0)) #include +#endif #include #include #include "qt-single-application.h" @@ -145,8 +147,11 @@ void searchMethod(FileUtils::SearchMethod sm){ } */ int main(int argc, char *argv[]) { - //Init log module +//v101日志模块 +//#if (QT_VERSION >= QT_VERSION_CHECK(5, 12, 0)) +// //Init log module // initUkuiLog4qt("ukui-search"); +//#endif // Determine whether the home directory has been created, and if not, keep waiting. char *p_home = NULL; @@ -172,6 +177,11 @@ int main(int argc, char *argv[]) { // Output log to file qInstallMessageHandler(messageOutput); +//若使用v101日志模块,可以解放如下判断条件 +//#if (QT_VERSION < QT_VERSION_CHECK(5, 12, 0)) +// // Output log to file +// qInstallMessageHandler(messageOutput); +//#endif // Register meta type qDebug() << "ukui-search main start"; @@ -291,7 +301,9 @@ int main(int argc, char *argv[]) { if(QString::compare(QString("-s"), QString(QLatin1String(argv[1]))) == 0) { // w->moveToPanel(); centerToScreen(w); +#if (QT_VERSION >= QT_VERSION_CHECK(5, 12, 0)) XAtomHelper::getInstance()->setWindowMotifHint(w->winId(), w->m_hints); +#endif w->show(); } diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 0e7ecca..4cd016c 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -29,9 +29,11 @@ #include #include #include -#include #include +#if (QT_VERSION >= QT_VERSION_CHECK(5, 12, 0)) +#include #include "kwindowsystem.h" +#endif #include "qt-single-application.h" //#include "inotify-manager.h" @@ -67,6 +69,7 @@ MainWindow::MainWindow(QWidget *parent) : initUi(); initTimer(); +#if (QT_VERSION >= QT_VERSION_CHECK(5, 12, 0)) // setProperty("useStyleWindowManager", false); //禁止拖动 m_hints.flags = MWM_HINTS_FUNCTIONS | MWM_HINTS_DECORATIONS; m_hints.functions = MWM_FUNC_ALL; @@ -80,6 +83,7 @@ MainWindow::MainWindow(QWidget *parent) : path.addRect(rect); setProperty("blurRegion", QRegion(path.toFillPolygon().toPolygon())); KWindowEffects::enableBlurBehind(this->winId(), true, QRegion(path.toFillPolygon().toPolygon())); +#endif connect(qApp, &QApplication::paletteChanged, this, [ = ](const QPalette & pal) { this->setPalette(pal); @@ -125,7 +129,9 @@ MainWindow::MainWindow(QWidget *parent) : clearSearchResult(); // this->moveToPanel(); centerToScreen(this); +#if (QT_VERSION >= QT_VERSION_CHECK(5, 12, 0)) XAtomHelper::getInstance()->setWindowMotifHint(winId(), m_hints); +#endif this->show(); this->m_searchLayout->focusIn(); //打开主界面时输入框夺焦,可直接输入 this->raise(); @@ -150,10 +156,12 @@ MainWindow::~MainWindow() { delete m_searchLayout; m_searchLayout = NULL; } -// if(m_settingsWidget) { -// delete m_settingsWidget; -// m_settingsWidget = NULL; -// } +#if (QT_VERSION < QT_VERSION_CHECK(5, 12, 0)) + if(m_settingsWidget) { + delete m_settingsWidget; + m_settingsWidget = NULL; + } +#endif if(m_askDialog) { delete m_askDialog; m_askDialog = NULL; @@ -203,38 +211,42 @@ void MainWindow::initUi() { m_menuBtn->setProperty("isWindowButton", 0x01); m_menuBtn->setFlat(true); connect(m_menuBtn, &QPushButton::clicked, this, [ = ]() { -// if(m_settingsWidget) { //当此窗口已存在时,仅需置顶 -// if(!m_settingsWidget->isVisible()) { -// centerToScreen(m_settingsWidget); -// } -// m_settingsWidget->showWidget(); -// 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, [ = ]() { -// QTimer::singleShot(100, this, [ = ] { -//// clearSearchResult(); //现暂定从设置页返回主页面不清空搜索结果 -// this->setWindowState(this->windowState() & ~Qt::WindowMinimized); -// this->raise(); -// this->showNormal(); -// this->activateWindow(); -// }); -// }); +#if (QT_VERSION < QT_VERSION_CHECK(5, 12, 0)) + if(m_settingsWidget) { //当此窗口已存在时,仅需置顶 + if(!m_settingsWidget->isVisible()) { + centerToScreen(m_settingsWidget); + } + m_settingsWidget->showWidget(); + 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, [ = ]() { + QTimer::singleShot(100, this, [ = ] { +// clearSearchResult(); //现暂定从设置页返回主页面不清空搜索结果 + this->setWindowState(this->windowState() & ~Qt::WindowMinimized); + this->raise(); + this->showNormal(); + this->activateWindow(); + }); + }); +#endif +#if (QT_VERSION >= QT_VERSION_CHECK(5, 12, 0)) //打开控制面板的设置页 QProcess process; process.startDetached("ukui-control-center --search"); +#endif }); m_titleLyt->addWidget(m_iconLabel); m_titleLyt->addWidget(m_titleLabel); @@ -290,11 +302,13 @@ void MainWindow::initUi() { //创建索引询问弹窗 m_askDialog = new CreateIndexAskDialog(this); +#if (QT_VERSION >= QT_VERSION_CHECK(5, 12, 0)) MotifWmHints ask_dialog_hints; ask_dialog_hints.flags = MWM_HINTS_FUNCTIONS | MWM_HINTS_DECORATIONS; ask_dialog_hints.functions = MWM_FUNC_ALL; ask_dialog_hints.decorations = MWM_DECOR_BORDER; XAtomHelper::getInstance()->setWindowMotifHint(m_askDialog->winId(), ask_dialog_hints); +#endif connect(m_askDialog, &CreateIndexAskDialog::closed, this, [ = ]() { m_isAskDialogVisible = false; }); @@ -327,7 +341,9 @@ void MainWindow::bootOptionsFilter(QString opt) { clearSearchResult(); // this->moveToPanel(); centerToScreen(this); +#if (QT_VERSION >= QT_VERSION_CHECK(5, 12, 0)) XAtomHelper::getInstance()->setWindowMotifHint(winId(), m_hints); +#endif this->show(); this->m_searchLayout->focusIn(); this->raise(); diff --git a/src/mainwindow.h b/src/mainwindow.h index 8de33fe..7a5a153 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -49,10 +49,14 @@ #include "content-widget.h" #include "input-box.h" #include "index/index-generator.h" -//#include "settings-widget.h" #include "libsearch.h" #include "search-app-thread.h" +#if (QT_VERSION >= QT_VERSION_CHECK(5, 12, 0)) #include "xatom-helper.h" +#endif +#if (QT_VERSION < QT_VERSION_CHECK(5, 12, 0)) +#include "settings-widget.h" +#endif #include "create-index-ask-dialog.h" #define UKUI_SEARCH_SCHEMAS "org.ukui.search.settings" @@ -82,7 +86,9 @@ public: void centerToScreen(QWidget* widget); void initGsettings(); +#if (QT_VERSION >= QT_VERSION_CHECK(5, 12, 0)) MotifWmHints m_hints; +#endif private: @@ -95,7 +101,9 @@ private: QLabel * m_iconLabel = nullptr; // Icon lable QLabel * m_titleLabel = nullptr; // Title lable QPushButton * m_menuBtn = nullptr; // Menu button -// SettingsWidget * m_settingsWidget = nullptr; // Settings Widget +#if (QT_VERSION < QT_VERSION_CHECK(5, 12, 0)) + SettingsWidget * m_settingsWidget = nullptr; // Settings Widget +#endif ContentWidget * m_contentFrame = nullptr; // Content frame SearchBarHLayout * m_searchLayout = nullptr; // Search bar layout SeachBarWidget * m_searchWidget = nullptr; // Search bar diff --git a/src/settings-widget.cpp b/src/settings-widget.cpp index f3b164c..afca905 100644 --- a/src/settings-widget.cpp +++ b/src/settings-widget.cpp @@ -37,10 +37,12 @@ SettingsWidget::SettingsWidget(QWidget *parent) : QWidget(parent) { // this->setWindowFlags(Qt::CustomizeWindowHint | Qt::FramelessWindowHint); // this->setAttribute(Qt::WA_TranslucentBackground); +#if (QT_VERSION >= QT_VERSION_CHECK(5, 12, 0)) m_hints.flags = MWM_HINTS_FUNCTIONS | MWM_HINTS_DECORATIONS; m_hints.functions = MWM_FUNC_ALL; m_hints.decorations = MWM_DECOR_BORDER; XAtomHelper::getInstance()->setWindowMotifHint(winId(), m_hints); +#endif initUi(); refreshIndexState(); @@ -224,6 +226,11 @@ void SettingsWidget::initUi() { // m_mainLyt->addWidget(m_bottomBtnFrame); m_contentLyt->addStretch(); + +#if (QT_VERSION < QT_VERSION_CHECK(5, 12, 0)) + this->m_titleFrame->hide(); + setAttribute(Qt::WA_DeleteOnClose); +#endif } /** @@ -374,7 +381,9 @@ void SettingsWidget::showWidget() { flags &= ~Qt::WindowStaysOnTopHint; this->setWindowFlags(flags); m_timer->start(); +#if (QT_VERSION >= QT_VERSION_CHECK(5, 12, 0)) XAtomHelper::getInstance()->setWindowMotifHint(winId(), m_hints); +#endif this->show(); } diff --git a/src/settings-widget.h b/src/settings-widget.h index 56143ed..421a099 100644 --- a/src/settings-widget.h +++ b/src/settings-widget.h @@ -33,7 +33,9 @@ #include #include #include +#if (QT_VERSION >= QT_VERSION_CHECK(5, 12, 0)) #include "xatom-helper.h" +#endif namespace Zeeker { class SettingsWidget : public QWidget { @@ -56,7 +58,9 @@ private: void resize(); void showWarningDialog(const int&); +#if (QT_VERSION >= QT_VERSION_CHECK(5, 12, 0)) MotifWmHints m_hints; +#endif //标题栏 QVBoxLayout * m_mainLyt = nullptr;