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)
// 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 "searchcriteriondescription.h"
SearchCriterionDescription::SearchCriterionDescription(const QString& name,
- const QString& identifier,
+ const QUrl& identifier,
const QList<Comparator>& comparators,
SearchCriterionValue* valueWidget) :
m_name(name),
return m_name;
}
-QString SearchCriterionDescription::identifier() const
+QUrl SearchCriterionDescription::identifier() const
{
return m_identifier;
}
#ifndef SEARCHCRITERIONDESCRIPTION_H
#define SEARCHCRITERIONDESCRIPTION_H
+#define DISABLE_NEPOMUK_LEGACY
+#include <nepomuk/comparisonterm.h>
+
#include <QList>
#include <QString>
+#include <QUrl>
class SearchCriterionValue;
class QWidget;
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<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
- QString m_identifier; // internal Nepomuk identifier
+ QUrl m_identifier; // internal Nepomuk identifier URL
QList<Comparator> m_comparators;
SearchCriterionValue* m_valueWidget;
};
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
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();
}
// 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")));
- 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);
}
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);
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);
// 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:"),
- "tag",
+ Soprano::Vocabulary::NAO::Tag(),
tagComps,
tagValue);
Q_ASSERT(static_cast<int>(SearchCriterionSelector::Tag) == 2);
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);
{
}
-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)
{
}
-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)
{
}
-QString SizeValue::value() const
+Nepomuk::Query::LiteralTerm SizeValue::value() const
{
- return QString();
+ return Nepomuk::Query::LiteralTerm(); // TODO
}
// -------------------------------------------------------------------------
{
}
-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"
#ifndef SEARCHCRITERIONVALUE_H
#define SEARCHCRITERIONVALUE_H
+#define DISABLE_NEPOMUK_LEGACY
+#include <nepomuk/literalterm.h>
+
#include <QWidget>
class QComboBox;
/**
* 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.
virtual void initializeValue(const QString& valueType);
signals:
- void valueChanged(const QString& value);
+ void valueChanged(const Nepomuk::Query::LiteralTerm& value);
};
public:
DateValue(QWidget* parent = 0);
virtual ~DateValue();
- virtual QString value() const;
+ virtual Nepomuk::Query::LiteralTerm value() const;
virtual void initializeValue(const QString& valueType);
private:
public:
TagValue(QWidget* parent = 0);
virtual ~TagValue();
- virtual QString value() const;
+ virtual Nepomuk::Query::LiteralTerm value() const;
protected:
virtual void showEvent(QShowEvent* event);
public:
SizeValue(QWidget* parent = 0);
virtual ~SizeValue();
- virtual QString value() const;
+ virtual Nepomuk::Query::LiteralTerm value() const;
private:
KLineEdit* m_lineEdit;
public:
RatingValue(QWidget* parent = 0);
virtual ~RatingValue();
- virtual QString value() const;
+ virtual Nepomuk::Query::LiteralTerm value() const;
private:
KRatingWidget* m_ratingWidget;