]> cloud.milkyroute.net Git - dolphin.git/commitdiff
DolphinSearchBox: Add a "More search tools..." menu button
authorGregor Mi <codestruct@posteo.org>
Fri, 20 Jan 2017 23:07:49 +0000 (00:07 +0100)
committerAlbert Astals Cid <aacid@kde.org>
Fri, 20 Jan 2017 23:07:49 +0000 (00:07 +0100)
Additionally, moves the "More/Fewer options" button from right to left to reduce the mouse travelling distance when the dolphin is maximized on a large screen (see screenshots)

The current location url will be passed to the search tool to set the initial search root directory.

REVIEW: 123883

src/search/dolphinsearchbox.cpp
src/search/dolphinsearchbox.h

index 60a4a7567acb8d631a8d9617170a80e27a70ea52..5d5906b789579d033153187101c291bc681e82c2 100644 (file)
@@ -26,6 +26,7 @@
 #include <QLineEdit>
 #include <KLocalizedString>
 #include <KSeparator>
+#include <KNS3/KMoreToolsMenuFactory>
 
 #include <QButtonGroup>
 #include <QDir>
@@ -385,6 +386,20 @@ void DolphinSearchBox::init()
     searchLocationGroup->addButton(m_fromHereButton);
     searchLocationGroup->addButton(m_everywhereButton);
 
+    auto moreSearchToolsButton = new QToolButton(this);
+    moreSearchToolsButton->setAutoRaise(true);
+    moreSearchToolsButton->setPopupMode(QToolButton::InstantPopup);
+    moreSearchToolsButton->setIcon(QIcon::fromTheme("arrow-down-double"));
+    moreSearchToolsButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
+    moreSearchToolsButton->setText(i18n("More Search Tools"));
+    moreSearchToolsButton->setMenu(new QMenu(this));
+    connect(moreSearchToolsButton->menu(), &QMenu::aboutToShow, moreSearchToolsButton->menu(), [this, moreSearchToolsButton]()
+    {
+        m_menuFactory.reset(new KMoreToolsMenuFactory("dolphin/search-tools"));
+        moreSearchToolsButton->menu()->clear();
+        m_menuFactory->fillMenuFromGroupingNames(moreSearchToolsButton->menu(), { "files-find" }, this->m_searchPath);
+    } );
+
     // Create "Facets" widgets
     m_facetsToggleButton = new QToolButton(this);
     m_facetsToggleButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
@@ -404,8 +419,10 @@ void DolphinSearchBox::init()
     optionsLayout->addWidget(m_separator);
     optionsLayout->addWidget(m_fromHereButton);
     optionsLayout->addWidget(m_everywhereButton);
-    optionsLayout->addStretch(1);
+    optionsLayout->addWidget(new KSeparator(Qt::Vertical, this));
     optionsLayout->addWidget(m_facetsToggleButton);
+    optionsLayout->addWidget(moreSearchToolsButton);
+    optionsLayout->addStretch(1);
 
     // Put the options into a QScrollArea. This prevents increasing the view width
     // in case that not enough width for the options is available.
index b747679ec272af8a88dc788612ebb3e00b0b26b9..5063c2bf506e5c79b2e1e2766153f5c7022b2119 100644 (file)
@@ -30,6 +30,7 @@ class QToolButton;
 class QScrollArea;
 class QLabel;
 class QVBoxLayout;
+class KMoreToolsMenuFactory;
 
 /**
  * @brief Input box for searching files with or without Baloo.
@@ -176,6 +177,7 @@ private:
     DolphinFacetsWidget* m_facetsWidget;
 
     QUrl m_searchPath;
+    QScopedPointer<KMoreToolsMenuFactory> m_menuFactory;
 
     QTimer* m_startSearchTimer;
 };