-rw-r--r-- | libopie2/opiepim/core/orecur.cpp | 8 | ||||
-rw-r--r-- | libopie2/opiepim/core/orecur.h | 1 |
2 files changed, 9 insertions, 0 deletions
diff --git a/libopie2/opiepim/core/orecur.cpp b/libopie2/opiepim/core/orecur.cpp index 8c9ad46..f46f22e 100644 --- a/libopie2/opiepim/core/orecur.cpp +++ b/libopie2/opiepim/core/orecur.cpp | |||
@@ -1,84 +1,92 @@ | |||
1 | #include <time.h> | 1 | #include <time.h> |
2 | 2 | ||
3 | #include <qshared.h> | 3 | #include <qshared.h> |
4 | 4 | ||
5 | #include <qtopia/timeconversion.h> | 5 | #include <qtopia/timeconversion.h> |
6 | 6 | ||
7 | #include "otimezone.h" | 7 | #include "otimezone.h" |
8 | #include "orecur.h" | 8 | #include "orecur.h" |
9 | 9 | ||
10 | struct ORecur::Data : public QShared { | 10 | struct ORecur::Data : public QShared { |
11 | Data() : QShared() { | 11 | Data() : QShared() { |
12 | type = ORecur::NoRepeat; | 12 | type = ORecur::NoRepeat; |
13 | freq = -1; | 13 | freq = -1; |
14 | days = 0; | 14 | days = 0; |
15 | pos = 0; | 15 | pos = 0; |
16 | create = QDateTime::currentDateTime(); | 16 | create = QDateTime::currentDateTime(); |
17 | hasEnd = FALSE; | 17 | hasEnd = FALSE; |
18 | end = QDate::currentDate(); | 18 | end = QDate::currentDate(); |
19 | } | 19 | } |
20 | char days; // Q_UINT8 for 8 seven days;) | 20 | char days; // Q_UINT8 for 8 seven days;) |
21 | ORecur::RepeatType type; | 21 | ORecur::RepeatType type; |
22 | int freq; | 22 | int freq; |
23 | int pos; | 23 | int pos; |
24 | bool hasEnd : 1; | 24 | bool hasEnd : 1; |
25 | QDate end; | 25 | QDate end; |
26 | QDateTime create; | 26 | QDateTime create; |
27 | int rep; | 27 | int rep; |
28 | QString app; | 28 | QString app; |
29 | ExceptionList list; | 29 | ExceptionList list; |
30 | QDate start; | 30 | QDate start; |
31 | }; | 31 | }; |
32 | 32 | ||
33 | 33 | ||
34 | ORecur::ORecur() { | 34 | ORecur::ORecur() { |
35 | data = new Data; | 35 | data = new Data; |
36 | } | 36 | } |
37 | |||
38 | ORecur::ORecur( const QMap<int, QString>& map ) | ||
39 | { | ||
40 | ORecur(); | ||
41 | fromMap( map ); | ||
42 | } | ||
43 | |||
44 | |||
37 | ORecur::ORecur( const ORecur& rec) | 45 | ORecur::ORecur( const ORecur& rec) |
38 | : data( rec.data ) | 46 | : data( rec.data ) |
39 | { | 47 | { |
40 | data->ref(); | 48 | data->ref(); |
41 | } | 49 | } |
42 | ORecur::~ORecur() { | 50 | ORecur::~ORecur() { |
43 | if ( data->deref() ) { | 51 | if ( data->deref() ) { |
44 | delete data; | 52 | delete data; |
45 | data = 0l; | 53 | data = 0l; |
46 | } | 54 | } |
47 | } | 55 | } |
48 | void ORecur::deref() { | 56 | void ORecur::deref() { |
49 | if ( data->deref() ) { | 57 | if ( data->deref() ) { |
50 | delete data; | 58 | delete data; |
51 | data = 0l; | 59 | data = 0l; |
52 | } | 60 | } |
53 | } | 61 | } |
54 | bool ORecur::operator==( const ORecur& )const { | 62 | bool ORecur::operator==( const ORecur& )const { |
55 | return false; | 63 | return false; |
56 | } | 64 | } |
57 | ORecur &ORecur::operator=( const ORecur& re) { | 65 | ORecur &ORecur::operator=( const ORecur& re) { |
58 | if ( *this == re ) return *this; | 66 | if ( *this == re ) return *this; |
59 | 67 | ||
60 | re.data->ref(); | 68 | re.data->ref(); |
61 | deref(); | 69 | deref(); |
62 | data = re.data; | 70 | data = re.data; |
63 | 71 | ||
64 | return *this; | 72 | return *this; |
65 | } | 73 | } |
66 | bool ORecur::doesRecur()const { | 74 | bool ORecur::doesRecur()const { |
67 | return !( type() == NoRepeat ); | 75 | return !( type() == NoRepeat ); |
68 | } | 76 | } |
69 | /* | 77 | /* |
70 | * we try to be smart here | 78 | * we try to be smart here |
71 | * | 79 | * |
72 | */ | 80 | */ |
73 | bool ORecur::doesRecur( const QDate& date ) { | 81 | bool ORecur::doesRecur( const QDate& date ) { |
74 | /* the day before the recurrance */ | 82 | /* the day before the recurrance */ |
75 | QDate da = date.addDays(-1); | 83 | QDate da = date.addDays(-1); |
76 | 84 | ||
77 | QDate recur; | 85 | QDate recur; |
78 | if (!nextOcurrence( da, recur ) ) | 86 | if (!nextOcurrence( da, recur ) ) |
79 | return false; | 87 | return false; |
80 | 88 | ||
81 | return (recur == date); | 89 | return (recur == date); |
82 | } | 90 | } |
83 | // FIXME unuglify! | 91 | // FIXME unuglify! |
84 | // GPL from Datebookdb.cpp | 92 | // GPL from Datebookdb.cpp |
diff --git a/libopie2/opiepim/core/orecur.h b/libopie2/opiepim/core/orecur.h index 47901b0..7750c12 100644 --- a/libopie2/opiepim/core/orecur.h +++ b/libopie2/opiepim/core/orecur.h | |||
@@ -1,72 +1,73 @@ | |||
1 | /* | 1 | /* |
2 | * GPL from TT | 2 | * GPL from TT |
3 | */ | 3 | */ |
4 | 4 | ||
5 | #ifndef OPIE_RECUR_H | 5 | #ifndef OPIE_RECUR_H |
6 | #define OPIE_RECUR_H | 6 | #define OPIE_RECUR_H |
7 | 7 | ||
8 | #include <sys/types.h> | 8 | #include <sys/types.h> |
9 | 9 | ||
10 | #include <qdatetime.h> | 10 | #include <qdatetime.h> |
11 | #include <qvaluelist.h> | 11 | #include <qvaluelist.h> |
12 | #include <qmap.h> | 12 | #include <qmap.h> |
13 | 13 | ||
14 | class ORecur { | 14 | class ORecur { |
15 | public: | 15 | public: |
16 | typedef QValueList<QDate> ExceptionList; | 16 | typedef QValueList<QDate> ExceptionList; |
17 | enum RepeatType{ NoRepeat = -1, Daily, Weekly, MonthlyDay, | 17 | enum RepeatType{ NoRepeat = -1, Daily, Weekly, MonthlyDay, |
18 | MonthlyDate, Yearly }; | 18 | MonthlyDate, Yearly }; |
19 | enum Days { MON = 0x01, TUE = 0x02, WED = 0x04, THU = 0x08, | 19 | enum Days { MON = 0x01, TUE = 0x02, WED = 0x04, THU = 0x08, |
20 | FRI = 0x10, SAT = 0x20, SUN = 0x40 }; | 20 | FRI = 0x10, SAT = 0x20, SUN = 0x40 }; |
21 | enum Fields{ RType = 0, RWeekdays, RPosition, RFreq, RHasEndDate, | 21 | enum Fields{ RType = 0, RWeekdays, RPosition, RFreq, RHasEndDate, |
22 | EndDate, Created, Exceptions }; | 22 | EndDate, Created, Exceptions }; |
23 | 23 | ||
24 | ORecur(); | 24 | ORecur(); |
25 | ORecur( const QMap<int, QString>& map ); | ||
25 | ORecur( const ORecur& ); | 26 | ORecur( const ORecur& ); |
26 | ~ORecur(); | 27 | ~ORecur(); |
27 | 28 | ||
28 | ORecur &operator=( const ORecur& ); | 29 | ORecur &operator=( const ORecur& ); |
29 | bool operator==(const ORecur& )const; | 30 | bool operator==(const ORecur& )const; |
30 | 31 | ||
31 | bool doesRecur()const; | 32 | bool doesRecur()const; |
32 | /* if it recurrs on that day */ | 33 | /* if it recurrs on that day */ |
33 | bool doesRecur( const QDate& ); | 34 | bool doesRecur( const QDate& ); |
34 | RepeatType type()const; | 35 | RepeatType type()const; |
35 | int frequency()const; | 36 | int frequency()const; |
36 | int position()const; | 37 | int position()const; |
37 | char days()const; | 38 | char days()const; |
38 | bool hasEndDate()const; | 39 | bool hasEndDate()const; |
39 | QDate start()const; | 40 | QDate start()const; |
40 | QDate endDate()const; | 41 | QDate endDate()const; |
41 | QDateTime createdDateTime()const; | 42 | QDateTime createdDateTime()const; |
42 | /** | 43 | /** |
43 | * starting on monday=0, sunday=6 | 44 | * starting on monday=0, sunday=6 |
44 | * for convience | 45 | * for convience |
45 | */ | 46 | */ |
46 | bool repeatOnWeekDay( int day )const; | 47 | bool repeatOnWeekDay( int day )const; |
47 | 48 | ||
48 | /** | 49 | /** |
49 | * FromWhereToStart is not included!!! | 50 | * FromWhereToStart is not included!!! |
50 | */ | 51 | */ |
51 | bool nextOcurrence( const QDate& FromWhereToStart, QDate &recurDate ); | 52 | bool nextOcurrence( const QDate& FromWhereToStart, QDate &recurDate ); |
52 | 53 | ||
53 | /** | 54 | /** |
54 | * The module this ORecur belongs to | 55 | * The module this ORecur belongs to |
55 | */ | 56 | */ |
56 | QString service()const; | 57 | QString service()const; |
57 | 58 | ||
58 | /* | 59 | /* |
59 | * reference to the exception list | 60 | * reference to the exception list |
60 | */ | 61 | */ |
61 | ExceptionList &exceptions(); | 62 | ExceptionList &exceptions(); |
62 | 63 | ||
63 | /** | 64 | /** |
64 | * the current repetition | 65 | * the current repetition |
65 | */ | 66 | */ |
66 | int repetition()const; | 67 | int repetition()const; |
67 | 68 | ||
68 | void setType( const RepeatType& ); | 69 | void setType( const RepeatType& ); |
69 | void setFrequency( int freq ); | 70 | void setFrequency( int freq ); |
70 | void setPosition( int pos ); | 71 | void setPosition( int pos ); |
71 | void setDays( char c); | 72 | void setDays( char c); |
72 | void setEndDate( const QDate& dt ); | 73 | void setEndDate( const QDate& dt ); |