updateTagsMenu();
}
-QString DolphinFacetsWidget::searchTerms() const
+QStringList DolphinFacetsWidget::searchTerms() const
{
QStringList terms;
if (!m_searchTags.isEmpty()) {
for (auto const &tag : m_searchTags) {
- terms << QStringLiteral("tag:%1").arg(tag);
+ if (tag.contains(QLatin1Char(' '))) {
+ terms << QStringLiteral("tag:\"%1\"").arg(tag);
+ } else {
+ terms << QStringLiteral("tag:%1").arg(tag);
+ }
}
}
- return terms.join(QLatin1String(" AND "));
+ return terms;
}
QString DolphinFacetsWidget::facetType() const
bool DolphinFacetsWidget::isSearchTerm(const QString& term) const
{
- 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;
- bool containsTag = false;
-
- foreach (const QString& subTerm, subTerms) {
- if (subTerm.startsWith(QLatin1String("rating>="))) {
- containsRating = true;
- } else if (subTerm.startsWith(QLatin1String("modified>="))) {
- containsModified = true;
- } else if (subTerm.startsWith(QLatin1String("tag:")) ||
- subTerm.startsWith(QLatin1String("tag="))) {
- containsTag = true;
+ static const QLatin1String searchTokens[] {
+ QLatin1String("modified>="),
+ QLatin1String("rating>="),
+ QLatin1String("tag:"), QLatin1String("tag=")
+ };
+
+ for (const auto &searchToken : searchTokens) {
+ if (term.startsWith(searchToken)) {
+ return true;
}
}
-
- return containsModified || containsRating || containsTag;
+ return false;
}
void DolphinFacetsWidget::setSearchTerm(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.
- QStringList subTerms = term.split(' ', QString::SkipEmptyParts);
-
- 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 (subTerm.startsWith(QLatin1String("rating>="))) {
- const QString value = subTerm.mid(8);
- const int stars = value.toInt() / 2;
- setRating(stars);
- } else if (subTerm.startsWith(QLatin1String("tag:")) ||
- subTerm.startsWith(QLatin1String("tag="))) {
- const QString value = subTerm.mid(4);
- addSearchTag(value);
- }
+ if (term.startsWith(QLatin1String("modified>="))) {
+ const QString value = term.mid(10);
+ const QDate date = QDate::fromString(value, Qt::ISODate);
+ setTimespan(date);
+ } else if (term.startsWith(QLatin1String("rating>="))) {
+ const QString value = term.mid(8);
+ const int stars = value.toInt() / 2;
+ setRating(stars);
+ } else if (term.startsWith(QLatin1String("tag:")) ||
+ term.startsWith(QLatin1String("tag="))) {
+ const QString value = term.mid(4);
+ addSearchTag(value);
}
}
removeSearchTag(tagName);
}
emit facetChanged();
+
+ m_tagsSelector->menu()->show();
});
}