]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Provide a hook for externally triggered search queries
authorPeter Penz <peter.penz19@gmail.com>
Sat, 5 Feb 2011 22:33:08 +0000 (23:33 +0100)
committerPeter Penz <peter.penz19@gmail.com>
Sat, 5 Feb 2011 22:33:08 +0000 (23:33 +0100)
In this case the "From Here"/"Everywhere" buttons and the "Filename"/"Content" buttons are useless. Currently they just get disabled but the plan is to provide a better visual indication of the current query and to remove them completely.

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

index 9222598587af984fac13936480d0c9f613a06212..dd70ed24ec79a8bd169d274506bf3abf38166377 100644 (file)
@@ -212,13 +212,13 @@ void DolphinViewContainer::setSearchModeEnabled(bool enabled)
     m_urlNavigator->setVisible(!enabled);
 
     if (enabled) {
+        KUrl url = m_urlNavigator->locationUrl();
         m_searchBox->setText(QString());
+        m_searchBox->setReadOnly(isSearchUrl(url));
 
         // Remember the most recent non-search URL as search path
         // of the search-box, so that it can be restored
         // when switching back to the URL navigator.
-        KUrl url = m_urlNavigator->locationUrl();
-
         int index = m_urlNavigator->historyIndex();
         const int historySize = m_urlNavigator->historySize();
         while (isSearchUrl(url) && (index < historySize)) {
index c7d08ff1fae9e6cb8a21a20a493dd9b92fb25f16..dfffff4bb7d4fc76b02306dc3af1773ba94c889a 100644 (file)
@@ -56,6 +56,7 @@
 DolphinSearchBox::DolphinSearchBox(QWidget* parent) :
     QWidget(parent),
     m_startedSearching(false),
+    m_readOnly(false),
     m_topLayout(0),
     m_searchInput(0),
     m_fileNameButton(0),
@@ -63,6 +64,7 @@ DolphinSearchBox::DolphinSearchBox(QWidget* parent) :
     m_separator(0),
     m_fromHereButton(0),
     m_everywhereButton(0),
+    m_infoLabel(0),
     m_searchPath(),
     m_startSearchTimer(0)
 {
@@ -146,6 +148,19 @@ void DolphinSearchBox::selectAll()
     m_searchInput->selectAll();
 }
 
+void DolphinSearchBox::setReadOnly(bool readOnly)
+{
+    if (m_readOnly != readOnly) {
+        m_readOnly = readOnly;
+        applyReadOnlyState();
+    }
+}
+
+bool DolphinSearchBox::isReadOnly() const
+{
+    return m_readOnly;
+}
+
 bool DolphinSearchBox::event(QEvent* event)
 {
     if (event->type() == QEvent::Polish) {
@@ -256,12 +271,16 @@ void DolphinSearchBox::init()
     connect(m_searchInput, SIGNAL(textChanged(QString)),
             this, SLOT(slotSearchTextChanged(QString)));
 
+    // Create information label
+    m_infoLabel = new QLabel("TODO: Provide information about the current query", this);
+
     // Apply layout for the search input
     QHBoxLayout* searchInputLayout = new QHBoxLayout();
     searchInputLayout->setMargin(0);
     searchInputLayout->addWidget(closeButton);
     searchInputLayout->addWidget(searchLabel);
     searchInputLayout->addWidget(m_searchInput);
+    searchInputLayout->addWidget(m_infoLabel);
 
     // Create "Filename" and "Content" button
     m_fileNameButton = new QPushButton(this);
@@ -327,6 +346,8 @@ void DolphinSearchBox::init()
     m_startSearchTimer->setSingleShot(true);
     m_startSearchTimer->setInterval(1000);
     connect(m_startSearchTimer, SIGNAL(timeout()), this, SLOT(emitSearchSignal()));
+
+    applyReadOnlyState();
 }
 
 KUrl DolphinSearchBox::nepomukUrlForSearching() const
@@ -370,4 +391,16 @@ KUrl DolphinSearchBox::nepomukUrlForSearching() const
 #endif
 }
 
+void DolphinSearchBox::applyReadOnlyState()
+{
+    // TODO: This is just an early draft to indicate that a state change
+    // has been done
+    m_searchInput->setVisible(!m_readOnly);
+    m_infoLabel->setVisible(m_readOnly);
+    m_fileNameButton->setEnabled(!m_readOnly);
+    m_contentButton->setEnabled(!m_readOnly);
+    m_fromHereButton->setEnabled(!m_readOnly);
+    m_everywhereButton->setEnabled(!m_readOnly);
+}
+
 #include "dolphinsearchbox.moc"
index 07fda5c298dd7a9d2dcf53bafdd0582daa969bdb..cb480629211109e0327c6b125117a015fefe64af 100644 (file)
@@ -25,6 +25,7 @@
 #include <QWidget>
 
 class AbstractSearchFilterWidget;
+class QLabel;
 class KLineEdit;
 class KSeparator;
 class QFormLayout;
@@ -75,6 +76,14 @@ public:
      */
     void selectAll();
 
+    /**
+     * @param readOnly If set to true the searchbox cannot be modified
+     *                 by the user and acts as visual indicator for
+     *                 an externally triggered search query.
+     */
+    void setReadOnly(bool readOnly);
+    bool isReadOnly() const;
+
 protected:
     virtual bool event(QEvent* event);
     virtual void showEvent(QShowEvent* event);
@@ -118,8 +127,11 @@ private:
      */
     KUrl nepomukUrlForSearching() const;
 
+    void applyReadOnlyState();
+
 private:
     bool m_startedSearching;
+    bool m_readOnly;
 
     QVBoxLayout* m_topLayout;
 
@@ -130,6 +142,8 @@ private:
     QPushButton* m_fromHereButton;
     QPushButton* m_everywhereButton;
 
+    QLabel* m_infoLabel;
+
     KUrl m_searchPath;
 
     QTimer* m_startSearchTimer;