X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/32b51b7b92e16cfaf1121cbe80ca267fc8bb0718..1ad3b7775ec7388352d3a02c704062baa5d0aca3:/src/search/dolphinfacetswidget.cpp diff --git a/src/search/dolphinfacetswidget.cpp b/src/search/dolphinfacetswidget.cpp index 8e1a9c470..7831d4c12 100644 --- a/src/search/dolphinfacetswidget.cpp +++ b/src/search/dolphinfacetswidget.cpp @@ -19,7 +19,7 @@ #include "dolphinfacetswidget.h" -#include +#include #include #include #include @@ -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 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 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")) {