]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Dolphin Facet Widget: Convert type selection into radio buttons
authorVishesh Handa <me@vhanda.in>
Mon, 24 Mar 2014 09:48:53 +0000 (10:48 +0100)
committerVishesh Handa <me@vhanda.in>
Mon, 24 Mar 2014 13:38:15 +0000 (14:38 +0100)
They were previously checkboxes. Most files cannot have more than 1 type
considering that the exposed types were "Document", "Image", "Video" and
"Audio".

Also, it is not very simple in baloo to search through ORs for types.
Not through the exposed API anyway.

REVIEW: 117015

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

index aec84d321ec53ae502a5cf4016198bfccacc6254..3824eb94c69063dd747768dfc07896ffd80fcecd 100644 (file)
@@ -46,13 +46,16 @@ DolphinFacetsWidget::DolphinFacetsWidget(QWidget* parent) :
     m_fourOrMore(0),
     m_maxRating(0)
 {
-    m_documents = createCheckBox(i18nc("@option:check", "Documents"));
-    m_images    = createCheckBox(i18nc("@option:check", "Images"));
-    m_audio     = createCheckBox(i18nc("@option:check", "Audio Files"));
-    m_videos    = createCheckBox(i18nc("@option:check", "Videos"));
+    QButtonGroup* filetypeGroup = new QButtonGroup(this);
+    m_anyType   = createRadioButton(i18nc("@option:check", "Any"), filetypeGroup);
+    m_documents = createRadioButton(i18nc("@option:check", "Documents"), filetypeGroup);
+    m_images    = createRadioButton(i18nc("@option:check", "Images"), filetypeGroup);
+    m_audio     = createRadioButton(i18nc("@option:check", "Audio Files"), filetypeGroup);
+    m_videos    = createRadioButton(i18nc("@option:check", "Videos"), filetypeGroup);
 
     QVBoxLayout* typeLayout = new QVBoxLayout();
     typeLayout->setSpacing(0);
+    typeLayout->addWidget(m_anyType);
     typeLayout->addWidget(m_documents);
     typeLayout->addWidget(m_images);
     typeLayout->addWidget(m_audio);
@@ -160,38 +163,24 @@ Baloo::Term DolphinFacetsWidget::ratingTerm() const
     return Baloo::Term();
 }
 
-QStringList DolphinFacetsWidget::facetTypes() const
+QString DolphinFacetsWidget::facetType() const
 {
-    QStringList types;
     if (m_documents->isChecked()) {
-        types << "Document";
+        return QLatin1String("Document");
+    } else if (m_images->isChecked()) {
+        return QLatin1String("Image");
+    } else if (m_audio->isChecked()) {
+        return QLatin1String("Audio");
+    } else if (m_videos->isChecked()) {
+        return QLatin1String("Video");
     }
 
-    if (m_images->isChecked()) {
-        types << "Image";
-    }
-
-    if (m_audio->isChecked()) {
-        types << "Audio";
-    }
-
-    if (m_videos->isChecked()) {
-        types << "Video";
-    }
-
-    return types;
+    return QString();
 }
 
 #endif
 
 
-QCheckBox* DolphinFacetsWidget::createCheckBox(const QString& text)
-{
-    QCheckBox* checkBox = new QCheckBox(text);
-    connect(checkBox, SIGNAL(clicked()), this, SIGNAL(facetChanged()));
-    return checkBox;
-}
-
 QRadioButton* DolphinFacetsWidget::createRadioButton(const QString& text,
                                                      QButtonGroup* group)
 {
index 526fe1c798d59483b76da477048e44e5460c87d6..1fd1683dabd686a35570f20f8f47db1c7db6293c 100644 (file)
@@ -57,20 +57,13 @@ public:
 
 #ifdef HAVE_BALOO
     Baloo::Term ratingTerm() const;
-    QStringList facetTypes() const;
+    QString facetType() const;
 #endif
 
 signals:
     void facetChanged();
 
 private:
-    /**
-     * @return New checkbox which is connected to the
-     *         slotFacedChanged() slot whenever it has
-     *         been toggled.
-     */
-    QCheckBox* createCheckBox(const QString& text);
-
     /**
      * @return New radiobutton which is connected to the
      *         slotFacedChanged() slot whenever it has
@@ -80,10 +73,11 @@ private:
                                     QButtonGroup* group);
 
 private:
-    QCheckBox* m_documents;
-    QCheckBox* m_images;
-    QCheckBox* m_audio;
-    QCheckBox* m_videos;
+    QRadioButton* m_anyType;
+    QRadioButton* m_documents;
+    QRadioButton* m_images;
+    QRadioButton* m_audio;
+    QRadioButton* m_videos;
 
     QRadioButton* m_anytime;
     QRadioButton* m_today;
index 9aba4c9541d0c3f92bf5f2196a0edfbdac0d00c0..0a70566823fc376a001a2b1daf6823438d85772e 100644 (file)
@@ -436,7 +436,7 @@ KUrl DolphinSearchBox::balooUrlForSearching() const
 
     Baloo::Query query;
     query.addType("File");
-    query.addTypes(m_facetsWidget->facetTypes());
+    query.addType(m_facetsWidget->facetType());
 
     Baloo::Term term(Baloo::Term::And);