From 0abf14b7a5a5c12402e37d4e5f143eddf5371604 Mon Sep 17 00:00:00 2001 From: Jean-Francois Dockes Date: Thu, 7 Mar 2019 10:06:41 +0100 Subject: [PATCH] Arrange for the preview window title to be the search string for simple searches --- src/qtgui/advsearch_w.cpp | 1 + src/qtgui/advsearch_w.h | 3 ++- src/qtgui/rclm_wins.cpp | 2 ++ src/qtgui/rclmain_w.cpp | 10 +++++++++- src/qtgui/rclmain_w.h | 9 +++++++-- src/qtgui/ssearch_w.cpp | 1 + src/qtgui/ssearch_w.h | 1 + 7 files changed, 23 insertions(+), 4 deletions(-) diff --git a/src/qtgui/advsearch_w.cpp b/src/qtgui/advsearch_w.cpp index 3440251d..fcffa509 100644 --- a/src/qtgui/advsearch_w.cpp +++ b/src/qtgui/advsearch_w.cpp @@ -474,6 +474,7 @@ void AdvSearch::runSearch() } saveCnf(); g_advshistory && g_advshistory->push(sdata); + emit setDescription(""); emit startSearch(sdata, false); } diff --git a/src/qtgui/advsearch_w.h b/src/qtgui/advsearch_w.h index f9d6ece0..63fcdd88 100644 --- a/src/qtgui/advsearch_w.h +++ b/src/qtgui/advsearch_w.h @@ -67,7 +67,8 @@ public slots: signals: void startSearch(std::shared_ptr, bool); - + void setDescription(QString); + private: virtual void init(); std::vector m_clauseWins; diff --git a/src/qtgui/rclm_wins.cpp b/src/qtgui/rclm_wins.cpp index d38beffc..5547380c 100644 --- a/src/qtgui/rclm_wins.cpp +++ b/src/qtgui/rclm_wins.cpp @@ -51,6 +51,8 @@ void RclMain::showAdvSearchDialog() connect(asearchform, SIGNAL(startSearch(std::shared_ptr, bool)), this, SLOT(startSearch(std::shared_ptr, bool))); + connect(asearchform, SIGNAL(setDescription(QString)), + this, SLOT(onSetDescription(QString))); asearchform->show(); } else { // Close and reopen, in hope that makes us visible... diff --git a/src/qtgui/rclmain_w.cpp b/src/qtgui/rclmain_w.cpp index 9b86a46e..41f04865 100644 --- a/src/qtgui/rclmain_w.cpp +++ b/src/qtgui/rclmain_w.cpp @@ -297,6 +297,8 @@ void RclMain::init() connect(sSearch, SIGNAL(startSearch(std::shared_ptr, bool)), this, SLOT(startSearch(std::shared_ptr, bool))); + connect(sSearch, SIGNAL(setDescription(QString)), + this, SLOT(onSetDescription(QString))); connect(sSearch, SIGNAL(clearSearch()), this, SLOT(resetSearch())); connect(preferencesMenu, SIGNAL(triggered(QAction*)), @@ -1085,11 +1087,17 @@ void RclMain::enablePrevPage(bool yesno) } } +void RclMain::onSetDescription(QString desc) +{ + m_queryDescription = desc; +} + QString RclMain::getQueryDescription() { if (!m_source) return ""; - return QString::fromUtf8(m_source->getDescription().c_str()); + return m_queryDescription.isEmpty() ? + u8s2qs(m_source->getDescription()) : m_queryDescription; } // Set filter, action style diff --git a/src/qtgui/rclmain_w.h b/src/qtgui/rclmain_w.h index 0cf62429..97bcebb3 100644 --- a/src/qtgui/rclmain_w.h +++ b/src/qtgui/rclmain_w.h @@ -160,7 +160,8 @@ public slots: virtual void applyStyleSheet(); virtual void setFilterCtlStyle(int stl); virtual void showTrayMessage(const QString& text); - + virtual void onSetDescription(QString); + private slots: virtual void updateIdxStatus(); virtual void onWebcacheDestroyed(QObject *); @@ -216,7 +217,11 @@ private: bool m_queryActive{false}; bool m_firstIndexing{false}; // Last search was started from simple - bool m_searchIsSimple{false}; + bool m_searchIsSimple{false}; + // This is set to the query string by ssearch, and to empty by + // advsearch, and used for the Preview window title. If empty, we + // use the Xapian Query string. + QString m_queryDescription; // If set on init, will be displayed either through ext app, or // preview (if no ext app set) QString m_urltoview; diff --git a/src/qtgui/ssearch_w.cpp b/src/qtgui/ssearch_w.cpp index ec2505da..c9b2fecb 100644 --- a/src/qtgui/ssearch_w.cpp +++ b/src/qtgui/ssearch_w.cpp @@ -426,6 +426,7 @@ bool SSearch::startSimpleSearch(const string& u8, int maxexp) LOGDEB("SSearch::startSimpleSearch:xml:[" << m_xml << "]\n"); std::shared_ptr rsdata(sdata); + emit setDescription(u8s2qs(u8)); emit startSearch(rsdata, true); return true; } diff --git a/src/qtgui/ssearch_w.h b/src/qtgui/ssearch_w.h index 32ea79d2..f7b897a6 100644 --- a/src/qtgui/ssearch_w.h +++ b/src/qtgui/ssearch_w.h @@ -100,6 +100,7 @@ private slots: signals: void startSearch(std::shared_ptr, bool); + void setDescription(QString); void clearSearch(); void partialWord(int, const QString& text, const QString &partial);