-rw-r--r-- | libopie2/opiepim/core/opimnotify.cpp | 219 | ||||
-rw-r--r-- | libopie2/opiepim/core/opimnotify.h | 21 | ||||
-rw-r--r-- | libopie2/opiepim/core/opimnotifymanager.cpp | 120 | ||||
-rw-r--r-- | libopie2/opiepim/core/opimnotifymanager.h | 18 | ||||
-rw-r--r-- | libopie2/opiepim/core/opimrecord.cpp | 117 | ||||
-rw-r--r-- | libopie2/opiepim/core/opimrecord.h | 28 | ||||
-rw-r--r-- | libopie2/opiepim/ocontact.cpp | 235 | ||||
-rw-r--r-- | libopie2/opiepim/ocontact.h | 11 | ||||
-rw-r--r-- | libopie2/opiepim/ocontactfields.cpp | 40 | ||||
-rw-r--r-- | libopie2/opiepim/ocontactfields.h | 16 | ||||
-rw-r--r-- | libopie2/opiepim/oevent.cpp | 534 | ||||
-rw-r--r-- | libopie2/opiepim/oevent.h | 33 | ||||
-rw-r--r-- | libopie2/opiepim/orecordlist.h | 142 | ||||
-rw-r--r-- | libopie2/opiepim/otodo.cpp | 294 | ||||
-rw-r--r-- | libopie2/opiepim/otodo.h | 27 |
15 files changed, 1349 insertions, 506 deletions
diff --git a/libopie2/opiepim/core/opimnotify.cpp b/libopie2/opiepim/core/opimnotify.cpp index c61f9da..43858f0 100644 --- a/libopie2/opiepim/core/opimnotify.cpp +++ b/libopie2/opiepim/core/opimnotify.cpp | |||
@@ -25,91 +25,138 @@ | |||
25 | If not, write to the Free Software Foundation, | 25 | If not, write to the Free Software Foundation, |
26 | Inc., 59 Temple Place - Suite 330, | 26 | Inc., 59 Temple Place - Suite 330, |
27 | Boston, MA 02111-1307, USA. | 27 | Boston, MA 02111-1307, USA. |
28 | */ | 28 | */ |
29 | #include <qshared.h> | ||
30 | 29 | ||
31 | #include <opie2/opimnotify.h> | 30 | #include "opimnotify.h" |
32 | 31 | ||
33 | namespace Opie { | 32 | /* QT */ |
33 | #include <qshared.h> | ||
34 | 34 | ||
35 | struct OPimNotify::Data : public QShared { | 35 | namespace Opie |
36 | Data() : QShared(),dur(-1),parent(0) { | 36 | { |
37 | 37 | ||
38 | struct OPimNotify::Data : public QShared | ||
39 | { | ||
40 | Data() : QShared(), dur( -1 ), parent( 0 ) | ||
41 | { | ||
38 | } | 42 | } |
39 | QDateTime start; | 43 | QDateTime start; |
40 | int dur; | 44 | int dur; |
41 | QString application; | 45 | QString application; |
42 | int parent; | 46 | int parent; |
43 | }; | 47 | }; |
44 | 48 | ||
45 | OPimNotify::OPimNotify( const QDateTime& start, int duration, int parent ) { | 49 | OPimNotify::OPimNotify( const QDateTime& start, int duration, int parent ) |
50 | { | ||
46 | data = new Data; | 51 | data = new Data; |
47 | data->start = start; | 52 | data->start = start; |
48 | data->dur = duration; | 53 | data->dur = duration; |
49 | data->parent = parent; | 54 | data->parent = parent; |
50 | } | 55 | } |
56 | |||
57 | |||
51 | OPimNotify::OPimNotify( const OPimNotify& noti) | 58 | OPimNotify::OPimNotify( const OPimNotify& noti) |
52 | : data( noti.data ) | 59 | : data( noti.data ) |
53 | { | 60 | { |
54 | data->ref(); | 61 | data->ref(); |
55 | } | 62 | } |
56 | OPimNotify::~OPimNotify() { | 63 | |
57 | if ( data->deref() ) { | 64 | |
65 | OPimNotify::~OPimNotify() | ||
66 | { | ||
67 | if ( data->deref() ) | ||
68 | { | ||
58 | delete data; | 69 | delete data; |
59 | data = 0l; | 70 | data = 0l; |
60 | } | 71 | } |
61 | } | 72 | } |
62 | 73 | ||
63 | OPimNotify &OPimNotify::operator=( const OPimNotify& noti) { | 74 | |
75 | OPimNotify &OPimNotify::operator=( const OPimNotify& noti ) | ||
76 | { | ||
64 | noti.data->ref(); | 77 | noti.data->ref(); |
65 | deref(); | 78 | deref(); |
66 | data = noti.data; | 79 | data = noti.data; |
67 | 80 | ||
68 | return *this; | 81 | return *this; |
69 | } | 82 | } |
70 | bool OPimNotify::operator==( const OPimNotify& noti ) { | 83 | |
84 | |||
85 | bool OPimNotify::operator==( const OPimNotify& noti ) | ||
86 | { | ||
71 | if ( data == noti.data ) return true; | 87 | if ( data == noti.data ) return true; |
72 | if ( data->dur != noti.data->dur ) return false; | 88 | if ( data->dur != noti.data->dur ) return false; |
73 | if ( data->parent != noti.data->parent ) return false; | 89 | if ( data->parent != noti.data->parent ) return false; |
74 | if ( data->application != noti.data->application ) return false; | 90 | if ( data->application != noti.data->application ) return false; |
75 | if ( data->start != noti.data->start ) return false; | 91 | if ( data->start != noti.data->start ) return false; |
76 | 92 | ||
77 | return true; | 93 | return true; |
78 | } | 94 | } |
79 | QDateTime OPimNotify::dateTime()const { | 95 | |
96 | |||
97 | QDateTime OPimNotify::dateTime() const | ||
98 | { | ||
80 | return data->start; | 99 | return data->start; |
81 | } | 100 | } |
82 | QString OPimNotify::service()const { | 101 | |
102 | |||
103 | QString OPimNotify::service() const | ||
104 | { | ||
83 | return data->application; | 105 | return data->application; |
84 | } | 106 | } |
85 | int OPimNotify::parent()const { | 107 | |
108 | |||
109 | int OPimNotify::parent() const | ||
110 | { | ||
86 | return data->parent; | 111 | return data->parent; |
87 | } | 112 | } |
88 | int OPimNotify::duration()const { | 113 | |
114 | |||
115 | int OPimNotify::duration() const | ||
116 | { | ||
89 | return data->dur; | 117 | return data->dur; |
90 | } | 118 | } |
91 | QDateTime OPimNotify::endTime()const { | 119 | |
120 | |||
121 | QDateTime OPimNotify::endTime() const | ||
122 | { | ||
92 | return QDateTime( data->start.date(), data->start.time().addSecs( data->dur) ); | 123 | return QDateTime( data->start.date(), data->start.time().addSecs( data->dur) ); |
93 | } | 124 | } |
94 | void OPimNotify::setDateTime( const QDateTime& time ) { | 125 | |
126 | |||
127 | void OPimNotify::setDateTime( const QDateTime& time ) | ||
128 | { | ||
95 | copyIntern(); | 129 | copyIntern(); |
96 | data->start = time; | 130 | data->start = time; |
97 | } | 131 | } |
98 | void OPimNotify::setDuration( int dur ) { | 132 | |
133 | |||
134 | void OPimNotify::setDuration( int dur ) | ||
135 | { | ||
99 | copyIntern(); | 136 | copyIntern(); |
100 | data->dur = dur; | 137 | data->dur = dur; |
101 | } | 138 | } |
102 | void OPimNotify::setParent( int uid ) { | 139 | |
140 | |||
141 | void OPimNotify::setParent( int uid ) | ||
142 | { | ||
103 | copyIntern(); | 143 | copyIntern(); |
104 | data->parent = uid; | 144 | data->parent = uid; |
105 | } | 145 | } |
106 | void OPimNotify::setService( const QString& str ) { | 146 | |
147 | |||
148 | void OPimNotify::setService( const QString& str ) | ||
149 | { | ||
107 | copyIntern(); | 150 | copyIntern(); |
108 | data->application = str; | 151 | data->application = str; |
109 | } | 152 | } |
110 | void OPimNotify::copyIntern() { | 153 | |
111 | if ( data->count != 1 ) { | 154 | |
155 | void OPimNotify::copyIntern() | ||
156 | { | ||
157 | if ( data->count != 1 ) | ||
158 | { | ||
112 | data->deref(); | 159 | data->deref(); |
113 | Data* dat = new Data; | 160 | Data* dat = new Data; |
114 | dat->start = data->start; | 161 | dat->start = data->start; |
115 | dat->dur = data->dur; | 162 | dat->dur = data->dur; |
@@ -117,40 +164,57 @@ void OPimNotify::copyIntern() { | |||
117 | dat->parent = data->parent; | 164 | dat->parent = data->parent; |
118 | data = dat; | 165 | data = dat; |
119 | } | 166 | } |
120 | } | 167 | } |
121 | void OPimNotify::deref() { | 168 | |
122 | if ( data->deref() ) { | 169 | |
170 | void OPimNotify::deref() | ||
171 | { | ||
172 | if ( data->deref() ) | ||
173 | { | ||
123 | delete data; | 174 | delete data; |
124 | data = 0; | 175 | data = 0; |
125 | } | 176 | } |
126 | } | 177 | } |
127 | 178 | ||
179 | |||
128 | /***********************************************************/ | 180 | /***********************************************************/ |
129 | struct OPimAlarm::Data : public QShared { | 181 | struct OPimAlarm::Data : public QShared |
130 | Data() : QShared() { | 182 | { |
183 | Data() : QShared() | ||
184 | { | ||
131 | sound = 1; | 185 | sound = 1; |
132 | } | 186 | } |
133 | int sound; | 187 | int sound; |
134 | QString file; | 188 | QString file; |
135 | }; | 189 | }; |
190 | |||
191 | |||
136 | OPimAlarm::OPimAlarm( int sound, const QDateTime& start, int duration, int parent ) | 192 | OPimAlarm::OPimAlarm( int sound, const QDateTime& start, int duration, int parent ) |
137 | : OPimNotify( start, duration, parent ) | 193 | : OPimNotify( start, duration, parent ) |
138 | { | 194 | { |
139 | data = new Data; | 195 | data = new Data; |
140 | data->sound = sound; | 196 | data->sound = sound; |
141 | } | 197 | } |
198 | |||
199 | |||
142 | OPimAlarm::OPimAlarm( const OPimAlarm& al) | 200 | OPimAlarm::OPimAlarm( const OPimAlarm& al) |
143 | : OPimNotify(al), data( al.data ) | 201 | : OPimNotify(al), data( al.data ) |
144 | { | 202 | { |
145 | data->ref(); | 203 | data->ref(); |
146 | } | 204 | } |
147 | OPimAlarm::~OPimAlarm() { | 205 | |
148 | if ( data->deref() ) { | 206 | |
207 | OPimAlarm::~OPimAlarm() | ||
208 | { | ||
209 | if ( data->deref() ) | ||
210 | { | ||
149 | delete data; | 211 | delete data; |
150 | data = 0l; | 212 | data = 0l; |
151 | } | 213 | } |
152 | } | 214 | } |
215 | |||
216 | |||
153 | OPimAlarm &OPimAlarm::operator=( const OPimAlarm& al) | 217 | OPimAlarm &OPimAlarm::operator=( const OPimAlarm& al) |
154 | { | 218 | { |
155 | OPimNotify::operator=( al ); | 219 | OPimNotify::operator=( al ); |
156 | deref(); | 220 | deref(); |
@@ -160,99 +224,156 @@ OPimAlarm &OPimAlarm::operator=( const OPimAlarm& al) | |||
160 | 224 | ||
161 | 225 | ||
162 | return *this; | 226 | return *this; |
163 | } | 227 | } |
164 | bool OPimAlarm::operator==( const OPimAlarm& al) { | 228 | |
229 | |||
230 | bool OPimAlarm::operator==( const OPimAlarm& al ) | ||
231 | { | ||
165 | if ( data->sound != al.data->sound ) return false; | 232 | if ( data->sound != al.data->sound ) return false; |
166 | else if ( data->sound == Custom && data->file != al.data->file ) | 233 | else if ( data->sound == Custom && data->file != al.data->file ) |
167 | return false; | 234 | return false; |
168 | 235 | ||
169 | return OPimNotify::operator==( al ); | 236 | return OPimNotify::operator==( al ); |
170 | } | 237 | } |
171 | QString OPimAlarm::type()const { | 238 | |
239 | |||
240 | QString OPimAlarm::type() const | ||
241 | { | ||
172 | return QString::fromLatin1("OPimAlarm"); | 242 | return QString::fromLatin1("OPimAlarm"); |
173 | } | 243 | } |
174 | int OPimAlarm::sound()const { | 244 | |
245 | |||
246 | int OPimAlarm::sound() const | ||
247 | { | ||
175 | return data->sound; | 248 | return data->sound; |
176 | } | 249 | } |
177 | QString OPimAlarm::file()const { | 250 | |
251 | |||
252 | QString OPimAlarm::file() const | ||
253 | { | ||
178 | return data->file; | 254 | return data->file; |
179 | } | 255 | } |
180 | void OPimAlarm::setSound( int snd) { | 256 | |
257 | |||
258 | void OPimAlarm::setSound( int snd ) | ||
259 | { | ||
181 | copyIntern(); | 260 | copyIntern(); |
182 | data->sound = snd; | 261 | data->sound = snd; |
183 | } | 262 | } |
184 | void OPimAlarm::setFile( const QString& sound ) { | 263 | |
264 | |||
265 | void OPimAlarm::setFile( const QString& sound ) | ||
266 | { | ||
185 | copyIntern(); | 267 | copyIntern(); |
186 | data->file = sound; | 268 | data->file = sound; |
187 | } | 269 | } |
188 | void OPimAlarm::deref() { | 270 | |
189 | if ( data->deref() ) { | 271 | |
272 | void OPimAlarm::deref() | ||
273 | { | ||
274 | if ( data->deref() ) | ||
275 | { | ||
190 | delete data; | 276 | delete data; |
191 | data = 0l; | 277 | data = 0l; |
192 | } | 278 | } |
193 | } | 279 | } |
194 | void OPimAlarm::copyIntern() { | 280 | |
195 | if ( data->count != 1 ) { | 281 | |
282 | void OPimAlarm::copyIntern() | ||
283 | { | ||
284 | if ( data->count != 1 ) | ||
285 | { | ||
196 | data->deref(); | 286 | data->deref(); |
197 | Data *newDat = new Data; | 287 | Data *newDat = new Data; |
198 | newDat->sound = data->sound; | 288 | newDat->sound = data->sound; |
199 | newDat->file = data->file; | 289 | newDat->file = data->file; |
200 | data = newDat; | 290 | data = newDat; |
201 | } | 291 | } |
202 | } | 292 | } |
293 | |||
294 | |||
203 | /************************/ | 295 | /************************/ |
204 | struct OPimReminder::Data : public QShared { | 296 | struct OPimReminder::Data : public QShared |
205 | Data() : QShared(), record( 0) { | 297 | { |
206 | } | 298 | Data() : QShared(), record( 0 ) |
299 | {} | ||
207 | int record; | 300 | int record; |
208 | 301 | ||
209 | }; | 302 | }; |
303 | |||
304 | |||
210 | OPimReminder::OPimReminder( int uid, const QDateTime& start, int dur, int parent ) | 305 | OPimReminder::OPimReminder( int uid, const QDateTime& start, int dur, int parent ) |
211 | : OPimNotify( start, dur, parent ) | 306 | : OPimNotify( start, dur, parent ) |
212 | { | 307 | { |
213 | data = new Data; | 308 | data = new Data; |
214 | data->record = uid; | 309 | data->record = uid; |
215 | } | 310 | } |
311 | |||
312 | |||
216 | OPimReminder::OPimReminder( const OPimReminder& rem ) | 313 | OPimReminder::OPimReminder( const OPimReminder& rem ) |
217 | : OPimNotify( rem ), data( rem.data ) | 314 | : OPimNotify( rem ), data( rem.data ) |
218 | { | 315 | { |
219 | data->ref(); | 316 | data->ref(); |
220 | } | 317 | } |
221 | OPimReminder& OPimReminder::operator=( const OPimReminder& rem) { | 318 | |
319 | |||
320 | OPimReminder& OPimReminder::operator=( const OPimReminder& rem ) | ||
321 | { | ||
222 | OPimNotify::operator=(rem ); | 322 | OPimNotify::operator=(rem ); |
223 | 323 | ||
224 | deref(); | 324 | deref(); |
225 | rem.data->ref(); | 325 | rem.data->ref(); |
226 | data = rem.data; | 326 | data = rem.data; |
227 | 327 | ||
228 | return *this; | 328 | return *this; |
229 | } | 329 | } |
230 | bool OPimReminder::operator==( const OPimReminder& rem) { | 330 | |
331 | |||
332 | bool OPimReminder::operator==( const OPimReminder& rem ) | ||
333 | { | ||
231 | if ( data->record != rem.data->record ) return false; | 334 | if ( data->record != rem.data->record ) return false; |
232 | 335 | ||
233 | return OPimNotify::operator==( rem ); | 336 | return OPimNotify::operator==( rem ); |
234 | } | 337 | } |
235 | QString OPimReminder::type()const { | 338 | |
339 | |||
340 | QString OPimReminder::type() const | ||
341 | { | ||
236 | return QString::fromLatin1("OPimReminder"); | 342 | return QString::fromLatin1("OPimReminder"); |
237 | } | 343 | } |
238 | int OPimReminder::recordUid()const { | 344 | |
345 | |||
346 | int OPimReminder::recordUid() const | ||
347 | { | ||
239 | return data->record; | 348 | return data->record; |
240 | } | 349 | } |
241 | void OPimReminder::setRecordUid( int uid ) { | 350 | |
351 | |||
352 | void OPimReminder::setRecordUid( int uid ) | ||
353 | { | ||
242 | copyIntern(); | 354 | copyIntern(); |
243 | data->record = uid; | 355 | data->record = uid; |
244 | } | 356 | } |
245 | void OPimReminder::deref() { | 357 | |
246 | if ( data->deref() ) { | 358 | |
359 | void OPimReminder::deref() | ||
360 | { | ||
361 | if ( data->deref() ) | ||
362 | { | ||
247 | delete data; | 363 | delete data; |
248 | data = 0l; | 364 | data = 0l; |
249 | } | 365 | } |
250 | } | 366 | } |
251 | void OPimReminder::copyIntern() { | 367 | |
252 | if ( data->count != 1 ) { | 368 | |
369 | void OPimReminder::copyIntern() | ||
370 | { | ||
371 | if ( data->count != 1 ) | ||
372 | { | ||
253 | Data* da = new Data; | 373 | Data* da = new Data; |
254 | da->record = data->record; | 374 | da->record = data->record; |
255 | data = da; | 375 | data = da; |
256 | } | 376 | } |
257 | } | 377 | } |
378 | |||
258 | } | 379 | } |
diff --git a/libopie2/opiepim/core/opimnotify.h b/libopie2/opiepim/core/opimnotify.h index fed3970..d0e40ca 100644 --- a/libopie2/opiepim/core/opimnotify.h +++ b/libopie2/opiepim/core/opimnotify.h | |||
@@ -25,16 +25,18 @@ | |||
25 | If not, write to the Free Software Foundation, | 25 | If not, write to the Free Software Foundation, |
26 | Inc., 59 Temple Place - Suite 330, | 26 | Inc., 59 Temple Place - Suite 330, |
27 | Boston, MA 02111-1307, USA. | 27 | Boston, MA 02111-1307, USA. |
28 | */ | 28 | */ |
29 | #ifndef OPIE_PIM_NOTIFY_H | ||
30 | #define OPIE_PIM_NOTIFY_H | ||
31 | 29 | ||
30 | #ifndef OPIMNOTIFY_H | ||
31 | #define OPIMNOTIFY_H | ||
32 | |||
33 | /* QT */ | ||
32 | #include <qdatetime.h> | 34 | #include <qdatetime.h> |
33 | #include <qvaluelist.h> | 35 | #include <qvaluelist.h> |
34 | 36 | ||
35 | 37 | namespace Opie | |
36 | namespace Opie { | 38 | { |
37 | /** | 39 | /** |
38 | * This is the base class of Notifiers. Possible | 40 | * This is the base class of Notifiers. Possible |
39 | * notifiers would be Alarms, Reminders | 41 | * notifiers would be Alarms, Reminders |
40 | * What they share is that they have | 42 | * What they share is that they have |
@@ -46,9 +48,11 @@ namespace Opie { | |||
46 | * TALK to eilers: have a class OPimDuration which sets the Duration | 48 | * TALK to eilers: have a class OPimDuration which sets the Duration |
47 | * given on the Due/Start Date? -zecke | 49 | * given on the Due/Start Date? -zecke |
48 | * discuss: do we need a uid for the notify? -zecke | 50 | * discuss: do we need a uid for the notify? -zecke |
49 | */ | 51 | */ |
50 | class OPimNotify { | 52 | class OPimNotify |
53 | { | ||
54 | |||
51 | public: | 55 | public: |
52 | typedef QValueList<OPimNotify> ValueList; | 56 | typedef QValueList<OPimNotify> ValueList; |
53 | OPimNotify( const QDateTime& start = QDateTime(), int duration = 0, int parent = 0 ); | 57 | OPimNotify( const QDateTime& start = QDateTime(), int duration = 0, int parent = 0 ); |
54 | OPimNotify( const OPimNotify& ); | 58 | OPimNotify( const OPimNotify& ); |
@@ -99,9 +103,10 @@ private: | |||
99 | * An alarm is a sound/mail/buzzer played/send | 103 | * An alarm is a sound/mail/buzzer played/send |
100 | * at a given time to inform about | 104 | * at a given time to inform about |
101 | * an Event | 105 | * an Event |
102 | */ | 106 | */ |
103 | class OPimAlarm : public OPimNotify { | 107 | class OPimAlarm : public OPimNotify |
108 | { | ||
104 | public: | 109 | public: |
105 | enum Sound{Loud=1, Silent=0, Custom=2 }; | 110 | enum Sound{Loud=1, Silent=0, Custom=2 }; |
106 | OPimAlarm( int sound = Silent, const QDateTime& start = QDateTime(), int duration = 0, int parent = 0 ); | 111 | OPimAlarm( int sound = Silent, const QDateTime& start = QDateTime(), int duration = 0, int parent = 0 ); |
107 | OPimAlarm( const OPimAlarm& ); | 112 | OPimAlarm( const OPimAlarm& ); |
@@ -134,11 +139,11 @@ private: | |||
134 | * datebook | 139 | * datebook |
135 | * Note that the returned dateTime() may be not valid. | 140 | * Note that the returned dateTime() may be not valid. |
136 | * In these cases one must resolve the uid and get the OEvent | 141 | * In these cases one must resolve the uid and get the OEvent |
137 | */ | 142 | */ |
138 | class OPimReminder : public OPimNotify { | 143 | class OPimReminder : public OPimNotify |
144 | { | ||
139 | public: | 145 | public: |
140 | |||
141 | /** | 146 | /** |
142 | * c'tor of a reminder | 147 | * c'tor of a reminder |
143 | * @param uid The uid of the Record inside the Datebook | 148 | * @param uid The uid of the Record inside the Datebook |
144 | * @param start the StartDate invalid for all day... | 149 | * @param start the StartDate invalid for all day... |
diff --git a/libopie2/opiepim/core/opimnotifymanager.cpp b/libopie2/opiepim/core/opimnotifymanager.cpp index 1771fad..a54d597 100644 --- a/libopie2/opiepim/core/opimnotifymanager.cpp +++ b/libopie2/opiepim/core/opimnotifymanager.cpp | |||
@@ -25,62 +25,96 @@ | |||
25 | If not, write to the Free Software Foundation, | 25 | If not, write to the Free Software Foundation, |
26 | Inc., 59 Temple Place - Suite 330, | 26 | Inc., 59 Temple Place - Suite 330, |
27 | Boston, MA 02111-1307, USA. | 27 | Boston, MA 02111-1307, USA. |
28 | */ | 28 | */ |
29 | #include <opie2/opimnotifymanager.h> | ||
30 | 29 | ||
30 | #include "opimnotifymanager.h" | ||
31 | |||
32 | /* OPIE */ | ||
31 | #include <opie2/oconversion.h> | 33 | #include <opie2/oconversion.h> |
32 | 34 | ||
35 | /* QT */ | ||
33 | #include <qstringlist.h> | 36 | #include <qstringlist.h> |
34 | 37 | ||
35 | namespace Opie { | 38 | namespace Opie |
39 | { | ||
36 | 40 | ||
37 | OPimNotifyManager::OPimNotifyManager( const Reminders& rem, const Alarms& al) | 41 | OPimNotifyManager::OPimNotifyManager( const Reminders& rem, const Alarms& al) |
38 | : m_rem( rem ), m_al( al ) | 42 | : m_rem( rem ), m_al( al ) |
39 | {} | 43 | {} |
40 | OPimNotifyManager::~OPimNotifyManager() { | 44 | |
41 | } | 45 | |
46 | OPimNotifyManager::~OPimNotifyManager() | ||
47 | {} | ||
48 | |||
49 | |||
42 | /* use static_cast and type instead of dynamic... */ | 50 | /* use static_cast and type instead of dynamic... */ |
43 | void OPimNotifyManager::add( const OPimNotify& noti) { | 51 | void OPimNotifyManager::add( const OPimNotify& noti ) |
44 | if ( noti.type() == QString::fromLatin1("OPimReminder") ) { | 52 | { |
53 | if ( noti.type() == QString::fromLatin1( "OPimReminder" ) ) | ||
54 | { | ||
45 | const OPimReminder& rem = static_cast<const OPimReminder&>(noti); | 55 | const OPimReminder& rem = static_cast<const OPimReminder&>(noti); |
46 | m_rem.append( rem ); | 56 | m_rem.append( rem ); |
47 | }else if ( noti.type() == QString::fromLatin1("OPimAlarm") ) { | 57 | } |
58 | else if ( noti.type() == QString::fromLatin1( "OPimAlarm" ) ) | ||
59 | { | ||
48 | const OPimAlarm& al = static_cast<const OPimAlarm&>(noti); | 60 | const OPimAlarm& al = static_cast<const OPimAlarm&>(noti); |
49 | m_al.append( al ); | 61 | m_al.append( al ); |
50 | } | 62 | } |
51 | } | 63 | } |
52 | void OPimNotifyManager::remove( const OPimNotify& noti) { | 64 | |
53 | if ( noti.type() == QString::fromLatin1("OPimReminder") ) { | 65 | |
66 | void OPimNotifyManager::remove( const OPimNotify& noti ) | ||
67 | { | ||
68 | if ( noti.type() == QString::fromLatin1( "OPimReminder" ) ) | ||
69 | { | ||
54 | const OPimReminder& rem = static_cast<const OPimReminder&>(noti); | 70 | const OPimReminder& rem = static_cast<const OPimReminder&>(noti); |
55 | m_rem.remove( rem ); | 71 | m_rem.remove( rem ); |
56 | }else if ( noti.type() == QString::fromLatin1("OPimAlarm") ) { | 72 | } |
73 | else if ( noti.type() == QString::fromLatin1( "OPimAlarm" ) ) | ||
74 | { | ||
57 | const OPimAlarm& al = static_cast<const OPimAlarm&>(noti); | 75 | const OPimAlarm& al = static_cast<const OPimAlarm&>(noti); |
58 | m_al.remove( al ); | 76 | m_al.remove( al ); |
59 | } | 77 | } |
60 | } | 78 | } |
61 | void OPimNotifyManager::replace( const OPimNotify& noti) { | 79 | |
62 | if ( noti.type() == QString::fromLatin1("OPimReminder") ) { | 80 | |
81 | void OPimNotifyManager::replace( const OPimNotify& noti ) | ||
82 | { | ||
83 | if ( noti.type() == QString::fromLatin1( "OPimReminder" ) ) | ||
84 | { | ||
63 | const OPimReminder& rem = static_cast<const OPimReminder&>(noti); | 85 | const OPimReminder& rem = static_cast<const OPimReminder&>(noti); |
64 | m_rem.remove( rem ); | 86 | m_rem.remove( rem ); |
65 | m_rem.append( rem ); | 87 | m_rem.append( rem ); |
66 | }else if ( noti.type() == QString::fromLatin1("OPimAlarm") ) { | 88 | } |
89 | else if ( noti.type() == QString::fromLatin1( "OPimAlarm" ) ) | ||
90 | { | ||
67 | const OPimAlarm& al = static_cast<const OPimAlarm&>(noti); | 91 | const OPimAlarm& al = static_cast<const OPimAlarm&>(noti); |
68 | m_al.remove( al ); | 92 | m_al.remove( al ); |
69 | m_al.append( al ); | 93 | m_al.append( al ); |
70 | } | 94 | } |
71 | } | 95 | } |
72 | OPimNotifyManager::Reminders OPimNotifyManager::reminders()const { | 96 | |
97 | |||
98 | OPimNotifyManager::Reminders OPimNotifyManager::reminders() const | ||
99 | { | ||
73 | return m_rem; | 100 | return m_rem; |
74 | } | 101 | } |
75 | OPimNotifyManager::Alarms OPimNotifyManager::alarms()const { | 102 | |
103 | |||
104 | OPimNotifyManager::Alarms OPimNotifyManager::alarms() const | ||
105 | { | ||
76 | return m_al; | 106 | return m_al; |
77 | } | 107 | } |
78 | OPimAlarm OPimNotifyManager::alarmAtDateTime( const QDateTime& when, bool& found ) const { | 108 | |
109 | |||
110 | OPimAlarm OPimNotifyManager::alarmAtDateTime( const QDateTime& when, bool& found ) const | ||
111 | { | ||
79 | Alarms::ConstIterator it; | 112 | Alarms::ConstIterator it; |
80 | found = true; | 113 | found = true; |
81 | 114 | ||
82 | for ( it = m_al.begin(); it != m_al.end(); ++it ){ | 115 | for ( it = m_al.begin(); it != m_al.end(); ++it ) |
116 | { | ||
83 | if ( (*it).dateTime() == when ) | 117 | if ( (*it).dateTime() == when ) |
84 | return (*it); | 118 | return (*it); |
85 | } | 119 | } |
86 | 120 | ||
@@ -90,53 +124,67 @@ OPimAlarm OPimNotifyManager::alarmAtDateTime( const QDateTime& when, bool& found | |||
90 | return empty; | 124 | return empty; |
91 | } | 125 | } |
92 | 126 | ||
93 | 127 | ||
94 | void OPimNotifyManager::setAlarms( const Alarms& al) { | 128 | void OPimNotifyManager::setAlarms( const Alarms& al ) |
129 | { | ||
95 | m_al = al; | 130 | m_al = al; |
96 | } | 131 | } |
97 | void OPimNotifyManager::setReminders( const Reminders& rem) { | 132 | |
133 | |||
134 | void OPimNotifyManager::setReminders( const Reminders& rem ) | ||
135 | { | ||
98 | m_rem = rem; | 136 | m_rem = rem; |
99 | } | 137 | } |
138 | |||
139 | |||
100 | /* FIXME!!! */ | 140 | /* FIXME!!! */ |
101 | /** | 141 | /** |
102 | * The idea is to check if the provider for our service | 142 | * The idea is to check if the provider for our service |
103 | * is online | 143 | * is online |
104 | * if it is we will use QCOP | 144 | * if it is we will use QCOP |
105 | * if not the Factory to get the backend... | 145 | * if not the Factory to get the backend... |
106 | * Qtopia1.6 services would be kewl to have here.... | 146 | * Qtopia1.6 services would be kewl to have here.... |
107 | */ | 147 | */ |
108 | void OPimNotifyManager::registerNotify( const OPimNotify& ) { | 148 | void OPimNotifyManager::registerNotify( const OPimNotify& ) |
109 | 149 | { | |
110 | } | 150 | } |
151 | |||
152 | |||
111 | /* FIXME!!! */ | 153 | /* FIXME!!! */ |
112 | /** | 154 | /** |
113 | * same as above... | 155 | * same as above... |
114 | * Also implement Url model | 156 | * Also implement Url model |
115 | * have a MainWindow.... | 157 | * have a MainWindow.... |
116 | */ | 158 | */ |
117 | void OPimNotifyManager::deregister( const OPimNotify& ) { | 159 | void OPimNotifyManager::deregister( const OPimNotify& ) |
118 | 160 | { | |
119 | } | 161 | } |
120 | 162 | ||
121 | bool OPimNotifyManager::isEmpty()const { | 163 | |
164 | bool OPimNotifyManager::isEmpty() const | ||
165 | { | ||
122 | qWarning("is Empty called on OPimNotifyManager %d %d", m_rem.count(), m_al.count() ); | 166 | qWarning("is Empty called on OPimNotifyManager %d %d", m_rem.count(), m_al.count() ); |
123 | if ( m_rem.isEmpty() && m_al.isEmpty() ) return true; | 167 | if ( m_rem.isEmpty() && m_al.isEmpty() ) return true; |
124 | else return false; | 168 | else return false; |
125 | } | 169 | } |
126 | 170 | ||
127 | // Taken from otodoaccessxml.. | 171 | |
172 | // Taken from otodoaccessxml.. code duplication bad. any alternative? | ||
128 | QString OPimNotifyManager::alarmsToString() const | 173 | QString OPimNotifyManager::alarmsToString() const |
129 | { | 174 | { |
130 | QString str; | 175 | QString str; |
131 | 176 | ||
132 | OPimNotifyManager::Alarms alarms = m_al; | 177 | OPimNotifyManager::Alarms alarms = m_al; |
133 | if ( !alarms.isEmpty() ) { | 178 | if ( !alarms.isEmpty() ) |
179 | { | ||
134 | QStringList als; | 180 | QStringList als; |
135 | OPimNotifyManager::Alarms::Iterator it = alarms.begin(); | 181 | OPimNotifyManager::Alarms::Iterator it = alarms.begin(); |
136 | for ( ; it != alarms.end(); ++it ) { | 182 | for ( ; it != alarms.end(); ++it ) |
183 | { | ||
137 | /* only if time is valid */ | 184 | /* only if time is valid */ |
138 | if ( (*it).dateTime().isValid() ) { | 185 | if ( ( *it ).dateTime().isValid() ) |
186 | { | ||
139 | als << OConversion::dateTimeToString( (*it).dateTime() ) | 187 | als << OConversion::dateTimeToString( (*it).dateTime() ) |
140 | + ":" + QString::number( (*it).duration() ) | 188 | + ":" + QString::number( (*it).duration() ) |
141 | + ":" + QString::number( (*it).sound() ) | 189 | + ":" + QString::number( (*it).sound() ) |
142 | + ":"; | 190 | + ":"; |
@@ -148,29 +196,35 @@ QString OPimNotifyManager::alarmsToString() const | |||
148 | } | 196 | } |
149 | 197 | ||
150 | return str; | 198 | return str; |
151 | } | 199 | } |
200 | |||
201 | |||
152 | QString OPimNotifyManager::remindersToString() const | 202 | QString OPimNotifyManager::remindersToString() const |
153 | { | 203 | { |
154 | QString str; | 204 | QString str; |
155 | 205 | ||
156 | OPimNotifyManager::Reminders reminders = m_rem; | 206 | OPimNotifyManager::Reminders reminders = m_rem; |
157 | if (!reminders.isEmpty() ) { | 207 | if ( !reminders.isEmpty() ) |
208 | { | ||
158 | OPimNotifyManager::Reminders::Iterator it = reminders.begin(); | 209 | OPimNotifyManager::Reminders::Iterator it = reminders.begin(); |
159 | QStringList records; | 210 | QStringList records; |
160 | for ( ; it != reminders.end(); ++it ) { | 211 | for ( ; it != reminders.end(); ++it ) |
212 | { | ||
161 | records << QString::number( (*it).recordUid() ); | 213 | records << QString::number( (*it).recordUid() ); |
162 | } | 214 | } |
163 | str = records.join(";"); | 215 | str = records.join(";"); |
164 | } | 216 | } |
165 | 217 | ||
166 | return str; | 218 | return str; |
167 | } | 219 | } |
168 | 220 | ||
221 | |||
169 | void OPimNotifyManager::alarmsFromString( const QString& str ) | 222 | void OPimNotifyManager::alarmsFromString( const QString& str ) |
170 | { | 223 | { |
171 | QStringList als = QStringList::split(";", str ); | 224 | QStringList als = QStringList::split(";", str ); |
172 | for (QStringList::Iterator it = als.begin(); it != als.end(); ++it ) { | 225 | for ( QStringList::Iterator it = als.begin(); it != als.end(); ++it ) |
226 | { | ||
173 | QStringList alarm = QStringList::split(":", (*it), TRUE ); // allow empty | 227 | QStringList alarm = QStringList::split(":", (*it), TRUE ); // allow empty |
174 | qWarning("alarm: %s", alarm.join("___").latin1() ); | 228 | qWarning("alarm: %s", alarm.join("___").latin1() ); |
175 | qWarning("alarm[0]: %s %s", alarm[0].latin1(), | 229 | qWarning("alarm[0]: %s %s", alarm[0].latin1(), |
176 | OConversion::dateTimeFromString( alarm[0] ).toString().latin1() ); | 230 | OConversion::dateTimeFromString( alarm[0] ).toString().latin1() ); |
@@ -179,13 +233,15 @@ void OPimNotifyManager::alarmsFromString( const QString& str ) | |||
179 | add( al ); | 233 | add( al ); |
180 | } | 234 | } |
181 | } | 235 | } |
182 | 236 | ||
237 | |||
183 | void OPimNotifyManager::remindersFromString( const QString& str ) | 238 | void OPimNotifyManager::remindersFromString( const QString& str ) |
184 | { | 239 | { |
185 | 240 | ||
186 | QStringList rems = QStringList::split(";", str ); | 241 | QStringList rems = QStringList::split(";", str ); |
187 | for (QStringList::Iterator it = rems.begin(); it != rems.end(); ++it ) { | 242 | for ( QStringList::Iterator it = rems.begin(); it != rems.end(); ++it ) |
243 | { | ||
188 | OPimReminder rem( (*it).toInt() ); | 244 | OPimReminder rem( (*it).toInt() ); |
189 | add( rem ); | 245 | add( rem ); |
190 | } | 246 | } |
191 | 247 | ||
diff --git a/libopie2/opiepim/core/opimnotifymanager.h b/libopie2/opiepim/core/opimnotifymanager.h index 0272e5d..9241ea2 100644 --- a/libopie2/opiepim/core/opimnotifymanager.h +++ b/libopie2/opiepim/core/opimnotifymanager.h | |||
@@ -25,20 +25,24 @@ | |||
25 | If not, write to the Free Software Foundation, | 25 | If not, write to the Free Software Foundation, |
26 | Inc., 59 Temple Place - Suite 330, | 26 | Inc., 59 Temple Place - Suite 330, |
27 | Boston, MA 02111-1307, USA. | 27 | Boston, MA 02111-1307, USA. |
28 | */ | 28 | */ |
29 | #ifndef OPIE_PIM_NOTIFY_MANAGER_H | 29 | #ifndef OPIMNOTIFYMANAGER_H |
30 | #define OPIE_PIM_NOTIFY_MANAGER_H | 30 | #define OPIMNOTIFYMANAGER_H |
31 | |||
32 | #include <qvaluelist.h> | ||
33 | 31 | ||
32 | /* OPIE */ | ||
34 | #include <opie2/opimnotify.h> | 33 | #include <opie2/opimnotify.h> |
35 | 34 | ||
36 | namespace Opie { | 35 | /* QT */ |
36 | #include <qvaluelist.h> | ||
37 | |||
38 | namespace Opie | ||
39 | { | ||
37 | /** | 40 | /** |
38 | * The notify manager keeps track of the Notifiers.... | 41 | * The notify manager keeps track of the Notifiers.... |
39 | */ | 42 | */ |
40 | class OPimNotifyManager { | 43 | class OPimNotifyManager |
44 | { | ||
41 | public: | 45 | public: |
42 | typedef QValueList<OPimReminder> Reminders; | 46 | typedef QValueList<OPimReminder> Reminders; |
43 | typedef QValueList<OPimAlarm> Alarms; | 47 | typedef QValueList<OPimAlarm> Alarms; |
44 | OPimNotifyManager( const Reminders& rems = Reminders(), const Alarms& alarms = Alarms() ); | 48 | OPimNotifyManager( const Reminders& rems = Reminders(), const Alarms& alarms = Alarms() ); |
@@ -105,10 +109,8 @@ public: | |||
105 | * @param str String created by remindersToString() | 109 | * @param str String created by remindersToString() |
106 | */ | 110 | */ |
107 | void remindersFromString( const QString& str ); | 111 | void remindersFromString( const QString& str ); |
108 | 112 | ||
109 | |||
110 | |||
111 | private: | 113 | private: |
112 | Reminders m_rem; | 114 | Reminders m_rem; |
113 | Alarms m_al; | 115 | Alarms m_al; |
114 | 116 | ||
diff --git a/libopie2/opiepim/core/opimrecord.cpp b/libopie2/opiepim/core/opimrecord.cpp index 72bb372..c603f44 100644 --- a/libopie2/opiepim/core/opimrecord.cpp +++ b/libopie2/opiepim/core/opimrecord.cpp | |||
@@ -25,69 +25,94 @@ | |||
25 | If not, write to the Free Software Foundation, | 25 | If not, write to the Free Software Foundation, |
26 | Inc., 59 Temple Place - Suite 330, | 26 | Inc., 59 Temple Place - Suite 330, |
27 | Boston, MA 02111-1307, USA. | 27 | Boston, MA 02111-1307, USA. |
28 | */ | 28 | */ |
29 | #include <qarray.h> | ||
30 | 29 | ||
30 | #include "opimrecord.h" | ||
31 | |||
32 | /* OPIE */ | ||
31 | #include <qpe/categories.h> | 33 | #include <qpe/categories.h> |
32 | #include <qpe/categoryselect.h> | 34 | #include <qpe/categoryselect.h> |
33 | 35 | ||
34 | #include <opie2/opimrecord.h> | 36 | /* QT */ |
37 | #include <qarray.h> | ||
35 | 38 | ||
36 | namespace Opie { | 39 | namespace Opie |
40 | { | ||
37 | Qtopia::UidGen OPimRecord::m_uidGen( Qtopia::UidGen::Qtopia ); | 41 | Qtopia::UidGen OPimRecord::m_uidGen( Qtopia::UidGen::Qtopia ); |
38 | 42 | ||
39 | 43 | ||
40 | OPimRecord::OPimRecord( int uid ) | 44 | OPimRecord::OPimRecord( int uid ) |
41 | : Qtopia::Record() { | 45 | : Qtopia::Record() |
46 | { | ||
42 | 47 | ||
43 | m_lastHit = -1; | 48 | m_lastHit = -1; |
44 | setUid( uid ); | 49 | setUid( uid ); |
45 | } | 50 | } |
46 | OPimRecord::~OPimRecord() { | 51 | |
47 | } | 52 | |
53 | OPimRecord::~OPimRecord() | ||
54 | {} | ||
55 | |||
56 | |||
48 | OPimRecord::OPimRecord( const OPimRecord& rec ) | 57 | OPimRecord::OPimRecord( const OPimRecord& rec ) |
49 | : Qtopia::Record( rec ) | 58 | : Qtopia::Record( rec ) |
50 | { | 59 | { |
51 | (*this) = rec; | 60 | (*this) = rec; |
52 | } | 61 | } |
53 | 62 | ||
54 | OPimRecord &OPimRecord::operator=( const OPimRecord& rec) { | 63 | |
64 | OPimRecord &OPimRecord::operator=( const OPimRecord& rec ) | ||
65 | { | ||
55 | if ( this == &rec ) return *this; | 66 | if ( this == &rec ) return *this; |
56 | 67 | ||
57 | Qtopia::Record::operator=( rec ); | 68 | Qtopia::Record::operator=( rec ); |
58 | m_xrefman = rec.m_xrefman; | 69 | m_xrefman = rec.m_xrefman; |
59 | m_lastHit = rec.m_lastHit; | 70 | m_lastHit = rec.m_lastHit; |
60 | 71 | ||
61 | return *this; | 72 | return *this; |
62 | } | 73 | } |
74 | |||
75 | |||
63 | /* | 76 | /* |
64 | * category names | 77 | * category names |
65 | */ | 78 | */ |
66 | QStringList OPimRecord::categoryNames( const QString& appname ) const { | 79 | QStringList OPimRecord::categoryNames( const QString& appname ) const |
80 | { | ||
67 | QStringList list; | 81 | QStringList list; |
68 | QArray<int> cats = categories(); | 82 | QArray<int> cats = categories(); |
69 | Categories catDB; | 83 | Categories catDB; |
70 | catDB.load( categoryFileName() ); | 84 | catDB.load( categoryFileName() ); |
71 | 85 | ||
72 | for (uint i = 0; i < cats.count(); i++ ) { | 86 | for ( uint i = 0; i < cats.count(); i++ ) |
87 | { | ||
73 | list << catDB.label( appname, cats[i] ); | 88 | list << catDB.label( appname, cats[i] ); |
74 | } | 89 | } |
75 | 90 | ||
76 | return list; | 91 | return list; |
77 | } | 92 | } |
78 | void OPimRecord::setCategoryNames( const QStringList& ) { | ||
79 | 93 | ||
94 | |||
95 | void OPimRecord::setCategoryNames( const QStringList& ) | ||
96 | { | ||
80 | } | 97 | } |
81 | void OPimRecord::addCategoryName( const QString& ) { | 98 | |
99 | |||
100 | void OPimRecord::addCategoryName( const QString& ) | ||
101 | { | ||
82 | Categories catDB; | 102 | Categories catDB; |
83 | catDB.load( categoryFileName() ); | 103 | catDB.load( categoryFileName() ); |
84 | 104 | ||
85 | 105 | ||
86 | } | 106 | } |
87 | bool OPimRecord::isEmpty()const { | 107 | |
108 | |||
109 | bool OPimRecord::isEmpty() const | ||
110 | { | ||
88 | return ( uid() == 0 ); | 111 | return ( uid() == 0 ); |
89 | } | 112 | } |
113 | |||
114 | |||
90 | /*QString OPimRecord::crossToString()const { | 115 | /*QString OPimRecord::crossToString()const { |
91 | QString str; | 116 | QString str; |
92 | QMap<QString, QArray<int> >::ConstIterator it; | 117 | QMap<QString, QArray<int> >::ConstIterator it; |
93 | for (it = m_relations.begin(); it != m_relations.end(); ++it ) { | 118 | for (it = m_relations.begin(); it != m_relations.end(); ++it ) { |
@@ -101,21 +126,31 @@ bool OPimRecord::isEmpty()const { | |||
101 | 126 | ||
102 | return str; | 127 | return str; |
103 | }*/ | 128 | }*/ |
104 | /* if uid = 1 assign a new one */ | 129 | /* if uid = 1 assign a new one */ |
105 | void OPimRecord::setUid( int uid ) { | 130 | void OPimRecord::setUid( int uid ) |
131 | { | ||
106 | if ( uid == 1) | 132 | if ( uid == 1) |
107 | uid = uidGen().generate(); | 133 | uid = uidGen().generate(); |
108 | 134 | ||
109 | Qtopia::Record::setUid( uid ); | 135 | Qtopia::Record::setUid( uid ); |
110 | }; | 136 | }; |
111 | Qtopia::UidGen &OPimRecord::uidGen() { | 137 | |
138 | |||
139 | Qtopia::UidGen &OPimRecord::uidGen() | ||
140 | { | ||
112 | return m_uidGen; | 141 | return m_uidGen; |
113 | } | 142 | } |
114 | OPimXRefManager &OPimRecord::xrefmanager() { | 143 | |
144 | |||
145 | OPimXRefManager &OPimRecord::xrefmanager() | ||
146 | { | ||
115 | return m_xrefman; | 147 | return m_xrefman; |
116 | } | 148 | } |
117 | int OPimRecord::rtti(){ | 149 | |
150 | |||
151 | int OPimRecord::rtti() | ||
152 | { | ||
118 | return 0; | 153 | return 0; |
119 | } | 154 | } |
120 | 155 | ||
121 | /** | 156 | /** |
@@ -125,18 +160,20 @@ int OPimRecord::rtti(){ | |||
125 | * First read UID | 160 | * First read UID |
126 | * Categories | 161 | * Categories |
127 | * XRef | 162 | * XRef |
128 | */ | 163 | */ |
129 | bool OPimRecord::loadFromStream( QDataStream& stream ) { | 164 | bool OPimRecord::loadFromStream( QDataStream& stream ) |
165 | { | ||
130 | int Int; | 166 | int Int; |
131 | uint UInt; | 167 | uint UInt; |
132 | stream >> Int; | 168 | stream >> Int; |
133 | setUid(Int); | 169 | setUid(Int); |
134 | 170 | ||
135 | /** Categories */ | 171 | /** Categories */ |
136 | stream >> UInt; | 172 | stream >> UInt; |
137 | QArray<int> array(UInt); | 173 | QArray<int> array(UInt); |
138 | for (uint i = 0; i < UInt; i++ ) { | 174 | for ( uint i = 0; i < UInt; i++ ) |
175 | { | ||
139 | stream >> array[i]; | 176 | stream >> array[i]; |
140 | } | 177 | } |
141 | setCategories( array ); | 178 | setCategories( array ); |
142 | 179 | ||
@@ -144,24 +181,29 @@ bool OPimRecord::loadFromStream( QDataStream& stream ) { | |||
144 | * now we do the X-Ref stuff | 181 | * now we do the X-Ref stuff |
145 | */ | 182 | */ |
146 | OPimXRef xref; | 183 | OPimXRef xref; |
147 | stream >> UInt; | 184 | stream >> UInt; |
148 | for ( uint i = 0; i < UInt; i++ ) { | 185 | for ( uint i = 0; i < UInt; i++ ) |
186 | { | ||
149 | xref.setPartner( OPimXRef::One, partner( stream ) ); | 187 | xref.setPartner( OPimXRef::One, partner( stream ) ); |
150 | xref.setPartner( OPimXRef::Two, partner( stream ) ); | 188 | xref.setPartner( OPimXRef::Two, partner( stream ) ); |
151 | m_xrefman.add( xref ); | 189 | m_xrefman.add( xref ); |
152 | } | 190 | } |
153 | 191 | ||
154 | return true; | 192 | return true; |
155 | } | 193 | } |
156 | bool OPimRecord::saveToStream( QDataStream& stream )const { | 194 | |
195 | |||
196 | bool OPimRecord::saveToStream( QDataStream& stream ) const | ||
197 | { | ||
157 | /** UIDs */ | 198 | /** UIDs */ |
158 | 199 | ||
159 | stream << uid(); | 200 | stream << uid(); |
160 | 201 | ||
161 | /** Categories */ | 202 | /** Categories */ |
162 | stream << categories().count(); | 203 | stream << categories().count(); |
163 | for ( uint i = 0; i < categories().count(); i++ ) { | 204 | for ( uint i = 0; i < categories().count(); i++ ) |
205 | { | ||
164 | stream << categories()[i]; | 206 | stream << categories()[i]; |
165 | } | 207 | } |
166 | 208 | ||
167 | /* | 209 | /* |
@@ -169,20 +211,27 @@ bool OPimRecord::saveToStream( QDataStream& stream )const { | |||
169 | * then the xrefs | 211 | * then the xrefs |
170 | */ | 212 | */ |
171 | stream << m_xrefman.list().count(); | 213 | stream << m_xrefman.list().count(); |
172 | for ( OPimXRef::ValueList::ConstIterator it = m_xrefman.list().begin(); | 214 | for ( OPimXRef::ValueList::ConstIterator it = m_xrefman.list().begin(); |
173 | it != m_xrefman.list().end(); ++it ) { | 215 | it != m_xrefman.list().end(); ++it ) |
216 | { | ||
174 | flush( (*it).partner( OPimXRef::One), stream ); | 217 | flush( (*it).partner( OPimXRef::One), stream ); |
175 | flush( (*it).partner( OPimXRef::Two), stream ); | 218 | flush( (*it).partner( OPimXRef::Two), stream ); |
176 | } | 219 | } |
177 | return true; | 220 | return true; |
178 | } | 221 | } |
179 | void OPimRecord::flush( const OPimXRefPartner& par, QDataStream& str ) const{ | 222 | |
223 | |||
224 | void OPimRecord::flush( const OPimXRefPartner& par, QDataStream& str ) const | ||
225 | { | ||
180 | str << par.service(); | 226 | str << par.service(); |
181 | str << par.uid(); | 227 | str << par.uid(); |
182 | str << par.field(); | 228 | str << par.field(); |
183 | } | 229 | } |
184 | OPimXRefPartner OPimRecord::partner( QDataStream& stream ) { | 230 | |
231 | |||
232 | OPimXRefPartner OPimRecord::partner( QDataStream& stream ) | ||
233 | { | ||
185 | OPimXRefPartner par; | 234 | OPimXRefPartner par; |
186 | QString str; | 235 | QString str; |
187 | int i; | 236 | int i; |
188 | 237 | ||
@@ -196,18 +245,30 @@ OPimXRefPartner OPimRecord::partner( QDataStream& stream ) { | |||
196 | par.setField( i ); | 245 | par.setField( i ); |
197 | 246 | ||
198 | return par; | 247 | return par; |
199 | } | 248 | } |
200 | void OPimRecord::setLastHitField( int lastHit )const { | 249 | |
250 | |||
251 | void OPimRecord::setLastHitField( int lastHit ) const | ||
252 | { | ||
201 | m_lastHit = lastHit; | 253 | m_lastHit = lastHit; |
202 | } | 254 | } |
203 | int OPimRecord::lastHitField()const{ | 255 | |
256 | |||
257 | int OPimRecord::lastHitField() const | ||
258 | { | ||
204 | return m_lastHit; | 259 | return m_lastHit; |
205 | } | 260 | } |
206 | QMap<QString, QString> OPimRecord::toExtraMap()const { | 261 | |
262 | |||
263 | QMap<QString, QString> OPimRecord::toExtraMap() const | ||
264 | { | ||
207 | return customMap; | 265 | return customMap; |
208 | } | 266 | } |
209 | void OPimRecord::setExtraMap( const QMap<QString, QString>& map) { | 267 | |
268 | |||
269 | void OPimRecord::setExtraMap( const QMap<QString, QString>& map ) | ||
270 | { | ||
210 | customMap = map; | 271 | customMap = map; |
211 | } | 272 | } |
212 | 273 | ||
213 | } | 274 | } |
diff --git a/libopie2/opiepim/core/opimrecord.h b/libopie2/opiepim/core/opimrecord.h index 63a3a98..4981a41 100644 --- a/libopie2/opiepim/core/opimrecord.h +++ b/libopie2/opiepim/core/opimrecord.h | |||
@@ -25,32 +25,36 @@ | |||
25 | If not, write to the Free Software Foundation, | 25 | If not, write to the Free Software Foundation, |
26 | Inc., 59 Temple Place - Suite 330, | 26 | Inc., 59 Temple Place - Suite 330, |
27 | Boston, MA 02111-1307, USA. | 27 | Boston, MA 02111-1307, USA. |
28 | */ | 28 | */ |
29 | #ifndef OPIE_PIM_RECORD_H | ||
30 | #define OPIE_PIM_RECORD_H | ||
31 | 29 | ||
32 | #include <qdatastream.h> | 30 | #ifndef OPIMRECORD_H |
33 | #include <qmap.h> | 31 | #define OPIMRECORD_H |
34 | #include <qstring.h> | ||
35 | #include <qstringlist.h> | ||
36 | 32 | ||
33 | /* OPIE */ | ||
34 | #include <opie2/opimxrefmanager.h> | ||
37 | /* | 35 | /* |
38 | * we need to get customMap which is private... | 36 | * we need to get customMap which is private... |
39 | */ | 37 | */ |
40 | #define private protected | 38 | #define private protected |
41 | #include <qpe/palmtoprecord.h> | 39 | #include <qpe/palmtoprecord.h> |
42 | #undef private | 40 | #undef private |
43 | 41 | ||
44 | #include <opie2/opimxrefmanager.h> | 42 | /* QT */ |
43 | #include <qdatastream.h> | ||
44 | #include <qmap.h> | ||
45 | #include <qstring.h> | ||
46 | #include <qstringlist.h> | ||
45 | 47 | ||
46 | namespace Opie { | 48 | namespace Opie |
49 | { | ||
47 | /** | 50 | /** |
48 | * This is the base class for | 51 | * This is the base class for |
49 | * all PIM Records | 52 | * all PIM Records |
50 | * | 53 | * |
51 | */ | 54 | */ |
52 | class OPimRecord : public Qtopia::Record { | 55 | class OPimRecord : public Qtopia::Record |
56 | { | ||
53 | public: | 57 | public: |
54 | /** | 58 | /** |
55 | * c'tor | 59 | * c'tor |
56 | * uid of 0 isEmpty | 60 | * uid of 0 isEmpty |
@@ -109,10 +113,12 @@ public: | |||
109 | /** | 113 | /** |
110 | * matches the Records the regular expression? | 114 | * matches the Records the regular expression? |
111 | */ | 115 | */ |
112 | virtual bool match( const QString ®exp ) const | 116 | virtual bool match( const QString ®exp ) const |
113 | {setLastHitField( -1 ); | 117 | { |
114 | return Qtopia::Record::match(QRegExp(regexp));}; | 118 | setLastHitField( -1 ); |
119 | return Qtopia::Record::match( QRegExp( regexp ) ); | ||
120 | }; | ||
115 | 121 | ||
116 | /** | 122 | /** |
117 | * if implemented this function returns which item has been | 123 | * if implemented this function returns which item has been |
118 | * last hit by the match() function. | 124 | * last hit by the match() function. |
diff --git a/libopie2/opiepim/ocontact.cpp b/libopie2/opiepim/ocontact.cpp index f1a22a7..fa5313f 100644 --- a/libopie2/opiepim/ocontact.cpp +++ b/libopie2/opiepim/ocontact.cpp | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of the Opie Project | 2 | This file is part of the Opie Project |
3 | Copyright (C) The Main Author <main-author@whereever.org> | 3 | Copyright (C) Stefan Eilers <eilers.stefan@epost.de> |
4 | =. Copyright (C) The Opie Team <opie-devel@handhelds.org> | 4 | =. Copyright (C) The Opie Team <opie-devel@handhelds.org> |
5 | .=l. | 5 | .=l. |
6 | .>+-= | 6 | .>+-= |
7 | _;:, .> :=|. This program is free software; you can | 7 | _;:, .> :=|. This program is free software; you can |
@@ -26,43 +26,27 @@ | |||
26 | Inc., 59 Temple Place - Suite 330, | 26 | Inc., 59 Temple Place - Suite 330, |
27 | Boston, MA 02111-1307, USA. | 27 | Boston, MA 02111-1307, USA. |
28 | */ | 28 | */ |
29 | 29 | ||
30 | /********************************************************************** | ||
31 | ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. | ||
32 | ** Copyright (C) 2002-2003 by Stefan Eilers (eilers.stefan@epost.de) | ||
33 | ** | ||
34 | ** This file may be distributed and/or modified under the terms of the | ||
35 | ** GNU General Public License version 2 as published by the Free Software | ||
36 | ** Foundation and appearing in the file LICENSE.GPL included in the | ||
37 | ** packaging of this file. | ||
38 | ** | ||
39 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | ||
40 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | ||
41 | ** | ||
42 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. | ||
43 | ** | ||
44 | ** Contact info@trolltech.com if any conditions of this licensing are | ||
45 | ** not clear to you. | ||
46 | ** | ||
47 | **********************************************************************/ | ||
48 | |||
49 | #define QTOPIA_INTERNAL_CONTACT_MRE | 30 | #define QTOPIA_INTERNAL_CONTACT_MRE |
50 | 31 | ||
51 | #include <opie2/ocontact.h> | 32 | #include "ocontact.h" |
33 | |||
34 | /* OPIE */ | ||
52 | #include <opie2/opimresolver.h> | 35 | #include <opie2/opimresolver.h> |
53 | #include <opie2/oconversion.h> | 36 | #include <opie2/oconversion.h> |
54 | |||
55 | #include <qpe/stringutil.h> | 37 | #include <qpe/stringutil.h> |
56 | #include <qpe/timestring.h> | 38 | #include <qpe/timestring.h> |
57 | #include <qpe/config.h> | 39 | #include <qpe/config.h> |
58 | 40 | ||
41 | /* QT */ | ||
59 | #include <qobject.h> | 42 | #include <qobject.h> |
60 | #include <qregexp.h> | 43 | #include <qregexp.h> |
61 | #include <qstylesheet.h> | 44 | #include <qstylesheet.h> |
62 | #include <qfileinfo.h> | 45 | #include <qfileinfo.h> |
63 | #include <qmap.h> | 46 | #include <qmap.h> |
64 | 47 | ||
48 | /* STD */ | ||
65 | #include <stdio.h> | 49 | #include <stdio.h> |
66 | 50 | ||
67 | /*! | 51 | /*! |
68 | \class Contact contact.h | 52 | \class Contact contact.h |
@@ -75,35 +59,35 @@ | |||
75 | \ingroup qtopiadesktop | 59 | \ingroup qtopiadesktop |
76 | */ | 60 | */ |
77 | 61 | ||
78 | 62 | ||
79 | namespace Opie { | 63 | namespace Opie |
64 | { | ||
80 | /*! | 65 | /*! |
81 | Creates a new, empty contact. | 66 | Creates a new, empty contact. |
82 | */ | 67 | */ |
83 | OContact::OContact() | 68 | OContact::OContact():OPimRecord(), mMap(), d( 0 ) |
84 | : OPimRecord(), mMap(), d( 0 ) | 69 | {} |
85 | { | ||
86 | } | ||
87 | 70 | ||
88 | /*! | 71 | /*! |
89 | \internal | 72 | \internal |
90 | Creates a new contact. The properties of the contact are | 73 | Creates a new contact. The properties of the contact are |
91 | set from \a fromMap. | 74 | set from \a fromMap. |
92 | */ | 75 | */ |
93 | OContact::OContact( const QMap<int, QString> &fromMap ) : | 76 | OContact::OContact( const QMap<int, QString> &fromMap ):OPimRecord(), mMap( fromMap ), d( 0 ) |
94 | OPimRecord(), mMap( fromMap ), d( 0 ) | ||
95 | { | 77 | { |
96 | QString cats = mMap[ Qtopia::AddressCategory ]; | 78 | QString cats = mMap[ Qtopia::AddressCategory ]; |
97 | if ( !cats.isEmpty() ) | 79 | if ( !cats.isEmpty() ) |
98 | setCategories( idsFromString( cats ) ); | 80 | setCategories( idsFromString( cats ) ); |
99 | 81 | ||
100 | QString uidStr = find( Qtopia::AddressUid ); | 82 | QString uidStr = find( Qtopia::AddressUid ); |
101 | 83 | ||
102 | if ( uidStr.isEmpty() || (uidStr.toInt() == 0) ){ | 84 | if ( uidStr.isEmpty() || ( uidStr.toInt() == 0 ) ) |
85 | { | ||
103 | qWarning( "Invalid UID found. Generate new one.." ); | 86 | qWarning( "Invalid UID found. Generate new one.." ); |
104 | setUid( uidGen().generate() ); | 87 | setUid( uidGen().generate() ); |
105 | }else | 88 | } |
89 | else | ||
106 | setUid( uidStr.toInt() ); | 90 | setUid( uidStr.toInt() ); |
107 | 91 | ||
108 | // if ( !uidStr.isEmpty() ) | 92 | // if ( !uidStr.isEmpty() ) |
109 | // setUid( uidStr.toInt() ); | 93 | // setUid( uidStr.toInt() ); |
@@ -112,10 +96,9 @@ OContact::OContact( const QMap<int, QString> &fromMap ) : | |||
112 | /*! | 96 | /*! |
113 | Destroys a contact. | 97 | Destroys a contact. |
114 | */ | 98 | */ |
115 | OContact::~OContact() | 99 | OContact::~OContact() |
116 | { | 100 | {} |
117 | } | ||
118 | 101 | ||
119 | /*! \fn void OContact::setTitle( const QString &str ) | 102 | /*! \fn void OContact::setTitle( const QString &str ) |
120 | Sets the title of the contact to \a str. | 103 | Sets the title of the contact to \a str. |
121 | */ | 104 | */ |
@@ -480,114 +463,137 @@ QString OContact::toRichText() const | |||
480 | if ( !(value = jobTitle()).isEmpty() ) | 463 | if ( !(value = jobTitle()).isEmpty() ) |
481 | text += Qtopia::escapeString(value) + " "; | 464 | text += Qtopia::escapeString(value) + " "; |
482 | 465 | ||
483 | comp = company(); | 466 | comp = company(); |
484 | if ( !(value = department()).isEmpty() ) { | 467 | if ( !( value = department() ).isEmpty() ) |
468 | { | ||
485 | text += Qtopia::escapeString(value); | 469 | text += Qtopia::escapeString(value); |
486 | if ( comp ) | 470 | if ( comp ) |
487 | text += ", " + Qtopia::escapeString(comp); | 471 | text += ", " + Qtopia::escapeString(comp); |
488 | }else if ( comp ) | 472 | } |
473 | else if ( comp ) | ||
489 | text += "<br>" + Qtopia::escapeString(comp); | 474 | text += "<br>" + Qtopia::escapeString(comp); |
490 | text += "<br><hr>"; | 475 | text += "<br><hr>"; |
491 | 476 | ||
492 | // defailt email | 477 | // defailt email |
493 | QString defEmail = defaultEmail(); | 478 | QString defEmail = defaultEmail(); |
494 | if ( !defEmail.isEmpty() ){ | 479 | if ( !defEmail.isEmpty() ) |
480 | { | ||
495 | text += "<b><img src=\"addressbook/email\"> " + QObject::tr("Default Email: ") + "</b>" | 481 | text += "<b><img src=\"addressbook/email\"> " + QObject::tr("Default Email: ") + "</b>" |
496 | + Qtopia::escapeString(defEmail); | 482 | + Qtopia::escapeString(defEmail); |
497 | marker = true; | 483 | marker = true; |
498 | } | 484 | } |
499 | 485 | ||
500 | // business address | 486 | // business address |
501 | if ( !businessStreet().isEmpty() || !businessCity().isEmpty() || | 487 | if ( !businessStreet().isEmpty() || !businessCity().isEmpty() || |
502 | !businessZip().isEmpty() || !businessCountry().isEmpty() ) { | 488 | !businessZip().isEmpty() || !businessCountry().isEmpty() ) |
489 | { | ||
503 | text += QObject::tr( "<br><b>Work Address:</b>" ); | 490 | text += QObject::tr( "<br><b>Work Address:</b>" ); |
504 | marker = true; | 491 | marker = true; |
505 | } | 492 | } |
506 | 493 | ||
507 | if ( !(value = businessStreet()).isEmpty() ){ | 494 | if ( !( value = businessStreet() ).isEmpty() ) |
495 | { | ||
508 | text += "<br>" + Qtopia::escapeString(value); | 496 | text += "<br>" + Qtopia::escapeString(value); |
509 | marker = true; | 497 | marker = true; |
510 | } | 498 | } |
511 | 499 | ||
512 | switch( addressformat ){ | 500 | switch ( addressformat ) |
513 | case Zip_City_State:{ // Zip_Code City, State | 501 | { |
502 | case Zip_City_State: | ||
503 | { // Zip_Code City, State | ||
514 | state = businessState(); | 504 | state = businessState(); |
515 | if ( !(value = businessZip()).isEmpty() ){ | 505 | if ( !( value = businessZip() ).isEmpty() ) |
506 | { | ||
516 | text += "<br>" + Qtopia::escapeString(value) + " "; | 507 | text += "<br>" + Qtopia::escapeString(value) + " "; |
517 | marker = true; | 508 | marker = true; |
518 | 509 | ||
519 | } | 510 | } |
520 | if ( !(value = businessCity()).isEmpty() ) { | 511 | if ( !( value = businessCity() ).isEmpty() ) |
512 | { | ||
521 | marker = true; | 513 | marker = true; |
522 | if ( businessZip().isEmpty() && !businessStreet().isEmpty() ) | 514 | if ( businessZip().isEmpty() && !businessStreet().isEmpty() ) |
523 | text += "<br>"; | 515 | text += "<br>"; |
524 | text += Qtopia::escapeString(value); | 516 | text += Qtopia::escapeString(value); |
525 | if ( state ) | 517 | if ( state ) |
526 | text += ", " + Qtopia::escapeString(state); | 518 | text += ", " + Qtopia::escapeString(state); |
527 | } else if ( !state.isEmpty() ){ | 519 | } |
520 | else if ( !state.isEmpty() ) | ||
521 | { | ||
528 | text += "<br>" + Qtopia::escapeString(state); | 522 | text += "<br>" + Qtopia::escapeString(state); |
529 | marker = true; | 523 | marker = true; |
530 | } | 524 | } |
531 | break; | 525 | break; |
532 | } | 526 | } |
533 | case City_State_Zip:{ // City, State Zip_Code | 527 | case City_State_Zip: |
528 | { // City, State Zip_Code | ||
534 | state = businessState(); | 529 | state = businessState(); |
535 | if ( !(value = businessCity()).isEmpty() ) { | 530 | if ( !( value = businessCity() ).isEmpty() ) |
531 | { | ||
536 | marker = true; | 532 | marker = true; |
537 | text += "<br>" + Qtopia::escapeString(value); | 533 | text += "<br>" + Qtopia::escapeString(value); |
538 | if ( state ) | 534 | if ( state ) |
539 | text += ", " + Qtopia::escapeString(state); | 535 | text += ", " + Qtopia::escapeString(state); |
540 | } else if ( !state.isEmpty() ){ | 536 | } |
537 | else if ( !state.isEmpty() ) | ||
538 | { | ||
541 | text += "<br>" + Qtopia::escapeString(state); | 539 | text += "<br>" + Qtopia::escapeString(state); |
542 | marker = true; | 540 | marker = true; |
543 | } | 541 | } |
544 | if ( !(value = businessZip()).isEmpty() ){ | 542 | if ( !( value = businessZip() ).isEmpty() ) |
543 | { | ||
545 | text += " " + Qtopia::escapeString(value); | 544 | text += " " + Qtopia::escapeString(value); |
546 | marker = true; | 545 | marker = true; |
547 | } | 546 | } |
548 | break; | 547 | break; |
549 | } | 548 | } |
550 | } | 549 | } |
551 | 550 | ||
552 | if ( !(value = businessCountry()).isEmpty() ){ | 551 | if ( !( value = businessCountry() ).isEmpty() ) |
552 | { | ||
553 | text += "<br>" + Qtopia::escapeString(value); | 553 | text += "<br>" + Qtopia::escapeString(value); |
554 | marker = true; | 554 | marker = true; |
555 | } | 555 | } |
556 | 556 | ||
557 | // rest of Business data | 557 | // rest of Business data |
558 | str = office(); | 558 | str = office(); |
559 | if ( !str.isEmpty() ){ | 559 | if ( !str.isEmpty() ) |
560 | { | ||
560 | text += "<br><b>" + QObject::tr("Office: ") + "</b>" | 561 | text += "<br><b>" + QObject::tr("Office: ") + "</b>" |
561 | + Qtopia::escapeString(str); | 562 | + Qtopia::escapeString(str); |
562 | marker = true; | 563 | marker = true; |
563 | } | 564 | } |
564 | str = businessWebpage(); | 565 | str = businessWebpage(); |
565 | if ( !str.isEmpty() ){ | 566 | if ( !str.isEmpty() ) |
567 | { | ||
566 | text += "<br><b><img src=\"addressbook/webpagework\"> " + QObject::tr("Business Web Page: ") + "</b>" | 568 | text += "<br><b><img src=\"addressbook/webpagework\"> " + QObject::tr("Business Web Page: ") + "</b>" |
567 | + Qtopia::escapeString(str); | 569 | + Qtopia::escapeString(str); |
568 | marker = true; | 570 | marker = true; |
569 | } | 571 | } |
570 | str = businessPhone(); | 572 | str = businessPhone(); |
571 | if ( !str.isEmpty() ){ | 573 | if ( !str.isEmpty() ) |
574 | { | ||
572 | text += "<br><b><img src=\"addressbook/phonework\"> " + QObject::tr("Business Phone: ") + "</b>" | 575 | text += "<br><b><img src=\"addressbook/phonework\"> " + QObject::tr("Business Phone: ") + "</b>" |
573 | + Qtopia::escapeString(str); | 576 | + Qtopia::escapeString(str); |
574 | marker = true; | 577 | marker = true; |
575 | } | 578 | } |
576 | str = businessFax(); | 579 | str = businessFax(); |
577 | if ( !str.isEmpty() ){ | 580 | if ( !str.isEmpty() ) |
581 | { | ||
578 | text += "<br><b><img src=\"addressbook/faxwork\"> " + QObject::tr("Business Fax: ") + "</b>" | 582 | text += "<br><b><img src=\"addressbook/faxwork\"> " + QObject::tr("Business Fax: ") + "</b>" |
579 | + Qtopia::escapeString(str); | 583 | + Qtopia::escapeString(str); |
580 | marker = true; | 584 | marker = true; |
581 | } | 585 | } |
582 | str = businessMobile(); | 586 | str = businessMobile(); |
583 | if ( !str.isEmpty() ){ | 587 | if ( !str.isEmpty() ) |
588 | { | ||
584 | text += "<br><b><img src=\"addressbook/mobilework\"> " + QObject::tr("Business Mobile: ") + "</b>" | 589 | text += "<br><b><img src=\"addressbook/mobilework\"> " + QObject::tr("Business Mobile: ") + "</b>" |
585 | + Qtopia::escapeString(str); | 590 | + Qtopia::escapeString(str); |
586 | marker = true; | 591 | marker = true; |
587 | } | 592 | } |
588 | str = businessPager(); | 593 | str = businessPager(); |
589 | if ( !str.isEmpty() ){ | 594 | if ( !str.isEmpty() ) |
595 | { | ||
590 | text += "<br><b>" + QObject::tr("Business Pager: ") + "</b>" | 596 | text += "<br><b>" + QObject::tr("Business Pager: ") + "</b>" |
591 | + Qtopia::escapeString(str); | 597 | + Qtopia::escapeString(str); |
592 | marker = true; | 598 | marker = true; |
593 | } | 599 | } |
@@ -595,83 +601,101 @@ QString OContact::toRichText() const | |||
595 | // text += "<br>"; | 601 | // text += "<br>"; |
596 | 602 | ||
597 | // home address | 603 | // home address |
598 | if ( !homeStreet().isEmpty() || !homeCity().isEmpty() || | 604 | if ( !homeStreet().isEmpty() || !homeCity().isEmpty() || |
599 | !homeZip().isEmpty() || !homeCountry().isEmpty() ) { | 605 | !homeZip().isEmpty() || !homeCountry().isEmpty() ) |
606 | { | ||
600 | text += QObject::tr( "<br><b>Home Address:</b>" ); | 607 | text += QObject::tr( "<br><b>Home Address:</b>" ); |
601 | marker = true; | 608 | marker = true; |
602 | } | 609 | } |
603 | 610 | ||
604 | if ( !(value = homeStreet()).isEmpty() ){ | 611 | if ( !( value = homeStreet() ).isEmpty() ) |
612 | { | ||
605 | text += "<br>" + Qtopia::escapeString(value); | 613 | text += "<br>" + Qtopia::escapeString(value); |
606 | marker = true; | 614 | marker = true; |
607 | } | 615 | } |
608 | 616 | ||
609 | switch( addressformat ){ | 617 | switch ( addressformat ) |
610 | case Zip_City_State:{ // Zip_Code City, State | 618 | { |
619 | case Zip_City_State: | ||
620 | { // Zip_Code City, State | ||
611 | state = homeState(); | 621 | state = homeState(); |
612 | if ( !(value = homeZip()).isEmpty() ){ | 622 | if ( !( value = homeZip() ).isEmpty() ) |
623 | { | ||
613 | text += "<br>" + Qtopia::escapeString(value) + " "; | 624 | text += "<br>" + Qtopia::escapeString(value) + " "; |
614 | marker = true; | 625 | marker = true; |
615 | } | 626 | } |
616 | if ( !(value = homeCity()).isEmpty() ) { | 627 | if ( !( value = homeCity() ).isEmpty() ) |
628 | { | ||
617 | marker = true; | 629 | marker = true; |
618 | if ( homeZip().isEmpty() && !homeStreet().isEmpty() ) | 630 | if ( homeZip().isEmpty() && !homeStreet().isEmpty() ) |
619 | text += "<br>"; | 631 | text += "<br>"; |
620 | text += Qtopia::escapeString(value); | 632 | text += Qtopia::escapeString(value); |
621 | if ( !state.isEmpty() ) | 633 | if ( !state.isEmpty() ) |
622 | text += ", " + Qtopia::escapeString(state); | 634 | text += ", " + Qtopia::escapeString(state); |
623 | } else if (!state.isEmpty()) { | 635 | } |
636 | else if ( !state.isEmpty() ) | ||
637 | { | ||
624 | text += "<br>" + Qtopia::escapeString(state); | 638 | text += "<br>" + Qtopia::escapeString(state); |
625 | marker = true; | 639 | marker = true; |
626 | } | 640 | } |
627 | break; | 641 | break; |
628 | } | 642 | } |
629 | case City_State_Zip:{ // City, State Zip_Code | 643 | case City_State_Zip: |
644 | { // City, State Zip_Code | ||
630 | state = homeState(); | 645 | state = homeState(); |
631 | if ( !(value = homeCity()).isEmpty() ) { | 646 | if ( !( value = homeCity() ).isEmpty() ) |
647 | { | ||
632 | marker = true; | 648 | marker = true; |
633 | text += "<br>" + Qtopia::escapeString(value); | 649 | text += "<br>" + Qtopia::escapeString(value); |
634 | if ( state ) | 650 | if ( state ) |
635 | text += ", " + Qtopia::escapeString(state); | 651 | text += ", " + Qtopia::escapeString(state); |
636 | } else if ( !state.isEmpty() ){ | 652 | } |
653 | else if ( !state.isEmpty() ) | ||
654 | { | ||
637 | text += "<br>" + Qtopia::escapeString(state); | 655 | text += "<br>" + Qtopia::escapeString(state); |
638 | marker = true; | 656 | marker = true; |
639 | } | 657 | } |
640 | if ( !(value = homeZip()).isEmpty() ){ | 658 | if ( !( value = homeZip() ).isEmpty() ) |
659 | { | ||
641 | text += " " + Qtopia::escapeString(value); | 660 | text += " " + Qtopia::escapeString(value); |
642 | marker = true; | 661 | marker = true; |
643 | } | 662 | } |
644 | break; | 663 | break; |
645 | } | 664 | } |
646 | } | 665 | } |
647 | 666 | ||
648 | if ( !(value = homeCountry()).isEmpty() ){ | 667 | if ( !( value = homeCountry() ).isEmpty() ) |
668 | { | ||
649 | text += "<br>" + Qtopia::escapeString(value); | 669 | text += "<br>" + Qtopia::escapeString(value); |
650 | marker = true; | 670 | marker = true; |
651 | } | 671 | } |
652 | 672 | ||
653 | // rest of Home data | 673 | // rest of Home data |
654 | str = homeWebpage(); | 674 | str = homeWebpage(); |
655 | if ( !str.isEmpty() ){ | 675 | if ( !str.isEmpty() ) |
676 | { | ||
656 | text += "<br><b><img src=\"addressbook/webpagehome\"> " + QObject::tr("Home Web Page: ") + "</b>" | 677 | text += "<br><b><img src=\"addressbook/webpagehome\"> " + QObject::tr("Home Web Page: ") + "</b>" |
657 | + Qtopia::escapeString(str); | 678 | + Qtopia::escapeString(str); |
658 | marker = true; | 679 | marker = true; |
659 | } | 680 | } |
660 | str = homePhone(); | 681 | str = homePhone(); |
661 | if ( !str.isEmpty() ){ | 682 | if ( !str.isEmpty() ) |
683 | { | ||
662 | text += "<br><b><img src=\"addressbook/phonehome\"> " + QObject::tr("Home Phone: ") + "</b>" | 684 | text += "<br><b><img src=\"addressbook/phonehome\"> " + QObject::tr("Home Phone: ") + "</b>" |
663 | + Qtopia::escapeString(str); | 685 | + Qtopia::escapeString(str); |
664 | marker = true; | 686 | marker = true; |
665 | } | 687 | } |
666 | str = homeFax(); | 688 | str = homeFax(); |
667 | if ( !str.isEmpty() ){ | 689 | if ( !str.isEmpty() ) |
690 | { | ||
668 | text += "<br><b><img src=\"addressbook/faxhome\"> " + QObject::tr("Home Fax: ") + "</b>" | 691 | text += "<br><b><img src=\"addressbook/faxhome\"> " + QObject::tr("Home Fax: ") + "</b>" |
669 | + Qtopia::escapeString(str); | 692 | + Qtopia::escapeString(str); |
670 | marker = true; | 693 | marker = true; |
671 | } | 694 | } |
672 | str = homeMobile(); | 695 | str = homeMobile(); |
673 | if ( !str.isEmpty() ){ | 696 | if ( !str.isEmpty() ) |
697 | { | ||
674 | text += "<br><b><img src=\"addressbook/mobilehome\"> " + QObject::tr("Home Mobile: ") + "</b>" | 698 | text += "<br><b><img src=\"addressbook/mobilehome\"> " + QObject::tr("Home Mobile: ") + "</b>" |
675 | + Qtopia::escapeString(str); | 699 | + Qtopia::escapeString(str); |
676 | marker = true; | 700 | marker = true; |
677 | } | 701 | } |
@@ -696,9 +720,10 @@ QString OContact::toRichText() const | |||
696 | if ( !str.isEmpty() ) | 720 | if ( !str.isEmpty() ) |
697 | text += "<br><b>" + QObject::tr("Manager: ") + "</b>" | 721 | text += "<br><b>" + QObject::tr("Manager: ") + "</b>" |
698 | + Qtopia::escapeString(str); | 722 | + Qtopia::escapeString(str); |
699 | str = gender(); | 723 | str = gender(); |
700 | if ( !str.isEmpty() && str.toInt() != 0 ) { | 724 | if ( !str.isEmpty() && str.toInt() != 0 ) |
725 | { | ||
701 | text += "<br>"; | 726 | text += "<br>"; |
702 | if ( str.toInt() == 1 ) | 727 | if ( str.toInt() == 1 ) |
703 | str = QObject::tr( "Male" ); | 728 | str = QObject::tr( "Male" ); |
704 | else if ( str.toInt() == 2 ) | 729 | else if ( str.toInt() == 2 ) |
@@ -708,14 +733,16 @@ QString OContact::toRichText() const | |||
708 | str = spouse(); | 733 | str = spouse(); |
709 | if ( !str.isEmpty() ) | 734 | if ( !str.isEmpty() ) |
710 | text += "<br><b>" + QObject::tr("Spouse: ") + "</b>" | 735 | text += "<br><b>" + QObject::tr("Spouse: ") + "</b>" |
711 | + Qtopia::escapeString(str); | 736 | + Qtopia::escapeString(str); |
712 | if ( birthday().isValid() ){ | 737 | if ( birthday().isValid() ) |
738 | { | ||
713 | str = TimeString::numberDateString( birthday() ); | 739 | str = TimeString::numberDateString( birthday() ); |
714 | text += "<br><b>" + QObject::tr("Birthday: ") + "</b>" | 740 | text += "<br><b>" + QObject::tr("Birthday: ") + "</b>" |
715 | + Qtopia::escapeString(str); | 741 | + Qtopia::escapeString(str); |
716 | } | 742 | } |
717 | if ( anniversary().isValid() ){ | 743 | if ( anniversary().isValid() ) |
744 | { | ||
718 | str = TimeString::numberDateString( anniversary() ); | 745 | str = TimeString::numberDateString( anniversary() ); |
719 | text += "<br><b>" + QObject::tr("Anniversary: ") + "</b>" | 746 | text += "<br><b>" + QObject::tr("Anniversary: ") + "</b>" |
720 | + Qtopia::escapeString(str); | 747 | + Qtopia::escapeString(str); |
721 | } | 748 | } |
@@ -729,15 +756,17 @@ QString OContact::toRichText() const | |||
729 | text += "<br><b>" + QObject::tr("Nickname: ") + "</b>" | 756 | text += "<br><b>" + QObject::tr("Nickname: ") + "</b>" |
730 | + Qtopia::escapeString(str); | 757 | + Qtopia::escapeString(str); |
731 | 758 | ||
732 | // categories | 759 | // categories |
733 | if ( categoryNames("Contacts").count() ){ | 760 | if ( categoryNames( "Contacts" ).count() ) |
761 | { | ||
734 | text += "<br><b>" + QObject::tr( "Category:") + "</b> "; | 762 | text += "<br><b>" + QObject::tr( "Category:") + "</b> "; |
735 | text += categoryNames("Contacts").join(", "); | 763 | text += categoryNames("Contacts").join(", "); |
736 | } | 764 | } |
737 | 765 | ||
738 | // notes last | 766 | // notes last |
739 | if ( !(value = notes()).isEmpty() ) { | 767 | if ( !( value = notes() ).isEmpty() ) |
768 | { | ||
740 | text += "<br><hr><b>" + QObject::tr( "Notes:") + "</b> "; | 769 | text += "<br><hr><b>" + QObject::tr( "Notes:") + "</b> "; |
741 | QRegExp reg("\n"); | 770 | QRegExp reg("\n"); |
742 | 771 | ||
743 | //QString tmp = Qtopia::escapeString(value); | 772 | //QString tmp = Qtopia::escapeString(value); |
@@ -836,24 +865,28 @@ QString OContact::fullName() const | |||
836 | QString lastName = find( Qtopia::LastName ); | 865 | QString lastName = find( Qtopia::LastName ); |
837 | QString suffix = find( Qtopia::Suffix ); | 866 | QString suffix = find( Qtopia::Suffix ); |
838 | 867 | ||
839 | QString name = title; | 868 | QString name = title; |
840 | if ( !firstName.isEmpty() ) { | 869 | if ( !firstName.isEmpty() ) |
870 | { | ||
841 | if ( !name.isEmpty() ) | 871 | if ( !name.isEmpty() ) |
842 | name += " "; | 872 | name += " "; |
843 | name += firstName; | 873 | name += firstName; |
844 | } | 874 | } |
845 | if ( !middleName.isEmpty() ) { | 875 | if ( !middleName.isEmpty() ) |
876 | { | ||
846 | if ( !name.isEmpty() ) | 877 | if ( !name.isEmpty() ) |
847 | name += " "; | 878 | name += " "; |
848 | name += middleName; | 879 | name += middleName; |
849 | } | 880 | } |
850 | if ( !lastName.isEmpty() ) { | 881 | if ( !lastName.isEmpty() ) |
882 | { | ||
851 | if ( !name.isEmpty() ) | 883 | if ( !name.isEmpty() ) |
852 | name += " "; | 884 | name += " "; |
853 | name += lastName; | 885 | name += lastName; |
854 | } | 886 | } |
855 | if ( !suffix.isEmpty() ) { | 887 | if ( !suffix.isEmpty() ) |
888 | { | ||
856 | if ( !name.isEmpty() ) | 889 | if ( !name.isEmpty() ) |
857 | name += " "; | 890 | name += " "; |
858 | name += suffix; | 891 | name += suffix; |
859 | } | 892 | } |
@@ -899,9 +932,10 @@ QStringList OContact::emailList() const | |||
899 | { | 932 | { |
900 | QString emailStr = emails(); | 933 | QString emailStr = emails(); |
901 | 934 | ||
902 | QStringList r; | 935 | QStringList r; |
903 | if ( !emailStr.isEmpty() ) { | 936 | if ( !emailStr.isEmpty() ) |
937 | { | ||
904 | qDebug(" emailstr "); | 938 | qDebug(" emailstr "); |
905 | QStringList l = QStringList::split( emailSeparator(), emailStr ); | 939 | QStringList l = QStringList::split( emailSeparator(), emailStr ); |
906 | for ( QStringList::ConstIterator it = l.begin();it != l.end();++it ) | 940 | for ( QStringList::ConstIterator it = l.begin();it != l.end();++it ) |
907 | r += (*it).simplifyWhiteSpace(); | 941 | r += (*it).simplifyWhiteSpace(); |
@@ -945,12 +979,14 @@ void OContact::save( QString &buf ) const | |||
945 | { | 979 | { |
946 | static const QStringList SLFIELDS = fields(); | 980 | static const QStringList SLFIELDS = fields(); |
947 | // I'm expecting "<Contact " in front of this... | 981 | // I'm expecting "<Contact " in front of this... |
948 | for ( QMap<int, QString>::ConstIterator it = mMap.begin(); | 982 | for ( QMap<int, QString>::ConstIterator it = mMap.begin(); |
949 | it != mMap.end(); ++it ) { | 983 | it != mMap.end(); ++it ) |
984 | { | ||
950 | const QString &value = it.data(); | 985 | const QString &value = it.data(); |
951 | int key = it.key(); | 986 | int key = it.key(); |
952 | if ( !value.isEmpty() ) { | 987 | if ( !value.isEmpty() ) |
988 | { | ||
953 | if ( key == Qtopia::AddressCategory || key == Qtopia::AddressUid) | 989 | if ( key == Qtopia::AddressCategory || key == Qtopia::AddressUid) |
954 | continue; | 990 | continue; |
955 | 991 | ||
956 | key -= Qtopia::AddressCategory+1; | 992 | key -= Qtopia::AddressCategory+1; |
@@ -1060,10 +1096,12 @@ bool OContact::match( const QRegExp &r ) const | |||
1060 | setLastHitField( -1 ); | 1096 | setLastHitField( -1 ); |
1061 | bool match; | 1097 | bool match; |
1062 | match = false; | 1098 | match = false; |
1063 | QMap<int, QString>::ConstIterator it; | 1099 | QMap<int, QString>::ConstIterator it; |
1064 | for ( it = mMap.begin(); it != mMap.end(); ++it ) { | 1100 | for ( it = mMap.begin(); it != mMap.end(); ++it ) |
1065 | if ( (*it).find( r ) > -1 ) { | 1101 | { |
1102 | if ( ( *it ).find( r ) > -1 ) | ||
1103 | { | ||
1066 | setLastHitField( it.key() ); | 1104 | setLastHitField( it.key() ); |
1067 | match = true; | 1105 | match = true; |
1068 | break; | 1106 | break; |
1069 | } | 1107 | } |
@@ -1075,15 +1113,16 @@ bool OContact::match( const QRegExp &r ) const | |||
1075 | QString OContact::toShortText() const | 1113 | QString OContact::toShortText() const |
1076 | { | 1114 | { |
1077 | return ( fullName() ); | 1115 | return ( fullName() ); |
1078 | } | 1116 | } |
1117 | |||
1118 | |||
1079 | QString OContact::type() const | 1119 | QString OContact::type() const |
1080 | { | 1120 | { |
1081 | return QString::fromLatin1( "OContact" ); | 1121 | return QString::fromLatin1( "OContact" ); |
1082 | } | 1122 | } |
1083 | 1123 | ||
1084 | 1124 | ||
1085 | |||
1086 | class QString OContact::recordField( int pos ) const | 1125 | class QString OContact::recordField( int pos ) const |
1087 | { | 1126 | { |
1088 | QStringList SLFIELDS = fields(); // ?? why this ? (se) | 1127 | QStringList SLFIELDS = fields(); // ?? why this ? (se) |
1089 | return SLFIELDS[pos]; | 1128 | return SLFIELDS[pos]; |
@@ -1098,9 +1137,10 @@ class QString OContact::recordField( int pos ) const | |||
1098 | the current stored date will be removed. | 1137 | the current stored date will be removed. |
1099 | */ | 1138 | */ |
1100 | void OContact::setBirthday( const QDate &v ) | 1139 | void OContact::setBirthday( const QDate &v ) |
1101 | { | 1140 | { |
1102 | if ( v.isNull() ){ | 1141 | if ( v.isNull() ) |
1142 | { | ||
1103 | qWarning( "Remove Birthday"); | 1143 | qWarning( "Remove Birthday"); |
1104 | replace( Qtopia::Birthday, QString::null ); | 1144 | replace( Qtopia::Birthday, QString::null ); |
1105 | return; | 1145 | return; |
1106 | } | 1146 | } |
@@ -1116,9 +1156,10 @@ void OContact::setBirthday( const QDate &v ) | |||
1116 | null, the current stored date will be removed. | 1156 | null, the current stored date will be removed. |
1117 | */ | 1157 | */ |
1118 | void OContact::setAnniversary( const QDate &v ) | 1158 | void OContact::setAnniversary( const QDate &v ) |
1119 | { | 1159 | { |
1120 | if ( v.isNull() ){ | 1160 | if ( v.isNull() ) |
1161 | { | ||
1121 | qWarning( "Remove Anniversary"); | 1162 | qWarning( "Remove Anniversary"); |
1122 | replace( Qtopia::Anniversary, QString::null ); | 1163 | replace( Qtopia::Anniversary, QString::null ); |
1123 | return; | 1164 | return; |
1124 | } | 1165 | } |
@@ -1126,8 +1167,9 @@ void OContact::setAnniversary( const QDate &v ) | |||
1126 | if ( v.isValid() ) | 1167 | if ( v.isValid() ) |
1127 | replace( Qtopia::Anniversary, OConversion::dateToString( v ) ); | 1168 | replace( Qtopia::Anniversary, OConversion::dateToString( v ) ); |
1128 | } | 1169 | } |
1129 | 1170 | ||
1171 | |||
1130 | /*! \fn QDate OContact::birthday() const | 1172 | /*! \fn QDate OContact::birthday() const |
1131 | Returns the birthday of the contact. | 1173 | Returns the birthday of the contact. |
1132 | */ | 1174 | */ |
1133 | QDate OContact::birthday() const | 1175 | QDate OContact::birthday() const |
@@ -1162,9 +1204,10 @@ void OContact::insertEmail( const QString &v ) | |||
1162 | QString e = v.simplifyWhiteSpace(); | 1204 | QString e = v.simplifyWhiteSpace(); |
1163 | QString def = defaultEmail(); | 1205 | QString def = defaultEmail(); |
1164 | 1206 | ||
1165 | // if no default, set it as the default email and don't insert | 1207 | // if no default, set it as the default email and don't insert |
1166 | if ( def.isEmpty() ) { | 1208 | if ( def.isEmpty() ) |
1209 | { | ||
1167 | setDefaultEmail( e ); // will insert into the list for us | 1210 | setDefaultEmail( e ); // will insert into the list for us |
1168 | return; | 1211 | return; |
1169 | } | 1212 | } |
1170 | 1213 | ||
@@ -1177,8 +1220,9 @@ void OContact::insertEmail( const QString &v ) | |||
1177 | emailsStr += e; | 1220 | emailsStr += e; |
1178 | replace( Qtopia::Emails, emailsStr ); | 1221 | replace( Qtopia::Emails, emailsStr ); |
1179 | } | 1222 | } |
1180 | 1223 | ||
1224 | |||
1181 | void OContact::removeEmail( const QString &v ) | 1225 | void OContact::removeEmail( const QString &v ) |
1182 | { | 1226 | { |
1183 | QString e = v.simplifyWhiteSpace(); | 1227 | QString e = v.simplifyWhiteSpace(); |
1184 | QString def = defaultEmail(); | 1228 | QString def = defaultEmail(); |
@@ -1196,21 +1240,26 @@ void OContact::removeEmail( const QString &v ) | |||
1196 | emailsStr = emails.join(emailSeparator()); // Sharp's brain dead separator | 1240 | emailsStr = emails.join(emailSeparator()); // Sharp's brain dead separator |
1197 | replace( Qtopia::Emails, emailsStr ); | 1241 | replace( Qtopia::Emails, emailsStr ); |
1198 | 1242 | ||
1199 | // if default, then replace the default email with the first one | 1243 | // if default, then replace the default email with the first one |
1200 | if ( def == e ) { | 1244 | if ( def == e ) |
1245 | { | ||
1201 | //qDebug("removeEmail is default; setting new default"); | 1246 | //qDebug("removeEmail is default; setting new default"); |
1202 | if ( !emails.count() ) | 1247 | if ( !emails.count() ) |
1203 | clearEmails(); | 1248 | clearEmails(); |
1204 | else // setDefaultEmail will remove e from the list | 1249 | else // setDefaultEmail will remove e from the list |
1205 | setDefaultEmail( emails.first() ); | 1250 | setDefaultEmail( emails.first() ); |
1206 | } | 1251 | } |
1207 | } | 1252 | } |
1253 | |||
1254 | |||
1208 | void OContact::clearEmails() | 1255 | void OContact::clearEmails() |
1209 | { | 1256 | { |
1210 | mMap.remove( Qtopia::DefaultEmail ); | 1257 | mMap.remove( Qtopia::DefaultEmail ); |
1211 | mMap.remove( Qtopia::Emails ); | 1258 | mMap.remove( Qtopia::Emails ); |
1212 | } | 1259 | } |
1260 | |||
1261 | |||
1213 | void OContact::setDefaultEmail( const QString &v ) | 1262 | void OContact::setDefaultEmail( const QString &v ) |
1214 | { | 1263 | { |
1215 | QString e = v.simplifyWhiteSpace(); | 1264 | QString e = v.simplifyWhiteSpace(); |
1216 | 1265 | ||
@@ -1221,16 +1270,22 @@ void OContact::setDefaultEmail( const QString &v ) | |||
1221 | insertEmail( e ); | 1270 | insertEmail( e ); |
1222 | 1271 | ||
1223 | } | 1272 | } |
1224 | 1273 | ||
1274 | |||
1225 | void OContact::insertEmails( const QStringList &v ) | 1275 | void OContact::insertEmails( const QStringList &v ) |
1226 | { | 1276 | { |
1227 | for ( QStringList::ConstIterator it = v.begin(); it != v.end(); ++it ) | 1277 | for ( QStringList::ConstIterator it = v.begin(); it != v.end(); ++it ) |
1228 | insertEmail( *it ); | 1278 | insertEmail( *it ); |
1229 | } | 1279 | } |
1230 | int OContact::rtti() { | 1280 | |
1281 | |||
1282 | int OContact::rtti() | ||
1283 | { | ||
1231 | return OPimResolver::AddressBook; | 1284 | return OPimResolver::AddressBook; |
1232 | } | 1285 | } |
1286 | |||
1287 | |||
1233 | void OContact::setUid( int i ) | 1288 | void OContact::setUid( int i ) |
1234 | { | 1289 | { |
1235 | OPimRecord::setUid(i); | 1290 | OPimRecord::setUid(i); |
1236 | replace( Qtopia::AddressUid , QString::number(i)); | 1291 | replace( Qtopia::AddressUid , QString::number(i)); |
diff --git a/libopie2/opiepim/ocontact.h b/libopie2/opiepim/ocontact.h index 34888dc..445fd7d 100644 --- a/libopie2/opiepim/ocontact.h +++ b/libopie2/opiepim/ocontact.h | |||
@@ -25,14 +25,17 @@ | |||
25 | If not, write to the Free Software Foundation, | 25 | If not, write to the Free Software Foundation, |
26 | Inc., 59 Temple Place - Suite 330, | 26 | Inc., 59 Temple Place - Suite 330, |
27 | Boston, MA 02111-1307, USA. | 27 | Boston, MA 02111-1307, USA. |
28 | */ | 28 | */ |
29 | #ifndef __OCONTACT_H__ | ||
30 | #define __OCONTACT_H__ | ||
31 | 29 | ||
30 | #ifndef OCONTACT_H | ||
31 | #define OCONTACT_H | ||
32 | |||
33 | /* OPIE */ | ||
32 | #include <opie2/opimrecord.h> | 34 | #include <opie2/opimrecord.h> |
33 | #include <qpe/recordfields.h> | 35 | #include <qpe/recordfields.h> |
34 | 36 | ||
37 | /* QT */ | ||
35 | #include <qdatetime.h> | 38 | #include <qdatetime.h> |
36 | #include <qstringlist.h> | 39 | #include <qstringlist.h> |
37 | 40 | ||
38 | #if defined(QPC_TEMPLATEDLL) | 41 | #if defined(QPC_TEMPLATEDLL) |
@@ -40,9 +43,10 @@ | |||
40 | QPC_TEMPLATEEXTERN template class QPC_EXPORT QMap<int, QString>; | 43 | QPC_TEMPLATEEXTERN template class QPC_EXPORT QMap<int, QString>; |
41 | // MOC_SKIP_END | 44 | // MOC_SKIP_END |
42 | #endif | 45 | #endif |
43 | 46 | ||
44 | namespace Opie { | 47 | namespace Opie |
48 | { | ||
45 | class OContactPrivate; | 49 | class OContactPrivate; |
46 | 50 | ||
47 | /** | 51 | /** |
48 | * OContact class represents a specialised PIM Record for contacts. | 52 | * OContact class represents a specialised PIM Record for contacts. |
@@ -53,8 +57,9 @@ class OContactPrivate; | |||
53 | */ | 57 | */ |
54 | class QPC_EXPORT OContact : public OPimRecord | 58 | class QPC_EXPORT OContact : public OPimRecord |
55 | { | 59 | { |
56 | friend class DataSet; | 60 | friend class DataSet; |
61 | |||
57 | public: | 62 | public: |
58 | OContact(); | 63 | OContact(); |
59 | OContact( const QMap<int, QString> &fromMap ); | 64 | OContact( const QMap<int, QString> &fromMap ); |
60 | virtual ~OContact(); | 65 | virtual ~OContact(); |
diff --git a/libopie2/opiepim/ocontactfields.cpp b/libopie2/opiepim/ocontactfields.cpp index deaa1e5..bec00f7 100644 --- a/libopie2/opiepim/ocontactfields.cpp +++ b/libopie2/opiepim/ocontactfields.cpp | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of the Opie Project | 2 | This file is part of the Opie Project |
3 | Copyright (C) The Main Author <main-author@whereever.org> | 3 | Copyright (C) Stefan Eilers <eilers.stefan@epost.de> |
4 | =. Copyright (C) The Opie Team <opie-devel@handhelds.org> | 4 | =. Copyright (C) The Opie Team <opie-devel@handhelds.org> |
5 | .=l. | 5 | .=l. |
6 | .>+-= | 6 | .>+-= |
7 | _;:, .> :=|. This program is free software; you can | 7 | _;:, .> :=|. This program is free software; you can |
@@ -26,19 +26,22 @@ | |||
26 | Inc., 59 Temple Place - Suite 330, | 26 | Inc., 59 Temple Place - Suite 330, |
27 | Boston, MA 02111-1307, USA. | 27 | Boston, MA 02111-1307, USA. |
28 | */ | 28 | */ |
29 | 29 | ||
30 | #include <opie2/ocontactfields.h> | 30 | #include "ocontactfields.h" |
31 | 31 | ||
32 | #include <qstringlist.h> | 32 | /* OPIE */ |
33 | #include <opie2/ocontact.h> | ||
34 | #include <qpe/recordfields.h> // We should use our own enum in the future .. | ||
35 | #include <qpe/config.h> | ||
36 | |||
37 | /* QT */ | ||
33 | #include <qobject.h> | 38 | #include <qobject.h> |
39 | #include <qstringlist.h> | ||
34 | 40 | ||
35 | // We should use our own enum in the future .. | ||
36 | #include <qpe/recordfields.h> | ||
37 | #include <qpe/config.h> | ||
38 | #include <opie2/ocontact.h> | ||
39 | 41 | ||
40 | namespace Opie { | 42 | namespace Opie |
43 | { | ||
41 | /*! | 44 | /*! |
42 | \internal | 45 | \internal |
43 | Returns a list of personal field names for a contact. | 46 | Returns a list of personal field names for a contact. |
44 | */ | 47 | */ |
@@ -422,22 +425,25 @@ OContactFields::OContactFields(): | |||
422 | cfg.setGroup( "ContactFieldOrder" ); | 425 | cfg.setGroup( "ContactFieldOrder" ); |
423 | globalFieldOrder = cfg.readEntry( "General", DEFAULT_FIELD_ORDER ); | 426 | globalFieldOrder = cfg.readEntry( "General", DEFAULT_FIELD_ORDER ); |
424 | } | 427 | } |
425 | 428 | ||
426 | OContactFields::~OContactFields(){ | 429 | OContactFields::~OContactFields() |
430 | { | ||
427 | 431 | ||
428 | // We will store the fieldorder into the config file | 432 | // We will store the fieldorder into the config file |
429 | // to reuse it for the future.. | 433 | // to reuse it for the future.. |
430 | if ( changedFieldOrder ){ | 434 | if ( changedFieldOrder ) |
435 | { | ||
431 | Config cfg ( "AddressBook" ); | 436 | Config cfg ( "AddressBook" ); |
432 | cfg.setGroup( "ContactFieldOrder" ); | 437 | cfg.setGroup( "ContactFieldOrder" ); |
433 | cfg.writeEntry( "General", globalFieldOrder ); | 438 | cfg.writeEntry( "General", globalFieldOrder ); |
434 | } | 439 | } |
435 | } | 440 | } |
436 | 441 | ||
437 | 442 | ||
438 | 443 | ||
439 | void OContactFields::saveToRecord( OContact &cnt ){ | 444 | void OContactFields::saveToRecord( OContact &cnt ) |
445 | { | ||
440 | 446 | ||
441 | qDebug("ocontactfields saveToRecord: >%s<",fieldOrder.latin1()); | 447 | qDebug("ocontactfields saveToRecord: >%s<",fieldOrder.latin1()); |
442 | 448 | ||
443 | // Store fieldorder into this contact. | 449 | // Store fieldorder into this contact. |
@@ -447,9 +453,10 @@ void OContactFields::saveToRecord( OContact &cnt ){ | |||
447 | changedFieldOrder = true; | 453 | changedFieldOrder = true; |
448 | 454 | ||
449 | } | 455 | } |
450 | 456 | ||
451 | void OContactFields::loadFromRecord( const OContact &cnt ){ | 457 | void OContactFields::loadFromRecord( const OContact &cnt ) |
458 | { | ||
452 | qDebug("ocontactfields loadFromRecord"); | 459 | qDebug("ocontactfields loadFromRecord"); |
453 | qDebug("loading >%s<",cnt.fullName().latin1()); | 460 | qDebug("loading >%s<",cnt.fullName().latin1()); |
454 | 461 | ||
455 | // Get fieldorder for this contact. If none is defined, | 462 | // Get fieldorder for this contact. If none is defined, |
@@ -458,17 +465,19 @@ void OContactFields::loadFromRecord( const OContact &cnt ){ | |||
458 | fieldOrder = cnt.customField( CONTACT_FIELD_ORDER_NAME ); | 465 | fieldOrder = cnt.customField( CONTACT_FIELD_ORDER_NAME ); |
459 | 466 | ||
460 | qDebug("fieldOrder from contact>%s<",fieldOrder.latin1()); | 467 | qDebug("fieldOrder from contact>%s<",fieldOrder.latin1()); |
461 | 468 | ||
462 | if (fieldOrder.isEmpty()){ | 469 | if ( fieldOrder.isEmpty() ) |
470 | { | ||
463 | fieldOrder = globalFieldOrder; | 471 | fieldOrder = globalFieldOrder; |
464 | } | 472 | } |
465 | 473 | ||
466 | 474 | ||
467 | qDebug("effective fieldOrder in loadFromRecord >%s<",fieldOrder.latin1()); | 475 | qDebug("effective fieldOrder in loadFromRecord >%s<",fieldOrder.latin1()); |
468 | } | 476 | } |
469 | 477 | ||
470 | void OContactFields::setFieldOrder( int num, int index ){ | 478 | void OContactFields::setFieldOrder( int num, int index ) |
479 | { | ||
471 | qDebug("qcontactfields setfieldorder pos %i -> %i",num,index); | 480 | qDebug("qcontactfields setfieldorder pos %i -> %i",num,index); |
472 | 481 | ||
473 | fieldOrder[num] = QString::number( index, 16 )[0]; | 482 | fieldOrder[num] = QString::number( index, 16 )[0]; |
474 | 483 | ||
@@ -479,9 +488,10 @@ void OContactFields::setFieldOrder( int num, int index ){ | |||
479 | 488 | ||
480 | qDebug("fieldOrder >%s<",fieldOrder.latin1()); | 489 | qDebug("fieldOrder >%s<",fieldOrder.latin1()); |
481 | } | 490 | } |
482 | 491 | ||
483 | int OContactFields::getFieldOrder( int num, int defIndex ){ | 492 | int OContactFields::getFieldOrder( int num, int defIndex ) |
493 | { | ||
484 | qDebug("ocontactfields getFieldOrder"); | 494 | qDebug("ocontactfields getFieldOrder"); |
485 | qDebug("fieldOrder >%s<",fieldOrder.latin1()); | 495 | qDebug("fieldOrder >%s<",fieldOrder.latin1()); |
486 | 496 | ||
487 | // Get index of combo as char.. | 497 | // Get index of combo as char.. |
diff --git a/libopie2/opiepim/ocontactfields.h b/libopie2/opiepim/ocontactfields.h index 993ce3b..9e89532 100644 --- a/libopie2/opiepim/ocontactfields.h +++ b/libopie2/opiepim/ocontactfields.h | |||
@@ -25,22 +25,28 @@ | |||
25 | If not, write to the Free Software Foundation, | 25 | If not, write to the Free Software Foundation, |
26 | Inc., 59 Temple Place - Suite 330, | 26 | Inc., 59 Temple Place - Suite 330, |
27 | Boston, MA 02111-1307, USA. | 27 | Boston, MA 02111-1307, USA. |
28 | */ | 28 | */ |
29 | #ifndef OPIE_CONTACTS_FIELDS | 29 | |
30 | #define OPIE_CONTACTS_FIELDS | 30 | #ifndef OCONTACTFIELDS_H |
31 | #define OCONTACTFIELDS_H | ||
31 | 32 | ||
32 | class QStringList; | 33 | class QStringList; |
33 | 34 | ||
35 | /* OPIE */ | ||
36 | #include <opie2/ocontact.h> | ||
37 | |||
38 | /* QT */ | ||
34 | #include <qmap.h> | 39 | #include <qmap.h> |
35 | #include <qstring.h> | 40 | #include <qstring.h> |
36 | #include <opie2/ocontact.h> | ||
37 | 41 | ||
38 | #define CONTACT_FIELD_ORDER_NAME "opie-contactfield-order" | 42 | #define CONTACT_FIELD_ORDER_NAME "opie-contactfield-order" |
39 | #define DEFAULT_FIELD_ORDER "__________" | 43 | #define DEFAULT_FIELD_ORDER "__________" |
40 | 44 | ||
41 | namespace Opie { | 45 | namespace Opie |
42 | class OContactFields{ | 46 | { |
47 | class OContactFields | ||
48 | { | ||
43 | 49 | ||
44 | public: | 50 | public: |
45 | OContactFields(); | 51 | OContactFields(); |
46 | ~OContactFields(); | 52 | ~OContactFields(); |
diff --git a/libopie2/opiepim/oevent.cpp b/libopie2/opiepim/oevent.cpp index de5e30b..d9cee2b 100644 --- a/libopie2/opiepim/oevent.cpp +++ b/libopie2/opiepim/oevent.cpp | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of the Opie Project | 2 | This file is part of the Opie Project |
3 | Copyright (C) Stefan Eilers (Eilers.Stefan@epost.de) | 3 | Copyright (C) Stefan Eilers <Eilers.Stefan@epost.de> |
4 | =. Copyright (C) The Opie Team <opie-devel@handhelds.org> | 4 | =. Copyright (C) The Opie Team <opie-devel@handhelds.org> |
5 | .=l. | 5 | .=l. |
6 | .>+-= | 6 | .>+-= |
7 | _;:, .> :=|. This program is free software; you can | 7 | _;:, .> :=|. This program is free software; you can |
@@ -25,24 +25,28 @@ | |||
25 | If not, write to the Free Software Foundation, | 25 | If not, write to the Free Software Foundation, |
26 | Inc., 59 Temple Place - Suite 330, | 26 | Inc., 59 Temple Place - Suite 330, |
27 | Boston, MA 02111-1307, USA. | 27 | Boston, MA 02111-1307, USA. |
28 | */ | 28 | */ |
29 | #include <qshared.h> | ||
30 | #include <qarray.h> | ||
31 | 29 | ||
32 | #include <qpe/palmtopuidgen.h> | 30 | #include "oevent.h" |
33 | #include <qpe/categories.h> | ||
34 | #include <qpe/stringutil.h> | ||
35 | 31 | ||
32 | /* OPIE */ | ||
36 | #include <opie2/orecur.h> | 33 | #include <opie2/orecur.h> |
37 | #include <opie2/opimresolver.h> | 34 | #include <opie2/opimresolver.h> |
38 | #include <opie2/opimnotifymanager.h> | 35 | #include <opie2/opimnotifymanager.h> |
36 | #include <qpe/categories.h> | ||
37 | #include <qpe/palmtopuidgen.h> | ||
38 | #include <qpe/stringutil.h> | ||
39 | 39 | ||
40 | #include <opie2/oevent.h> | 40 | /* QT */ |
41 | #include <qshared.h> | ||
42 | #include <qarray.h> | ||
41 | 43 | ||
42 | namespace Opie { | 44 | namespace Opie |
45 | { | ||
43 | 46 | ||
44 | int OCalendarHelper::week( const QDate& date) { | 47 | int OCalendarHelper::week( const QDate& date ) |
48 | { | ||
45 | // Calculates the week this date is in within that | 49 | // Calculates the week this date is in within that |
46 | // month. Equals the "row" is is in in the month view | 50 | // month. Equals the "row" is is in in the month view |
47 | int week = 1; | 51 | int week = 1; |
48 | QDate tmp( date.year(), date.month(), 1 ); | 52 | QDate tmp( date.year(), date.month(), 1 ); |
@@ -52,36 +56,50 @@ int OCalendarHelper::week( const QDate& date) { | |||
52 | week += ( date.day() - 1 ) / 7; | 56 | week += ( date.day() - 1 ) / 7; |
53 | 57 | ||
54 | return week; | 58 | return week; |
55 | } | 59 | } |
56 | int OCalendarHelper::ocurrence( const QDate& date) { | 60 | |
61 | |||
62 | int OCalendarHelper::ocurrence( const QDate& date ) | ||
63 | { | ||
57 | // calculates the number of occurrances of this day of the | 64 | // calculates the number of occurrances of this day of the |
58 | // week till the given date (e.g 3rd Wednesday of the month) | 65 | // week till the given date (e.g 3rd Wednesday of the month) |
59 | return ( date.day() - 1 ) / 7 + 1; | 66 | return ( date.day() - 1 ) / 7 + 1; |
60 | } | 67 | } |
61 | int OCalendarHelper::dayOfWeek( char day ) { | 68 | |
69 | |||
70 | int OCalendarHelper::dayOfWeek( char day ) | ||
71 | { | ||
62 | int dayOfWeek = 1; | 72 | int dayOfWeek = 1; |
63 | char i = ORecur::MON; | 73 | char i = ORecur::MON; |
64 | while ( !( i & day ) && i <= ORecur::SUN ) { | 74 | while ( !( i & day ) && i <= ORecur::SUN ) |
75 | { | ||
65 | i <<= 1; | 76 | i <<= 1; |
66 | ++dayOfWeek; | 77 | ++dayOfWeek; |
67 | } | 78 | } |
68 | return dayOfWeek; | 79 | return dayOfWeek; |
69 | } | 80 | } |
70 | int OCalendarHelper::monthDiff( const QDate& first, const QDate& second ) { | 81 | |
82 | |||
83 | int OCalendarHelper::monthDiff( const QDate& first, const QDate& second ) | ||
84 | { | ||
71 | return ( second.year() - first.year() ) * 12 + | 85 | return ( second.year() - first.year() ) * 12 + |
72 | second.month() - first.month(); | 86 | second.month() - first.month(); |
73 | } | 87 | } |
74 | 88 | ||
75 | struct OEvent::Data : public QShared { | 89 | |
76 | Data() : QShared() { | 90 | struct OEvent::Data : public QShared |
91 | { | ||
92 | Data() : QShared() | ||
93 | { | ||
77 | child = 0; | 94 | child = 0; |
78 | recur = 0; | 95 | recur = 0; |
79 | manager = 0; | 96 | manager = 0; |
80 | isAllDay = false; | 97 | isAllDay = false; |
81 | parent = 0; | 98 | parent = 0; |
82 | } | 99 | } |
83 | ~Data() { | 100 | ~Data() |
101 | { | ||
84 | delete manager; | 102 | delete manager; |
85 | delete recur; | 103 | delete recur; |
86 | } | 104 | } |
87 | QString description; | 105 | QString description; |
@@ -97,33 +115,44 @@ struct OEvent::Data : public QShared { | |||
97 | QArray<int>* child; | 115 | QArray<int>* child; |
98 | int parent; | 116 | int parent; |
99 | }; | 117 | }; |
100 | 118 | ||
119 | |||
101 | OEvent::OEvent( int uid ) | 120 | OEvent::OEvent( int uid ) |
102 | : OPimRecord( uid ) { | 121 | : OPimRecord( uid ) |
122 | { | ||
103 | data = new Data; | 123 | data = new Data; |
104 | } | 124 | } |
125 | |||
126 | |||
105 | OEvent::OEvent( const OEvent& ev) | 127 | OEvent::OEvent( const OEvent& ev) |
106 | : OPimRecord( ev ), data( ev.data ) | 128 | : OPimRecord( ev ), data( ev.data ) |
107 | { | 129 | { |
108 | data->ref(); | 130 | data->ref(); |
109 | } | 131 | } |
110 | 132 | ||
133 | |||
111 | OEvent::OEvent( const QMap<int, QString> map ) | 134 | OEvent::OEvent( const QMap<int, QString> map ) |
112 | : OPimRecord( 0 ) | 135 | : OPimRecord( 0 ) |
113 | { | 136 | { |
114 | data = new Data; | 137 | data = new Data; |
115 | 138 | ||
116 | fromMap( map ); | 139 | fromMap( map ); |
117 | } | 140 | } |
118 | 141 | ||
119 | OEvent::~OEvent() { | 142 | |
120 | if ( data->deref() ) { | 143 | OEvent::~OEvent() |
144 | { | ||
145 | if ( data->deref() ) | ||
146 | { | ||
121 | delete data; | 147 | delete data; |
122 | data = 0; | 148 | data = 0; |
123 | } | 149 | } |
124 | } | 150 | } |
125 | OEvent& OEvent::operator=( const OEvent& ev) { | 151 | |
152 | |||
153 | OEvent& OEvent::operator=( const OEvent& ev ) | ||
154 | { | ||
126 | if ( this == &ev ) return *this; | 155 | if ( this == &ev ) return *this; |
127 | 156 | ||
128 | OPimRecord::operator=( ev ); | 157 | OPimRecord::operator=( ev ); |
129 | ev.data->ref(); | 158 | ev.data->ref(); |
@@ -132,207 +161,302 @@ OEvent& OEvent::operator=( const OEvent& ev) { | |||
132 | 161 | ||
133 | 162 | ||
134 | return *this; | 163 | return *this; |
135 | } | 164 | } |
136 | QString OEvent::description()const { | 165 | |
166 | |||
167 | QString OEvent::description() const | ||
168 | { | ||
137 | return data->description; | 169 | return data->description; |
138 | } | 170 | } |
139 | void OEvent::setDescription( const QString& description ) { | 171 | |
172 | |||
173 | void OEvent::setDescription( const QString& description ) | ||
174 | { | ||
140 | changeOrModify(); | 175 | changeOrModify(); |
141 | data->description = description; | 176 | data->description = description; |
142 | } | 177 | } |
143 | void OEvent::setLocation( const QString& loc ) { | 178 | |
179 | |||
180 | void OEvent::setLocation( const QString& loc ) | ||
181 | { | ||
144 | changeOrModify(); | 182 | changeOrModify(); |
145 | data->location = loc; | 183 | data->location = loc; |
146 | } | 184 | } |
147 | QString OEvent::location()const { | 185 | |
186 | |||
187 | QString OEvent::location() const | ||
188 | { | ||
148 | return data->location; | 189 | return data->location; |
149 | } | 190 | } |
150 | OPimNotifyManager &OEvent::notifiers()const { | 191 | |
192 | |||
193 | OPimNotifyManager &OEvent::notifiers() const | ||
194 | { | ||
151 | // I hope we can skip the changeOrModify here | 195 | // I hope we can skip the changeOrModify here |
152 | // the notifier should take care of it | 196 | // the notifier should take care of it |
153 | // and OPimNotify is shared too | 197 | // and OPimNotify is shared too |
154 | if (!data->manager ) | 198 | if (!data->manager ) |
155 | data->manager = new OPimNotifyManager; | 199 | data->manager = new OPimNotifyManager; |
156 | 200 | ||
157 | return *data->manager; | 201 | return *data->manager; |
158 | } | 202 | } |
159 | bool OEvent::hasNotifiers()const { | 203 | |
204 | |||
205 | bool OEvent::hasNotifiers() const | ||
206 | { | ||
160 | if (!data->manager ) | 207 | if (!data->manager ) |
161 | return false; | 208 | return false; |
162 | if (data->manager->reminders().isEmpty() && | 209 | if (data->manager->reminders().isEmpty() && |
163 | data->manager->alarms().isEmpty() ) | 210 | data->manager->alarms().isEmpty() ) |
164 | return false; | 211 | return false; |
165 | 212 | ||
166 | return true; | 213 | return true; |
167 | } | 214 | } |
168 | ORecur OEvent::recurrence()const { | 215 | |
216 | |||
217 | ORecur OEvent::recurrence() const | ||
218 | { | ||
169 | if (!data->recur) | 219 | if (!data->recur) |
170 | data->recur = new ORecur; | 220 | data->recur = new ORecur; |
171 | 221 | ||
172 | return *data->recur; | 222 | return *data->recur; |
173 | } | 223 | } |
174 | void OEvent::setRecurrence( const ORecur& rec) { | 224 | |
225 | |||
226 | void OEvent::setRecurrence( const ORecur& rec ) | ||
227 | { | ||
175 | changeOrModify(); | 228 | changeOrModify(); |
176 | if (data->recur ) | 229 | if (data->recur ) |
177 | (*data->recur) = rec; | 230 | (*data->recur) = rec; |
178 | else | 231 | else |
179 | data->recur = new ORecur( rec ); | 232 | data->recur = new ORecur( rec ); |
180 | } | 233 | } |
181 | bool OEvent::hasRecurrence()const { | 234 | |
235 | |||
236 | bool OEvent::hasRecurrence() const | ||
237 | { | ||
182 | if (!data->recur ) return false; | 238 | if (!data->recur ) return false; |
183 | return data->recur->doesRecur(); | 239 | return data->recur->doesRecur(); |
184 | } | 240 | } |
185 | QString OEvent::note()const { | 241 | |
242 | |||
243 | QString OEvent::note() const | ||
244 | { | ||
186 | return data->note; | 245 | return data->note; |
187 | } | 246 | } |
188 | void OEvent::setNote( const QString& note ) { | 247 | |
248 | |||
249 | void OEvent::setNote( const QString& note ) | ||
250 | { | ||
189 | changeOrModify(); | 251 | changeOrModify(); |
190 | data->note = note; | 252 | data->note = note; |
191 | } | 253 | } |
192 | QDateTime OEvent::createdDateTime()const { | 254 | |
255 | |||
256 | QDateTime OEvent::createdDateTime() const | ||
257 | { | ||
193 | return data->created; | 258 | return data->created; |
194 | } | 259 | } |
195 | void OEvent::setCreatedDateTime( const QDateTime& time ) { | 260 | |
261 | |||
262 | void OEvent::setCreatedDateTime( const QDateTime& time ) | ||
263 | { | ||
196 | changeOrModify(); | 264 | changeOrModify(); |
197 | data->created = time; | 265 | data->created = time; |
198 | } | 266 | } |
199 | QDateTime OEvent::startDateTime()const { | 267 | |
268 | |||
269 | QDateTime OEvent::startDateTime() const | ||
270 | { | ||
200 | if ( data->isAllDay ) | 271 | if ( data->isAllDay ) |
201 | return QDateTime( data->start.date(), QTime(0, 0, 0 ) ); | 272 | return QDateTime( data->start.date(), QTime(0, 0, 0 ) ); |
202 | return data->start; | 273 | return data->start; |
203 | } | 274 | } |
204 | QDateTime OEvent::startDateTimeInZone()const { | 275 | |
276 | |||
277 | QDateTime OEvent::startDateTimeInZone() const | ||
278 | { | ||
205 | /* if no timezone, or all day event or if the current and this timeZone match... */ | 279 | /* if no timezone, or all day event or if the current and this timeZone match... */ |
206 | if (data->timezone.isEmpty() || data->isAllDay || data->timezone == OTimeZone::current().timeZone() ) return startDateTime(); | 280 | if (data->timezone.isEmpty() || data->isAllDay || data->timezone == OTimeZone::current().timeZone() ) return startDateTime(); |
207 | 281 | ||
208 | OTimeZone zone(data->timezone ); | 282 | OTimeZone zone(data->timezone ); |
209 | return zone.toDateTime( data->start, OTimeZone::current() ); | 283 | return zone.toDateTime( data->start, OTimeZone::current() ); |
210 | } | 284 | } |
211 | void OEvent::setStartDateTime( const QDateTime& dt ) { | 285 | |
286 | |||
287 | void OEvent::setStartDateTime( const QDateTime& dt ) | ||
288 | { | ||
212 | changeOrModify(); | 289 | changeOrModify(); |
213 | data->start = dt; | 290 | data->start = dt; |
214 | } | 291 | } |
215 | QDateTime OEvent::endDateTime()const { | 292 | |
293 | |||
294 | QDateTime OEvent::endDateTime() const | ||
295 | { | ||
216 | /* | 296 | /* |
217 | * if all Day event the end time needs | 297 | * if all Day event the end time needs |
218 | * to be on the same day as the start | 298 | * to be on the same day as the start |
219 | */ | 299 | */ |
220 | if ( data->isAllDay ) | 300 | if ( data->isAllDay ) |
221 | return QDateTime( data->start.date(), QTime(23, 59, 59 ) ); | 301 | return QDateTime( data->start.date(), QTime(23, 59, 59 ) ); |
222 | return data->end; | 302 | return data->end; |
223 | } | 303 | } |
224 | QDateTime OEvent::endDateTimeInZone()const { | 304 | |
305 | |||
306 | QDateTime OEvent::endDateTimeInZone() const | ||
307 | { | ||
225 | /* if no timezone, or all day event or if the current and this timeZone match... */ | 308 | /* if no timezone, or all day event or if the current and this timeZone match... */ |
226 | if (data->timezone.isEmpty() || data->isAllDay || data->timezone == OTimeZone::current().timeZone() ) return endDateTime(); | 309 | if (data->timezone.isEmpty() || data->isAllDay || data->timezone == OTimeZone::current().timeZone() ) return endDateTime(); |
227 | 310 | ||
228 | OTimeZone zone(data->timezone ); | 311 | OTimeZone zone(data->timezone ); |
229 | return zone.toDateTime( data->end, OTimeZone::current() ); | 312 | return zone.toDateTime( data->end, OTimeZone::current() ); |
230 | } | 313 | } |
231 | void OEvent::setEndDateTime( const QDateTime& dt ) { | 314 | |
315 | |||
316 | void OEvent::setEndDateTime( const QDateTime& dt ) | ||
317 | { | ||
232 | changeOrModify(); | 318 | changeOrModify(); |
233 | data->end = dt; | 319 | data->end = dt; |
234 | } | 320 | } |
235 | bool OEvent::isMultipleDay()const { | 321 | |
322 | |||
323 | bool OEvent::isMultipleDay() const | ||
324 | { | ||
236 | return data->end.date().day() - data->start.date().day(); | 325 | return data->end.date().day() - data->start.date().day(); |
237 | } | 326 | } |
238 | bool OEvent::isAllDay()const { | 327 | |
328 | |||
329 | bool OEvent::isAllDay() const | ||
330 | { | ||
239 | return data->isAllDay; | 331 | return data->isAllDay; |
240 | } | 332 | } |
241 | void OEvent::setAllDay( bool allDay ) { | 333 | |
334 | |||
335 | void OEvent::setAllDay( bool allDay ) | ||
336 | { | ||
242 | changeOrModify(); | 337 | changeOrModify(); |
243 | data->isAllDay = allDay; | 338 | data->isAllDay = allDay; |
244 | if (allDay ) data->timezone = "UTC"; | 339 | if (allDay ) data->timezone = "UTC"; |
245 | } | 340 | } |
246 | void OEvent::setTimeZone( const QString& tz ) { | 341 | |
342 | |||
343 | void OEvent::setTimeZone( const QString& tz ) | ||
344 | { | ||
247 | changeOrModify(); | 345 | changeOrModify(); |
248 | data->timezone = tz; | 346 | data->timezone = tz; |
249 | } | 347 | } |
250 | QString OEvent::timeZone()const { | 348 | |
349 | |||
350 | QString OEvent::timeZone() const | ||
351 | { | ||
251 | if (data->isAllDay ) return QString::fromLatin1("UTC"); | 352 | if (data->isAllDay ) return QString::fromLatin1("UTC"); |
252 | return data->timezone; | 353 | return data->timezone; |
253 | } | 354 | } |
254 | bool OEvent::match( const QRegExp& re )const { | 355 | |
255 | if ( re.match( data->description ) != -1 ){ | 356 | |
357 | bool OEvent::match( const QRegExp& re ) const | ||
358 | { | ||
359 | if ( re.match( data->description ) != -1 ) | ||
360 | { | ||
256 | setLastHitField( Qtopia::DatebookDescription ); | 361 | setLastHitField( Qtopia::DatebookDescription ); |
257 | return true; | 362 | return true; |
258 | } | 363 | } |
259 | if ( re.match( data->note ) != -1 ){ | 364 | if ( re.match( data->note ) != -1 ) |
365 | { | ||
260 | setLastHitField( Qtopia::Note ); | 366 | setLastHitField( Qtopia::Note ); |
261 | return true; | 367 | return true; |
262 | } | 368 | } |
263 | if ( re.match( data->location ) != -1 ){ | 369 | if ( re.match( data->location ) != -1 ) |
370 | { | ||
264 | setLastHitField( Qtopia::Location ); | 371 | setLastHitField( Qtopia::Location ); |
265 | return true; | 372 | return true; |
266 | } | 373 | } |
267 | if ( re.match( data->start.toString() ) != -1 ){ | 374 | if ( re.match( data->start.toString() ) != -1 ) |
375 | { | ||
268 | setLastHitField( Qtopia::StartDateTime ); | 376 | setLastHitField( Qtopia::StartDateTime ); |
269 | return true; | 377 | return true; |
270 | } | 378 | } |
271 | if ( re.match( data->end.toString() ) != -1 ){ | 379 | if ( re.match( data->end.toString() ) != -1 ) |
380 | { | ||
272 | setLastHitField( Qtopia::EndDateTime ); | 381 | setLastHitField( Qtopia::EndDateTime ); |
273 | return true; | 382 | return true; |
274 | } | 383 | } |
275 | return false; | 384 | return false; |
276 | } | 385 | } |
277 | QString OEvent::toRichText()const { | 386 | |
387 | |||
388 | QString OEvent::toRichText() const | ||
389 | { | ||
278 | QString text, value; | 390 | QString text, value; |
279 | 391 | ||
280 | // description | 392 | // description |
281 | text += "<b><h3><img src=\"datebook/DateBook\">"; | 393 | text += "<b><h3><img src=\"datebook/DateBook\">"; |
282 | if ( !description().isEmpty() ) { | 394 | if ( !description().isEmpty() ) |
395 | { | ||
283 | text += Qtopia::escapeString(description() ).replace(QRegExp( "[\n]"), "" ); | 396 | text += Qtopia::escapeString(description() ).replace(QRegExp( "[\n]"), "" ); |
284 | } | 397 | } |
285 | text += "</h3></b><br><hr><br>"; | 398 | text += "</h3></b><br><hr><br>"; |
286 | 399 | ||
287 | // location | 400 | // location |
288 | if ( !(value = location()).isEmpty() ) { | 401 | if ( !( value = location() ).isEmpty() ) |
402 | { | ||
289 | text += "<b>" + QObject::tr( "Location:" ) + "</b> "; | 403 | text += "<b>" + QObject::tr( "Location:" ) + "</b> "; |
290 | text += Qtopia::escapeString(value) + "<br>"; | 404 | text += Qtopia::escapeString(value) + "<br>"; |
291 | } | 405 | } |
292 | 406 | ||
293 | // all day event | 407 | // all day event |
294 | if ( isAllDay() ) { | 408 | if ( isAllDay() ) |
409 | { | ||
295 | text += "<b><i>" + QObject::tr( "This is an all day event" ) + "</i></b><br>"; | 410 | text += "<b><i>" + QObject::tr( "This is an all day event" ) + "</i></b><br>"; |
296 | } | 411 | } |
297 | // multiple day event | 412 | // multiple day event |
298 | else if ( isMultipleDay () ) { | 413 | else if ( isMultipleDay () ) |
414 | { | ||
299 | text += "<b><i>" + QObject::tr( "This is a multiple day event" ) + "</i></b><br>"; | 415 | text += "<b><i>" + QObject::tr( "This is a multiple day event" ) + "</i></b><br>"; |
300 | } | 416 | } |
301 | // start & end times | 417 | // start & end times |
302 | else { | 418 | else |
419 | { | ||
303 | // start time | 420 | // start time |
304 | if ( startDateTime().isValid() ) { | 421 | if ( startDateTime().isValid() ) |
422 | { | ||
305 | text += "<b>" + QObject::tr( "Start:") + "</b> "; | 423 | text += "<b>" + QObject::tr( "Start:") + "</b> "; |
306 | text += Qtopia::escapeString(startDateTime().toString() ). | 424 | text += Qtopia::escapeString(startDateTime().toString() ). |
307 | replace(QRegExp( "[\n]"), "<br>" ) + "<br>"; | 425 | replace(QRegExp( "[\n]"), "<br>" ) + "<br>"; |
308 | } | 426 | } |
309 | 427 | ||
310 | // end time | 428 | // end time |
311 | if ( endDateTime().isValid() ) { | 429 | if ( endDateTime().isValid() ) |
430 | { | ||
312 | text += "<b>" + QObject::tr( "End:") + "</b> "; | 431 | text += "<b>" + QObject::tr( "End:") + "</b> "; |
313 | text += Qtopia::escapeString(endDateTime().toString() ). | 432 | text += Qtopia::escapeString(endDateTime().toString() ). |
314 | replace(QRegExp( "[\n]"), "<br>" ) + "<br>"; | 433 | replace(QRegExp( "[\n]"), "<br>" ) + "<br>"; |
315 | } | 434 | } |
316 | } | 435 | } |
317 | 436 | ||
318 | // categories | 437 | // categories |
319 | if ( categoryNames("Calendar").count() ){ | 438 | if ( categoryNames( "Calendar" ).count() ) |
439 | { | ||
320 | text += "<b>" + QObject::tr( "Category:") + "</b> "; | 440 | text += "<b>" + QObject::tr( "Category:") + "</b> "; |
321 | text += categoryNames("Calendar").join(", "); | 441 | text += categoryNames("Calendar").join(", "); |
322 | text += "<br>"; | 442 | text += "<br>"; |
323 | } | 443 | } |
324 | 444 | ||
325 | //notes | 445 | //notes |
326 | if ( !note().isEmpty() ) { | 446 | if ( !note().isEmpty() ) |
447 | { | ||
327 | text += "<b>" + QObject::tr( "Note:") + "</b><br>"; | 448 | text += "<b>" + QObject::tr( "Note:") + "</b><br>"; |
328 | text += note(); | 449 | text += note(); |
329 | // text += Qtopia::escapeString(note() ). | 450 | // text += Qtopia::escapeString(note() ). |
330 | // replace(QRegExp( "[\n]"), "<br>" ) + "<br>"; | 451 | // replace(QRegExp( "[\n]"), "<br>" ) + "<br>"; |
331 | } | 452 | } |
332 | return text; | 453 | return text; |
333 | } | 454 | } |
334 | QString OEvent::toShortText()const { | 455 | |
456 | |||
457 | QString OEvent::toShortText() const | ||
458 | { | ||
335 | QString text; | 459 | QString text; |
336 | text += QString::number( startDateTime().date().day() ); | 460 | text += QString::number( startDateTime().date().day() ); |
337 | text += "."; | 461 | text += "."; |
338 | text += QString::number( startDateTime().date().month() ); | 462 | text += QString::number( startDateTime().date().month() ); |
@@ -345,25 +469,44 @@ QString OEvent::toShortText()const { | |||
345 | text += " - "; | 469 | text += " - "; |
346 | text += description(); | 470 | text += description(); |
347 | return text; | 471 | return text; |
348 | } | 472 | } |
349 | QString OEvent::type()const { | 473 | |
474 | |||
475 | QString OEvent::type() const | ||
476 | { | ||
350 | return QString::fromLatin1("OEvent"); | 477 | return QString::fromLatin1("OEvent"); |
351 | } | 478 | } |
352 | QString OEvent::recordField( int /*id */ )const { | 479 | |
480 | |||
481 | QString OEvent::recordField( int /*id */ ) const | ||
482 | { | ||
353 | return QString::null; | 483 | return QString::null; |
354 | } | 484 | } |
355 | int OEvent::rtti() { | 485 | |
486 | |||
487 | int OEvent::rtti() | ||
488 | { | ||
356 | return OPimResolver::DateBook; | 489 | return OPimResolver::DateBook; |
357 | } | 490 | } |
358 | bool OEvent::loadFromStream( QDataStream& ) { | 491 | |
492 | |||
493 | bool OEvent::loadFromStream( QDataStream& ) | ||
494 | { | ||
359 | return true; | 495 | return true; |
360 | } | 496 | } |
361 | bool OEvent::saveToStream( QDataStream& )const { | 497 | |
498 | |||
499 | bool OEvent::saveToStream( QDataStream& ) const | ||
500 | { | ||
362 | return true; | 501 | return true; |
363 | } | 502 | } |
364 | void OEvent::changeOrModify() { | 503 | |
365 | if ( data->count != 1 ) { | 504 | |
505 | void OEvent::changeOrModify() | ||
506 | { | ||
507 | if ( data->count != 1 ) | ||
508 | { | ||
366 | data->deref(); | 509 | data->deref(); |
367 | Data* d2 = new Data; | 510 | Data* d2 = new Data; |
368 | d2->description = data->description; | 511 | d2->description = data->description; |
369 | d2->location = data->location; | 512 | d2->location = data->location; |
@@ -381,18 +524,23 @@ void OEvent::changeOrModify() { | |||
381 | d2->isAllDay = data->isAllDay; | 524 | d2->isAllDay = data->isAllDay; |
382 | d2->timezone = data->timezone; | 525 | d2->timezone = data->timezone; |
383 | d2->parent = data->parent; | 526 | d2->parent = data->parent; |
384 | 527 | ||
385 | if ( data->child ) { | 528 | if ( data->child ) |
529 | { | ||
386 | d2->child = new QArray<int>( *data->child ); | 530 | d2->child = new QArray<int>( *data->child ); |
387 | d2->child->detach(); | 531 | d2->child->detach(); |
388 | } | 532 | } |
389 | 533 | ||
390 | data = d2; | 534 | data = d2; |
391 | } | 535 | } |
392 | } | 536 | } |
393 | void OEvent::deref() { | 537 | |
394 | if ( data->deref() ) { | 538 | |
539 | void OEvent::deref() | ||
540 | { | ||
541 | if ( data->deref() ) | ||
542 | { | ||
395 | delete data; | 543 | delete data; |
396 | data = 0; | 544 | data = 0; |
397 | } | 545 | } |
398 | } | 546 | } |
@@ -400,9 +548,10 @@ void OEvent::deref() { | |||
400 | // encoding as ODateBookAccessBackend_xml does.. | 548 | // encoding as ODateBookAccessBackend_xml does.. |
401 | // Thus, we could remove the stuff there and use this | 549 | // Thus, we could remove the stuff there and use this |
402 | // for it and for all other places.. | 550 | // for it and for all other places.. |
403 | // Encoding should happen at one place, only ! (eilers) | 551 | // Encoding should happen at one place, only ! (eilers) |
404 | QMap<int, QString> OEvent::toMap()const { | 552 | QMap<int, QString> OEvent::toMap() const |
553 | { | ||
405 | QMap<int, QString> retMap; | 554 | QMap<int, QString> retMap; |
406 | 555 | ||
407 | retMap.insert( OEvent::FUid, QString::number( uid() ) ); | 556 | retMap.insert( OEvent::FUid, QString::number( uid() ) ); |
408 | retMap.insert( OEvent::FCategories, Qtopia::escapeString( Qtopia::Record::idsToString( categories() ) )); | 557 | retMap.insert( OEvent::FCategories, Qtopia::escapeString( Qtopia::Record::idsToString( categories() ) )); |
@@ -419,20 +568,23 @@ QMap<int, QString> OEvent::toMap()const { | |||
419 | retMap.insert( OEvent::FNote, Qtopia::escapeString( note() ) ); | 568 | retMap.insert( OEvent::FNote, Qtopia::escapeString( note() ) ); |
420 | retMap.insert( OEvent::FTimeZone, timeZone().isEmpty() ? QString( "None" ) : timeZone() ); | 569 | retMap.insert( OEvent::FTimeZone, timeZone().isEmpty() ? QString( "None" ) : timeZone() ); |
421 | if( parent() ) | 570 | if( parent() ) |
422 | retMap.insert( OEvent::FRecParent, QString::number( parent() ) ); | 571 | retMap.insert( OEvent::FRecParent, QString::number( parent() ) ); |
423 | if( children().count() ){ | 572 | if ( children().count() ) |
573 | { | ||
424 | QArray<int> childr = children(); | 574 | QArray<int> childr = children(); |
425 | QString buf; | 575 | QString buf; |
426 | for ( uint i = 0; i < childr.count(); i++ ) { | 576 | for ( uint i = 0; i < childr.count(); i++ ) |
577 | { | ||
427 | if ( i != 0 ) buf += " "; | 578 | if ( i != 0 ) buf += " "; |
428 | buf += QString::number( childr[i] ); | 579 | buf += QString::number( childr[i] ); |
429 | } | 580 | } |
430 | retMap.insert( OEvent::FRecChildren, buf ); | 581 | retMap.insert( OEvent::FRecChildren, buf ); |
431 | } | 582 | } |
432 | 583 | ||
433 | // Add recurrence stuff | 584 | // Add recurrence stuff |
434 | if( hasRecurrence() ){ | 585 | if ( hasRecurrence() ) |
586 | { | ||
435 | ORecur recur = recurrence(); | 587 | ORecur recur = recurrence(); |
436 | QMap<int, QString> recFields = recur.toMap(); | 588 | QMap<int, QString> recFields = recur.toMap(); |
437 | retMap.insert( OEvent::FRType, recFields[ORecur::RType] ); | 589 | retMap.insert( OEvent::FRType, recFields[ORecur::RType] ); |
438 | retMap.insert( OEvent::FRWeekdays, recFields[ORecur::RWeekdays] ); | 590 | retMap.insert( OEvent::FRWeekdays, recFields[ORecur::RWeekdays] ); |
@@ -441,17 +593,20 @@ QMap<int, QString> OEvent::toMap()const { | |||
441 | retMap.insert( OEvent::FRHasEndDate, recFields[ORecur::RHasEndDate] ); | 593 | retMap.insert( OEvent::FRHasEndDate, recFields[ORecur::RHasEndDate] ); |
442 | retMap.insert( OEvent::FREndDate, recFields[ORecur::EndDate] ); | 594 | retMap.insert( OEvent::FREndDate, recFields[ORecur::EndDate] ); |
443 | retMap.insert( OEvent::FRCreated, recFields[ORecur::Created] ); | 595 | retMap.insert( OEvent::FRCreated, recFields[ORecur::Created] ); |
444 | retMap.insert( OEvent::FRExceptions, recFields[ORecur::Exceptions] ); | 596 | retMap.insert( OEvent::FRExceptions, recFields[ORecur::Exceptions] ); |
445 | } else { | 597 | } |
598 | else | ||
599 | { | ||
446 | ORecur recur = recurrence(); | 600 | ORecur recur = recurrence(); |
447 | QMap<int, QString> recFields = recur.toMap(); | 601 | QMap<int, QString> recFields = recur.toMap(); |
448 | retMap.insert( OEvent::FRType, recFields[ORecur::RType] ); | 602 | retMap.insert( OEvent::FRType, recFields[ORecur::RType] ); |
449 | } | 603 | } |
450 | 604 | ||
451 | return retMap; | 605 | return retMap; |
452 | } | 606 | } |
453 | 607 | ||
608 | |||
454 | void OEvent::fromMap( const QMap<int, QString>& map ) | 609 | void OEvent::fromMap( const QMap<int, QString>& map ) |
455 | { | 610 | { |
456 | 611 | ||
457 | // We just want to set the UID if it is really stored. | 612 | // We just want to set the UID if it is really stored. |
@@ -471,27 +626,32 @@ void OEvent::fromMap( const QMap<int, QString>& map ) | |||
471 | if( !map[OEvent::FAlarm].isEmpty() ) | 626 | if( !map[OEvent::FAlarm].isEmpty() ) |
472 | alarmTime = map[OEvent::FAlarm].toInt(); | 627 | alarmTime = map[OEvent::FAlarm].toInt(); |
473 | 628 | ||
474 | int sound = ( ( map[OEvent::FSound] == "loud" ) ? OPimAlarm::Loud : OPimAlarm::Silent ); | 629 | int sound = ( ( map[OEvent::FSound] == "loud" ) ? OPimAlarm::Loud : OPimAlarm::Silent ); |
475 | if ( ( alarmTime != -1 ) ){ | 630 | if ( ( alarmTime != -1 ) ) |
631 | { | ||
476 | QDateTime dt = startDateTime().addSecs( -1*alarmTime*60 ); | 632 | QDateTime dt = startDateTime().addSecs( -1*alarmTime*60 ); |
477 | OPimAlarm al( sound , dt ); | 633 | OPimAlarm al( sound , dt ); |
478 | notifiers().add( al ); | 634 | notifiers().add( al ); |
479 | } | 635 | } |
480 | if ( !map[OEvent::FTimeZone].isEmpty() && ( map[OEvent::FTimeZone] != "None" ) ){ | 636 | if ( !map[ OEvent::FTimeZone ].isEmpty() && ( map[ OEvent::FTimeZone ] != "None" ) ) |
637 | { | ||
481 | setTimeZone( map[OEvent::FTimeZone] ); | 638 | setTimeZone( map[OEvent::FTimeZone] ); |
482 | } | 639 | } |
483 | 640 | ||
484 | time_t start = (time_t) map[OEvent::FStart].toLong(); | 641 | time_t start = (time_t) map[OEvent::FStart].toLong(); |
485 | time_t end = (time_t) map[OEvent::FEnd].toLong(); | 642 | time_t end = (time_t) map[OEvent::FEnd].toLong(); |
486 | 643 | ||
487 | /* AllDay is always in UTC */ | 644 | /* AllDay is always in UTC */ |
488 | if ( isAllDay() ) { | 645 | if ( isAllDay() ) |
646 | { | ||
489 | OTimeZone utc = OTimeZone::utc(); | 647 | OTimeZone utc = OTimeZone::utc(); |
490 | setStartDateTime( utc.fromUTCDateTime( start ) ); | 648 | setStartDateTime( utc.fromUTCDateTime( start ) ); |
491 | setEndDateTime ( utc.fromUTCDateTime( end ) ); | 649 | setEndDateTime ( utc.fromUTCDateTime( end ) ); |
492 | setTimeZone( "UTC"); // make sure it is really utc | 650 | setTimeZone( "UTC"); // make sure it is really utc |
493 | }else { | 651 | } |
652 | else | ||
653 | { | ||
494 | /* to current date time */ | 654 | /* to current date time */ |
495 | // qWarning(" Start is %d", start ); | 655 | // qWarning(" Start is %d", start ); |
496 | OTimeZone zone( timeZone().isEmpty() ? OTimeZone::current() : timeZone() ); | 656 | OTimeZone zone( timeZone().isEmpty() ? OTimeZone::current() : timeZone() ); |
497 | QDateTime date = zone.toDateTime( start ); | 657 | QDateTime date = zone.toDateTime( start ); |
@@ -504,17 +664,20 @@ void OEvent::fromMap( const QMap<int, QString>& map ) | |||
504 | 664 | ||
505 | if ( !map[OEvent::FRecParent].isEmpty() ) | 665 | if ( !map[OEvent::FRecParent].isEmpty() ) |
506 | setParent( map[OEvent::FRecParent].toInt() ); | 666 | setParent( map[OEvent::FRecParent].toInt() ); |
507 | 667 | ||
508 | if ( !map[OEvent::FRecChildren].isEmpty() ){ | 668 | if ( !map[ OEvent::FRecChildren ].isEmpty() ) |
669 | { | ||
509 | QStringList list = QStringList::split(' ', map[OEvent::FRecChildren] ); | 670 | QStringList list = QStringList::split(' ', map[OEvent::FRecChildren] ); |
510 | for ( QStringList::Iterator it = list.begin(); it != list.end(); ++it ) { | 671 | for ( QStringList::Iterator it = list.begin(); it != list.end(); ++it ) |
672 | { | ||
511 | addChild( (*it).toInt() ); | 673 | addChild( (*it).toInt() ); |
512 | } | 674 | } |
513 | } | 675 | } |
514 | 676 | ||
515 | // Fill recurrence stuff and put it directly into the ORecur-Object using fromMap.. | 677 | // Fill recurrence stuff and put it directly into the ORecur-Object using fromMap.. |
516 | if( !map[OEvent::FRType].isEmpty() ){ | 678 | if ( !map[ OEvent::FRType ].isEmpty() ) |
679 | { | ||
517 | QMap<int, QString> recFields; | 680 | QMap<int, QString> recFields; |
518 | recFields.insert( ORecur::RType, map[OEvent::FRType] ); | 681 | recFields.insert( ORecur::RType, map[OEvent::FRType] ); |
519 | recFields.insert( ORecur::RWeekdays, map[OEvent::FRWeekdays] ); | 682 | recFields.insert( ORecur::RWeekdays, map[OEvent::FRWeekdays] ); |
520 | recFields.insert( ORecur::RPosition, map[OEvent::FRPosition] ); | 683 | recFields.insert( ORecur::RPosition, map[OEvent::FRPosition] ); |
@@ -529,70 +692,99 @@ void OEvent::fromMap( const QMap<int, QString>& map ) | |||
529 | 692 | ||
530 | } | 693 | } |
531 | 694 | ||
532 | 695 | ||
533 | int OEvent::parent()const { | 696 | int OEvent::parent() const |
697 | { | ||
534 | return data->parent; | 698 | return data->parent; |
535 | } | 699 | } |
536 | void OEvent::setParent( int uid ) { | 700 | |
701 | |||
702 | void OEvent::setParent( int uid ) | ||
703 | { | ||
537 | changeOrModify(); | 704 | changeOrModify(); |
538 | data->parent = uid; | 705 | data->parent = uid; |
539 | } | 706 | } |
540 | QArray<int> OEvent::children() const{ | 707 | |
708 | |||
709 | QArray<int> OEvent::children() const | ||
710 | { | ||
541 | if (!data->child) return QArray<int>(); | 711 | if (!data->child) return QArray<int>(); |
542 | else | 712 | else |
543 | return data->child->copy(); | 713 | return data->child->copy(); |
544 | } | 714 | } |
545 | void OEvent::setChildren( const QArray<int>& arr ) { | 715 | |
716 | |||
717 | void OEvent::setChildren( const QArray<int>& arr ) | ||
718 | { | ||
546 | changeOrModify(); | 719 | changeOrModify(); |
547 | if (data->child) delete data->child; | 720 | if (data->child) delete data->child; |
548 | 721 | ||
549 | data->child = new QArray<int>( arr ); | 722 | data->child = new QArray<int>( arr ); |
550 | data->child->detach(); | 723 | data->child->detach(); |
551 | } | 724 | } |
552 | void OEvent::addChild( int uid ) { | 725 | |
726 | |||
727 | void OEvent::addChild( int uid ) | ||
728 | { | ||
553 | changeOrModify(); | 729 | changeOrModify(); |
554 | if (!data->child ) { | 730 | if ( !data->child ) |
731 | { | ||
555 | data->child = new QArray<int>(1); | 732 | data->child = new QArray<int>(1); |
556 | (*data->child)[0] = uid; | 733 | (*data->child)[0] = uid; |
557 | }else{ | 734 | } |
735 | else | ||
736 | { | ||
558 | int count = data->child->count(); | 737 | int count = data->child->count(); |
559 | data->child->resize( count + 1 ); | 738 | data->child->resize( count + 1 ); |
560 | (*data->child)[count] = uid; | 739 | (*data->child)[count] = uid; |
561 | } | 740 | } |
562 | } | 741 | } |
563 | void OEvent::removeChild( int uid ) { | 742 | |
743 | |||
744 | void OEvent::removeChild( int uid ) | ||
745 | { | ||
564 | if (!data->child || !data->child->contains( uid ) ) return; | 746 | if (!data->child || !data->child->contains( uid ) ) return; |
565 | changeOrModify(); | 747 | changeOrModify(); |
566 | QArray<int> newAr( data->child->count() - 1 ); | 748 | QArray<int> newAr( data->child->count() - 1 ); |
567 | int j = 0; | 749 | int j = 0; |
568 | uint count = data->child->count(); | 750 | uint count = data->child->count(); |
569 | for ( uint i = 0; i < count; i++ ) { | 751 | for ( uint i = 0; i < count; i++ ) |
570 | if ( (*data->child)[i] != uid ) { | 752 | { |
753 | if ( ( *data->child ) [ i ] != uid ) | ||
754 | { | ||
571 | newAr[j] = (*data->child)[i]; | 755 | newAr[j] = (*data->child)[i]; |
572 | j++; | 756 | j++; |
573 | } | 757 | } |
574 | } | 758 | } |
575 | (*data->child) = newAr; | 759 | (*data->child) = newAr; |
576 | } | 760 | } |
577 | struct OEffectiveEvent::Data : public QShared { | 761 | |
578 | Data() : QShared() { | 762 | |
579 | } | 763 | struct OEffectiveEvent::Data : public QShared |
764 | { | ||
765 | Data() : QShared() | ||
766 | {} | ||
580 | OEvent event; | 767 | OEvent event; |
581 | QDate date; | 768 | QDate date; |
582 | QTime start, end; | 769 | QTime start, end; |
583 | QDate startDate, endDate; | 770 | QDate startDate, endDate; |
584 | bool dates : 1; | 771 | bool dates : 1; |
585 | }; | 772 | }; |
586 | 773 | ||
587 | OEffectiveEvent::OEffectiveEvent() { | 774 | |
775 | OEffectiveEvent::OEffectiveEvent() | ||
776 | { | ||
588 | data = new Data; | 777 | data = new Data; |
589 | data->date = QDate::currentDate(); | 778 | data->date = QDate::currentDate(); |
590 | data->start = data->end = QTime::currentTime(); | 779 | data->start = data->end = QTime::currentTime(); |
591 | data->dates = false; | 780 | data->dates = false; |
592 | } | 781 | } |
782 | |||
783 | |||
593 | OEffectiveEvent::OEffectiveEvent( const OEvent& ev, const QDate& startDate, | 784 | OEffectiveEvent::OEffectiveEvent( const OEvent& ev, const QDate& startDate, |
594 | Position pos ) { | 785 | Position pos ) |
786 | { | ||
595 | data = new Data; | 787 | data = new Data; |
596 | data->event = ev; | 788 | data->event = ev; |
597 | data->date = startDate; | 789 | data->date = startDate; |
598 | if ( pos & Start ) | 790 | if ( pos & Start ) |
@@ -606,19 +798,29 @@ OEffectiveEvent::OEffectiveEvent( const OEvent& ev, const QDate& startDate, | |||
606 | data->end = QTime( 23, 59, 59 ); | 798 | data->end = QTime( 23, 59, 59 ); |
607 | 799 | ||
608 | data->dates = false; | 800 | data->dates = false; |
609 | } | 801 | } |
610 | OEffectiveEvent::OEffectiveEvent( const OEffectiveEvent& ev) { | 802 | |
803 | |||
804 | OEffectiveEvent::OEffectiveEvent( const OEffectiveEvent& ev ) | ||
805 | { | ||
611 | data = ev.data; | 806 | data = ev.data; |
612 | data->ref(); | 807 | data->ref(); |
613 | } | 808 | } |
614 | OEffectiveEvent::~OEffectiveEvent() { | 809 | |
615 | if ( data->deref() ) { | 810 | |
811 | OEffectiveEvent::~OEffectiveEvent() | ||
812 | { | ||
813 | if ( data->deref() ) | ||
814 | { | ||
616 | delete data; | 815 | delete data; |
617 | data = 0; | 816 | data = 0; |
618 | } | 817 | } |
619 | } | 818 | } |
620 | OEffectiveEvent& OEffectiveEvent::operator=( const OEffectiveEvent& ev ) { | 819 | |
820 | |||
821 | OEffectiveEvent& OEffectiveEvent::operator=( const OEffectiveEvent& ev ) | ||
822 | { | ||
621 | if ( *this == ev ) return *this; | 823 | if ( *this == ev ) return *this; |
622 | 824 | ||
623 | ev.data->ref(); | 825 | ev.data->ref(); |
624 | deref(); | 826 | deref(); |
@@ -626,88 +828,144 @@ OEffectiveEvent& OEffectiveEvent::operator=( const OEffectiveEvent& ev ) { | |||
626 | 828 | ||
627 | return *this; | 829 | return *this; |
628 | } | 830 | } |
629 | 831 | ||
630 | void OEffectiveEvent::setStartTime( const QTime& ti) { | 832 | |
833 | void OEffectiveEvent::setStartTime( const QTime& ti ) | ||
834 | { | ||
631 | changeOrModify(); | 835 | changeOrModify(); |
632 | data->start = ti; | 836 | data->start = ti; |
633 | } | 837 | } |
634 | void OEffectiveEvent::setEndTime( const QTime& en) { | 838 | |
839 | |||
840 | void OEffectiveEvent::setEndTime( const QTime& en ) | ||
841 | { | ||
635 | changeOrModify(); | 842 | changeOrModify(); |
636 | data->end = en; | 843 | data->end = en; |
637 | } | 844 | } |
638 | void OEffectiveEvent::setEvent( const OEvent& ev) { | 845 | |
846 | |||
847 | void OEffectiveEvent::setEvent( const OEvent& ev ) | ||
848 | { | ||
639 | changeOrModify(); | 849 | changeOrModify(); |
640 | data->event = ev; | 850 | data->event = ev; |
641 | } | 851 | } |
642 | void OEffectiveEvent::setDate( const QDate& da) { | 852 | |
853 | |||
854 | void OEffectiveEvent::setDate( const QDate& da ) | ||
855 | { | ||
643 | changeOrModify(); | 856 | changeOrModify(); |
644 | data->date = da; | 857 | data->date = da; |
645 | } | 858 | } |
859 | |||
860 | |||
646 | void OEffectiveEvent::setEffectiveDates( const QDate& from, | 861 | void OEffectiveEvent::setEffectiveDates( const QDate& from, |
647 | const QDate& to ) { | 862 | const QDate& to ) |
648 | if (!from.isValid() ) { | 863 | { |
864 | if ( !from.isValid() ) | ||
865 | { | ||
649 | data->dates = false; | 866 | data->dates = false; |
650 | return; | 867 | return; |
651 | } | 868 | } |
652 | 869 | ||
653 | data->startDate = from; | 870 | data->startDate = from; |
654 | data->endDate = to; | 871 | data->endDate = to; |
655 | } | 872 | } |
656 | QString OEffectiveEvent::description()const { | 873 | |
874 | |||
875 | QString OEffectiveEvent::description() const | ||
876 | { | ||
657 | return data->event.description(); | 877 | return data->event.description(); |
658 | } | 878 | } |
659 | QString OEffectiveEvent::location()const { | 879 | |
880 | |||
881 | QString OEffectiveEvent::location() const | ||
882 | { | ||
660 | return data->event.location(); | 883 | return data->event.location(); |
661 | } | 884 | } |
662 | QString OEffectiveEvent::note()const { | 885 | |
886 | |||
887 | QString OEffectiveEvent::note() const | ||
888 | { | ||
663 | return data->event.note(); | 889 | return data->event.note(); |
664 | } | 890 | } |
665 | OEvent OEffectiveEvent::event()const { | 891 | |
892 | |||
893 | OEvent OEffectiveEvent::event() const | ||
894 | { | ||
666 | return data->event; | 895 | return data->event; |
667 | } | 896 | } |
668 | QTime OEffectiveEvent::startTime()const { | 897 | |
898 | |||
899 | QTime OEffectiveEvent::startTime() const | ||
900 | { | ||
669 | return data->start; | 901 | return data->start; |
670 | } | 902 | } |
671 | QTime OEffectiveEvent::endTime()const { | 903 | |
904 | |||
905 | QTime OEffectiveEvent::endTime() const | ||
906 | { | ||
672 | return data->end; | 907 | return data->end; |
673 | } | 908 | } |
674 | QDate OEffectiveEvent::date()const { | 909 | |
910 | |||
911 | QDate OEffectiveEvent::date() const | ||
912 | { | ||
675 | return data->date; | 913 | return data->date; |
676 | } | 914 | } |
677 | int OEffectiveEvent::length()const { | 915 | |
916 | |||
917 | int OEffectiveEvent::length() const | ||
918 | { | ||
678 | return (data->end.hour() * 60 - data->start.hour() * 60) | 919 | return (data->end.hour() * 60 - data->start.hour() * 60) |
679 | + QABS(data->start.minute() - data->end.minute() ); | 920 | + QABS(data->start.minute() - data->end.minute() ); |
680 | } | 921 | } |
681 | int OEffectiveEvent::size()const { | 922 | |
923 | |||
924 | int OEffectiveEvent::size() const | ||
925 | { | ||
682 | return ( data->end.hour() - data->start.hour() ) * 3600 | 926 | return ( data->end.hour() - data->start.hour() ) * 3600 |
683 | + (data->end.minute() - data->start.minute() * 60 | 927 | + (data->end.minute() - data->start.minute() * 60 |
684 | + data->end.second() - data->start.second() ); | 928 | + data->end.second() - data->start.second() ); |
685 | } | 929 | } |
686 | QDate OEffectiveEvent::startDate()const { | 930 | |
931 | |||
932 | QDate OEffectiveEvent::startDate() const | ||
933 | { | ||
687 | if ( data->dates ) | 934 | if ( data->dates ) |
688 | return data->startDate; | 935 | return data->startDate; |
689 | else if ( data->event.hasRecurrence() ) // single day, since multi-day should have a d pointer | 936 | else if ( data->event.hasRecurrence() ) // single day, since multi-day should have a d pointer |
690 | return data->date; | 937 | return data->date; |
691 | else | 938 | else |
692 | return data->event.startDateTime().date(); | 939 | return data->event.startDateTime().date(); |
693 | } | 940 | } |
694 | QDate OEffectiveEvent::endDate()const { | 941 | |
942 | |||
943 | QDate OEffectiveEvent::endDate() const | ||
944 | { | ||
695 | if ( data->dates ) | 945 | if ( data->dates ) |
696 | return data->endDate; | 946 | return data->endDate; |
697 | else if ( data->event.hasRecurrence() ) | 947 | else if ( data->event.hasRecurrence() ) |
698 | return data->date; | 948 | return data->date; |
699 | else | 949 | else |
700 | return data->event.endDateTime().date(); | 950 | return data->event.endDateTime().date(); |
701 | } | 951 | } |
702 | void OEffectiveEvent::deref() { | 952 | |
703 | if ( data->deref() ) { | 953 | |
954 | void OEffectiveEvent::deref() | ||
955 | { | ||
956 | if ( data->deref() ) | ||
957 | { | ||
704 | delete data; | 958 | delete data; |
705 | data = 0; | 959 | data = 0; |
706 | } | 960 | } |
707 | } | 961 | } |
708 | void OEffectiveEvent::changeOrModify() { | 962 | |
709 | if ( data->count != 1 ) { | 963 | |
964 | void OEffectiveEvent::changeOrModify() | ||
965 | { | ||
966 | if ( data->count != 1 ) | ||
967 | { | ||
710 | data->deref(); | 968 | data->deref(); |
711 | Data* d2 = new Data; | 969 | Data* d2 = new Data; |
712 | d2->event = data->event; | 970 | d2->event = data->event; |
713 | d2->date = data->date; | 971 | d2->date = data->date; |
@@ -718,32 +976,50 @@ void OEffectiveEvent::changeOrModify() { | |||
718 | d2->dates = data->dates; | 976 | d2->dates = data->dates; |
719 | data = d2; | 977 | data = d2; |
720 | } | 978 | } |
721 | } | 979 | } |
722 | bool OEffectiveEvent::operator<( const OEffectiveEvent &e ) const{ | 980 | |
981 | |||
982 | bool OEffectiveEvent::operator<( const OEffectiveEvent &e ) const | ||
983 | { | ||
723 | if ( data->date < e.date() ) | 984 | if ( data->date < e.date() ) |
724 | return TRUE; | 985 | return TRUE; |
725 | if ( data->date == e.date() ) | 986 | if ( data->date == e.date() ) |
726 | return ( startTime() < e.startTime() ); | 987 | return ( startTime() < e.startTime() ); |
727 | else | 988 | else |
728 | return FALSE; | 989 | return FALSE; |
729 | } | 990 | } |
730 | bool OEffectiveEvent::operator<=( const OEffectiveEvent &e ) const{ | 991 | |
992 | |||
993 | bool OEffectiveEvent::operator<=( const OEffectiveEvent &e ) const | ||
994 | { | ||
731 | return (data->date <= e.date() ); | 995 | return (data->date <= e.date() ); |
732 | } | 996 | } |
733 | bool OEffectiveEvent::operator==( const OEffectiveEvent &e ) const { | 997 | |
998 | |||
999 | bool OEffectiveEvent::operator==( const OEffectiveEvent &e ) const | ||
1000 | { | ||
734 | return ( date() == e.date() | 1001 | return ( date() == e.date() |
735 | && startTime() == e.startTime() | 1002 | && startTime() == e.startTime() |
736 | && endTime()== e.endTime() | 1003 | && endTime()== e.endTime() |
737 | && event() == e.event() ); | 1004 | && event() == e.event() ); |
738 | } | 1005 | } |
739 | bool OEffectiveEvent::operator!=( const OEffectiveEvent &e ) const { | 1006 | |
1007 | |||
1008 | bool OEffectiveEvent::operator!=( const OEffectiveEvent &e ) const | ||
1009 | { | ||
740 | return !(*this == e ); | 1010 | return !(*this == e ); |
741 | } | 1011 | } |
742 | bool OEffectiveEvent::operator>( const OEffectiveEvent &e ) const { | 1012 | |
1013 | |||
1014 | bool OEffectiveEvent::operator>( const OEffectiveEvent &e ) const | ||
1015 | { | ||
743 | return !(*this <= e ); | 1016 | return !(*this <= e ); |
744 | } | 1017 | } |
745 | bool OEffectiveEvent::operator>= ( const OEffectiveEvent &e ) const { | 1018 | |
1019 | |||
1020 | bool OEffectiveEvent::operator>= ( const OEffectiveEvent &e ) const | ||
1021 | { | ||
746 | return !(*this < e); | 1022 | return !(*this < e); |
747 | } | 1023 | } |
748 | 1024 | ||
749 | } | 1025 | } |
diff --git a/libopie2/opiepim/oevent.h b/libopie2/opiepim/oevent.h index 9502efa..dc5e4d6 100644 --- a/libopie2/opiepim/oevent.h +++ b/libopie2/opiepim/oevent.h | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of the Opie Project | 2 | This file is part of the Opie Project |
3 | Copyright (C) Stefan Eilers (Eilers.Stefan@epost.de) | 3 | Copyright (C) Stefan Eilers <Eilers.Stefan@epost.de> |
4 | =. Copyright (C) The Opie Team <opie-devel@handhelds.org> | 4 | =. Copyright (C) The Opie Team <opie-devel@handhelds.org> |
5 | .=l. | 5 | .=l. |
6 | .>+-= | 6 | .>+-= |
7 | _;:, .> :=|. This program is free software; you can | 7 | _;:, .> :=|. This program is free software; you can |
@@ -27,23 +27,26 @@ | |||
27 | Boston, MA 02111-1307, USA. | 27 | Boston, MA 02111-1307, USA. |
28 | */ | 28 | */ |
29 | // CONTAINS GPLed code of TT | 29 | // CONTAINS GPLed code of TT |
30 | 30 | ||
31 | #ifndef OPIE_PIM_EVENT_H | 31 | #ifndef OEVENT_H |
32 | #define OPIE_PIM_EVENT_H | 32 | #define OEVENT_H |
33 | |||
34 | #include <qstring.h> | ||
35 | #include <qdatetime.h> | ||
36 | #include <qvaluelist.h> | ||
37 | 33 | ||
34 | /* OPIE */ | ||
35 | #include <opie2/otimezone.h> | ||
36 | #include <opie2/opimrecord.h> | ||
38 | #include <qpe/recordfields.h> | 37 | #include <qpe/recordfields.h> |
39 | #include <qpe/palmtopuidgen.h> | 38 | #include <qpe/palmtopuidgen.h> |
40 | 39 | ||
41 | #include <opie2/otimezone.h> | 40 | /* QT */ |
42 | #include <opie2/opimrecord.h> | 41 | #include <qstring.h> |
42 | #include <qdatetime.h> | ||
43 | #include <qvaluelist.h> | ||
43 | 44 | ||
44 | namespace Opie { | 45 | namespace Opie |
45 | struct OCalendarHelper { | 46 | { |
47 | struct OCalendarHelper | ||
48 | { | ||
46 | /** calculate the week number of the date */ | 49 | /** calculate the week number of the date */ |
47 | static int week( const QDate& ); | 50 | static int week( const QDate& ); |
48 | /** calculate the occurence of week days since the start of the month */ | 51 | /** calculate the occurence of week days since the start of the month */ |
49 | static int ocurrence( const QDate& ); | 52 | static int ocurrence( const QDate& ); |
@@ -64,9 +67,10 @@ class ORecur; | |||
64 | * This is the container for all Events. It encapsules all | 67 | * This is the container for all Events. It encapsules all |
65 | * available information for a single Event | 68 | * available information for a single Event |
66 | * @short container for events. | 69 | * @short container for events. |
67 | */ | 70 | */ |
68 | class OEvent : public OPimRecord { | 71 | class OEvent : public OPimRecord |
72 | { | ||
69 | public: | 73 | public: |
70 | typedef QValueList<OEvent> ValueList; | 74 | typedef QValueList<OEvent> ValueList; |
71 | /** | 75 | /** |
72 | * RecordFields contain possible attributes | 76 | * RecordFields contain possible attributes |
@@ -190,8 +194,9 @@ public: | |||
190 | bool operator<=( const OEvent& ); | 194 | bool operator<=( const OEvent& ); |
191 | bool operator>( const OEvent& ); | 195 | bool operator>( const OEvent& ); |
192 | bool operator>=(const OEvent& ); | 196 | bool operator>=(const OEvent& ); |
193 | */ | 197 | */ |
198 | |||
194 | private: | 199 | private: |
195 | inline void changeOrModify(); | 200 | inline void changeOrModify(); |
196 | void deref(); | 201 | void deref(); |
197 | struct Data; | 202 | struct Data; |
@@ -203,9 +208,11 @@ private: | |||
203 | 208 | ||
204 | /** | 209 | /** |
205 | * AN Event can span through multiple days. We split up a multiday eve | 210 | * AN Event can span through multiple days. We split up a multiday eve |
206 | */ | 211 | */ |
207 | class OEffectiveEvent { | 212 | class OEffectiveEvent |
213 | { | ||
214 | |||
208 | public: | 215 | public: |
209 | typedef QValueList<OEffectiveEvent> ValueList; | 216 | typedef QValueList<OEffectiveEvent> ValueList; |
210 | enum Position { MidWay, Start, End, StartEnd }; | 217 | enum Position { MidWay, Start, End, StartEnd }; |
211 | // If we calculate the effective event of a multi-day event | 218 | // If we calculate the effective event of a multi-day event |
diff --git a/libopie2/opiepim/orecordlist.h b/libopie2/opiepim/orecordlist.h index 8f0011b..1742dcc 100644 --- a/libopie2/opiepim/orecordlist.h +++ b/libopie2/opiepim/orecordlist.h | |||
@@ -26,17 +26,20 @@ | |||
26 | Inc., 59 Temple Place - Suite 330, | 26 | Inc., 59 Temple Place - Suite 330, |
27 | Boston, MA 02111-1307, USA. | 27 | Boston, MA 02111-1307, USA. |
28 | */ | 28 | */ |
29 | 29 | ||
30 | #ifndef OPIE_RECORD_LIST_H | 30 | #ifndef ORECORDLIST_H |
31 | #define OPIE_RECORD_LIST_H | 31 | #define ORECORDLIST_H |
32 | |||
33 | #include <qarray.h> | ||
34 | 32 | ||
33 | /* OPIE */ | ||
35 | #include <opie2/otemplatebase.h> | 34 | #include <opie2/otemplatebase.h> |
36 | #include <opie2/opimrecord.h> | 35 | #include <opie2/opimrecord.h> |
37 | 36 | ||
38 | namespace Opie { | 37 | /* QT */ |
38 | #include <qarray.h> | ||
39 | |||
40 | namespace Opie | ||
41 | { | ||
39 | 42 | ||
40 | class ORecordListIteratorPrivate; | 43 | class ORecordListIteratorPrivate; |
41 | /** | 44 | /** |
42 | * Our List Iterator | 45 | * Our List Iterator |
@@ -46,10 +49,12 @@ class ORecordListIteratorPrivate; | |||
46 | * doSomeCoolStuff( (*it) ); | 49 | * doSomeCoolStuff( (*it) ); |
47 | */ | 50 | */ |
48 | template <class T> class ORecordList; | 51 | template <class T> class ORecordList; |
49 | template <class T = OPimRecord> | 52 | template <class T = OPimRecord> |
50 | class ORecordListIterator { | 53 | class ORecordListIterator |
54 | { | ||
51 | friend class ORecordList<T>; | 55 | friend class ORecordList<T>; |
56 | |||
52 | public: | 57 | public: |
53 | typedef OTemplateBase<T> Base; | 58 | typedef OTemplateBase<T> Base; |
54 | 59 | ||
55 | /** | 60 | /** |
@@ -104,24 +109,26 @@ private: | |||
104 | /* d pointer for future versions */ | 109 | /* d pointer for future versions */ |
105 | ORecordListIteratorPrivate *d; | 110 | ORecordListIteratorPrivate *d; |
106 | }; | 111 | }; |
107 | 112 | ||
113 | |||
108 | class ORecordListPrivate; | 114 | class ORecordListPrivate; |
109 | /** | 115 | /** |
110 | * The recordlist used as a return type | 116 | * The recordlist used as a return type |
111 | * from OPimAccessTemplate | 117 | * from OPimAccessTemplate |
112 | */ | 118 | */ |
113 | template <class T = OPimRecord > | 119 | template <class T = OPimRecord > |
114 | class ORecordList { | 120 | class ORecordList |
121 | { | ||
115 | public: | 122 | public: |
116 | typedef OTemplateBase<T> Base; | 123 | typedef OTemplateBase<T> Base; |
117 | typedef ORecordListIterator<T> Iterator; | 124 | typedef ORecordListIterator<T> Iterator; |
118 | 125 | ||
119 | /** | 126 | /** |
120 | * c'tor | 127 | * c'tor |
121 | */ | 128 | */ |
122 | ORecordList () { | 129 | ORecordList () |
123 | } | 130 | {} |
124 | ORecordList( const QArray<int>& ids, | 131 | ORecordList( const QArray<int>& ids, |
125 | const Base* ); | 132 | const Base* ); |
126 | ~ORecordList(); | 133 | ~ORecordList(); |
127 | 134 | ||
@@ -157,25 +164,32 @@ private: | |||
157 | const Base* m_acc; | 164 | const Base* m_acc; |
158 | ORecordListPrivate *d; | 165 | ORecordListPrivate *d; |
159 | }; | 166 | }; |
160 | 167 | ||
168 | |||
161 | /* ok now implement it */ | 169 | /* ok now implement it */ |
162 | template <class T> | 170 | template <class T> |
163 | ORecordListIterator<T>::ORecordListIterator() { | 171 | ORecordListIterator<T>::ORecordListIterator() |
172 | { | ||
164 | m_current = 0; | 173 | m_current = 0; |
165 | m_temp = 0l; | 174 | m_temp = 0l; |
166 | m_end = true; | 175 | m_end = true; |
167 | m_record = T(); | 176 | m_record = T(); |
168 | /* forward */ | 177 | /* forward */ |
169 | m_direction = TRUE; | 178 | m_direction = TRUE; |
170 | } | 179 | } |
180 | |||
181 | |||
171 | template <class T> | 182 | template <class T> |
172 | ORecordListIterator<T>::~ORecordListIterator() { | 183 | ORecordListIterator<T>::~ORecordListIterator() |
184 | { | ||
173 | /* nothing to delete */ | 185 | /* nothing to delete */ |
174 | } | 186 | } |
175 | 187 | ||
188 | |||
176 | template <class T> | 189 | template <class T> |
177 | ORecordListIterator<T>::ORecordListIterator( const ORecordListIterator<T>& it) { | 190 | ORecordListIterator<T>::ORecordListIterator( const ORecordListIterator<T>& it ) |
191 | { | ||
178 | // qWarning("ORecordListIterator copy c'tor"); | 192 | // qWarning("ORecordListIterator copy c'tor"); |
179 | m_uids = it.m_uids; | 193 | m_uids = it.m_uids; |
180 | m_current = it.m_current; | 194 | m_current = it.m_current; |
181 | m_temp = it.m_temp; | 195 | m_temp = it.m_temp; |
@@ -183,10 +197,12 @@ ORecordListIterator<T>::ORecordListIterator( const ORecordListIterator<T>& it) { | |||
183 | m_record = it.m_record; | 197 | m_record = it.m_record; |
184 | m_direction = it.m_direction; | 198 | m_direction = it.m_direction; |
185 | } | 199 | } |
186 | 200 | ||
201 | |||
187 | template <class T> | 202 | template <class T> |
188 | ORecordListIterator<T> &ORecordListIterator<T>::operator=( const ORecordListIterator<T>& it) { | 203 | ORecordListIterator<T> &ORecordListIterator<T>::operator=( const ORecordListIterator<T>& it ) |
204 | { | ||
189 | m_uids = it.m_uids; | 205 | m_uids = it.m_uids; |
190 | m_current = it.m_current; | 206 | m_current = it.m_current; |
191 | m_temp = it.m_temp; | 207 | m_temp = it.m_temp; |
192 | m_end = it.m_end; | 208 | m_end = it.m_end; |
@@ -194,10 +210,12 @@ ORecordListIterator<T> &ORecordListIterator<T>::operator=( const ORecordListIter | |||
194 | 210 | ||
195 | return *this; | 211 | return *this; |
196 | } | 212 | } |
197 | 213 | ||
214 | |||
198 | template <class T> | 215 | template <class T> |
199 | T ORecordListIterator<T>::operator*() { | 216 | T ORecordListIterator<T>::operator*() |
217 | { | ||
200 | //qWarning("operator* %d %d", m_current, m_uids[m_current] ); | 218 | //qWarning("operator* %d %d", m_current, m_uids[m_current] ); |
201 | if (!m_end ) | 219 | if (!m_end ) |
202 | m_record = m_temp->find( m_uids[m_current], m_uids, m_current, | 220 | m_record = m_temp->find( m_uids[m_current], m_uids, m_current, |
203 | m_direction ? Base::Forward : | 221 | m_direction ? Base::Forward : |
@@ -207,33 +225,44 @@ T ORecordListIterator<T>::operator*() { | |||
207 | 225 | ||
208 | return m_record; | 226 | return m_record; |
209 | } | 227 | } |
210 | 228 | ||
229 | |||
211 | template <class T> | 230 | template <class T> |
212 | ORecordListIterator<T> &ORecordListIterator<T>::operator++() { | 231 | ORecordListIterator<T> &ORecordListIterator<T>::operator++() |
232 | { | ||
213 | m_direction = true; | 233 | m_direction = true; |
214 | if (m_current < m_uids.count() ) { | 234 | if ( m_current < m_uids.count() ) |
235 | { | ||
215 | m_end = false; | 236 | m_end = false; |
216 | ++m_current; | 237 | ++m_current; |
217 | }else | 238 | } |
239 | else | ||
218 | m_end = true; | 240 | m_end = true; |
219 | 241 | ||
220 | return *this; | 242 | return *this; |
221 | } | 243 | } |
244 | |||
245 | |||
222 | template <class T> | 246 | template <class T> |
223 | ORecordListIterator<T> &ORecordListIterator<T>::operator--() { | 247 | ORecordListIterator<T> &ORecordListIterator<T>::operator--() |
248 | { | ||
224 | m_direction = false; | 249 | m_direction = false; |
225 | if ( m_current > 0 ) { | 250 | if ( m_current > 0 ) |
251 | { | ||
226 | --m_current; | 252 | --m_current; |
227 | m_end = false; | 253 | m_end = false; |
228 | } else | 254 | } |
255 | else | ||
229 | m_end = true; | 256 | m_end = true; |
230 | 257 | ||
231 | return *this; | 258 | return *this; |
232 | } | 259 | } |
233 | 260 | ||
261 | |||
234 | template <class T> | 262 | template <class T> |
235 | bool ORecordListIterator<T>::operator==( const ORecordListIterator<T>& it ) { | 263 | bool ORecordListIterator<T>::operator==( const ORecordListIterator<T>& it ) |
264 | { | ||
236 | 265 | ||
237 | /* if both are at we're the same.... */ | 266 | /* if both are at we're the same.... */ |
238 | if ( m_end == it.m_end ) return true; | 267 | if ( m_end == it.m_end ) return true; |
239 | 268 | ||
@@ -242,12 +271,17 @@ bool ORecordListIterator<T>::operator==( const ORecordListIterator<T>& it ) { | |||
242 | if ( m_temp != it.m_temp ) return false; | 271 | if ( m_temp != it.m_temp ) return false; |
243 | 272 | ||
244 | return true; | 273 | return true; |
245 | } | 274 | } |
275 | |||
276 | |||
246 | template <class T> | 277 | template <class T> |
247 | bool ORecordListIterator<T>::operator!=( const ORecordListIterator<T>& it ) { | 278 | bool ORecordListIterator<T>::operator!=( const ORecordListIterator<T>& it ) |
279 | { | ||
248 | return !(*this == it ); | 280 | return !(*this == it ); |
249 | } | 281 | } |
282 | |||
283 | |||
250 | template <class T> | 284 | template <class T> |
251 | ORecordListIterator<T>::ORecordListIterator( const QArray<int> uids, | 285 | ORecordListIterator<T>::ORecordListIterator( const QArray<int> uids, |
252 | const Base* t ) | 286 | const Base* t ) |
253 | : m_uids( uids ), m_current( 0 ), m_temp( t ), m_end( false ), | 287 | : m_uids( uids ), m_current( 0 ), m_temp( t ), m_end( false ), |
@@ -256,73 +290,105 @@ ORecordListIterator<T>::ORecordListIterator( const QArray<int> uids, | |||
256 | /* if the list is empty we're already at the end of the list */ | 290 | /* if the list is empty we're already at the end of the list */ |
257 | if (uids.count() == 0 ) | 291 | if (uids.count() == 0 ) |
258 | m_end = true; | 292 | m_end = true; |
259 | } | 293 | } |
294 | |||
295 | |||
260 | template <class T> | 296 | template <class T> |
261 | uint ORecordListIterator<T>::current()const { | 297 | uint ORecordListIterator<T>::current() const |
298 | { | ||
262 | return m_current; | 299 | return m_current; |
263 | } | 300 | } |
301 | |||
302 | |||
264 | template <class T> | 303 | template <class T> |
265 | void ORecordListIterator<T>::setCurrent( uint cur ) { | 304 | void ORecordListIterator<T>::setCurrent( uint cur ) |
266 | if( cur < m_uids.count() ) { | 305 | { |
306 | if ( cur < m_uids.count() ) | ||
307 | { | ||
267 | m_end = false; | 308 | m_end = false; |
268 | m_current= cur; | 309 | m_current= cur; |
269 | } | 310 | } |
270 | } | 311 | } |
271 | template <class T> | 312 | template <class T> |
272 | uint ORecordListIterator<T>::count()const { | 313 | uint ORecordListIterator<T>::count() const |
314 | { | ||
273 | return m_uids.count(); | 315 | return m_uids.count(); |
274 | } | 316 | } |
317 | |||
318 | |||
275 | template <class T> | 319 | template <class T> |
276 | ORecordList<T>::ORecordList( const QArray<int>& ids, | 320 | ORecordList<T>::ORecordList( const QArray<int>& ids, |
277 | const Base* acc ) | 321 | const Base* acc ) |
278 | : m_ids( ids ), m_acc( acc ) | 322 | : m_ids( ids ), m_acc( acc ) |
279 | { | 323 | {} |
280 | } | 324 | |
325 | |||
281 | template <class T> | 326 | template <class T> |
282 | ORecordList<T>::~ORecordList() { | 327 | ORecordList<T>::~ORecordList() |
328 | { | ||
283 | /* nothing to do here */ | 329 | /* nothing to do here */ |
284 | } | 330 | } |
331 | |||
332 | |||
285 | template <class T> | 333 | template <class T> |
286 | typename ORecordList<T>::Iterator ORecordList<T>::begin() { | 334 | typename ORecordList<T>::Iterator ORecordList<T>::begin() |
335 | { | ||
287 | Iterator it( m_ids, m_acc ); | 336 | Iterator it( m_ids, m_acc ); |
288 | return it; | 337 | return it; |
289 | } | 338 | } |
339 | |||
340 | |||
290 | template <class T> | 341 | template <class T> |
291 | typename ORecordList<T>::Iterator ORecordList<T>::end() { | 342 | typename ORecordList<T>::Iterator ORecordList<T>::end() |
343 | { | ||
292 | Iterator it( m_ids, m_acc ); | 344 | Iterator it( m_ids, m_acc ); |
293 | it.m_end = true; | 345 | it.m_end = true; |
294 | it.m_current = m_ids.count(); | 346 | it.m_current = m_ids.count(); |
295 | 347 | ||
296 | return it; | 348 | return it; |
297 | } | 349 | } |
350 | |||
351 | |||
298 | template <class T> | 352 | template <class T> |
299 | uint ORecordList<T>::count()const { | 353 | uint ORecordList<T>::count() const |
354 | { | ||
300 | return m_ids.count(); | 355 | return m_ids.count(); |
301 | } | 356 | } |
357 | |||
358 | |||
302 | template <class T> | 359 | template <class T> |
303 | T ORecordList<T>::operator[]( uint i ) { | 360 | T ORecordList<T>::operator[] ( uint i ) |
361 | { | ||
304 | if ( i >= m_ids.count() ) | 362 | if ( i >= m_ids.count() ) |
305 | return T(); | 363 | return T(); |
306 | /* forward */ | 364 | /* forward */ |
307 | return m_acc->find( m_ids[i], m_ids, i ); | 365 | return m_acc->find( m_ids[i], m_ids, i ); |
308 | } | 366 | } |
367 | |||
368 | |||
309 | template <class T> | 369 | template <class T> |
310 | int ORecordList<T>::uidAt( uint i ) { | 370 | int ORecordList<T>::uidAt( uint i ) |
371 | { | ||
311 | return m_ids[i]; | 372 | return m_ids[i]; |
312 | } | 373 | } |
313 | 374 | ||
375 | |||
314 | template <class T> | 376 | template <class T> |
315 | bool ORecordList<T>::remove( int uid ) { | 377 | bool ORecordList<T>::remove( int uid ) |
378 | { | ||
316 | QArray<int> copy( m_ids.count() ); | 379 | QArray<int> copy( m_ids.count() ); |
317 | int counter = 0; | 380 | int counter = 0; |
318 | bool ret_val = false; | 381 | bool ret_val = false; |
319 | 382 | ||
320 | for (uint i = 0; i < m_ids.count(); i++){ | 383 | for ( uint i = 0; i < m_ids.count(); i++ ) |
321 | if ( m_ids[i] != uid ){ | 384 | { |
385 | if ( m_ids[ i ] != uid ) | ||
386 | { | ||
322 | copy[counter++] = m_ids[i]; | 387 | copy[counter++] = m_ids[i]; |
323 | 388 | ||
324 | }else | 389 | } |
390 | else | ||
325 | ret_val = true; | 391 | ret_val = true; |
326 | } | 392 | } |
327 | 393 | ||
328 | copy.resize( counter ); | 394 | copy.resize( counter ); |
diff --git a/libopie2/opiepim/otodo.cpp b/libopie2/opiepim/otodo.cpp index 3eb0026..f534067 100644 --- a/libopie2/opiepim/otodo.cpp +++ b/libopie2/opiepim/otodo.cpp | |||
@@ -25,39 +25,42 @@ | |||
25 | If not, write to the Free Software Foundation, | 25 | If not, write to the Free Software Foundation, |
26 | Inc., 59 Temple Place - Suite 330, | 26 | Inc., 59 Temple Place - Suite 330, |
27 | Boston, MA 02111-1307, USA. | 27 | Boston, MA 02111-1307, USA. |
28 | */ | 28 | */ |
29 | #include <qobject.h> | ||
30 | #include <qshared.h> | ||
31 | |||
32 | 29 | ||
30 | #include "otodo.h" | ||
33 | 31 | ||
32 | /* OPIE */ | ||
33 | #include <opie2/opimstate.h> | ||
34 | #include <opie2/orecur.h> | ||
35 | #include <opie2/opimmaintainer.h> | ||
36 | #include <opie2/opimnotifymanager.h> | ||
37 | #include <opie2/opimresolver.h> | ||
34 | #include <qpe/palmtopuidgen.h> | 38 | #include <qpe/palmtopuidgen.h> |
35 | #include <qpe/stringutil.h> | 39 | #include <qpe/stringutil.h> |
36 | #include <qpe/palmtoprecord.h> | 40 | #include <qpe/palmtoprecord.h> |
37 | #include <qpe/stringutil.h> | 41 | #include <qpe/stringutil.h> |
38 | #include <qpe/categories.h> | 42 | #include <qpe/categories.h> |
39 | #include <qpe/categoryselect.h> | 43 | #include <qpe/categoryselect.h> |
40 | 44 | ||
45 | /* QT */ | ||
46 | #include <qobject.h> | ||
47 | #include <qshared.h> | ||
41 | 48 | ||
42 | #include <opie2/opimstate.h> | 49 | namespace Opie |
43 | #include <opie2/orecur.h> | 50 | { |
44 | #include <opie2/opimmaintainer.h> | ||
45 | #include <opie2/opimnotifymanager.h> | ||
46 | #include <opie2/opimresolver.h> | ||
47 | |||
48 | #include <opie2/otodo.h> | ||
49 | |||
50 | namespace Opie { | ||
51 | 51 | ||
52 | struct OTodo::OTodoData : public QShared { | 52 | struct OTodo::OTodoData : public QShared |
53 | OTodoData() : QShared() { | 53 | { |
54 | OTodoData() : QShared() | ||
55 | { | ||
54 | recur = 0; | 56 | recur = 0; |
55 | state = 0; | 57 | state = 0; |
56 | maintainer = 0; | 58 | maintainer = 0; |
57 | notifiers = 0; | 59 | notifiers = 0; |
58 | }; | 60 | }; |
59 | ~OTodoData() { | 61 | ~OTodoData() |
62 | { | ||
60 | delete recur; | 63 | delete recur; |
61 | delete maintainer; | 64 | delete maintainer; |
62 | delete notifiers; | 65 | delete notifiers; |
63 | } | 66 | } |
@@ -77,23 +80,30 @@ struct OTodo::OTodoData : public QShared { | |||
77 | QDate completed; | 80 | QDate completed; |
78 | OPimNotifyManager *notifiers; | 81 | OPimNotifyManager *notifiers; |
79 | }; | 82 | }; |
80 | 83 | ||
84 | |||
81 | OTodo::OTodo(const OTodo &event ) | 85 | OTodo::OTodo(const OTodo &event ) |
82 | : OPimRecord( event ), data( event.data ) | 86 | : OPimRecord( event ), data( event.data ) |
83 | { | 87 | { |
84 | data->ref(); | 88 | data->ref(); |
85 | // qWarning("ref up"); | 89 | // qWarning("ref up"); |
86 | } | 90 | } |
87 | OTodo::~OTodo() { | 91 | |
92 | |||
93 | OTodo::~OTodo() | ||
94 | { | ||
88 | 95 | ||
89 | // qWarning("~OTodo " ); | 96 | // qWarning("~OTodo " ); |
90 | if ( data->deref() ) { | 97 | if ( data->deref() ) |
98 | { | ||
91 | // qWarning("OTodo::dereffing"); | 99 | // qWarning("OTodo::dereffing"); |
92 | delete data; | 100 | delete data; |
93 | data = 0l; | 101 | data = 0l; |
94 | } | 102 | } |
95 | } | 103 | } |
104 | |||
105 | |||
96 | OTodo::OTodo(bool completed, int priority, | 106 | OTodo::OTodo(bool completed, int priority, |
97 | const QArray<int> &category, | 107 | const QArray<int> &category, |
98 | const QString& summary, | 108 | const QString& summary, |
99 | const QString &description, | 109 | const QString &description, |
@@ -113,8 +123,10 @@ OTodo::OTodo(bool completed, int priority, | |||
113 | data->sum = summary; | 123 | data->sum = summary; |
114 | data->prog = progress; | 124 | data->prog = progress; |
115 | data->desc = Qtopia::simplifyMultiLineSpace(description ); | 125 | data->desc = Qtopia::simplifyMultiLineSpace(description ); |
116 | } | 126 | } |
127 | |||
128 | |||
117 | OTodo::OTodo(bool completed, int priority, | 129 | OTodo::OTodo(bool completed, int priority, |
118 | const QStringList &category, | 130 | const QStringList &category, |
119 | const QString& summary, | 131 | const QString& summary, |
120 | const QString &description, | 132 | const QString &description, |
@@ -134,171 +146,261 @@ OTodo::OTodo(bool completed, int priority, | |||
134 | data->sum = summary; | 146 | data->sum = summary; |
135 | data->prog = progress; | 147 | data->prog = progress; |
136 | data->desc = Qtopia::simplifyMultiLineSpace(description ); | 148 | data->desc = Qtopia::simplifyMultiLineSpace(description ); |
137 | } | 149 | } |
150 | |||
151 | |||
138 | bool OTodo::match( const QRegExp ®Exp )const | 152 | bool OTodo::match( const QRegExp ®Exp )const |
139 | { | 153 | { |
140 | if( QString::number( data->priority ).find( regExp ) != -1 ){ | 154 | if ( QString::number( data->priority ).find( regExp ) != -1 ) |
155 | { | ||
141 | setLastHitField( Priority ); | 156 | setLastHitField( Priority ); |
142 | return true; | 157 | return true; |
143 | }else if( data->hasDate && data->date.toString().find( regExp) != -1 ){ | 158 | } |
159 | else if ( data->hasDate && data->date.toString().find( regExp ) != -1 ) | ||
160 | { | ||
144 | setLastHitField( HasDate ); | 161 | setLastHitField( HasDate ); |
145 | return true; | 162 | return true; |
146 | }else if(data->desc.find( regExp ) != -1 ){ | 163 | } |
164 | else if ( data->desc.find( regExp ) != -1 ) | ||
165 | { | ||
147 | setLastHitField( Description ); | 166 | setLastHitField( Description ); |
148 | return true; | 167 | return true; |
149 | }else if(data->sum.find( regExp ) != -1 ) { | 168 | } |
169 | else if ( data->sum.find( regExp ) != -1 ) | ||
170 | { | ||
150 | setLastHitField( Summary ); | 171 | setLastHitField( Summary ); |
151 | return true; | 172 | return true; |
152 | } | 173 | } |
153 | return false; | 174 | return false; |
154 | } | 175 | } |
176 | |||
177 | |||
155 | bool OTodo::isCompleted() const | 178 | bool OTodo::isCompleted() const |
156 | { | 179 | { |
157 | return data->isCompleted; | 180 | return data->isCompleted; |
158 | } | 181 | } |
182 | |||
183 | |||
159 | bool OTodo::hasDueDate() const | 184 | bool OTodo::hasDueDate() const |
160 | { | 185 | { |
161 | return data->hasDate; | 186 | return data->hasDate; |
162 | } | 187 | } |
163 | bool OTodo::hasStartDate()const { | 188 | |
189 | |||
190 | bool OTodo::hasStartDate() const | ||
191 | { | ||
164 | return data->start.isValid(); | 192 | return data->start.isValid(); |
165 | } | 193 | } |
166 | bool OTodo::hasCompletedDate()const { | 194 | |
195 | |||
196 | bool OTodo::hasCompletedDate() const | ||
197 | { | ||
167 | return data->completed.isValid(); | 198 | return data->completed.isValid(); |
168 | } | 199 | } |
200 | |||
201 | |||
169 | int OTodo::priority()const | 202 | int OTodo::priority()const |
170 | { | 203 | { |
171 | return data->priority; | 204 | return data->priority; |
172 | } | 205 | } |
206 | |||
207 | |||
173 | QString OTodo::summary() const | 208 | QString OTodo::summary() const |
174 | { | 209 | { |
175 | return data->sum; | 210 | return data->sum; |
176 | } | 211 | } |
212 | |||
213 | |||
177 | ushort OTodo::progress() const | 214 | ushort OTodo::progress() const |
178 | { | 215 | { |
179 | return data->prog; | 216 | return data->prog; |
180 | } | 217 | } |
218 | |||
219 | |||
181 | QDate OTodo::dueDate()const | 220 | QDate OTodo::dueDate()const |
182 | { | 221 | { |
183 | return data->date; | 222 | return data->date; |
184 | } | 223 | } |
185 | QDate OTodo::startDate()const { | 224 | |
225 | |||
226 | QDate OTodo::startDate() const | ||
227 | { | ||
186 | return data->start; | 228 | return data->start; |
187 | } | 229 | } |
188 | QDate OTodo::completedDate()const { | 230 | |
231 | |||
232 | QDate OTodo::completedDate() const | ||
233 | { | ||
189 | return data->completed; | 234 | return data->completed; |
190 | } | 235 | } |
236 | |||
237 | |||
191 | QString OTodo::description()const | 238 | QString OTodo::description()const |
192 | { | 239 | { |
193 | return data->desc; | 240 | return data->desc; |
194 | } | 241 | } |
195 | bool OTodo::hasState() const{ | 242 | |
243 | |||
244 | bool OTodo::hasState() const | ||
245 | { | ||
196 | if (!data->state ) return false; | 246 | if (!data->state ) return false; |
197 | return ( data->state->state() != OPimState::Undefined ); | 247 | return ( data->state->state() != OPimState::Undefined ); |
198 | } | 248 | } |
199 | OPimState OTodo::state()const { | 249 | |
200 | if (!data->state ) { | 250 | |
251 | OPimState OTodo::state() const | ||
252 | { | ||
253 | if ( !data->state ) | ||
254 | { | ||
201 | OPimState state; | 255 | OPimState state; |
202 | return state; | 256 | return state; |
203 | } | 257 | } |
204 | 258 | ||
205 | return (*data->state); | 259 | return (*data->state); |
206 | } | 260 | } |
207 | bool OTodo::hasRecurrence()const { | 261 | |
262 | |||
263 | bool OTodo::hasRecurrence() const | ||
264 | { | ||
208 | if (!data->recur) return false; | 265 | if (!data->recur) return false; |
209 | return data->recur->doesRecur(); | 266 | return data->recur->doesRecur(); |
210 | } | 267 | } |
211 | ORecur OTodo::recurrence()const { | 268 | |
269 | |||
270 | ORecur OTodo::recurrence() const | ||
271 | { | ||
212 | if (!data->recur) return ORecur(); | 272 | if (!data->recur) return ORecur(); |
213 | 273 | ||
214 | return (*data->recur); | 274 | return (*data->recur); |
215 | } | 275 | } |
216 | bool OTodo::hasMaintainer()const { | 276 | |
277 | |||
278 | bool OTodo::hasMaintainer() const | ||
279 | { | ||
217 | if (!data->maintainer) return false; | 280 | if (!data->maintainer) return false; |
218 | 281 | ||
219 | return (data->maintainer->mode() != OPimMaintainer::Undefined ); | 282 | return (data->maintainer->mode() != OPimMaintainer::Undefined ); |
220 | } | 283 | } |
221 | OPimMaintainer OTodo::maintainer()const { | 284 | |
285 | |||
286 | OPimMaintainer OTodo::maintainer() const | ||
287 | { | ||
222 | if (!data->maintainer) return OPimMaintainer(); | 288 | if (!data->maintainer) return OPimMaintainer(); |
223 | 289 | ||
224 | return (*data->maintainer); | 290 | return (*data->maintainer); |
225 | } | 291 | } |
292 | |||
293 | |||
226 | void OTodo::setCompleted( bool completed ) | 294 | void OTodo::setCompleted( bool completed ) |
227 | { | 295 | { |
228 | changeOrModify(); | 296 | changeOrModify(); |
229 | data->isCompleted = completed; | 297 | data->isCompleted = completed; |
230 | } | 298 | } |
299 | |||
300 | |||
231 | void OTodo::setHasDueDate( bool hasDate ) | 301 | void OTodo::setHasDueDate( bool hasDate ) |
232 | { | 302 | { |
233 | changeOrModify(); | 303 | changeOrModify(); |
234 | data->hasDate = hasDate; | 304 | data->hasDate = hasDate; |
235 | } | 305 | } |
306 | |||
307 | |||
236 | void OTodo::setDescription(const QString &desc ) | 308 | void OTodo::setDescription(const QString &desc ) |
237 | { | 309 | { |
238 | // qWarning( "desc " + desc ); | 310 | // qWarning( "desc " + desc ); |
239 | changeOrModify(); | 311 | changeOrModify(); |
240 | data->desc = Qtopia::simplifyMultiLineSpace(desc ); | 312 | data->desc = Qtopia::simplifyMultiLineSpace(desc ); |
241 | } | 313 | } |
314 | |||
315 | |||
242 | void OTodo::setSummary( const QString& sum ) | 316 | void OTodo::setSummary( const QString& sum ) |
243 | { | 317 | { |
244 | changeOrModify(); | 318 | changeOrModify(); |
245 | data->sum = sum; | 319 | data->sum = sum; |
246 | } | 320 | } |
321 | |||
322 | |||
247 | void OTodo::setPriority(int prio ) | 323 | void OTodo::setPriority(int prio ) |
248 | { | 324 | { |
249 | changeOrModify(); | 325 | changeOrModify(); |
250 | data->priority = prio; | 326 | data->priority = prio; |
251 | } | 327 | } |
328 | |||
329 | |||
252 | void OTodo::setDueDate( const QDate& date ) | 330 | void OTodo::setDueDate( const QDate& date ) |
253 | { | 331 | { |
254 | changeOrModify(); | 332 | changeOrModify(); |
255 | data->date = date; | 333 | data->date = date; |
256 | } | 334 | } |
257 | void OTodo::setStartDate( const QDate& date ) { | 335 | |
336 | |||
337 | void OTodo::setStartDate( const QDate& date ) | ||
338 | { | ||
258 | changeOrModify(); | 339 | changeOrModify(); |
259 | data->start = date; | 340 | data->start = date; |
260 | } | 341 | } |
261 | void OTodo::setCompletedDate( const QDate& date ) { | 342 | |
343 | |||
344 | void OTodo::setCompletedDate( const QDate& date ) | ||
345 | { | ||
262 | changeOrModify(); | 346 | changeOrModify(); |
263 | data->completed = date; | 347 | data->completed = date; |
264 | } | 348 | } |
265 | void OTodo::setState( const OPimState& state ) { | 349 | |
350 | |||
351 | void OTodo::setState( const OPimState& state ) | ||
352 | { | ||
266 | changeOrModify(); | 353 | changeOrModify(); |
267 | if (data->state ) | 354 | if (data->state ) |
268 | (*data->state) = state; | 355 | (*data->state) = state; |
269 | else | 356 | else |
270 | data->state = new OPimState( state ); | 357 | data->state = new OPimState( state ); |
271 | } | 358 | } |
272 | void OTodo::setRecurrence( const ORecur& rec) { | 359 | |
360 | |||
361 | void OTodo::setRecurrence( const ORecur& rec ) | ||
362 | { | ||
273 | changeOrModify(); | 363 | changeOrModify(); |
274 | if (data->recur ) | 364 | if (data->recur ) |
275 | (*data->recur) = rec; | 365 | (*data->recur) = rec; |
276 | else | 366 | else |
277 | data->recur = new ORecur( rec ); | 367 | data->recur = new ORecur( rec ); |
278 | } | 368 | } |
279 | void OTodo::setMaintainer( const OPimMaintainer& pim ) { | 369 | |
370 | |||
371 | void OTodo::setMaintainer( const OPimMaintainer& pim ) | ||
372 | { | ||
280 | changeOrModify(); | 373 | changeOrModify(); |
281 | 374 | ||
282 | if (data->maintainer ) | 375 | if (data->maintainer ) |
283 | (*data->maintainer) = pim; | 376 | (*data->maintainer) = pim; |
284 | else | 377 | else |
285 | data->maintainer = new OPimMaintainer( pim ); | 378 | data->maintainer = new OPimMaintainer( pim ); |
286 | } | 379 | } |
380 | |||
381 | |||
287 | bool OTodo::isOverdue( ) | 382 | bool OTodo::isOverdue( ) |
288 | { | 383 | { |
289 | if( data->hasDate && !data->isCompleted) | 384 | if( data->hasDate && !data->isCompleted) |
290 | return QDate::currentDate() > data->date; | 385 | return QDate::currentDate() > data->date; |
291 | return false; | 386 | return false; |
292 | } | 387 | } |
388 | |||
389 | |||
293 | void OTodo::setProgress(ushort progress ) | 390 | void OTodo::setProgress(ushort progress ) |
294 | { | 391 | { |
295 | changeOrModify(); | 392 | changeOrModify(); |
296 | data->prog = progress; | 393 | data->prog = progress; |
297 | } | 394 | } |
298 | QString OTodo::toShortText() const { | 395 | |
396 | |||
397 | QString OTodo::toShortText() const | ||
398 | { | ||
299 | return summary(); | 399 | return summary(); |
300 | } | 400 | } |
401 | |||
402 | |||
301 | /*! | 403 | /*! |
302 | Returns a richt text string | 404 | Returns a richt text string |
303 | */ | 405 | */ |
304 | QString OTodo::toRichText() const | 406 | QString OTodo::toRichText() const |
@@ -307,15 +409,17 @@ QString OTodo::toRichText() const | |||
307 | QStringList catlist; | 409 | QStringList catlist; |
308 | 410 | ||
309 | // summary | 411 | // summary |
310 | text += "<b><h3><img src=\"todo/TodoList\"> "; | 412 | text += "<b><h3><img src=\"todo/TodoList\"> "; |
311 | if ( !summary().isEmpty() ) { | 413 | if ( !summary().isEmpty() ) |
414 | { | ||
312 | text += Qtopia::escapeString(summary() ).replace(QRegExp( "[\n]"), "" ); | 415 | text += Qtopia::escapeString(summary() ).replace(QRegExp( "[\n]"), "" ); |
313 | } | 416 | } |
314 | text += "</h3></b><br><hr><br>"; | 417 | text += "</h3></b><br><hr><br>"; |
315 | 418 | ||
316 | // description | 419 | // description |
317 | if( !description().isEmpty() ){ | 420 | if ( !description().isEmpty() ) |
421 | { | ||
318 | text += "<b>" + QObject::tr( "Description:" ) + "</b><br>"; | 422 | text += "<b>" + QObject::tr( "Description:" ) + "</b><br>"; |
319 | text += Qtopia::escapeString(description() ).replace(QRegExp( "[\n]"), "<br>" ) + "<br>"; | 423 | text += Qtopia::escapeString(description() ).replace(QRegExp( "[\n]"), "<br>" ) + "<br>"; |
320 | } | 424 | } |
321 | 425 | ||
@@ -343,9 +447,10 @@ QString OTodo::toRichText() const | |||
343 | text += "<b>" + QObject::tr( "Progress:") + " </b>" | 447 | text += "<b>" + QObject::tr( "Progress:") + " </b>" |
344 | + QString::number( progress() ) + " %<br>"; | 448 | + QString::number( progress() ) + " %<br>"; |
345 | 449 | ||
346 | // due date | 450 | // due date |
347 | if (hasDueDate() ){ | 451 | if ( hasDueDate() ) |
452 | { | ||
348 | QDate dd = dueDate(); | 453 | QDate dd = dueDate(); |
349 | int off = QDate::currentDate().daysTo( dd ); | 454 | int off = QDate::currentDate().daysTo( dd ); |
350 | 455 | ||
351 | text += "<b>" + QObject::tr( "Deadline:" ) + " </b><font color=\""; | 456 | text += "<b>" + QObject::tr( "Deadline:" ) + " </b><font color=\""; |
@@ -365,75 +470,110 @@ QString OTodo::toRichText() const | |||
365 | text += "<br>"; | 470 | text += "<br>"; |
366 | 471 | ||
367 | return text; | 472 | return text; |
368 | } | 473 | } |
369 | bool OTodo::hasNotifiers()const { | 474 | |
475 | |||
476 | bool OTodo::hasNotifiers() const | ||
477 | { | ||
370 | if (!data->notifiers) return false; | 478 | if (!data->notifiers) return false; |
371 | return !data->notifiers->isEmpty(); | 479 | return !data->notifiers->isEmpty(); |
372 | } | 480 | } |
373 | OPimNotifyManager& OTodo::notifiers() { | 481 | |
482 | |||
483 | OPimNotifyManager& OTodo::notifiers() | ||
484 | { | ||
374 | if (!data->notifiers ) | 485 | if (!data->notifiers ) |
375 | data->notifiers = new OPimNotifyManager; | 486 | data->notifiers = new OPimNotifyManager; |
376 | return (*data->notifiers); | 487 | return (*data->notifiers); |
377 | } | 488 | } |
378 | const OPimNotifyManager& OTodo::notifiers()const{ | 489 | |
490 | |||
491 | const OPimNotifyManager& OTodo::notifiers() const | ||
492 | { | ||
379 | if (!data->notifiers ) | 493 | if (!data->notifiers ) |
380 | data->notifiers = new OPimNotifyManager; | 494 | data->notifiers = new OPimNotifyManager; |
381 | 495 | ||
382 | return (*data->notifiers); | 496 | return (*data->notifiers); |
383 | } | 497 | } |
384 | 498 | ||
385 | bool OTodo::operator<( const OTodo &toDoEvent )const{ | 499 | |
500 | bool OTodo::operator<( const OTodo &toDoEvent ) const | ||
501 | { | ||
386 | if( !hasDueDate() && !toDoEvent.hasDueDate() ) return true; | 502 | if( !hasDueDate() && !toDoEvent.hasDueDate() ) return true; |
387 | if( !hasDueDate() && toDoEvent.hasDueDate() ) return false; | 503 | if( !hasDueDate() && toDoEvent.hasDueDate() ) return false; |
388 | if( hasDueDate() && toDoEvent.hasDueDate() ){ | 504 | if ( hasDueDate() && toDoEvent.hasDueDate() ) |
389 | if( dueDate() == toDoEvent.dueDate() ){ // let's the priority decide | 505 | { |
506 | if ( dueDate() == toDoEvent.dueDate() ) | ||
507 | { // let's the priority decide | ||
390 | return priority() < toDoEvent.priority(); | 508 | return priority() < toDoEvent.priority(); |
391 | }else{ | 509 | } |
510 | else | ||
511 | { | ||
392 | return dueDate() < toDoEvent.dueDate(); | 512 | return dueDate() < toDoEvent.dueDate(); |
393 | } | 513 | } |
394 | } | 514 | } |
395 | return false; | 515 | return false; |
396 | } | 516 | } |
517 | |||
518 | |||
397 | bool OTodo::operator<=(const OTodo &toDoEvent )const | 519 | bool OTodo::operator<=(const OTodo &toDoEvent )const |
398 | { | 520 | { |
399 | if( !hasDueDate() && !toDoEvent.hasDueDate() ) return true; | 521 | if( !hasDueDate() && !toDoEvent.hasDueDate() ) return true; |
400 | if( !hasDueDate() && toDoEvent.hasDueDate() ) return true; | 522 | if( !hasDueDate() && toDoEvent.hasDueDate() ) return true; |
401 | if( hasDueDate() && toDoEvent.hasDueDate() ){ | 523 | if ( hasDueDate() && toDoEvent.hasDueDate() ) |
402 | if( dueDate() == toDoEvent.dueDate() ){ // let's the priority decide | 524 | { |
525 | if ( dueDate() == toDoEvent.dueDate() ) | ||
526 | { // let's the priority decide | ||
403 | return priority() <= toDoEvent.priority(); | 527 | return priority() <= toDoEvent.priority(); |
404 | }else{ | 528 | } |
529 | else | ||
530 | { | ||
405 | return dueDate() <= toDoEvent.dueDate(); | 531 | return dueDate() <= toDoEvent.dueDate(); |
406 | } | 532 | } |
407 | } | 533 | } |
408 | return true; | 534 | return true; |
409 | } | 535 | } |
536 | |||
537 | |||
410 | bool OTodo::operator>(const OTodo &toDoEvent )const | 538 | bool OTodo::operator>(const OTodo &toDoEvent )const |
411 | { | 539 | { |
412 | if( !hasDueDate() && !toDoEvent.hasDueDate() ) return false; | 540 | if( !hasDueDate() && !toDoEvent.hasDueDate() ) return false; |
413 | if( !hasDueDate() && toDoEvent.hasDueDate() ) return false; | 541 | if( !hasDueDate() && toDoEvent.hasDueDate() ) return false; |
414 | if( hasDueDate() && toDoEvent.hasDueDate() ){ | 542 | if ( hasDueDate() && toDoEvent.hasDueDate() ) |
415 | if( dueDate() == toDoEvent.dueDate() ){ // let's the priority decide | 543 | { |
544 | if ( dueDate() == toDoEvent.dueDate() ) | ||
545 | { // let's the priority decide | ||
416 | return priority() > toDoEvent.priority(); | 546 | return priority() > toDoEvent.priority(); |
417 | }else{ | 547 | } |
548 | else | ||
549 | { | ||
418 | return dueDate() > toDoEvent.dueDate(); | 550 | return dueDate() > toDoEvent.dueDate(); |
419 | } | 551 | } |
420 | } | 552 | } |
421 | return false; | 553 | return false; |
422 | } | 554 | } |
555 | |||
556 | |||
423 | bool OTodo::operator>=(const OTodo &toDoEvent )const | 557 | bool OTodo::operator>=(const OTodo &toDoEvent )const |
424 | { | 558 | { |
425 | if( !hasDueDate() && !toDoEvent.hasDueDate() ) return true; | 559 | if( !hasDueDate() && !toDoEvent.hasDueDate() ) return true; |
426 | if( !hasDueDate() && toDoEvent.hasDueDate() ) return false; | 560 | if( !hasDueDate() && toDoEvent.hasDueDate() ) return false; |
427 | if( hasDueDate() && toDoEvent.hasDueDate() ){ | 561 | if ( hasDueDate() && toDoEvent.hasDueDate() ) |
428 | if( dueDate() == toDoEvent.dueDate() ){ // let's the priority decide | 562 | { |
563 | if ( dueDate() == toDoEvent.dueDate() ) | ||
564 | { // let's the priority decide | ||
429 | return priority() > toDoEvent.priority(); | 565 | return priority() > toDoEvent.priority(); |
430 | }else{ | 566 | } |
567 | else | ||
568 | { | ||
431 | return dueDate() > toDoEvent.dueDate(); | 569 | return dueDate() > toDoEvent.dueDate(); |
432 | } | 570 | } |
433 | } | 571 | } |
434 | return true; | 572 | return true; |
435 | } | 573 | } |
574 | |||
575 | |||
436 | bool OTodo::operator==(const OTodo &toDoEvent )const | 576 | bool OTodo::operator==(const OTodo &toDoEvent )const |
437 | { | 577 | { |
438 | if ( data->priority != toDoEvent.data->priority ) return false; | 578 | if ( data->priority != toDoEvent.data->priority ) return false; |
439 | if ( data->priority != toDoEvent.data->prog ) return false; | 579 | if ( data->priority != toDoEvent.data->prog ) return false; |
@@ -446,17 +586,23 @@ bool OTodo::operator==(const OTodo &toDoEvent )const | |||
446 | return false; | 586 | return false; |
447 | 587 | ||
448 | return OPimRecord::operator==( toDoEvent ); | 588 | return OPimRecord::operator==( toDoEvent ); |
449 | } | 589 | } |
450 | void OTodo::deref() { | 590 | |
591 | |||
592 | void OTodo::deref() | ||
593 | { | ||
451 | 594 | ||
452 | // qWarning("deref in ToDoEvent"); | 595 | // qWarning("deref in ToDoEvent"); |
453 | if ( data->deref() ) { | 596 | if ( data->deref() ) |
597 | { | ||
454 | // qWarning("deleting"); | 598 | // qWarning("deleting"); |
455 | delete data; | 599 | delete data; |
456 | data= 0; | 600 | data= 0; |
457 | } | 601 | } |
458 | } | 602 | } |
603 | |||
604 | |||
459 | OTodo &OTodo::operator=(const OTodo &item ) | 605 | OTodo &OTodo::operator=(const OTodo &item ) |
460 | { | 606 | { |
461 | if ( this == &item ) return *this; | 607 | if ( this == &item ) return *this; |
462 | 608 | ||
@@ -468,9 +614,11 @@ OTodo &OTodo::operator=(const OTodo &item ) | |||
468 | 614 | ||
469 | return *this; | 615 | return *this; |
470 | } | 616 | } |
471 | 617 | ||
472 | QMap<int, QString> OTodo::toMap() const { | 618 | |
619 | QMap<int, QString> OTodo::toMap() const | ||
620 | { | ||
473 | QMap<int, QString> map; | 621 | QMap<int, QString> map; |
474 | 622 | ||
475 | map.insert( Uid, QString::number( uid() ) ); | 623 | map.insert( Uid, QString::number( uid() ) ); |
476 | map.insert( Category, idsToString( categories() ) ); | 624 | map.insert( Category, idsToString( categories() ) ); |
@@ -491,28 +639,34 @@ QMap<int, QString> OTodo::toMap() const { | |||
491 | */ | 639 | */ |
492 | return map; | 640 | return map; |
493 | } | 641 | } |
494 | 642 | ||
643 | |||
495 | /** | 644 | /** |
496 | * change or modify looks at the ref count and either | 645 | * change or modify looks at the ref count and either |
497 | * creates a new QShared Object or it can modify it | 646 | * creates a new QShared Object or it can modify it |
498 | * right in place | 647 | * right in place |
499 | */ | 648 | */ |
500 | void OTodo::changeOrModify() { | 649 | void OTodo::changeOrModify() |
501 | if ( data->count != 1 ) { | 650 | { |
651 | if ( data->count != 1 ) | ||
652 | { | ||
502 | qWarning("changeOrModify"); | 653 | qWarning("changeOrModify"); |
503 | data->deref(); | 654 | data->deref(); |
504 | OTodoData* d2 = new OTodoData(); | 655 | OTodoData* d2 = new OTodoData(); |
505 | copy(data, d2 ); | 656 | copy(data, d2 ); |
506 | data = d2; | 657 | data = d2; |
507 | } | 658 | } |
508 | } | 659 | } |
660 | |||
661 | |||
509 | // WATCHOUT | 662 | // WATCHOUT |
510 | /* | 663 | /* |
511 | * if you add something to the Data struct | 664 | * if you add something to the Data struct |
512 | * be sure to copy it here | 665 | * be sure to copy it here |
513 | */ | 666 | */ |
514 | void OTodo::copy( OTodoData* src, OTodoData* dest ) { | 667 | void OTodo::copy( OTodoData* src, OTodoData* dest ) |
668 | { | ||
515 | dest->date = src->date; | 669 | dest->date = src->date; |
516 | dest->isCompleted = src->isCompleted; | 670 | dest->isCompleted = src->isCompleted; |
517 | dest->hasDate = src->hasDate; | 671 | dest->hasDate = src->hasDate; |
518 | dest->priority = src->priority; | 672 | dest->priority = src->priority; |
@@ -535,16 +689,24 @@ void OTodo::copy( OTodoData* src, OTodoData* dest ) { | |||
535 | 689 | ||
536 | if (src->notifiers ) | 690 | if (src->notifiers ) |
537 | dest->notifiers = new OPimNotifyManager( *src->notifiers ); | 691 | dest->notifiers = new OPimNotifyManager( *src->notifiers ); |
538 | } | 692 | } |
539 | QString OTodo::type() const { | 693 | |
694 | |||
695 | QString OTodo::type() const | ||
696 | { | ||
540 | return QString::fromLatin1("OTodo"); | 697 | return QString::fromLatin1("OTodo"); |
541 | } | 698 | } |
542 | QString OTodo::recordField(int /*id*/ )const { | 699 | |
700 | |||
701 | QString OTodo::recordField( int /*id*/ ) const | ||
702 | { | ||
543 | return QString::null; | 703 | return QString::null; |
544 | } | 704 | } |
545 | 705 | ||
546 | int OTodo::rtti(){ | 706 | |
707 | int OTodo::rtti() | ||
708 | { | ||
547 | return OPimResolver::TodoList; | 709 | return OPimResolver::TodoList; |
548 | } | 710 | } |
549 | 711 | ||
550 | } | 712 | } |
diff --git a/libopie2/opiepim/otodo.h b/libopie2/opiepim/otodo.h index 61add04..04dd269 100644 --- a/libopie2/opiepim/otodo.h +++ b/libopie2/opiepim/otodo.h | |||
@@ -25,32 +25,34 @@ | |||
25 | If not, write to the Free Software Foundation, | 25 | If not, write to the Free Software Foundation, |
26 | Inc., 59 Temple Place - Suite 330, | 26 | Inc., 59 Temple Place - Suite 330, |
27 | Boston, MA 02111-1307, USA. | 27 | Boston, MA 02111-1307, USA. |
28 | */ | 28 | */ |
29 | #ifndef OPIE_TODO_EVENT_H | ||
30 | #define OPIE_TODO_EVENT_H | ||
31 | 29 | ||
30 | #ifndef OTODOEVENT_H | ||
31 | #define OTODOEVENT_H | ||
32 | 32 | ||
33 | /* OPIE */ | ||
34 | #include <opie2/opimrecord.h> | ||
35 | #include <qpe/recordfields.h> | ||
36 | #include <qpe/palmtopuidgen.h> | ||
37 | |||
38 | /* QT */ | ||
33 | #include <qarray.h> | 39 | #include <qarray.h> |
34 | #include <qmap.h> | 40 | #include <qmap.h> |
35 | #include <qregexp.h> | 41 | #include <qregexp.h> |
36 | #include <qstringlist.h> | 42 | #include <qstringlist.h> |
37 | #include <qdatetime.h> | 43 | #include <qdatetime.h> |
38 | #include <qvaluelist.h> | 44 | #include <qvaluelist.h> |
39 | 45 | ||
40 | #include <qpe/recordfields.h> | 46 | namespace Opie |
41 | #include <qpe/palmtopuidgen.h> | 47 | { |
42 | |||
43 | #include <opie2/opimrecord.h> | ||
44 | |||
45 | |||
46 | namespace Opie { | ||
47 | 48 | ||
48 | class OPimState; | 49 | class OPimState; |
49 | class ORecur; | 50 | class ORecur; |
50 | class OPimMaintainer; | 51 | class OPimMaintainer; |
51 | class OPimNotifyManager; | 52 | class OPimNotifyManager; |
52 | class OTodo : public OPimRecord { | 53 | class OTodo : public OPimRecord |
54 | { | ||
53 | public: | 55 | public: |
54 | typedef QValueList<OTodo> ValueList; | 56 | typedef QValueList<OTodo> ValueList; |
55 | enum RecordFields { | 57 | enum RecordFields { |
56 | Uid = Qtopia::UID_ID, | 58 | Uid = Qtopia::UID_ID, |
@@ -305,9 +307,12 @@ public: | |||
305 | OTodoPrivate *d; | 307 | OTodoPrivate *d; |
306 | OTodoData *data; | 308 | OTodoData *data; |
307 | 309 | ||
308 | }; | 310 | }; |
309 | inline bool OTodo::operator!=(const OTodo &toDoEvent )const { | 311 | |
312 | |||
313 | inline bool OTodo::operator!=( const OTodo &toDoEvent ) const | ||
314 | { | ||
310 | return !(*this == toDoEvent); | 315 | return !(*this == toDoEvent); |
311 | } | 316 | } |
312 | 317 | ||
313 | } | 318 | } |