From: Peter Penz Date: Wed, 25 Nov 2009 21:38:47 +0000 (+0000) Subject: adopt internal interfaces to the new Nepomuk search API X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/commitdiff_plain/4491e38760e29f9cc5b491112cf43e36df09acb9 adopt internal interfaces to the new Nepomuk search API svn path=/trunk/KDE/kdebase/apps/; revision=1054327 --- diff --git a/src/search/dolphinsearchoptionsconfigurator.cpp b/src/search/dolphinsearchoptionsconfigurator.cpp index 150a71210..3b43b8a01 100644 --- a/src/search/dolphinsearchoptionsconfigurator.cpp +++ b/src/search/dolphinsearchoptionsconfigurator.cpp @@ -177,28 +177,21 @@ DolphinSearchOptionsConfigurator::~DolphinSearchOptionsConfigurator() KUrl DolphinSearchOptionsConfigurator::nepomukUrl() const { - Nepomuk::Query::AndTerm andTerm; - foreach (const SearchCriterionSelector* criterion, m_criteria) { - const Nepomuk::Query::Term term = criterion->queryTerm(); - andTerm.addSubTerm(term); + Nepomuk::Query::Query query; + if (m_criteria.size() == 1) { + query.setTerm(m_criteria.first()->queryTerm()); + } else { + Nepomuk::Query::AndTerm andTerm; + foreach (const SearchCriterionSelector* criterion, m_criteria) { + const Nepomuk::Query::Term term = criterion->queryTerm(); + andTerm.addSubTerm(term); + } + query.setTerm(andTerm); } // TODO: respect m_customSearchQuery - Nepomuk::Query::Query query; - query.setTerm(andTerm); return query.toSearchUrl(); - - /*QString searchOptions; - QString searchString = m_customSearchQuery; - if (!searchString.isEmpty() && !searchOptions.isEmpty()) { - searchString += ' ' + searchOptions; - } else if (!searchOptions.isEmpty()) { - searchString += searchOptions; - } - - searchString.insert(0, QLatin1String("nepomuksearch:/")); - return KUrl(searchString);*/ } void DolphinSearchOptionsConfigurator::setCustomSearchQuery(const QString& searchQuery) @@ -326,7 +319,7 @@ bool DolphinSearchOptionsConfigurator::hasSearchParameters() const // there is no need to call the (quite expensive) method nepomukUrl() return true; } - return nepomukUrl().path() != QLatin1String("/"); + return true; //nepomukUrl().path() != QLatin1String("/"); } #include "dolphinsearchoptionsconfigurator.moc" diff --git a/src/search/searchcriteriondescription.cpp b/src/search/searchcriteriondescription.cpp index bad53e851..25639df0c 100644 --- a/src/search/searchcriteriondescription.cpp +++ b/src/search/searchcriteriondescription.cpp @@ -21,7 +21,7 @@ #include "searchcriteriondescription.h" SearchCriterionDescription::SearchCriterionDescription(const QString& name, - const QString& identifier, + const QUrl& identifier, const QList& comparators, SearchCriterionValue* valueWidget) : m_name(name), @@ -40,7 +40,7 @@ QString SearchCriterionDescription::name() const return m_name; } -QString SearchCriterionDescription::identifier() const +QUrl SearchCriterionDescription::identifier() const { return m_identifier; } diff --git a/src/search/searchcriteriondescription.h b/src/search/searchcriteriondescription.h index 98211793e..7739be890 100644 --- a/src/search/searchcriteriondescription.h +++ b/src/search/searchcriteriondescription.h @@ -21,8 +21,12 @@ #ifndef SEARCHCRITERIONDESCRIPTION_H #define SEARCHCRITERIONDESCRIPTION_H +#define DISABLE_NEPOMUK_LEGACY +#include + #include #include +#include class SearchCriterionValue; class QWidget; @@ -38,30 +42,44 @@ class SearchCriterionDescription public: struct Comparator { - Comparator(const QString& n, const QString& o = QString(), - const QString& p = QString(), const QString& a = QString()) : - name(n), operation(o), prefix(p), autoValueType(a) {} + Comparator(const QString& n) : + name(n), + isActive(false), + value(Nepomuk::Query::ComparisonTerm::Smaller), + autoValueType() + { + } + + Comparator(const QString& n, Nepomuk::Query::ComparisonTerm::Comparator c, + const QString& a = QString()) : + name(n), + isActive(true), + value(c), + autoValueType(a) + { + } + QString name; // user visible and translated name - QString operation; // Nepomuk operation that represents the comparator - QString prefix; // prefix like "+" or "-" that is part of the Nepomuk query + bool isActive; + Nepomuk::Query::ComparisonTerm::Comparator value; QString autoValueType; // type for an automatically calculated value of the value widget }; SearchCriterionDescription(const QString& name, - const QString& identifier, + const QUrl& identifier, const QList& comparators, SearchCriterionValue* valueWidget); virtual ~SearchCriterionDescription(); QString name() const; - QString identifier() const; + QUrl identifier() const; const QList& comparators() const; SearchCriterionValue* valueWidget() const; private: QString m_name; // user visible name that gets translated - QString m_identifier; // internal Nepomuk identifier + QUrl m_identifier; // internal Nepomuk identifier URL QList m_comparators; SearchCriterionValue* m_valueWidget; }; diff --git a/src/search/searchcriterionselector.cpp b/src/search/searchcriterionselector.cpp index addbb6b9f..bb6389aa2 100644 --- a/src/search/searchcriterionselector.cpp +++ b/src/search/searchcriterionselector.cpp @@ -93,28 +93,14 @@ Nepomuk::Query::Term SearchCriterionSelector::queryTerm() const const int compIndex = m_comparatorBox->currentIndex(); const SearchCriterionDescription::Comparator& comp = descr.comparators()[compIndex]; - if (comp.operation.isEmpty()) { + if (!comp.isActive) { return Nepomuk::Query::Term(); } - Nepomuk::Query::LiteralTerm literalTerm(Soprano::LiteralValue("dummy")); - Nepomuk::Query::ComparisonTerm term(Soprano::Vocabulary::NAO::lastModified(), - literalTerm, - Nepomuk::Query::ComparisonTerm::Smaller); + const Nepomuk::Query::ComparisonTerm term(descr.identifier(), + m_valueWidget->value(), + comp.value); return term; -/* - QString criterion = comp.prefix + descr.identifier() + comp.operation; - if (!m_valueWidget->value().isEmpty()) { - const QString value = m_valueWidget->value(); - if (value.contains(' ')) { - criterion += '"' + value + '"'; - } else { - // Don't surround the value by " if no space is part of the value. - // This increases the readability of the search-URL. - criterion += value; - } - } - return criterion;*/ } SearchCriterionSelector::Type SearchCriterionSelector::type() const @@ -162,7 +148,7 @@ void SearchCriterionSelector::slotComparatorChanged(int index) m_valueWidget->initializeValue(comp.autoValueType); // only show the value widget, if an operation is defined // and no automatic calculation is provided - m_valueWidget->setVisible(!comp.operation.isEmpty() && comp.autoValueType.isEmpty()); + m_valueWidget->setVisible(comp.isActive && comp.autoValueType.isEmpty()); emit criterionChanged(); } @@ -175,18 +161,18 @@ void SearchCriterionSelector::createDescriptions() // TODO: maybe this creation should be forwarded to a factory if // the number of items increases in future QList defaultComps; - defaultComps.append(SearchCriterionDescription::Comparator(i18nc("@label", "Greater Than"), ">", "+")); - defaultComps.append(SearchCriterionDescription::Comparator(i18nc("@label", "Greater Than or Equal to"), ">=", "+")); - defaultComps.append(SearchCriterionDescription::Comparator(i18nc("@label", "Less Than"), "<", "+")); - defaultComps.append(SearchCriterionDescription::Comparator(i18nc("@label", "Less Than or Equal to"), "<=", "+")); + defaultComps.append(SearchCriterionDescription::Comparator(i18nc("@label", "Greater Than"), Nepomuk::Query::ComparisonTerm::Greater)); + defaultComps.append(SearchCriterionDescription::Comparator(i18nc("@label", "Greater Than or Equal to"), Nepomuk::Query::ComparisonTerm::GreaterOrEqual)); + defaultComps.append(SearchCriterionDescription::Comparator(i18nc("@label", "Less Than"), Nepomuk::Query::ComparisonTerm::Smaller)); + defaultComps.append(SearchCriterionDescription::Comparator(i18nc("@label", "Less Than or Equal to"), Nepomuk::Query::ComparisonTerm::SmallerOrEqual)); // add "Date" description QList dateComps; dateComps.append(SearchCriterionDescription::Comparator(i18nc("@label", "Anytime"))); - dateComps.append(SearchCriterionDescription::Comparator(i18nc("@label", "Today"), ":", "+", "today")); - dateComps.append(SearchCriterionDescription::Comparator(i18nc("@label", "This Week"), ">=", "+", "thisWeek")); - dateComps.append(SearchCriterionDescription::Comparator(i18nc("@label", "This Month"), ">=", "+", "thisMonth")); - dateComps.append(SearchCriterionDescription::Comparator(i18nc("@label", "This Year"), ">=", "+", "thisYear")); + dateComps.append(SearchCriterionDescription::Comparator(i18nc("@label", "Today"), Nepomuk::Query::ComparisonTerm::Equal, "today")); + dateComps.append(SearchCriterionDescription::Comparator(i18nc("@label", "This Week"), Nepomuk::Query::ComparisonTerm::GreaterOrEqual, "thisWeek")); + dateComps.append(SearchCriterionDescription::Comparator(i18nc("@label", "This Month"), Nepomuk::Query::ComparisonTerm::GreaterOrEqual, "thisMonth")); + dateComps.append(SearchCriterionDescription::Comparator(i18nc("@label", "This Year"), Nepomuk::Query::ComparisonTerm::GreaterOrEqual, "thisYear")); foreach (const SearchCriterionDescription::Comparator& comp, defaultComps) { dateComps.append(comp); } @@ -194,7 +180,7 @@ void SearchCriterionSelector::createDescriptions() DateValue* dateValue = new DateValue(this); dateValue->hide(); SearchCriterionDescription date(i18nc("@label", "Date:"), - "lastModified", + Soprano::Vocabulary::NAO::lastModified(), dateComps, dateValue); Q_ASSERT(static_cast(SearchCriterionSelector::Date) == 0); @@ -207,7 +193,7 @@ void SearchCriterionSelector::createDescriptions() SizeValue* sizeValue = new SizeValue(this); sizeValue->hide(); SearchCriterionDescription size(i18nc("@label", "Size:"), - "contentSize", + Soprano::Vocabulary::NAO::lastModified(), // TODO sizeComps, sizeValue); Q_ASSERT(static_cast(SearchCriterionSelector::Size) == 1); @@ -216,13 +202,13 @@ void SearchCriterionSelector::createDescriptions() // add "Tag" description QList tagComps; tagComps.append(SearchCriterionDescription::Comparator(i18nc("@label All (tags)", "All"))); - tagComps.append(SearchCriterionDescription::Comparator(i18nc("@label", "Equal to"), ":", "+")); - tagComps.append(SearchCriterionDescription::Comparator(i18nc("@label", "Not Equal to"), ":", "-")); + tagComps.append(SearchCriterionDescription::Comparator(i18nc("@label", "Equal to"), Nepomuk::Query::ComparisonTerm::Equal)); + tagComps.append(SearchCriterionDescription::Comparator(i18nc("@label", "Not Equal to"), Nepomuk::Query::ComparisonTerm::Equal)); // TODO TagValue* tagValue = new TagValue(this); tagValue->hide(); SearchCriterionDescription tag(i18nc("@label", "Tag:"), - "tag", + Soprano::Vocabulary::NAO::Tag(), tagComps, tagValue); Q_ASSERT(static_cast(SearchCriterionSelector::Tag) == 2); @@ -235,7 +221,7 @@ void SearchCriterionSelector::createDescriptions() RatingValue* ratingValue = new RatingValue(this); ratingValue->hide(); SearchCriterionDescription rating(i18nc("@label", "Rating:"), - "rating", + Soprano::Vocabulary::NAO::rating(), ratingComps, ratingValue); Q_ASSERT(static_cast(SearchCriterionSelector::Rating) == 3); diff --git a/src/search/searchcriterionvalue.cpp b/src/search/searchcriterionvalue.cpp index 9db19364b..eda297b83 100644 --- a/src/search/searchcriterionvalue.cpp +++ b/src/search/searchcriterionvalue.cpp @@ -65,9 +65,9 @@ DateValue::~DateValue() { } -QString DateValue::value() const +Nepomuk::Query::LiteralTerm DateValue::value() const { - return m_dateWidget->date().toString(Qt::ISODate); + return Nepomuk::Query::LiteralTerm(m_dateWidget->date()); } void DateValue::initializeValue(const QString& valueType) @@ -112,9 +112,9 @@ TagValue::~TagValue() { } -QString TagValue::value() const +Nepomuk::Query::LiteralTerm TagValue::value() const { - return m_tags->currentText(); + return Nepomuk::Query::LiteralTerm(m_tags->currentText()); } void TagValue::showEvent(QShowEvent* event) @@ -165,9 +165,9 @@ SizeValue::~SizeValue() { } -QString SizeValue::value() const +Nepomuk::Query::LiteralTerm SizeValue::value() const { - return QString(); + return Nepomuk::Query::LiteralTerm(); // TODO } // ------------------------------------------------------------------------- @@ -187,9 +187,9 @@ RatingValue::~RatingValue() { } -QString RatingValue::value() const +Nepomuk::Query::LiteralTerm RatingValue::value() const { - return QString::number(m_ratingWidget->rating()); + return Nepomuk::Query::LiteralTerm(m_ratingWidget->rating()); } #include "searchcriterionvalue.moc" diff --git a/src/search/searchcriterionvalue.h b/src/search/searchcriterionvalue.h index cabe75cf2..f3dc19e6f 100644 --- a/src/search/searchcriterionvalue.h +++ b/src/search/searchcriterionvalue.h @@ -21,6 +21,9 @@ #ifndef SEARCHCRITERIONVALUE_H #define SEARCHCRITERIONVALUE_H +#define DISABLE_NEPOMUK_LEGACY +#include + #include class QComboBox; @@ -42,9 +45,9 @@ public: /** * Must be overwritten by derived classes and returns - * the string representation of the search criterion value. + * the literal term of the search criterion value. */ - virtual QString value() const = 0; + virtual Nepomuk::Query::LiteralTerm value() const = 0; /** * Initializes the widget on the base of the given value-type. @@ -56,7 +59,7 @@ public: virtual void initializeValue(const QString& valueType); signals: - void valueChanged(const QString& value); + void valueChanged(const Nepomuk::Query::LiteralTerm& value); }; @@ -69,7 +72,7 @@ class DateValue : public SearchCriterionValue public: DateValue(QWidget* parent = 0); virtual ~DateValue(); - virtual QString value() const; + virtual Nepomuk::Query::LiteralTerm value() const; virtual void initializeValue(const QString& valueType); private: @@ -86,7 +89,7 @@ class TagValue : public SearchCriterionValue public: TagValue(QWidget* parent = 0); virtual ~TagValue(); - virtual QString value() const; + virtual Nepomuk::Query::LiteralTerm value() const; protected: virtual void showEvent(QShowEvent* event); @@ -105,7 +108,7 @@ class SizeValue : public SearchCriterionValue public: SizeValue(QWidget* parent = 0); virtual ~SizeValue(); - virtual QString value() const; + virtual Nepomuk::Query::LiteralTerm value() const; private: KLineEdit* m_lineEdit; @@ -120,7 +123,7 @@ class RatingValue : public SearchCriterionValue public: RatingValue(QWidget* parent = 0); virtual ~RatingValue(); - virtual QString value() const; + virtual Nepomuk::Query::LiteralTerm value() const; private: KRatingWidget* m_ratingWidget;