]> cloud.milkyroute.net Git - dolphin.git/commitdiff
adopt internal interfaces to the new Nepomuk search API
authorPeter Penz <peter.penz19@gmail.com>
Wed, 25 Nov 2009 21:38:47 +0000 (21:38 +0000)
committerPeter Penz <peter.penz19@gmail.com>
Wed, 25 Nov 2009 21:38:47 +0000 (21:38 +0000)
svn path=/trunk/KDE/kdebase/apps/; revision=1054327

src/search/dolphinsearchoptionsconfigurator.cpp
src/search/searchcriteriondescription.cpp
src/search/searchcriteriondescription.h
src/search/searchcriterionselector.cpp
src/search/searchcriterionvalue.cpp
src/search/searchcriterionvalue.h

index 150a71210c43a628ae8531f9c972271dcf00a92d..3b43b8a01ee9524969cde203142fc7711ab8c782 100644 (file)
@@ -177,28 +177,21 @@ DolphinSearchOptionsConfigurator::~DolphinSearchOptionsConfigurator()
 
 KUrl DolphinSearchOptionsConfigurator::nepomukUrl() const
 {
 
 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
 
     }
 
     // TODO: respect m_customSearchQuery
 
-    Nepomuk::Query::Query query;
-    query.setTerm(andTerm);
     return query.toSearchUrl();
     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)
 }
 
 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;
     }
         // 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"
 }
 
 #include "dolphinsearchoptionsconfigurator.moc"
index bad53e8514a53aa60fdefe65fd55282f1ca3db85..25639df0cd9fe4ec036f9b65b7a5f7a1ce282634 100644 (file)
@@ -21,7 +21,7 @@
 #include "searchcriteriondescription.h"
 
 SearchCriterionDescription::SearchCriterionDescription(const QString& name,
 #include "searchcriteriondescription.h"
 
 SearchCriterionDescription::SearchCriterionDescription(const QString& name,
-                                                       const QString& identifier,
+                                                       const QUrl& identifier,
                                                        const QList<Comparator>& comparators,
                                                        SearchCriterionValue* valueWidget) :
     m_name(name),
                                                        const QList<Comparator>& comparators,
                                                        SearchCriterionValue* valueWidget) :
     m_name(name),
@@ -40,7 +40,7 @@ QString SearchCriterionDescription::name() const
     return m_name;
 }
 
     return m_name;
 }
 
-QString SearchCriterionDescription::identifier() const
+QUrl SearchCriterionDescription::identifier() const
 {
     return m_identifier;
 }
 {
     return m_identifier;
 }
index 98211793eccf0c037aad2ba65750c96cca7341c7..7739be890f75fba0ea34218fa281057efc6a1b97 100644 (file)
 #ifndef SEARCHCRITERIONDESCRIPTION_H
 #define SEARCHCRITERIONDESCRIPTION_H
 
 #ifndef SEARCHCRITERIONDESCRIPTION_H
 #define SEARCHCRITERIONDESCRIPTION_H
 
+#define DISABLE_NEPOMUK_LEGACY
+#include <nepomuk/comparisonterm.h>
+
 #include <QList>
 #include <QString>
 #include <QList>
 #include <QString>
+#include <QUrl>
 
 class SearchCriterionValue;
 class QWidget;
 
 class SearchCriterionValue;
 class QWidget;
@@ -38,30 +42,44 @@ class SearchCriterionDescription
 public:
     struct Comparator
     {
 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 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,
         QString autoValueType; // type for an automatically calculated value of the value widget
     };
 
     SearchCriterionDescription(const QString& name,
-                               const QString& identifier,
+                               const QUrl& identifier,
                                const QList<Comparator>& comparators,
                                SearchCriterionValue* valueWidget);
 
     virtual ~SearchCriterionDescription();
 
     QString name() const;
                                const QList<Comparator>& comparators,
                                SearchCriterionValue* valueWidget);
 
     virtual ~SearchCriterionDescription();
 
     QString name() const;
