retained the AnnotatorTextEdit with some corrections"
[semnotes:semnotes.git] / src / filtermanager.h
1 /*
2  * This file is part of SemNotes Project.
3  *
4  * Copyright (C) 2009 - 2010 Laura Dragan <laura.dragan@deri.org>
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Library General Public
8  * License as published by the Free Software Foundation; either
9  * version 2 of the License, or (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  * Library General Public License for more details.
15  *
16  * You should have received a copy of the GNU Library General Public License
17  * along with this library; see the file COPYING.LIB.  If not, write to
18  * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
19  * Boston, MA 02110-1301, USA.
20  */
21 #ifndef FILTERMANAGER_H
22 #define FILTERMANAGER_H
23
24 #include "semnotes_export.h"
25 #include <QObject>
26 #include <QSet>
27 #include <QDateTime>
28
29 namespace SemNotes
30 {
31
32 class Note;
33
34 class SEMNOTES_EXPORT FilterManager : public QObject
35 {
36     Q_OBJECT
37
38 public:
39     ~FilterManager();
40     static FilterManager * self();
41
42     bool accept(Note note);
43     void removeAllFilters();
44
45     bool isTagFilterSet(QString tag);
46     bool isResourceFilterSet(QString uri);
47     QString stringFilter();
48     QDateTime startTimeFilter();
49     QDateTime endTimeFilter();
50
51 public slots:
52     void addTagFilter(QString tag);
53     void addResourceFilter(QString uri);
54
55     void removeTagFilter(QString tag);
56     void removeResourceFilter(QString uri);
57
58     void setStringFilter(QString pattern);
59
60     void setTimeFilter(QDateTime start, QDateTime end);
61
62 signals:
63     void filtersChanged();
64
65 private:
66     FilterManager();
67     static FilterManager * s_self;
68     QSet<QString> m_tags;
69     QSet<QString> m_resources;
70     QString m_pattern;
71     QDateTime m_startTime;
72     QDateTime m_endTime;
73 };
74
75 }
76
77 #endif // FILTERMANAGER_H