]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphinviewcontainer.cpp
Provide a default name when adding a search query to the places panel
[dolphin.git] / src / dolphinviewcontainer.cpp
index 9d75ad816018ca870e0e07b34b125f32e1851d16..4d3f1983bc1dcdf6068ad35df6f1c18db769cddb 100644 (file)
 #include <KRun>
 
 #include "dolphin_generalsettings.h"
-#include "dolphinmainwindow.h"
 #include "filterbar/filterbar.h"
 #include "search/dolphinsearchbox.h"
 #include "statusbar/dolphinstatusbar.h"
-#include "views/dolphinplacesmodel.h"
 #include "views/draganddrophelper.h"
 #include "views/viewmodecontroller.h"
 #include "views/viewproperties.h"
@@ -64,7 +62,8 @@ DolphinViewContainer::DolphinViewContainer(const KUrl& url, QWidget* parent) :
     m_filterBar(0),
     m_statusBar(0),
     m_statusBarTimer(0),
-    m_statusBarTimestamp()
+    m_statusBarTimestamp(),
+    m_autoGrabFocus(true)
 {
     hide();
 
@@ -72,7 +71,7 @@ DolphinViewContainer::DolphinViewContainer(const KUrl& url, QWidget* parent) :
     m_topLayout->setSpacing(0);
     m_topLayout->setMargin(0);
 
-    m_urlNavigator = new KUrlNavigator(DolphinPlacesModel::instance(), url, this);
+    m_urlNavigator = new KUrlNavigator(new KFilePlacesModel(this), url, this);
     connect(m_urlNavigator, SIGNAL(urlsDropped(KUrl,QDropEvent*)),
             this, SLOT(dropUrls(KUrl,QDropEvent*)));
     connect(m_urlNavigator, SIGNAL(activated()),
@@ -90,7 +89,7 @@ DolphinViewContainer::DolphinViewContainer(const KUrl& url, QWidget* parent) :
     m_searchBox = new DolphinSearchBox(this);
     m_searchBox->hide();
     connect(m_searchBox, SIGNAL(closeRequest()), this, SLOT(closeSearchBox()));
-    connect(m_searchBox, SIGNAL(search(QString)), this, SLOT(startSearching(QString)));
+    connect(m_searchBox, SIGNAL(searchRequest()), this, SLOT(startSearching()));
     connect(m_searchBox, SIGNAL(returnPressed(QString)), this, SLOT(requestFocus()));
 
     m_messageWidget = new KMessageWidget(this);
@@ -111,8 +110,6 @@ DolphinViewContainer::DolphinViewContainer(const KUrl& url, QWidget* parent) :
     connect(m_view, SIGNAL(selectionChanged(KFileItemList)),    this, SLOT(delayedStatusBarUpdate()));
     connect(m_view, SIGNAL(urlAboutToBeChanged(KUrl)),          this, SLOT(slotViewUrlAboutToBeChanged(KUrl)));
     connect(m_view, SIGNAL(errorMessage(QString)),              this, SLOT(showErrorMessage(QString)));
-    connect(m_view, SIGNAL(infoMessage(QString)),               this, SLOT(showInfoMessage(QString)));
-    connect(m_view, SIGNAL(operationCompletedMessage(QString)), m_statusBar, SLOT(setText(QString)));
 
     connect(m_urlNavigator, SIGNAL(urlAboutToBeChanged(KUrl)),
             this, SLOT(slotUrlNavigatorLocationAboutToBeChanged(KUrl)));
@@ -125,10 +122,12 @@ DolphinViewContainer::DolphinViewContainer(const KUrl& url, QWidget* parent) :
     m_statusBar = new DolphinStatusBar(this);
     m_statusBar->setUrl(m_view->url());
     m_statusBar->setZoomLevel(m_view->zoomLevel());
-    connect(m_view, SIGNAL(urlChanged(KUrl)), m_statusBar, SLOT(setUrl(KUrl)));
-    connect(m_view, SIGNAL(zoomLevelChanged(int,int)), m_statusBar, SLOT(setZoomLevel(int)));
-    connect(m_statusBar, SIGNAL(stopPressed()), this, SLOT(stopDirectoryLoading()));
-    connect(m_statusBar, SIGNAL(zoomLevelChanged(int)), this, SLOT(slotStatusBarZoomLevelChanged(int)));
+    connect(m_view, SIGNAL(urlChanged(KUrl)),                   m_statusBar, SLOT(setUrl(KUrl)));
+    connect(m_view, SIGNAL(zoomLevelChanged(int,int)),          m_statusBar, SLOT(setZoomLevel(int)));
+    connect(m_view, SIGNAL(infoMessage(QString)),               m_statusBar, SLOT(setText(QString)));
+    connect(m_view, SIGNAL(operationCompletedMessage(QString)), m_statusBar, SLOT(setText(QString)));
+    connect(m_statusBar, SIGNAL(stopPressed()),                 this, SLOT(stopDirectoryLoading()));
+    connect(m_statusBar, SIGNAL(zoomLevelChanged(int)),         this, SLOT(slotStatusBarZoomLevelChanged(int)));
 
     m_statusBarTimer = new QTimer(this);
     m_statusBarTimer->setSingleShot(true);
@@ -180,6 +179,16 @@ bool DolphinViewContainer::isActive() const
     return m_view->isActive();
 }
 
+void DolphinViewContainer::setAutoGrabFocus(bool grab)
+{
+    m_autoGrabFocus = grab;
+}
+
+bool DolphinViewContainer::autoGrabFocus() const
+{
+    return m_autoGrabFocus;
+}
+
 const DolphinStatusBar* DolphinViewContainer::statusBar() const
 {
     return m_statusBar;
@@ -210,16 +219,6 @@ DolphinView* DolphinViewContainer::view()
     return m_view;
 }
 
-const DolphinSearchBox* DolphinViewContainer::searchBox() const
-{
-    return m_searchBox;
-}
-
-DolphinSearchBox* DolphinViewContainer::searchBox()
-{
-    return m_searchBox;
-}
-
 void DolphinViewContainer::showMessage(const QString& msg, MessageType type)
 {
     if (msg.isEmpty()) {
@@ -297,6 +296,8 @@ void DolphinViewContainer::setSearchModeEnabled(bool enabled)
             m_searchBox->setSearchPath(url);
         }
     } else {
+        m_view->setViewPropertiesContext(QString());
+
         // Restore the URL for the URL navigator. If Dolphin has been
         // started with a search-URL, the home URL is used as fallback.
         const KUrl url = m_searchBox->searchPath();
@@ -308,8 +309,6 @@ void DolphinViewContainer::setSearchModeEnabled(bool enabled)
             }
         }
     }
