summaryrefslogtreecommitdiff
path: root/libopie/todoevent.h
blob: b55a39ba4dc4537b3731fc6cf4d713e87c887253 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191

#ifndef todoevent_h
#define todoevent_h


#include <qarray.h>
#include <qmap.h>
#include <qregexp.h>
#include <qstringlist.h>
#include <qdatetime.h>


class ToDoEvent {
    friend class ToDoDB;
 public:
    // priorities from Very low to very high
    enum Priority { VERYHIGH=1, HIGH, NORMAL, LOW, VERYLOW };
    /* Constructs a new ToDoEvent
       @param completed Is the TodoEvent completed
       @param priority What is the priority of this ToDoEvent
       @param category Which category does it belong( uid )
       @param summary A small summary of the todo
       @param description What is this ToDoEvent about
       @param hasDate Does this Event got a deadline
       @param date what is the deadline?
       @param uid what is the UUID of this Event
    **/
    ToDoEvent( bool completed = false, int priority = NORMAL,
	       const QStringList &category = QStringList(),
	       const QString &summary = QString::null ,
               const QString &description = QString::null,
               ushort progress = 0,
	       bool hasDate = false, QDate date = QDate::currentDate(), int uid = -1 );
    /* Copy c'tor

    **/
    ToDoEvent(const ToDoEvent & );

    /*
       Is this event completed?
    **/
    bool isCompleted() const;

    /*
       Does this Event have a deadline
    **/
    bool hasDate() const;

    /*
      What is the priority?
    **/
    int priority()const ;

    /**
     * progress as ushort 0, 20, 40, 60, 80 or 100%
     */
    ushort progress() const;
    /*
      All category numbers as QString in a List
    **/
    QStringList allCategories()const;

    /*
      * Same as above but with QArray<int>
      */
    QArray<int> categories() const;

    /**
     * The end Date
     */
    QDate date()const;

    /**
     * The description of the todo
     */
    QString description()const;

    /**
     * A small summary of the todo
     */
    QString summary() const;

    /**
     * Return this todoevent in a RichText formatted QString
     */
    QString richText() const;

    /**
     * Returns the UID of the Todo
     */
    int uid()const { return m_uid;};


    QString extra(const  QString& )const;

    /**
     * returns a list of apps which have related items
     */
    QStringList relatedApps()const;

    /**
     * returns all relations for one app
     */
    QArray<int> relations( const QString& app )const;
    /**
     * Set if this Todo is completed
     */
    void setCompleted(bool completed );

    /**
     * set if this todo got an end data
     */
    void setHasDate( bool hasDate );
    // if the category doesn't exist we will create it
    // this sets the the Category after this call category will be the only category
    void setCategory( const QString &category );
    // adds a category to the Categories of this event
    void insertCategory(const QString &category );

    /**
     * Removes this event from all categories
     */
    void clearCategories();

    /**
     * This todo belongs to xxx categories
     */
    void setCategories(const QStringList& );

    /**
     * Set the priority of the Todo
     */
    void setPriority(int priority );

    /**
     * Set the progress.
     */
    void setProgress( ushort progress );

    /**
     * add related function it replaces too ;)
     */
    void addRelated( const QString& app, int id );

    /**
     * add related
     */
    void addRelated( const QString& app, QArray<int> ids );

    /**
     * clear relations for one app
     */
    void clearRelated(const QString& app);

    /**
     * set the end date
     */
    void setDate( QDate date );
    void setDescription(const QString& );
    void setSummary(const QString& );
    void setExtra( const QString&,  const QString& );
    bool isOverdue();

    bool match( const QRegExp &r )const;

    void setUid(int id) {m_uid = id; };
    bool operator<(const ToDoEvent &toDoEvent )const;
    bool operator<=(const ToDoEvent &toDoEvent )const;
    bool operator!=(const ToDoEvent &toDoEvent )const { return !(*this == toDoEvent); };
    bool operator>(const ToDoEvent &toDoEvent )const;
    bool operator>=(const ToDoEvent &toDoEvent)const;
    bool operator==(const ToDoEvent &toDoEvent )const;
    ToDoEvent &operator=(const ToDoEvent &toDoEvent );
 private:
    class ToDoEventPrivate;
    ToDoEventPrivate *d;
    QDate m_date;
    bool m_isCompleted:1;
    bool m_hasDate:1;
    int m_priority;
    QStringList m_category;
    QString m_desc;
    QString m_sum;
    QMap<QString, QString> m_extra;
    QMap<QString, QArray<int> > m_relations;
    int m_uid;
    ushort m_prog;
};


#endif