summaryrefslogtreecommitdiff
path: root/libopie2/opiepim/core
Unidiff
Diffstat (limited to 'libopie2/opiepim/core') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opiepim/core/orecur.cpp8
-rw-r--r--libopie2/opiepim/core/orecur.h1
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
10struct ORecur::Data : public QShared { 10struct 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
34ORecur::ORecur() { 34ORecur::ORecur() {
35 data = new Data; 35 data = new Data;
36} 36}
37
38ORecur::ORecur( const QMap<int, QString>& map )
39{
40 ORecur();
41 fromMap( map );
42}
43
44
37ORecur::ORecur( const ORecur& rec) 45ORecur::ORecur( const ORecur& rec)
38 : data( rec.data ) 46 : data( rec.data )
39{ 47{
40 data->ref(); 48 data->ref();
41} 49}
42ORecur::~ORecur() { 50ORecur::~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}
48void ORecur::deref() { 56void 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}
54bool ORecur::operator==( const ORecur& )const { 62bool ORecur::operator==( const ORecur& )const {
55 return false; 63 return false;
56} 64}
57ORecur &ORecur::operator=( const ORecur& re) { 65ORecur &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}
66bool ORecur::doesRecur()const { 74bool 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 */
73bool ORecur::doesRecur( const QDate& date ) { 81bool 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
14class ORecur { 14class ORecur {
15public: 15public:
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 );