┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/search/searchcriterionselector.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/search/searchcriterionselector.cpp')
-rw-r--r--src/search/searchcriterionselector.cpp244
1 files changed, 0 insertions, 244 deletions
diff --git a/src/search/searchcriterionselector.cpp b/src/search/searchcriterionselector.cpp
deleted file mode 100644
index b62008029..000000000
--- a/src/search/searchcriterionselector.cpp
+++ /dev/null
@@ -1,244 +0,0 @@
-/***************************************************************************
- * Copyright (C) 2009 by Adam Kidder <[email protected]> *
- * Copyright (C) 2009 by Peter Penz <[email protected]> *
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 2 of the License, or *
- * (at your option) any later version. *
- * *
- * This program is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
- * GNU General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program; if not, write to the *
- * Free Software Foundation, Inc., *
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *
- ***************************************************************************/
-
-#include "searchcriterionselector.h"
-
-#define DISABLE_NEPOMUK_LEGACY
-#include <nepomuk/comparisonterm.h>
-#include <nepomuk/literalterm.h>
-#include <nepomuk/query.h>
-
-#include "nie.h"
-#include "searchcriterionvalue.h"
-
-#include <Soprano/LiteralValue>
-#include <Soprano/Vocabulary/NAO>
-
-#include <QComboBox>
-#include <QHBoxLayout>
-#include <QList>
-#include <QPushButton>
-
-#include <kicon.h>
-#include <klocale.h>
-
-SearchCriterionSelector::SearchCriterionSelector(Type type, QWidget* parent) :
- QWidget(parent),
- m_layout(0),
- m_descriptionsBox(0),
- m_comparatorBox(0),
- m_valueWidget(0),
- m_removeButton(0),
- m_descriptions()
-{
- m_descriptionsBox = new QComboBox(this);
-
- m_comparatorBox = new QComboBox(this);
- m_comparatorBox->setSizeAdjustPolicy(QComboBox::AdjustToContents);
-
- createDescriptions();
- const int index = static_cast<int>(type);
- m_descriptionsBox->setCurrentIndex(index);
-
- QWidget* filler = new QWidget(this);
- filler->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
-
- m_removeButton = new QPushButton(this);
- m_removeButton->setIcon(KIcon("list-remove"));
- m_removeButton->setToolTip(i18nc("@info", "Remove search option"));
- m_removeButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
- connect(m_removeButton, SIGNAL(clicked()), this, SIGNAL(removeCriterion()));
-
- m_layout = new QHBoxLayout(this);
- m_layout->setMargin(0);
- m_layout->addWidget(m_removeButton);
- m_layout->addWidget(m_descriptionsBox);
- m_layout->addWidget(m_comparatorBox);
- m_layout->addWidget(filler);
-
- setLayout(m_layout);
-
- slotDescriptionChanged(index);
- connect(m_descriptionsBox, SIGNAL(currentIndexChanged(int)), this, SLOT(slotDescriptionChanged(int)));
-}
-
-SearchCriterionSelector::~SearchCriterionSelector()
-{
-}
-
-Nepomuk::Query::Term SearchCriterionSelector::queryTerm() const
-{
- if (m_valueWidget == 0) {
- return Nepomuk::Query::Term();
- }
-
- const int descIndex = m_descriptionsBox->currentIndex();
- const SearchCriterionDescription& descr = m_descriptions[descIndex];
-
- const int compIndex = m_comparatorBox->currentIndex();
- const SearchCriterionDescription::Comparator& comp = descr.comparators()[compIndex];
- if (!comp.isActive) {
- return Nepomuk::Query::Term();
- }
-
- const Nepomuk::Query::ComparisonTerm term(descr.identifier(),
- m_valueWidget->value(),
- comp.value);
- return term;
-}
-
-SearchCriterionSelector::Type SearchCriterionSelector::type() const
-{
- return static_cast<Type>(m_descriptionsBox->currentIndex());
-}
-
-void SearchCriterionSelector::slotDescriptionChanged(int index)
-{
- if (m_valueWidget != 0) {
- m_valueWidget->hide();
- m_layout->removeWidget(m_valueWidget);
- m_valueWidget = 0;
- // the value widget is obtained by the Search Criterion
- // Selector instance and may not get deleted
- }
-
- // add comparator items
- disconnect(m_comparatorBox, SIGNAL(currentIndexChanged(int)), this, SLOT(slotComparatorChanged(int)));
- m_comparatorBox->clear();
-
- const SearchCriterionDescription& description = m_descriptions[index];
- foreach (const SearchCriterionDescription::Comparator& comp, description.comparators()) {
- m_comparatorBox->addItem(comp.name);
- }
-
- // add value widget
- m_valueWidget = description.valueWidget();
- m_layout->insertWidget(3, m_valueWidget);
-
- m_comparatorBox->setCurrentIndex(0);
- slotComparatorChanged(0);
- connect(m_comparatorBox, SIGNAL(currentIndexChanged(int)), this, SLOT(slotComparatorChanged(int)));
-}
-
-void SearchCriterionSelector::slotComparatorChanged(int index)
-{
- Q_ASSERT(index >= 0);
-
- // only show the value widget if an operation is defined by the comparator
- const int descIndex = m_descriptionsBox->currentIndex();
- const SearchCriterionDescription& descr = m_descriptions[descIndex];
- const SearchCriterionDescription::Comparator& comp = descr.comparators()[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.isActive && comp.autoValueType.isEmpty());
-
- emit criterionChanged();
-}
-
-void SearchCriterionSelector::createDescriptions()
-{
- Q_ASSERT(m_descriptionsBox != 0);
- Q_ASSERT(m_comparatorBox != 0);
-
- // 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"), 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"), Nepomuk::Query::ComparisonTerm::GreaterOrEqual, "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:"),
- Nepomuk::Vocabulary::NIE::lastModified(),
- dateComps,
- dateValue);
- Q_ASSERT(static_cast<int>(SearchCriterionSelector::Date) == 0);
- m_descriptions.append(date);
-
- // add "Size" description
- QList<SearchCriterionDescription::Comparator> sizeComps = defaultComps;
- sizeComps.insert(0, SearchCriterionDescription::Comparator(i18nc("@label Any (file size)", "Any")));
-
- SizeValue* sizeValue = new SizeValue(this);
- sizeValue->hide();
- SearchCriterionDescription size(i18nc("@label", "Size:"),
- Soprano::Vocabulary::NAO::lastModified(), // TODO
- sizeComps,
- sizeValue);
- Q_ASSERT(static_cast<int>(SearchCriterionSelector::Size) == 1);
- m_descriptions.append(size);
-
- // add "Tag" description
- QList<SearchCriterionDescription::Comparator> tagComps;
- tagComps.append(SearchCriterionDescription::Comparator(i18nc("@label All (tags)", "All")));
- tagComps.append(SearchCriterionDescription::Comparator(i18nc("@label", "Equal to"), Nepomuk::Query::ComparisonTerm::Equal));
- // It is unclear yet how to express != for tags with the new Nepomuk query API. Disable it for KDE 4.4,
- // but leave the translation string there to be able to enable this functionality for KDE 4.4.x:
- const QString dummy = i18nc("@label", "Not Equal to");
- Q_UNUSED(dummy);
- //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:"),
- Soprano::Vocabulary::NAO::hasTag(),
- tagComps,
- tagValue);
- Q_ASSERT(static_cast<int>(SearchCriterionSelector::Tag) == 2);
- m_descriptions.append(tag);
-
- // add "Rating" description
- QList<SearchCriterionDescription::Comparator> ratingComps = defaultComps;
- ratingComps.insert(0, SearchCriterionDescription::Comparator(i18nc("@label Any (rating)", "Any")));
-
- RatingValue* ratingValue = new RatingValue(this);
- ratingValue->hide();
- SearchCriterionDescription rating(i18nc("@label", "Rating:"),
- Soprano::Vocabulary::NAO::numericRating(),
- ratingComps,
- ratingValue);
- Q_ASSERT(static_cast<int>(SearchCriterionSelector::Rating) == 3);
- m_descriptions.append(rating);
-
- // add all descriptions to the combo box and connect the value widgets
- int i = 0;
- foreach (const SearchCriterionDescription& desc, m_descriptions) {
- m_descriptionsBox->addItem(desc.name(), i);
- connect(desc.valueWidget(), SIGNAL(valueChanged(Nepomuk::Query::LiteralTerm)), this, SIGNAL(criterionChanged()));
- ++i;
- }
-}
-
-#include "searchcriterionselector.moc"