-
-    emit searchModeChanged(enabled);
 }
 
 bool DolphinViewContainer::isSearchModeEnabled() const
@@ -317,6 +316,22 @@ bool DolphinViewContainer::isSearchModeEnabled() const
     return m_searchBox->isVisible();
 }
 
+QString DolphinViewContainer::placesText() const
+{
+    QString text;
+
+    if (isSearchModeEnabled()) {
+        text = m_searchBox->searchPath().fileName() + QLatin1String(": ") + m_searchBox->text();
+    } else {
+        text = url().fileName();
+        if (text.isEmpty()) {
+            text = url().host();
+        }
+    }
+
+    return text;
+}
+
 void DolphinViewContainer::setUrl(const KUrl& newUrl)
 {
     if (newUrl != m_urlNavigator->locationUrl()) {
@@ -508,7 +523,7 @@ void DolphinViewContainer::slotUrlNavigatorLocationChanged(const KUrl& url)
         setSearchModeEnabled(isSearchUrl(url));
         m_view->setUrl(url);
 
-        if (isActive() && !isSearchUrl(url)) {
+        if (m_autoGrabFocus && isActive() && !isSearchUrl(url)) {
             // When an URL has been entered, the view should get the focus.
             // The focus must be requested asynchronously, as changing the URL might create
             // a new view widget.
@@ -587,11 +602,11 @@ void DolphinViewContainer::slotHistoryChanged()
     }
 }
 
-void DolphinViewContainer::startSearching(const QString &text)
+void DolphinViewContainer::startSearching()
 {
-    Q_UNUSED(text);
     const KUrl url = m_searchBox->urlForSearching();
     if (url.isValid() && !url.isEmpty()) {
+        m_view->setViewPropertiesContext("search");
         m_urlNavigator->setLocationUrl(url);
     }
 }
@@ -617,11 +632,6 @@ void DolphinViewContainer::showErrorMessage(const QString& msg)
     showMessage(msg, Error);
 }
 
-void DolphinViewContainer::showInfoMessage(const QString& msg)
-{
-    showMessage(msg, Information);
-}
-
 bool DolphinViewContainer::isSearchUrl(const KUrl& url) const
 {
     const QString protocol = url.protocol();