-    QString identifier() const;
+    QUrl identifier() const;
     const QList<Comparator>& comparators() const;
     SearchCriterionValue* valueWidget() const;
 
 private:
     QString m_name;       // user visible name that gets translated
     const QList<Comparator>& 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<Comparator> m_comparators;
     SearchCriterionValue* m_valueWidget;
 };
     QList<Comparator> m_comparators;
     SearchCriterionValue* m_valueWidget;
 };
index addbb6b9f7ff078269bca5f4fbf8434ba30a9d89..bb6389aa2f9cf00ca61d98ddfe1ce830ee219a66 100644 (file)
@@ -93,28 +93,14 @@ Nepomuk::Query::Term SearchCriterionSelector::queryTerm() const
 
     const int compIndex = m_comparatorBox->currentIndex();
     const SearchCriterionDescription::Comparator& comp = descr.comparators()[compIndex];
 
     const int compIndex = m_comparatorBox->currentIndex();
     const SearchCriterionDescription::Comparator& comp = descr.comparators()[compIndex];
-    if (comp.operation.isEmpty()) {
+    if (!comp.isActive) {
         return Nepomuk::Query::Term();
     }
 
         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;
     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
 }
 
 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->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();
 }
 
     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<SearchCriterionDescription::Comparator> defaultComps;
     // TODO: maybe this creation should be forwarded to a factory if
     // the number of items increases in future
     QList<SearchCriterionDescription::Comparator> 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<SearchCriterionDescription::Comparator> dateComps;
     dateComps.append(SearchCriterionDescription::Comparator(i18nc("@label", "Anytime")));
 
     // add "Date" description
     QList<SearchCriterionDescription::Comparator> 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);
     }
     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:"),
     DateValue* dateValue = new DateValue(this);
     dateValue->hide();
     SearchCriterionDescription date(i18nc("@label", "Date:"),
-                                    "lastModified",
+                                    Soprano::Vocabulary::NAO::lastModified(),
                                     dateComps,
                                     dateValue);
     Q_ASSERT(static_cast<int>(SearchCriterionSelector::Date) == 0);
                                     dateComps,
                                     dateValue);
     Q_ASSERT(static_cast<int>(SearchCriterionSelector::Date) == 0);
@@ -207,7 +193,7 @@ void SearchCriterionSelector::createDescriptions()
     SizeValue* sizeValue = new SizeValue(this);
     sizeValue->hide();
     SearchCriterionDescription size(i18nc("@label", "Size:"),
     SizeValue* sizeValue = new SizeValue(this);
     sizeValue->hide();
     SearchCriterionDescription size(i18nc("@label", "Size:"),
-                                    "contentSize",
+                                    Soprano::Vocabulary::NAO::lastModified(), // TODO
                                     sizeComps,
                                     sizeValue);
     Q_ASSERT(static_cast<int>(SearchCriterionSelector::Size) == 1);
                                     sizeComps,
                                     sizeValue);
     Q_ASSERT(static_cast<int>(SearchCriterionSelector::Size) == 1);
@@ -216,13 +202,13 @@ void SearchCriterionSelector::createDescriptions()
     // add "Tag" description
     QList<SearchCriterionDescription::Comparator> tagComps;
     tagComps.append(SearchCriterionDescription::Comparator(i18nc("@label All (tags)", "All")));
     // add "Tag" description
     QList<SearchCriterionDescription::Comparator> 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:"),
 
     TagValue* tagValue = new TagValue(this);
     tagValue->hide();
     SearchCriterionDescription tag(i18nc("@label", "Tag:"),
-                                   "tag",
+                                   Soprano::Vocabulary::NAO::Tag(),
                                    tagComps,
                                    tagValue);
     Q_ASSERT(static_cast<int>(SearchCriterionSelector::Tag) == 2);
                                    tagComps,
                                    tagValue);
     Q_ASSERT(static_cast<int>(SearchCriterionSelector::Tag) == 2);
