]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/search/dolphinfacetswidget.cpp
Move Folders item closer to the top
[dolphin.git] / src / search / dolphinfacetswidget.cpp
index b183eb8a130eee8e05f7d7a2645f419086ccaa23..7831d4c127b8ac9e68d6be1930df4dd249985c73 100644 (file)
@@ -29,6 +29,7 @@
 
 DolphinFacetsWidget::DolphinFacetsWidget(QWidget* parent) :
     QWidget(parent),
+    m_folders(0),
     m_documents(0),
     m_images(0),
     m_audio(0),
@@ -48,6 +49,7 @@ DolphinFacetsWidget::DolphinFacetsWidget(QWidget* parent) :
 {
     QButtonGroup* filetypeGroup = new QButtonGroup(this);
     m_anyType   = createRadioButton(i18nc("@option:check", "Any"), filetypeGroup);
+    m_folders   = createRadioButton(i18nc("@option:check", "Folders"), 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);
@@ -56,6 +58,7 @@ DolphinFacetsWidget::DolphinFacetsWidget(QWidget* parent) :
     QVBoxLayout* typeLayout = new QVBoxLayout();
     typeLayout->setSpacing(0);
     typeLayout->addWidget(m_anyType);
+    typeLayout->addWidget(m_folders);
     typeLayout->addWidget(m_documents);
     typeLayout->addWidget(m_images);
     typeLayout->addWidget(m_audio);
@@ -112,11 +115,9 @@ DolphinFacetsWidget::~DolphinFacetsWidget()
 {
 }
 
-#ifdef HAVE_BALOO
-Baloo::Term DolphinFacetsWidget::ratingTerm() const
+QString DolphinFacetsWidget::ratingTerm() const
 {
-    Baloo::Term ratingTerm;
-    Baloo::Term modifiedTerm;
+    QStringList terms;
 
     if (!m_anyRating->isChecked()) {
         int stars = 1; // represents m_oneOrMore
@@ -131,7 +132,7 @@ Baloo::Term DolphinFacetsWidget::ratingTerm() const
         }
 
         const int rating = stars * 2;
-        ratingTerm = Baloo::Term("rating", rating, Baloo::Term::GreaterEqual);
+        terms << QStringLiteral("rating>=%1").arg(rating);
     }
 
     if (!m_anytime->isChecked()) {
@@ -146,88 +147,68 @@ Baloo::Term DolphinFacetsWidget::ratingTerm() const
             date = date.addDays(1 - date.dayOfYear());
         }
 
-        modifiedTerm = Baloo::Term("modified", date, Baloo::Term::GreaterEqual);
+        terms << QStringLiteral("modified>=%1").arg(date.toString(Qt::ISODate));
     }
 
-    if (ratingTerm.isValid() && modifiedTerm.isValid()) {
-        Baloo::Term term(Baloo::Term::And);
-        term.addSubTerm(ratingTerm);
-        term.addSubTerm(modifiedTerm);
-
-        return term;
-    } else if (modifiedTerm.isValid()) {
-        return modifiedTerm;
-    } else if (ratingTerm.isValid()) {
-        return ratingTerm;
-    }
-
-    return Baloo::Term();
+    return terms.join(QStringLiteral(" AND "));
 }
 
 QString DolphinFacetsWidget::facetType() const
 {
-    if (m_documents->isChecked()) {
-        return QLatin1String("Document");
+    if (m_folders->isChecked()) {
+        return QStringLiteral("Folder");
+    } else if (m_documents->isChecked()) {
+        return QStringLiteral("Document");
     } else if (m_images->isChecked()) {
-        return QLatin1String("Image");
+        return QStringLiteral("Image");
     } else if (m_audio->isChecked()) {
-        return QLatin1String("Audio");
+        return QStringLiteral("Audio");
     } else if (m_videos->isChecked()) {
-        return QLatin1String("Video");
+        return QStringLiteral("Video");
     }
 
     return QString();
 }
 
-bool DolphinFacetsWidget::isRatingTerm(const Baloo::Term& term) const
+bool DolphinFacetsWidget::isRatingTerm(const QString& term) const
 {
-    const QList<Baloo::Term> subTerms = term.subTerms();
-    if (subTerms.isEmpty()) {
-        // If term has no sub terms, then the term itself is either a "rating" term
-        // or a "modified" term.
-        return term.property() == QLatin1String("modified") ||
-               term.property() == QLatin1String("rating");
-
-    } else if (subTerms.size() == 2) {
-        // If term has sub terms, then the sub terms are always "rating" and "modified" terms.
-
-        QStringList properties;
-        foreach (const Baloo::Term& subTerm, subTerms) {
-            properties << subTerm.property();
-        }
+    const QStringList subTerms = term.split(' ', QString::SkipEmptyParts);
+
+    // If term has sub terms, then sone of the sub terms are always "rating" and "modified" terms.
+    bool containsRating = false;
+    bool containsModified = false;
 
-        return properties.contains(QLatin1String("modified")) &&
-               properties.contains(QLatin1String("rating"));
+    foreach (const QString& subTerm, subTerms) {
+        if (subTerm.startsWith(QLatin1String("rating>="))) {
+            containsRating = true;
+        } else if (subTerm.startsWith(QLatin1String("modified>="))) {
+            containsModified = true;
+        }
     }
 
-    return false;
+    return containsModified || containsRating;
 }
 
-void DolphinFacetsWidget::setRatingTerm(const Baloo::Term& term)
+void DolphinFacetsWidget::setRatingTerm(const QString& term)
 {
     // If term has sub terms, then the sub terms are always "rating" and "modified" terms.
     // If term has no sub terms, then the term itself is either a "rating" term or a "modified"
     // term. To avoid code duplication we add term to subTerms list, if the list is empty.
-    QList<Baloo::Term> subTerms = term.subTerms();
-    if (subTerms.isEmpty()) {
-        subTerms << term;
-    }
+    QStringList subTerms = term.split(' ', QString::SkipEmptyParts);
 
-    foreach (const Baloo::Term& subTerm, subTerms) {
-        const QString property = subTerm.property();
-
-        if (property == QLatin1String("modified")) {
-            const QDate date = subTerm.value().toDate();
+    foreach (const QString& subTerm, subTerms) {
+        if (subTerm.startsWith(QLatin1String("modified>="))) {
+            const QString value = subTerm.mid(10);
+            const QDate date = QDate::fromString(value, Qt::ISODate);
             setTimespan(date);
-        } else if (property == QLatin1String("rating")) {
-            const int stars = subTerm.value().toInt() / 2;
+        } else if (subTerm.startsWith(QLatin1String("rating>="))) {
+            const QString value = subTerm.mid(8);
+            const int stars = value.toInt() / 2;
             setRating(stars);
         }
     }
 }
 
-#endif
-
 void DolphinFacetsWidget::setFacetType(const QString& type)
 {
     if (type == QLatin1String("Document")) {