diff --git a/src/dolphincontextmenu.cpp b/src/dolphincontextmenu.cpp --- a/src/dolphincontextmenu.cpp +++ b/src/dolphincontextmenu.cpp @@ -305,8 +305,8 @@ const QUrl selectedUrl(m_fileInfo.url()); if (selectedUrl.isValid()) { PlacesItemModel model; - const QString text = selectedUrl.fileName(); - PlacesItem* item = model.createPlacesItem(text, selectedUrl, KIO::iconNameForUrl(selectedUrl)); + const DolphinViewContainer* container = m_mainWindow->activeViewContainer(); + PlacesItem* item = model.createPlacesItem(container->placesText(), selectedUrl, KIO::iconNameForUrl(selectedUrl)); model.appendItemToGroup(item); model.saveBookmarks(); } diff --git a/src/dolphinviewcontainer.cpp b/src/dolphinviewcontainer.cpp --- a/src/dolphinviewcontainer.cpp +++ b/src/dolphinviewcontainer.cpp @@ -362,7 +362,7 @@ QString text; if (isSearchModeEnabled()) { - text = m_searchBox->searchPath().fileName() + QLatin1String(": ") + m_searchBox->text(); + text = i18n("Search for %1 in %2", m_searchBox->text(), m_searchBox->searchPath().fileName()); } else { text = url().fileName(); if (text.isEmpty()) { diff --git a/src/search/dolphinsearchbox.h b/src/search/dolphinsearchbox.h --- a/src/search/dolphinsearchbox.h +++ b/src/search/dolphinsearchbox.h @@ -26,6 +26,7 @@ class DolphinFacetsWidget; class QLineEdit; class KSeparator; +class QPushButton; class QToolButton; class QScrollArea; class QLabel; @@ -139,6 +140,7 @@ void slotReturnPressed(); void slotFacetsButtonToggled(); void slotFacetChanged(); + void slotSearchSaved(); private: void initButton(QToolButton* button); @@ -167,6 +169,7 @@ QLabel* m_searchLabel; QLineEdit* m_searchInput; + QPushButton* m_saveSearchButton; QScrollArea* m_optionsScrollArea; QToolButton* m_fileNameButton; QToolButton* m_contentButton; diff --git a/src/search/dolphinsearchbox.cpp b/src/search/dolphinsearchbox.cpp --- a/src/search/dolphinsearchbox.cpp +++ b/src/search/dolphinsearchbox.cpp @@ -22,11 +22,14 @@ #include "dolphin_searchsettings.h" #include "dolphinfacetswidget.h" +#include + #include #include #include #include #include +#include #include #include @@ -36,6 +39,7 @@ #include #include #include +#include #include #include #include @@ -54,6 +58,7 @@ m_topLayout(0), m_searchLabel(0), m_searchInput(0), + m_saveSearchButton(0), m_optionsScrollArea(0), m_fileNameButton(0), m_contentButton(0), @@ -250,13 +255,15 @@ { m_startSearchTimer->stop(); m_startedSearching = true; + m_saveSearchButton->setVisible(true); emit searchRequest(); } void DolphinSearchBox::emitCloseRequest() { m_startSearchTimer->stop(); m_startedSearching = false; + m_saveSearchButton->setVisible(false); emit closeRequest(); } @@ -299,6 +306,20 @@ emit searchRequest(); } +void DolphinSearchBox::slotSearchSaved() +{ + QUrl searchURL = urlForSearching(); + if (searchURL.isValid()) { + PlacesItemModel model; + const QString label = i18n("Search for %1 in %2", text(), searchPath().fileName()); + PlacesItem* item = model.createPlacesItem(label, + searchURL, + KIO::iconNameForUrl(searchURL)); + model.appendItemToGroup(item); + model.saveBookmarks(); + } +} + void DolphinSearchBox::initButton(QToolButton* button) { button->installEventFilter(this); @@ -356,12 +377,21 @@ this, &DolphinSearchBox::slotSearchTextChanged); setFocusProxy(m_searchInput); + // Create "Save search" button + m_saveSearchButton = new QPushButton(this); + m_saveSearchButton->setText(i18nc("action:button", "Save search")); + m_saveSearchButton->setIcon(QIcon::fromTheme(QStringLiteral("document-save-symbolic"))); + m_saveSearchButton->setToolTip(i18nc("@info:tooltip", "Save this search to quickly access it again in the future")); + m_saveSearchButton->setVisible(false); + connect(m_saveSearchButton, &QToolButton::clicked, this, &DolphinSearchBox::slotSearchSaved); + // Apply layout for the search input QHBoxLayout* searchInputLayout = new QHBoxLayout(); searchInputLayout->setMargin(0); searchInputLayout->addWidget(closeButton); searchInputLayout->addWidget(m_searchLabel); searchInputLayout->addWidget(m_searchInput); + searchInputLayout->addWidget(m_saveSearchButton); // Create "Filename" and "Content" button m_fileNameButton = new QToolButton(this);