@@ -235,7 +221,7 @@ void SearchCriterionSelector::createDescriptions()
     RatingValue* ratingValue = new RatingValue(this);
     ratingValue->hide();
     SearchCriterionDescription rating(i18nc("@label", "Rating:"),
     RatingValue* ratingValue = new RatingValue(this);
     ratingValue->hide();
     SearchCriterionDescription rating(i18nc("@label", "Rating:"),
-                                      "rating",
+                                      Soprano::Vocabulary::NAO::rating(),
                                       ratingComps,
                                       ratingValue);
     Q_ASSERT(static_cast<int>(SearchCriterionSelector::Rating) == 3);
                                       ratingComps,
                                       ratingValue);
     Q_ASSERT(static_cast<int>(SearchCriterionSelector::Rating) == 3);
index 9db19364b5693f2d7a32bd4982b8002fe3d693c3..eda297b8305b357df8ab2c652eb43accf931c7bc 100644 (file)
@@ -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)
 }
 
 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)
 }
 
 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"
 }
 
 #include "searchcriterionvalue.moc"
index cabe75cf29b7e5d3cd23a9377deadcdf67789762..f3dc19e6f3b2ed3ffd7421fcab64846ab94ad7d8 100644 (file)
@@ -21,6 +21,9 @@
 #ifndef SEARCHCRITERIONVALUE_H
 #define SEARCHCRITERIONVALUE_H
 
 #ifndef SEARCHCRITERIONVALUE_H
 #define SEARCHCRITERIONVALUE_H
 
+#define DISABLE_NEPOMUK_LEGACY
+#include <nepomuk/literalterm.h>
+
 #include <QWidget>
 
 class QComboBox;
 #include <QWidget>
 
 class QComboBox;
@@ -42,9 +45,9 @@ public:
 
     /**
      * Must be overwritten by derived classes and returns
 
     /**
      * 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.
 
     /**
      * Initializes the widget on the base of the given value-type.
@@ -56,7 +59,7 @@ public:
     virtual void initializeValue(const QString& valueType);
 
 signals:
     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();
 public:
     DateValue(QWidget* parent = 0);
     virtual ~DateValue();
-    virtual QString value() const;
+    virtual Nepomuk::Query::LiteralTerm value() const;
     virtual void initializeValue(const QString& valueType);
 
 private:
     virtual void initializeValue(const QString& valueType);
 
 private:
@@ -86,7 +89,7 @@ class TagValue : public SearchCriterionValue
 public:
     TagValue(QWidget* parent = 0);
     virtual ~TagValue();
 public:
     TagValue(QWidget* parent = 0);
     virtual ~TagValue();
-    virtual QString value() const;
+    virtual Nepomuk::Query::LiteralTerm value() const;
 
 protected:
     virtual void showEvent(QShowEvent* event);
 
 protected:
     virtual void showEvent(QShowEvent* event);
@@ -105,7 +108,7 @@ class SizeValue : public SearchCriterionValue
 public:
     SizeValue(QWidget* parent = 0);
     virtual ~SizeValue();
 public:
     SizeValue(QWidget* parent = 0);
     virtual ~SizeValue();
-    virtual QString value() const;
+    virtual Nepomuk::Query::LiteralTerm value() const;
 
  private:
     KLineEdit* m_lineEdit;
 
  private:
     KLineEdit* m_lineEdit;
@@ -120,7 +123,7 @@ class RatingValue : public SearchCriterionValue
 public:
     RatingValue(QWidget* parent = 0);
     virtual ~RatingValue();
 public:
     RatingValue(QWidget* parent = 0);
     virtual ~RatingValue();
-    virtual QString value() const;
+    virtual Nepomuk::Query::LiteralTerm value() const;
 
  private:
     KRatingWidget* m_ratingWidget;
 
  private:
     KRatingWidget* m_ratingWidget;