]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/search/dolphinfacetswidget.h
Add Duplicate feature
[dolphin.git] / src / search / dolphinfacetswidget.h
index 916e056081e98a44130a0937884084fec00813b0..2e91bcc9676a8165973607aace4e96cc285ebd96 100644 (file)
 #define DOLPHINFACETSWIDGET_H
 
 #include <QWidget>
+#include <KCoreDirLister>
 
-class QCheckBox;
-class QRadioButton;
+class QComboBox;
+class QDate;
+class QEvent;
+class QToolButton;
 
 /**
  * @brief Allows to filter search-queries by facets.
  *
  * TODO: The current implementation is a temporary
- * workaround for the 4.10 release and represents no
+ * workaround for the 4.9 release and represents no
  * real facets-implementation yet: There have been
  * some Dolphin specific user-interface and interaction
  * issues since 4.6 by embedding the Nepomuk facet-widget
@@ -46,28 +49,45 @@ class DolphinFacetsWidget : public QWidget
     Q_OBJECT
 
 public:
-    explicit DolphinFacetsWidget(QWidget* parent = 0);
-    virtual ~DolphinFacetsWidget();
+    explicit DolphinFacetsWidget(QWidget* parent = nullptr);
+    ~DolphinFacetsWidget() override;
+
+    QStringList searchTerms() const;
+    QString facetType() const;
+
+    bool isSearchTerm(const QString& term) const;
+    void setSearchTerm(const QString& term);
+    void resetSearchTerms();
+
+    void setFacetType(const QString& type);
+
+signals:
+    void facetChanged();
+
+protected:
+    void changeEvent(QEvent* event) override;
+
+private slots:
+    void updateTagsMenu();
+    void updateTagsMenuItems(const QUrl&, const KFileItemList& items);
 
 private:
-    QCheckBox* m_documents;
-    QCheckBox* m_images;
-    QCheckBox* m_audio;
-    QCheckBox* m_videos;
-
-    QRadioButton* m_anytime;
-    QRadioButton* m_today;
-    QRadioButton* m_yesterday;
-    QRadioButton* m_thisWeek;
-    QRadioButton* m_thisMonth;
-    QRadioButton* m_thisYear;
-
-    QRadioButton* m_anyRating;
-    QRadioButton* m_oneOrMore;
-    QRadioButton* m_twoOrMore;
-    QRadioButton* m_threeOrMore;
-    QRadioButton* m_fourOrMore;
-    QRadioButton* m_maxRating;
+    void setRating(const int stars);
+    void setTimespan(const QDate& date);
+    void addSearchTag(const QString& tag);
+    void removeSearchTag(const QString& tag);
+
+    void initComboBox(QComboBox* combo);
+    void updateTagsSelector();
+
+private:
+    QComboBox* m_typeSelector;
+    QComboBox* m_dateSelector;
+    QComboBox* m_ratingSelector;
+    QToolButton* m_tagsSelector;
+
+    QStringList m_searchTags;
+    KCoreDirLister m_tagsLister;
 };
 
 #endif