{
}
-#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
}
const int rating = stars * 2;
- ratingTerm = Baloo::Term("rating", rating, Baloo::Term::GreaterEqual);
+ terms << QString::fromLatin1("rating>=%1").arg(rating);
}
if (!m_anytime->isChecked()) {
date = date.addDays(1 - date.dayOfYear());
}
- modifiedTerm = Baloo::Term("modified", date, Baloo::Term::GreaterEqual);
+ terms << QString::fromLatin1("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
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("rating>=")) {
+ containsRating = true;
+ } else if (subTerm.startsWith("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("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("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")) {
Baloo::Query query;
query.addType(m_facetsWidget->facetType());
- Baloo::Term term(Baloo::Term::And);
-
- Baloo::Term ratingTerm = m_facetsWidget->ratingTerm();
- if (ratingTerm.isValid()) {
- term.addSubTerm(ratingTerm);
+ QStringList queryStrings;
+ QString ratingQuery = m_facetsWidget->ratingTerm();
+ if (!ratingQuery.isEmpty()) {
+ queryStrings << ratingQuery;
}
if (m_contentButton->isChecked()) {
- query.setSearchString(text);
+ queryStrings << text;
} else if (!text.isEmpty()) {
- term.addSubTerm(Baloo::Term(QLatin1String("filename"), text));
+ queryStrings << QString::fromLatin1("filename:\"%1\"").arg(text);
}
if (m_fromHereButton->isChecked()) {
query.setIncludeFolder(m_searchPath.toLocalFile());
}
- query.setTerm(term);
+ query.setSearchString(queryStrings.join(" "));
return query.toSearchUrl(i18nc("@title UDS_DISPLAY_NAME for a KIO directory listing. %1 is the query the user entered.",
"Query Results from '%1'", text));
{
#ifdef HAVE_BALOO
const Baloo::Query query = Baloo::Query::fromSearchUrl(url);
- const Baloo::Term term = query.term();
// Block all signals to avoid unnecessary "searchRequest" signals
// while we adjust the search text and the facet widget.
m_facetsWidget->setFacetType(types.first());
}
- foreach (const Baloo::Term& subTerm, term.subTerms()) {
- const QString property = subTerm.property();
-
- if (property == QLatin1String("filename")) {
- setText(subTerm.value().toString());
+ const QStringList subTerms = query.searchString().split(' ', QString::SkipEmptyParts);
+ foreach (const QString& subTerm, subTerms) {
+ if (subTerm.startsWith("filename:")) {
+ const QString value = subTerm.mid(9);
+ setText(value);
} else if (m_facetsWidget->isRatingTerm(subTerm)) {
m_facetsWidget->setRatingTerm(subTerm);
}