summaryrefslogtreecommitdiff
path: root/libopie/pim/otodoaccess.h
blob: 916923fc4064f470939b7472d512ed30bf185efd (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
#ifndef OPIE_TODO_ACCESS_H
#define OPIE_TODO_ACCESS_H

#include <qobject.h>
#include <qvaluelist.h>

#include "otodo.h"
#include "otodoaccessbackend.h"
#include "opimaccesstemplate.h"


/**
 * OTodoAccess
 * the class to get access to
 * the todolist
 */
class OTodoAccess : public QObject, public OPimAccessTemplate<OTodo> {
    Q_OBJECT
public:
    enum SortOrder { Completed = 0,
                     Priority,
                     Description,
                     Deadline };
    enum SortFilter{ Category =1,
                     OnlyOverDue= 2,
                     DoNotShowCompleted =4  };
    /**
     * if you use 0l
     * the default resource will be
     * picked up
     */
    OTodoAccess( OTodoAccessBackend* = 0l, enum Access acc = Random );
    ~OTodoAccess();


    /* our functions here */
    /**
     * include todos from start to end
     * includeNoDates whether or not to include
     * events with no dates
     */
    List effectiveToDos( const QDate& start,
                         const QDate& end,
                         bool includeNoDates = true );

    /**
     * start
     * end date taken from the currentDate()
     */
    List effectiveToDos( const QDate& start,
                         bool includeNoDates = true );


    /**
     * return overdue OTodos
     */
    List overDue();

    /**
     *
     */
    List sorted( bool ascending, int sortOrder, int sortFilter, int cat );

    /**
     * merge a list of OTodos into
     * the resource
     */
    void mergeWith( const QValueList<OTodo>& );

    /**
     * delete all already completed items
     */
    void removeAllCompleted();

    /**
     * request information about what a backend supports.
     * Supports in the sense of beeing able to store.
     * This is related to the enum in OTodo
     *
     * @param backend Will be used in the future when we support multiple backend
     */
    QBitArray backendSupport( const QString& backend = QString::null )const;

    /**
     * see above but for a specefic attribute. This method was added for convience
     * @param attr The attribute to be queried for
     * @param backend Will be used in the future when we support multiple backends
     */
    bool backendSupports( int attr, const QString& backend = QString::null  )const;
signals:
    /**
     * if the OTodoAccess was changed
     */
    void changed( const OTodoAccess* );
    void changed( const OTodoAccess*, int uid );
    void added( const OTodoAccess*,  int uid );
    void removed( const OTodoAccess*, int uid );
private:
    int m_cat;
    OTodoAccessBackend* m_todoBackEnd;
    class OTodoAccessPrivate;
    OTodoAccessPrivate* d;
};

#endif