summaryrefslogtreecommitdiff
path: root/libopie2
Unidiff
Diffstat (limited to 'libopie2') (more/less context) (show whitespace changes)
-rw-r--r--libopie2/opiepim/core/opimnotify.cpp219
-rw-r--r--libopie2/opiepim/core/opimnotify.h21
-rw-r--r--libopie2/opiepim/core/opimnotifymanager.cpp120
-rw-r--r--libopie2/opiepim/core/opimnotifymanager.h18
-rw-r--r--libopie2/opiepim/core/opimrecord.cpp117
-rw-r--r--libopie2/opiepim/core/opimrecord.h28
-rw-r--r--libopie2/opiepim/ocontact.cpp235
-rw-r--r--libopie2/opiepim/ocontact.h11
-rw-r--r--libopie2/opiepim/ocontactfields.cpp40
-rw-r--r--libopie2/opiepim/ocontactfields.h16
-rw-r--r--libopie2/opiepim/oevent.cpp534
-rw-r--r--libopie2/opiepim/oevent.h33
-rw-r--r--libopie2/opiepim/orecordlist.h142
-rw-r--r--libopie2/opiepim/otodo.cpp294
-rw-r--r--libopie2/opiepim/otodo.h27
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
@@ -27,13 +27,17 @@
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
33namespace Opie { 32/* QT */
33#include <qshared.h>
34 34
35struct OPimNotify::Data : public QShared { 35namespace Opie
36 Data() : QShared(),dur(-1),parent(0) { 36{
37 37
38struct OPimNotify::Data : public QShared
39{
40 Data() : QShared(), dur( -1 ), parent( 0 )
41 {
38 } 42 }
39 QDateTime start; 43 QDateTime start;
@@ -43,5 +47,6 @@ struct OPimNotify::Data : public QShared {
43}; 47};
44 48
45OPimNotify::OPimNotify( const QDateTime& start, int duration, int parent ) { 49OPimNotify::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;
@@ -49,4 +54,6 @@ OPimNotify::OPimNotify( const QDateTime& start, int duration, int parent ) {
49 data->parent = parent; 54 data->parent = parent;
50} 55}
56
57
51OPimNotify::OPimNotify( const OPimNotify& noti) 58OPimNotify::OPimNotify( const OPimNotify& noti)
52 : data( noti.data ) 59 : data( noti.data )
@@ -54,6 +61,10 @@ OPimNotify::OPimNotify( const OPimNotify& noti)
54 data->ref(); 61 data->ref();
55} 62}
56OPimNotify::~OPimNotify() { 63
57 if ( data->deref() ) { 64
65OPimNotify::~OPimNotify()
66{
67 if ( data->deref() )
68 {
58 delete data; 69 delete data;
59 data = 0l; 70 data = 0l;
@@ -61,5 +72,7 @@ OPimNotify::~OPimNotify() {
61} 72}
62 73
63OPimNotify &OPimNotify::operator=( const OPimNotify& noti) { 74
75OPimNotify &OPimNotify::operator=( const OPimNotify& noti )
76{
64 noti.data->ref(); 77 noti.data->ref();
65 deref(); 78 deref();
@@ -68,5 +81,8 @@ OPimNotify &OPimNotify::operator=( const OPimNotify& noti) {
68 return *this; 81 return *this;
69} 82}
70bool OPimNotify::operator==( const OPimNotify& noti ) { 83
84
85bool 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;
@@ -77,37 +93,68 @@ bool OPimNotify::operator==( const OPimNotify& noti ) {
77 return true; 93 return true;
78} 94}
79QDateTime OPimNotify::dateTime()const { 95
96
97QDateTime OPimNotify::dateTime() const
98{
80 return data->start; 99 return data->start;
81} 100}
82QString OPimNotify::service()const { 101
102
103QString OPimNotify::service() const
104{
83 return data->application; 105 return data->application;
84} 106}
85int OPimNotify::parent()const { 107
108
109int OPimNotify::parent() const
110{
86 return data->parent; 111 return data->parent;
87} 112}
88int OPimNotify::duration()const { 113
114
115int OPimNotify::duration() const
116{
89 return data->dur; 117 return data->dur;
90} 118}
91QDateTime OPimNotify::endTime()const { 119
120
121QDateTime 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}
94void OPimNotify::setDateTime( const QDateTime& time ) { 125
126
127void OPimNotify::setDateTime( const QDateTime& time )
128{
95 copyIntern(); 129 copyIntern();
96 data->start = time; 130 data->start = time;
97} 131}
98void OPimNotify::setDuration( int dur ) { 132
133
134void OPimNotify::setDuration( int dur )
135{
99 copyIntern(); 136 copyIntern();
100 data->dur = dur; 137 data->dur = dur;
101} 138}
102void OPimNotify::setParent( int uid ) { 139
140
141void OPimNotify::setParent( int uid )
142{
103 copyIntern(); 143 copyIntern();
104 data->parent = uid; 144 data->parent = uid;
105} 145}
106void OPimNotify::setService( const QString& str ) { 146
147
148void OPimNotify::setService( const QString& str )
149{
107 copyIntern(); 150 copyIntern();
108 data->application = str; 151 data->application = str;
109} 152}
110void OPimNotify::copyIntern() { 153
111 if ( data->count != 1 ) { 154
155void 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;
@@ -119,6 +166,10 @@ void OPimNotify::copyIntern() {
119 } 166 }
120} 167}
121void OPimNotify::deref() { 168
122 if ( data->deref() ) { 169
170void OPimNotify::deref()
171{
172 if ( data->deref() )
173 {
123 delete data; 174 delete data;
124 data = 0; 175 data = 0;
@@ -126,7 +177,10 @@ void OPimNotify::deref() {
126} 177}
127 178
179
128/***********************************************************/ 180/***********************************************************/
129struct OPimAlarm::Data : public QShared { 181struct OPimAlarm::Data : public QShared
130 Data() : QShared() { 182{
183 Data() : QShared()
184 {
131 sound = 1; 185 sound = 1;
132 } 186 }
@@ -134,4 +188,6 @@ struct OPimAlarm::Data : public QShared {
134 QString file; 188 QString file;
135}; 189};
190
191
136OPimAlarm::OPimAlarm( int sound, const QDateTime& start, int duration, int parent ) 192OPimAlarm::OPimAlarm( int sound, const QDateTime& start, int duration, int parent )
137 : OPimNotify( start, duration, parent ) 193 : OPimNotify( start, duration, parent )
@@ -140,4 +196,6 @@ OPimAlarm::OPimAlarm( int sound, const QDateTime& start, int duration, int paren
140 data->sound = sound; 196 data->sound = sound;
141} 197}
198
199
142OPimAlarm::OPimAlarm( const OPimAlarm& al) 200OPimAlarm::OPimAlarm( const OPimAlarm& al)
143 : OPimNotify(al), data( al.data ) 201 : OPimNotify(al), data( al.data )
@@ -145,10 +203,16 @@ OPimAlarm::OPimAlarm( const OPimAlarm& al)
145 data->ref(); 203 data->ref();
146} 204}
147OPimAlarm::~OPimAlarm() { 205
148 if ( data->deref() ) { 206
207OPimAlarm::~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
153OPimAlarm &OPimAlarm::operator=( const OPimAlarm& al) 217OPimAlarm &OPimAlarm::operator=( const OPimAlarm& al)
154{ 218{
@@ -162,5 +226,8 @@ OPimAlarm &OPimAlarm::operator=( const OPimAlarm& al)
162 return *this; 226 return *this;
163} 227}
164bool OPimAlarm::operator==( const OPimAlarm& al) { 228
229
230bool 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 )
@@ -169,29 +236,52 @@ bool OPimAlarm::operator==( const OPimAlarm& al) {
169 return OPimNotify::operator==( al ); 236 return OPimNotify::operator==( al );
170} 237}
171QString OPimAlarm::type()const { 238
239
240QString OPimAlarm::type() const
241{
172 return QString::fromLatin1("OPimAlarm"); 242 return QString::fromLatin1("OPimAlarm");
173} 243}
174int OPimAlarm::sound()const { 244
245
246int OPimAlarm::sound() const
247{
175 return data->sound; 248 return data->sound;
176} 249}
177QString OPimAlarm::file()const { 250
251
252QString OPimAlarm::file() const
253{
178 return data->file; 254 return data->file;
179} 255}
180void OPimAlarm::setSound( int snd) { 256
257
258void OPimAlarm::setSound( int snd )
259{
181 copyIntern(); 260 copyIntern();
182 data->sound = snd; 261 data->sound = snd;
183} 262}
184void OPimAlarm::setFile( const QString& sound ) { 263
264
265void OPimAlarm::setFile( const QString& sound )
266{
185 copyIntern(); 267 copyIntern();
186 data->file = sound; 268 data->file = sound;
187} 269}
188void OPimAlarm::deref() { 270
189 if ( data->deref() ) { 271
272void OPimAlarm::deref()
273{
274 if ( data->deref() )
275 {
190 delete data; 276 delete data;
191 data = 0l; 277 data = 0l;
192 } 278 }
193} 279}
194void OPimAlarm::copyIntern() { 280
195 if ( data->count != 1 ) { 281
282void 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;
@@ -201,11 +291,16 @@ void OPimAlarm::copyIntern() {
201 } 291 }
202} 292}
293
294
203/************************/ 295/************************/
204struct OPimReminder::Data : public QShared { 296struct 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
210OPimReminder::OPimReminder( int uid, const QDateTime& start, int dur, int parent ) 305OPimReminder::OPimReminder( int uid, const QDateTime& start, int dur, int parent )
211 : OPimNotify( start, dur, parent ) 306 : OPimNotify( start, dur, parent )
@@ -214,4 +309,6 @@ OPimReminder::OPimReminder( int uid, const QDateTime& start, int dur, int paren
214 data->record = uid; 309 data->record = uid;
215} 310}
311
312
216OPimReminder::OPimReminder( const OPimReminder& rem ) 313OPimReminder::OPimReminder( const OPimReminder& rem )
217 : OPimNotify( rem ), data( rem.data ) 314 : OPimNotify( rem ), data( rem.data )
@@ -219,5 +316,8 @@ OPimReminder::OPimReminder( const OPimReminder& rem )
219 data->ref(); 316 data->ref();
220} 317}
221OPimReminder& OPimReminder::operator=( const OPimReminder& rem) { 318
319
320OPimReminder& OPimReminder::operator=( const OPimReminder& rem )
321{
222 OPimNotify::operator=(rem ); 322 OPimNotify::operator=(rem );
223 323
@@ -228,27 +328,47 @@ OPimReminder& OPimReminder::operator=( const OPimReminder& rem) {
228 return *this; 328 return *this;
229} 329}
230bool OPimReminder::operator==( const OPimReminder& rem) { 330
331
332bool 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}
235QString OPimReminder::type()const { 338
339
340QString OPimReminder::type() const
341{
236 return QString::fromLatin1("OPimReminder"); 342 return QString::fromLatin1("OPimReminder");
237} 343}
238int OPimReminder::recordUid()const { 344
345
346int OPimReminder::recordUid() const
347{
239 return data->record; 348 return data->record;
240} 349}
241void OPimReminder::setRecordUid( int uid ) { 350
351
352void OPimReminder::setRecordUid( int uid )
353{
242 copyIntern(); 354 copyIntern();
243 data->record = uid; 355 data->record = uid;
244} 356}
245void OPimReminder::deref() { 357
246 if ( data->deref() ) { 358
359void OPimReminder::deref()
360{
361 if ( data->deref() )
362 {
247 delete data; 363 delete data;
248 data = 0l; 364 data = 0l;
249 } 365 }
250} 366}
251void OPimReminder::copyIntern() { 367
252 if ( data->count != 1 ) { 368
369void 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;
@@ -256,3 +376,4 @@ void OPimReminder::copyIntern() {
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
@@ -27,12 +27,14 @@
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 37namespace Opie
36namespace Opie { 38{
37/** 39/**
38 * This is the base class of Notifiers. Possible 40 * This is the base class of Notifiers. Possible
@@ -48,5 +50,7 @@ namespace Opie {
48 * discuss: do we need a uid for the notify? -zecke 50 * discuss: do we need a uid for the notify? -zecke
49 */ 51 */
50class OPimNotify { 52class OPimNotify
53{
54
51public: 55public:
52 typedef QValueList<OPimNotify> ValueList; 56 typedef QValueList<OPimNotify> ValueList;
@@ -101,5 +105,6 @@ private:
101 * an Event 105 * an Event
102 */ 106 */
103class OPimAlarm : public OPimNotify { 107class OPimAlarm : public OPimNotify
108{
104public: 109public:
105 enum Sound{Loud=1, Silent=0, Custom=2 }; 110 enum Sound{Loud=1, Silent=0, Custom=2 };
@@ -136,7 +141,7 @@ private:
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 */
138class OPimReminder : public OPimNotify { 143class OPimReminder : public OPimNotify
144{
139public: 145public:
140
141 /** 146 /**
142 * c'tor of a reminder 147 * c'tor of a reminder
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
@@ -27,42 +27,66 @@
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
35namespace Opie { 38namespace Opie
39{
36 40
37OPimNotifyManager::OPimNotifyManager( const Reminders& rem, const Alarms& al) 41OPimNotifyManager::OPimNotifyManager( const Reminders& rem, const Alarms& al)
38 : m_rem( rem ), m_al( al ) 42 : m_rem( rem ), m_al( al )
39{} 43{}
40OPimNotifyManager::~OPimNotifyManager() { 44
41} 45
46OPimNotifyManager::~OPimNotifyManager()
47{}
48
49
42/* use static_cast and type instead of dynamic... */ 50/* use static_cast and type instead of dynamic... */
43void OPimNotifyManager::add( const OPimNotify& noti) { 51void 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}
52void OPimNotifyManager::remove( const OPimNotify& noti) { 64
53 if ( noti.type() == QString::fromLatin1("OPimReminder") ) { 65
66void 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}
61void OPimNotifyManager::replace( const OPimNotify& noti) { 79
62 if ( noti.type() == QString::fromLatin1("OPimReminder") ) { 80
81void 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 );
@@ -70,15 +94,25 @@ void OPimNotifyManager::replace( const OPimNotify& noti) {
70 } 94 }
71} 95}
72OPimNotifyManager::Reminders OPimNotifyManager::reminders()const { 96
97
98OPimNotifyManager::Reminders OPimNotifyManager::reminders() const
99{
73 return m_rem; 100 return m_rem;
74} 101}
75OPimNotifyManager::Alarms OPimNotifyManager::alarms()const { 102
103
104OPimNotifyManager::Alarms OPimNotifyManager::alarms() const
105{
76 return m_al; 106 return m_al;
77} 107}
78OPimAlarm OPimNotifyManager::alarmAtDateTime( const QDateTime& when, bool& found ) const { 108
109
110OPimAlarm 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);
@@ -92,10 +126,16 @@ OPimAlarm OPimNotifyManager::alarmAtDateTime( const QDateTime& when, bool& found
92 126
93 127
94void OPimNotifyManager::setAlarms( const Alarms& al) { 128void OPimNotifyManager::setAlarms( const Alarms& al )
129{
95 m_al = al; 130 m_al = al;
96} 131}
97void OPimNotifyManager::setReminders( const Reminders& rem) { 132
133
134void OPimNotifyManager::setReminders( const Reminders& rem )
135{
98 m_rem = rem; 136 m_rem = rem;
99} 137}
138
139
100/* FIXME!!! */ 140/* FIXME!!! */
101/** 141/**
@@ -106,7 +146,9 @@ void OPimNotifyManager::setReminders( const Reminders& rem) {
106 * Qtopia1.6 services would be kewl to have here.... 146 * Qtopia1.6 services would be kewl to have here....
107 */ 147 */
108void OPimNotifyManager::registerNotify( const OPimNotify& ) { 148void OPimNotifyManager::registerNotify( const OPimNotify& )
109 149{
110} 150}
151
152
111/* FIXME!!! */ 153/* FIXME!!! */
112/** 154/**
@@ -115,9 +157,11 @@ void OPimNotifyManager::registerNotify( const OPimNotify& ) {
115 * have a MainWindow.... 157 * have a MainWindow....
116 */ 158 */
117void OPimNotifyManager::deregister( const OPimNotify& ) { 159void OPimNotifyManager::deregister( const OPimNotify& )
118 160{
119} 161}
120 162
121bool OPimNotifyManager::isEmpty()const { 163
164bool 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;
@@ -125,5 +169,6 @@ bool OPimNotifyManager::isEmpty()const {
125} 169}
126 170
127// Taken from otodoaccessxml.. 171
172// Taken from otodoaccessxml.. code duplication bad. any alternative?
128QString OPimNotifyManager::alarmsToString() const 173QString OPimNotifyManager::alarmsToString() const
129{ 174{
@@ -131,10 +176,13 @@ QString OPimNotifyManager::alarmsToString() const
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() )
@@ -150,4 +198,6 @@ QString OPimNotifyManager::alarmsToString() const
150 return str; 198 return str;
151} 199}
200
201
152QString OPimNotifyManager::remindersToString() const 202QString OPimNotifyManager::remindersToString() const
153{ 203{
@@ -155,8 +205,10 @@ QString OPimNotifyManager::remindersToString() const
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 }
@@ -167,8 +219,10 @@ QString OPimNotifyManager::remindersToString() const
167} 219}
168 220
221
169void OPimNotifyManager::alarmsFromString( const QString& str ) 222void 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() );
@@ -181,9 +235,11 @@ void OPimNotifyManager::alarmsFromString( const QString& str )
181} 235}
182 236
237
183void OPimNotifyManager::remindersFromString( const QString& str ) 238void 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 );
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
@@ -27,16 +27,20 @@
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
36namespace Opie { 35/* QT */
36#include <qvaluelist.h>
37
38namespace Opie
39{
37/** 40/**
38 * The notify manager keeps track of the Notifiers.... 41 * The notify manager keeps track of the Notifiers....
39 */ 42 */
40class OPimNotifyManager { 43class OPimNotifyManager
44{
41public: 45public:
42 typedef QValueList<OPimReminder> Reminders; 46 typedef QValueList<OPimReminder> Reminders;
@@ -107,6 +111,4 @@ public:
107 void remindersFromString( const QString& str ); 111 void remindersFromString( const QString& str );
108 112
109
110
111private: 113private:
112 Reminders m_rem; 114 Reminders m_rem;
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
@@ -27,23 +27,32 @@
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
36namespace Opie { 39namespace Opie
40{
37Qtopia::UidGen OPimRecord::m_uidGen( Qtopia::UidGen::Qtopia ); 41Qtopia::UidGen OPimRecord::m_uidGen( Qtopia::UidGen::Qtopia );
38 42
39 43
40OPimRecord::OPimRecord( int uid ) 44OPimRecord::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}
46OPimRecord::~OPimRecord() { 51
47} 52
53OPimRecord::~OPimRecord()
54{}
55
56
48OPimRecord::OPimRecord( const OPimRecord& rec ) 57OPimRecord::OPimRecord( const OPimRecord& rec )
49 : Qtopia::Record( rec ) 58 : Qtopia::Record( rec )
@@ -52,5 +61,7 @@ OPimRecord::OPimRecord( const OPimRecord& rec )
52} 61}
53 62
54OPimRecord &OPimRecord::operator=( const OPimRecord& rec) { 63
64OPimRecord &OPimRecord::operator=( const OPimRecord& rec )
65{
55 if ( this == &rec ) return *this; 66 if ( this == &rec ) return *this;
56 67
@@ -61,8 +72,11 @@ OPimRecord &OPimRecord::operator=( const OPimRecord& rec) {
61 return *this; 72 return *this;
62} 73}
74
75
63/* 76/*
64 * category names 77 * category names
65 */ 78 */
66QStringList OPimRecord::categoryNames( const QString& appname ) const { 79QStringList OPimRecord::categoryNames( const QString& appname ) const
80{
67 QStringList list; 81 QStringList list;
68 QArray<int> cats = categories(); 82 QArray<int> cats = categories();
@@ -70,5 +84,6 @@ QStringList OPimRecord::categoryNames( const QString& appname ) const {
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 }
@@ -76,8 +91,13 @@ QStringList OPimRecord::categoryNames( const QString& appname ) const {
76 return list; 91 return list;
77} 92}
78void OPimRecord::setCategoryNames( const QStringList& ) {
79 93
94
95void OPimRecord::setCategoryNames( const QStringList& )
96{
80} 97}
81void OPimRecord::addCategoryName( const QString& ) { 98
99
100void OPimRecord::addCategoryName( const QString& )
101{
82 Categories catDB; 102 Categories catDB;
83 catDB.load( categoryFileName() ); 103 catDB.load( categoryFileName() );
@@ -85,7 +105,12 @@ void OPimRecord::addCategoryName( const QString& ) {
85 105
86} 106}
87bool OPimRecord::isEmpty()const { 107
108
109bool 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;
@@ -103,5 +128,6 @@ bool OPimRecord::isEmpty()const {
103 }*/ 128 }*/
104/* if uid = 1 assign a new one */ 129/* if uid = 1 assign a new one */
105void OPimRecord::setUid( int uid ) { 130void OPimRecord::setUid( int uid )
131{
106 if ( uid == 1) 132 if ( uid == 1)
107 uid = uidGen().generate(); 133 uid = uidGen().generate();
@@ -109,11 +135,20 @@ void OPimRecord::setUid( int uid ) {
109 Qtopia::Record::setUid( uid ); 135 Qtopia::Record::setUid( uid );
110}; 136};
111Qtopia::UidGen &OPimRecord::uidGen() { 137
138
139Qtopia::UidGen &OPimRecord::uidGen()
140{
112 return m_uidGen; 141 return m_uidGen;
113} 142}
114OPimXRefManager &OPimRecord::xrefmanager() { 143
144
145OPimXRefManager &OPimRecord::xrefmanager()
146{
115 return m_xrefman; 147 return m_xrefman;
116} 148}
117int OPimRecord::rtti(){ 149
150
151int OPimRecord::rtti()
152{
118 return 0; 153 return 0;
119} 154}
@@ -127,5 +162,6 @@ int OPimRecord::rtti(){
127 * XRef 162 * XRef
128 */ 163 */
129bool OPimRecord::loadFromStream( QDataStream& stream ) { 164bool OPimRecord::loadFromStream( QDataStream& stream )
165{
130 int Int; 166 int Int;
131 uint UInt; 167 uint UInt;
@@ -136,5 +172,6 @@ bool OPimRecord::loadFromStream( QDataStream& stream ) {
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 }
@@ -146,5 +183,6 @@ bool OPimRecord::loadFromStream( QDataStream& stream ) {
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 ) );
@@ -154,5 +192,8 @@ bool OPimRecord::loadFromStream( QDataStream& stream ) {
154 return true; 192 return true;
155} 193}
156bool OPimRecord::saveToStream( QDataStream& stream )const { 194
195
196bool OPimRecord::saveToStream( QDataStream& stream ) const
197{
157 /** UIDs */ 198 /** UIDs */
158 199
@@ -161,5 +202,6 @@ bool OPimRecord::saveToStream( QDataStream& stream )const {
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 }
@@ -171,5 +213,6 @@ bool OPimRecord::saveToStream( QDataStream& stream )const {
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 );
@@ -177,10 +220,16 @@ bool OPimRecord::saveToStream( QDataStream& stream )const {
177 return true; 220 return true;
178} 221}
179void OPimRecord::flush( const OPimXRefPartner& par, QDataStream& str ) const{ 222
223
224void 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}
184OPimXRefPartner OPimRecord::partner( QDataStream& stream ) { 230
231
232OPimXRefPartner OPimRecord::partner( QDataStream& stream )
233{
185 OPimXRefPartner par; 234 OPimXRefPartner par;
186 QString str; 235 QString str;
@@ -198,14 +247,26 @@ OPimXRefPartner OPimRecord::partner( QDataStream& stream ) {
198 return par; 247 return par;
199} 248}
200void OPimRecord::setLastHitField( int lastHit )const { 249
250
251void OPimRecord::setLastHitField( int lastHit ) const
252{
201 m_lastHit = lastHit; 253 m_lastHit = lastHit;
202} 254}
203int OPimRecord::lastHitField()const{ 255
256
257int OPimRecord::lastHitField() const
258{
204 return m_lastHit; 259 return m_lastHit;
205} 260}
206QMap<QString, QString> OPimRecord::toExtraMap()const { 261
262
263QMap<QString, QString> OPimRecord::toExtraMap() const
264{
207 return customMap; 265 return customMap;
208} 266}
209void OPimRecord::setExtraMap( const QMap<QString, QString>& map) { 267
268
269void OPimRecord::setExtraMap( const QMap<QString, QString>& map )
270{
210 customMap = map; 271 customMap = map;
211} 272}
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
@@ -27,12 +27,10 @@
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...
@@ -42,7 +40,12 @@
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
46namespace Opie { 48namespace Opie
49{
47/** 50/**
48 * This is the base class for 51 * This is the base class for
@@ -50,5 +53,6 @@ namespace Opie {
50 * 53 *
51 */ 54 */
52class OPimRecord : public Qtopia::Record { 55class OPimRecord : public Qtopia::Record
56{
53public: 57public:
54 /** 58 /**
@@ -111,6 +115,8 @@ public:
111 */ 115 */
112 virtual bool match( const QString &regexp ) const 116 virtual bool match( const QString &regexp ) 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 /**
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,5 +1,5 @@
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.
@@ -28,33 +28,16 @@
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>
@@ -63,4 +46,5 @@
63#include <qmap.h> 46#include <qmap.h>
64 47
48/* STD */
65#include <stdio.h> 49#include <stdio.h>
66 50
@@ -77,12 +61,11 @@
77 61
78 62
79namespace Opie { 63namespace Opie
64{
80/*! 65/*!
81 Creates a new, empty contact. 66 Creates a new, empty contact.
82*/ 67*/
83OContact::OContact() 68OContact::OContact():OPimRecord(), mMap(), d( 0 )
84 : OPimRecord(), mMap(), d( 0 ) 69{}
85{
86}
87 70
88/*! 71/*!
@@ -91,6 +74,5 @@ OContact::OContact()
91 set from \a fromMap. 74 set from \a fromMap.
92*/ 75*/
93OContact::OContact( const QMap<int, QString> &fromMap ) : 76OContact::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 ];
@@ -100,8 +82,10 @@ OContact::OContact( const QMap<int, QString> &fromMap ) :
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
@@ -114,6 +98,5 @@ OContact::OContact( const QMap<int, QString> &fromMap ) :
114*/ 98*/
115OContact::~OContact() 99OContact::~OContact()
116{ 100{}
117}
118 101
119/*! \fn void OContact::setTitle( const QString &str ) 102/*! \fn void OContact::setTitle( const QString &str )
@@ -482,9 +465,11 @@ QString OContact::toRichText() const
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>";
@@ -492,5 +477,6 @@ QString OContact::toRichText() const
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);
@@ -500,23 +486,29 @@ QString OContact::toRichText() const
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() )
@@ -525,5 +517,7 @@ QString OContact::toRichText() const
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;
@@ -531,16 +525,21 @@ QString OContact::toRichText() const
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;
@@ -550,5 +549,6 @@ QString OContact::toRichText() const
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;
@@ -557,5 +557,6 @@ QString OContact::toRichText() const
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);
@@ -563,5 +564,6 @@ QString OContact::toRichText() const
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);
@@ -569,5 +571,6 @@ QString OContact::toRichText() const
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);
@@ -575,5 +578,6 @@ QString OContact::toRichText() const
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);
@@ -581,5 +585,6 @@ QString OContact::toRichText() const
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);
@@ -587,5 +592,6 @@ QString OContact::toRichText() const
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);
@@ -597,22 +603,28 @@ QString OContact::toRichText() const
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() )
@@ -621,5 +633,7 @@ QString OContact::toRichText() const
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;
@@ -627,16 +641,21 @@ QString OContact::toRichText() const
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;
@@ -646,5 +665,6 @@ QString OContact::toRichText() const
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;
@@ -653,5 +673,6 @@ QString OContact::toRichText() const
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);
@@ -659,5 +680,6 @@ QString OContact::toRichText() const
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);
@@ -665,5 +687,6 @@ QString OContact::toRichText() const
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);
@@ -671,5 +694,6 @@ QString OContact::toRichText() const
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);
@@ -698,5 +722,6 @@ QString OContact::toRichText() const
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 )
@@ -710,10 +735,12 @@ QString OContact::toRichText() const
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>"
@@ -731,5 +758,6 @@ QString OContact::toRichText() const
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(", ");
@@ -737,5 +765,6 @@ QString OContact::toRichText() const
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");
@@ -838,20 +867,24 @@ QString OContact::fullName() const
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 += " ";
@@ -901,5 +934,6 @@ QStringList OContact::emailList() const
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 );
@@ -947,8 +981,10 @@ void OContact::save( QString &buf ) const
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;
@@ -1062,6 +1098,8 @@ bool OContact::match( const QRegExp &r ) const
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;
@@ -1077,4 +1115,6 @@ QString OContact::toShortText() const
1077 return ( fullName() ); 1115 return ( fullName() );
1078} 1116}
1117
1118
1079QString OContact::type() const 1119QString OContact::type() const
1080{ 1120{
@@ -1083,5 +1123,4 @@ QString OContact::type() const
1083 1123
1084 1124
1085
1086class QString OContact::recordField( int pos ) const 1125class QString OContact::recordField( int pos ) const
1087{ 1126{
@@ -1100,5 +1139,6 @@ class QString OContact::recordField( int pos ) const
1100void OContact::setBirthday( const QDate &v ) 1139void 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 );
@@ -1118,5 +1158,6 @@ void OContact::setBirthday( const QDate &v )
1118void OContact::setAnniversary( const QDate &v ) 1158void 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 );
@@ -1128,4 +1169,5 @@ void OContact::setAnniversary( const QDate &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.
@@ -1164,5 +1206,6 @@ void OContact::insertEmail( const QString &v )
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;
@@ -1179,4 +1222,5 @@ void OContact::insertEmail( const QString &v )
1179} 1222}
1180 1223
1224
1181void OContact::removeEmail( const QString &v ) 1225void OContact::removeEmail( const QString &v )
1182{ 1226{
@@ -1198,5 +1242,6 @@ void OContact::removeEmail( const QString &v )
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() )
@@ -1206,4 +1251,6 @@ void OContact::removeEmail( const QString &v )
1206 } 1251 }
1207} 1252}
1253
1254
1208void OContact::clearEmails() 1255void OContact::clearEmails()
1209{ 1256{
@@ -1211,4 +1258,6 @@ void OContact::clearEmails()
1211 mMap.remove( Qtopia::Emails ); 1258 mMap.remove( Qtopia::Emails );
1212} 1259}
1260
1261
1213void OContact::setDefaultEmail( const QString &v ) 1262void OContact::setDefaultEmail( const QString &v )
1214{ 1263{
@@ -1223,4 +1272,5 @@ void OContact::setDefaultEmail( const QString &v )
1223} 1272}
1224 1273
1274
1225void OContact::insertEmails( const QStringList &v ) 1275void OContact::insertEmails( const QStringList &v )
1226{ 1276{
@@ -1228,7 +1278,12 @@ void OContact::insertEmails( const QStringList &v )
1228 insertEmail( *it ); 1278 insertEmail( *it );
1229} 1279}
1230int OContact::rtti() { 1280
1281
1282int OContact::rtti()
1283{
1231 return OPimResolver::AddressBook; 1284 return OPimResolver::AddressBook;
1232} 1285}
1286
1287
1233void OContact::setUid( int i ) 1288void OContact::setUid( int i )
1234{ 1289{
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
@@ -27,10 +27,13 @@
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>
@@ -42,5 +45,6 @@ QPC_TEMPLATEEXTERN template class QPC_EXPORT QMap<int, QString>;
42#endif 45#endif
43 46
44namespace Opie { 47namespace Opie
48{
45class OContactPrivate; 49class OContactPrivate;
46 50
@@ -55,4 +59,5 @@ class QPC_EXPORT OContact : public OPimRecord
55{ 59{
56 friend class DataSet; 60 friend class DataSet;
61
57public: 62public:
58 OContact(); 63 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,5 +1,5 @@
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.
@@ -28,15 +28,18 @@
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
40namespace Opie { 42namespace Opie
43{
41/*! 44/*!
42 \internal 45 \internal
@@ -424,9 +427,11 @@ OContactFields::OContactFields():
424} 427}
425 428
426OContactFields::~OContactFields(){ 429OContactFields::~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" );
@@ -437,5 +442,6 @@ OContactFields::~OContactFields(){
437 442
438 443
439void OContactFields::saveToRecord( OContact &cnt ){ 444void OContactFields::saveToRecord( OContact &cnt )
445{
440 446
441 qDebug("ocontactfields saveToRecord: >%s<",fieldOrder.latin1()); 447 qDebug("ocontactfields saveToRecord: >%s<",fieldOrder.latin1());
@@ -449,5 +455,6 @@ void OContactFields::saveToRecord( OContact &cnt ){
449} 455}
450 456
451void OContactFields::loadFromRecord( const OContact &cnt ){ 457void 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());
@@ -460,5 +467,6 @@ void OContactFields::loadFromRecord( const OContact &cnt ){
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 }
@@ -468,5 +476,6 @@ void OContactFields::loadFromRecord( const OContact &cnt ){
468} 476}
469 477
470void OContactFields::setFieldOrder( int num, int index ){ 478void 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
@@ -481,5 +490,6 @@ void OContactFields::setFieldOrder( int num, int index ){
481} 490}
482 491
483int OContactFields::getFieldOrder( int num, int defIndex ){ 492int 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());
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
@@ -27,18 +27,24 @@
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
32class QStringList; 33class 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
41namespace Opie { 45namespace Opie
42class OContactFields{ 46{
47class OContactFields
48{
43 49
44 public: 50 public:
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,5 +1,5 @@
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.
@@ -27,20 +27,24 @@
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
42namespace Opie { 44namespace Opie
45{
43 46
44int OCalendarHelper::week( const QDate& date) { 47int 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
@@ -54,13 +58,20 @@ int OCalendarHelper::week( const QDate& date) {
54 return week; 58 return week;
55} 59}
56int OCalendarHelper::ocurrence( const QDate& date) { 60
61
62int 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}
61int OCalendarHelper::dayOfWeek( char day ) { 68
69
70int 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;
@@ -68,11 +79,17 @@ int OCalendarHelper::dayOfWeek( char day ) {
68 return dayOfWeek; 79 return dayOfWeek;
69} 80}
70int OCalendarHelper::monthDiff( const QDate& first, const QDate& second ) { 81
82
83int 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
75struct OEvent::Data : public QShared { 89
76 Data() : QShared() { 90struct OEvent::Data : public QShared
91{
92 Data() : QShared()
93 {
77 child = 0; 94 child = 0;
78 recur = 0; 95 recur = 0;
@@ -81,5 +98,6 @@ struct OEvent::Data : public QShared {
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;
@@ -99,8 +117,12 @@ struct OEvent::Data : public QShared {
99}; 117};
100 118
119
101OEvent::OEvent( int uid ) 120OEvent::OEvent( int uid )
102 : OPimRecord( uid ) { 121 : OPimRecord( uid )
122{
103 data = new Data; 123 data = new Data;
104} 124}
125
126
105OEvent::OEvent( const OEvent& ev) 127OEvent::OEvent( const OEvent& ev)
106 : OPimRecord( ev ), data( ev.data ) 128 : OPimRecord( ev ), data( ev.data )
@@ -109,4 +131,5 @@ OEvent::OEvent( const OEvent& ev)
109} 131}
110 132
133
111OEvent::OEvent( const QMap<int, QString> map ) 134OEvent::OEvent( const QMap<int, QString> map )
112 : OPimRecord( 0 ) 135 : OPimRecord( 0 )
@@ -117,11 +140,17 @@ OEvent::OEvent( const QMap<int, QString> map )
117} 140}
118 141
119OEvent::~OEvent() { 142
120 if ( data->deref() ) { 143OEvent::~OEvent()
144{
145 if ( data->deref() )
146 {
121 delete data; 147 delete data;
122 data = 0; 148 data = 0;
123 } 149 }
124} 150}
125OEvent& OEvent::operator=( const OEvent& ev) { 151
152
153OEvent& OEvent::operator=( const OEvent& ev )
154{
126 if ( this == &ev ) return *this; 155 if ( this == &ev ) return *this;
127 156
@@ -134,19 +163,34 @@ OEvent& OEvent::operator=( const OEvent& ev) {
134 return *this; 163 return *this;
135} 164}
136QString OEvent::description()const { 165
166
167QString OEvent::description() const
168{
137 return data->description; 169 return data->description;
138} 170}
139void OEvent::setDescription( const QString& description ) { 171
172
173void OEvent::setDescription( const QString& description )
174{
140 changeOrModify(); 175 changeOrModify();
141 data->description = description; 176 data->description = description;
142} 177}
143void OEvent::setLocation( const QString& loc ) { 178
179
180void OEvent::setLocation( const QString& loc )
181{
144 changeOrModify(); 182 changeOrModify();
145 data->location = loc; 183 data->location = loc;
146} 184}
147QString OEvent::location()const { 185
186
187QString OEvent::location() const
188{
148 return data->location; 189 return data->location;
149} 190}
150OPimNotifyManager &OEvent::notifiers()const { 191
192
193OPimNotifyManager &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
@@ -157,5 +201,8 @@ OPimNotifyManager &OEvent::notifiers()const {
157 return *data->manager; 201 return *data->manager;
158} 202}
159bool OEvent::hasNotifiers()const { 203
204
205bool OEvent::hasNotifiers() const
206{
160 if (!data->manager ) 207 if (!data->manager )
161 return false; 208 return false;
@@ -166,5 +213,8 @@ bool OEvent::hasNotifiers()const {
166 return true; 213 return true;
167} 214}
168ORecur OEvent::recurrence()const { 215
216
217ORecur OEvent::recurrence() const
218{
169 if (!data->recur) 219 if (!data->recur)
170 data->recur = new ORecur; 220 data->recur = new ORecur;
@@ -172,5 +222,8 @@ ORecur OEvent::recurrence()const {
172 return *data->recur; 222 return *data->recur;
173} 223}
174void OEvent::setRecurrence( const ORecur& rec) { 224
225
226void OEvent::setRecurrence( const ORecur& rec )
227{
175 changeOrModify(); 228 changeOrModify();
176 if (data->recur ) 229 if (data->recur )
@@ -179,28 +232,49 @@ void OEvent::setRecurrence( const ORecur& rec) {
179 data->recur = new ORecur( rec ); 232 data->recur = new ORecur( rec );
180} 233}
181bool OEvent::hasRecurrence()const { 234
235
236bool 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}
185QString OEvent::note()const { 241
242
243QString OEvent::note() const
244{
186 return data->note; 245 return data->note;
187} 246}
188void OEvent::setNote( const QString& note ) { 247
248
249void OEvent::setNote( const QString& note )
250{
189 changeOrModify(); 251 changeOrModify();
190 data->note = note; 252 data->note = note;
191} 253}
192QDateTime OEvent::createdDateTime()const { 254
255
256QDateTime OEvent::createdDateTime() const
257{
193 return data->created; 258 return data->created;
194} 259}
195void OEvent::setCreatedDateTime( const QDateTime& time ) { 260
261
262void OEvent::setCreatedDateTime( const QDateTime& time )
263{
196 changeOrModify(); 264 changeOrModify();
197 data->created = time; 265 data->created = time;
198} 266}
199QDateTime OEvent::startDateTime()const { 267
268
269QDateTime 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}
204QDateTime OEvent::startDateTimeInZone()const { 275
276
277QDateTime 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();
@@ -209,9 +283,15 @@ QDateTime OEvent::startDateTimeInZone()const {
209 return zone.toDateTime( data->start, OTimeZone::current() ); 283 return zone.toDateTime( data->start, OTimeZone::current() );
210} 284}
211void OEvent::setStartDateTime( const QDateTime& dt ) { 285
286
287void OEvent::setStartDateTime( const QDateTime& dt )
288{
212 changeOrModify(); 289 changeOrModify();
213 data->start = dt; 290 data->start = dt;
214} 291}
215QDateTime OEvent::endDateTime()const { 292
293
294QDateTime OEvent::endDateTime() const
295{
216 /* 296 /*
217 * if all Day event the end time needs 297 * if all Day event the end time needs
@@ -222,5 +302,8 @@ QDateTime OEvent::endDateTime()const {
222 return data->end; 302 return data->end;
223} 303}
224QDateTime OEvent::endDateTimeInZone()const { 304
305
306QDateTime 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();
@@ -229,45 +312,71 @@ QDateTime OEvent::endDateTimeInZone()const {
229 return zone.toDateTime( data->end, OTimeZone::current() ); 312 return zone.toDateTime( data->end, OTimeZone::current() );
230} 313}
231void OEvent::setEndDateTime( const QDateTime& dt ) { 314
315
316void OEvent::setEndDateTime( const QDateTime& dt )
317{
232 changeOrModify(); 318 changeOrModify();
233 data->end = dt; 319 data->end = dt;
234} 320}
235bool OEvent::isMultipleDay()const { 321
322
323bool 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}
238bool OEvent::isAllDay()const { 327
328
329bool OEvent::isAllDay() const
330{
239 return data->isAllDay; 331 return data->isAllDay;
240} 332}
241void OEvent::setAllDay( bool allDay ) { 333
334
335void 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}
246void OEvent::setTimeZone( const QString& tz ) { 341
342
343void OEvent::setTimeZone( const QString& tz )
344{
247 changeOrModify(); 345 changeOrModify();
248 data->timezone = tz; 346 data->timezone = tz;
249} 347}
250QString OEvent::timeZone()const { 348
349
350QString 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}
254bool OEvent::match( const QRegExp& re )const { 355
255 if ( re.match( data->description ) != -1 ){ 356
357bool 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;
@@ -275,10 +384,14 @@ bool OEvent::match( const QRegExp& re )const {
275 return false; 384 return false;
276} 385}
277QString OEvent::toRichText()const { 386
387
388QString 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 }
@@ -286,5 +399,6 @@ QString OEvent::toRichText()const {
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>";
@@ -292,15 +406,19 @@ QString OEvent::toRichText()const {
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() ).
@@ -309,5 +427,6 @@ QString OEvent::toRichText()const {
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() ).
@@ -317,5 +436,6 @@ QString OEvent::toRichText()const {
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(", ");
@@ -324,5 +444,6 @@ QString OEvent::toRichText()const {
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();
@@ -332,5 +453,8 @@ QString OEvent::toRichText()const {
332 return text; 453 return text;
333} 454}
334QString OEvent::toShortText()const { 455
456
457QString OEvent::toShortText() const
458{
335 QString text; 459 QString text;
336 text += QString::number( startDateTime().date().day() ); 460 text += QString::number( startDateTime().date().day() );
@@ -347,21 +471,40 @@ QString OEvent::toShortText()const {
347 return text; 471 return text;
348} 472}
349QString OEvent::type()const { 473
474
475QString OEvent::type() const
476{
350 return QString::fromLatin1("OEvent"); 477 return QString::fromLatin1("OEvent");
351} 478}
352QString OEvent::recordField( int /*id */ )const { 479
480
481QString OEvent::recordField( int /*id */ ) const
482{
353 return QString::null; 483 return QString::null;
354} 484}
355int OEvent::rtti() { 485
486
487int OEvent::rtti()
488{
356 return OPimResolver::DateBook; 489 return OPimResolver::DateBook;
357} 490}
358bool OEvent::loadFromStream( QDataStream& ) { 491
492
493bool OEvent::loadFromStream( QDataStream& )
494{
359 return true; 495 return true;
360} 496}
361bool OEvent::saveToStream( QDataStream& )const { 497
498
499bool OEvent::saveToStream( QDataStream& ) const
500{
362 return true; 501 return true;
363} 502}
364void OEvent::changeOrModify() { 503
365 if ( data->count != 1 ) { 504
505void 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;
@@ -383,5 +526,6 @@ void OEvent::changeOrModify() {
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();
@@ -391,6 +535,10 @@ void OEvent::changeOrModify() {
391 } 535 }
392} 536}
393void OEvent::deref() { 537
394 if ( data->deref() ) { 538
539void OEvent::deref()
540{
541 if ( data->deref() )
542 {
395 delete data; 543 delete data;
396 data = 0; 544 data = 0;
@@ -402,5 +550,6 @@ void OEvent::deref() {
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)
404QMap<int, QString> OEvent::toMap()const { 552QMap<int, QString> OEvent::toMap() const
553{
405 QMap<int, QString> retMap; 554 QMap<int, QString> retMap;
406 555
@@ -421,8 +570,10 @@ QMap<int, QString> OEvent::toMap()const {
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] );
@@ -432,5 +583,6 @@ QMap<int, QString> OEvent::toMap()const {
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();
@@ -443,5 +595,7 @@ QMap<int, QString> OEvent::toMap()const {
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();
@@ -452,4 +606,5 @@ QMap<int, QString> OEvent::toMap()const {
452} 606}
453 607
608
454void OEvent::fromMap( const QMap<int, QString>& map ) 609void OEvent::fromMap( const QMap<int, QString>& map )
455{ 610{
@@ -473,10 +628,12 @@ void OEvent::fromMap( const QMap<int, QString>& map )
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 }
@@ -486,10 +643,13 @@ void OEvent::fromMap( const QMap<int, QString>& map )
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 );
@@ -506,7 +666,9 @@ void OEvent::fromMap( const QMap<int, QString>& map )
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 }
@@ -514,5 +676,6 @@ void OEvent::fromMap( const QMap<int, QString>& map )
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] );
@@ -531,17 +694,27 @@ void OEvent::fromMap( const QMap<int, QString>& map )
531 694
532 695
533int OEvent::parent()const { 696int OEvent::parent() const
697{
534 return data->parent; 698 return data->parent;
535} 699}
536void OEvent::setParent( int uid ) { 700
701
702void OEvent::setParent( int uid )
703{
537 changeOrModify(); 704 changeOrModify();
538 data->parent = uid; 705 data->parent = uid;
539} 706}
540QArray<int> OEvent::children() const{ 707
708
709QArray<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}
545void OEvent::setChildren( const QArray<int>& arr ) { 715
716
717void 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;
@@ -550,10 +723,16 @@ void OEvent::setChildren( const QArray<int>& arr ) {
550 data->child->detach(); 723 data->child->detach();
551} 724}
552void OEvent::addChild( int uid ) { 725
726
727void 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 );
@@ -561,5 +740,8 @@ void OEvent::addChild( int uid ) {
561 } 740 }
562} 741}
563void OEvent::removeChild( int uid ) { 742
743
744void 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();
@@ -567,6 +749,8 @@ void OEvent::removeChild( int uid ) {
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++;
@@ -575,7 +759,10 @@ void OEvent::removeChild( int uid ) {
575 (*data->child) = newAr; 759 (*data->child) = newAr;
576} 760}
577struct OEffectiveEvent::Data : public QShared { 761
578 Data() : QShared() { 762
579 } 763struct OEffectiveEvent::Data : public QShared
764{
765 Data() : QShared()
766 {}
580 OEvent event; 767 OEvent event;
581 QDate date; 768 QDate date;
@@ -585,5 +772,7 @@ struct OEffectiveEvent::Data : public QShared {
585}; 772};
586 773
587OEffectiveEvent::OEffectiveEvent() { 774
775OEffectiveEvent::OEffectiveEvent()
776{
588 data = new Data; 777 data = new Data;
589 data->date = QDate::currentDate(); 778 data->date = QDate::currentDate();
@@ -591,6 +780,9 @@ OEffectiveEvent::OEffectiveEvent() {
591 data->dates = false; 780 data->dates = false;
592} 781}
782
783
593OEffectiveEvent::OEffectiveEvent( const OEvent& ev, const QDate& startDate, 784OEffectiveEvent::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;
@@ -608,15 +800,25 @@ OEffectiveEvent::OEffectiveEvent( const OEvent& ev, const QDate& startDate,
608 data->dates = false; 800 data->dates = false;
609} 801}
610OEffectiveEvent::OEffectiveEvent( const OEffectiveEvent& ev) { 802
803
804OEffectiveEvent::OEffectiveEvent( const OEffectiveEvent& ev )
805{
611 data = ev.data; 806 data = ev.data;
612 data->ref(); 807 data->ref();
613} 808}
614OEffectiveEvent::~OEffectiveEvent() { 809
615 if ( data->deref() ) { 810
811OEffectiveEvent::~OEffectiveEvent()
812{
813 if ( data->deref() )
814 {
616 delete data; 815 delete data;
617 data = 0; 816 data = 0;
618 } 817 }
619} 818}
620OEffectiveEvent& OEffectiveEvent::operator=( const OEffectiveEvent& ev ) { 819
820
821OEffectiveEvent& OEffectiveEvent::operator=( const OEffectiveEvent& ev )
822{
621 if ( *this == ev ) return *this; 823 if ( *this == ev ) return *this;
622 824
@@ -628,23 +830,38 @@ OEffectiveEvent& OEffectiveEvent::operator=( const OEffectiveEvent& ev ) {
628} 830}
629 831
630void OEffectiveEvent::setStartTime( const QTime& ti) { 832
833void OEffectiveEvent::setStartTime( const QTime& ti )
834{
631 changeOrModify(); 835 changeOrModify();
632 data->start = ti; 836 data->start = ti;
633} 837}
634void OEffectiveEvent::setEndTime( const QTime& en) { 838
839
840void OEffectiveEvent::setEndTime( const QTime& en )
841{
635 changeOrModify(); 842 changeOrModify();
636 data->end = en; 843 data->end = en;
637} 844}
638void OEffectiveEvent::setEvent( const OEvent& ev) { 845
846
847void OEffectiveEvent::setEvent( const OEvent& ev )
848{
639 changeOrModify(); 849 changeOrModify();
640 data->event = ev; 850 data->event = ev;
641} 851}
642void OEffectiveEvent::setDate( const QDate& da) { 852
853
854void OEffectiveEvent::setDate( const QDate& da )
855{
643 changeOrModify(); 856 changeOrModify();
644 data->date = da; 857 data->date = da;
645} 858}
859
860
646void OEffectiveEvent::setEffectiveDates( const QDate& from, 861void 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;
@@ -654,35 +871,65 @@ void OEffectiveEvent::setEffectiveDates( const QDate& from,
654 data->endDate = to; 871 data->endDate = to;
655} 872}
656QString OEffectiveEvent::description()const { 873
874
875QString OEffectiveEvent::description() const
876{
657 return data->event.description(); 877 return data->event.description();
658} 878}
659QString OEffectiveEvent::location()const { 879
880
881QString OEffectiveEvent::location() const
882{
660 return data->event.location(); 883 return data->event.location();
661} 884}
662QString OEffectiveEvent::note()const { 885
886
887QString OEffectiveEvent::note() const
888{
663 return data->event.note(); 889 return data->event.note();
664} 890}
665OEvent OEffectiveEvent::event()const { 891
892
893OEvent OEffectiveEvent::event() const
894{
666 return data->event; 895 return data->event;
667} 896}
668QTime OEffectiveEvent::startTime()const { 897
898
899QTime OEffectiveEvent::startTime() const
900{
669 return data->start; 901 return data->start;
670} 902}
671QTime OEffectiveEvent::endTime()const { 903
904
905QTime OEffectiveEvent::endTime() const
906{
672 return data->end; 907 return data->end;
673} 908}
674QDate OEffectiveEvent::date()const { 909
910
911QDate OEffectiveEvent::date() const
912{
675 return data->date; 913 return data->date;
676} 914}
677int OEffectiveEvent::length()const { 915
916
917int 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}
681int OEffectiveEvent::size()const { 922
923
924int 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}
686QDate OEffectiveEvent::startDate()const { 930
931
932QDate OEffectiveEvent::startDate() const
933{
687 if ( data->dates ) 934 if ( data->dates )
688 return data->startDate; 935 return data->startDate;
@@ -692,5 +939,8 @@ QDate OEffectiveEvent::startDate()const {
692 return data->event.startDateTime().date(); 939 return data->event.startDateTime().date();
693} 940}
694QDate OEffectiveEvent::endDate()const { 941
942
943QDate OEffectiveEvent::endDate() const
944{
695 if ( data->dates ) 945 if ( data->dates )
696 return data->endDate; 946 return data->endDate;
@@ -700,12 +950,20 @@ QDate OEffectiveEvent::endDate()const {
700 return data->event.endDateTime().date(); 950 return data->event.endDateTime().date();
701} 951}
702void OEffectiveEvent::deref() { 952
703 if ( data->deref() ) { 953
954void OEffectiveEvent::deref()
955{
956 if ( data->deref() )
957 {
704 delete data; 958 delete data;
705 data = 0; 959 data = 0;
706 } 960 }
707} 961}
708void OEffectiveEvent::changeOrModify() { 962
709 if ( data->count != 1 ) { 963
964void 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;
@@ -720,5 +978,8 @@ void OEffectiveEvent::changeOrModify() {
720 } 978 }
721} 979}
722bool OEffectiveEvent::operator<( const OEffectiveEvent &e ) const{ 980
981
982bool 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;
@@ -728,8 +989,14 @@ bool OEffectiveEvent::operator<( const OEffectiveEvent &e ) const{
728 return FALSE; 989 return FALSE;
729} 990}
730bool OEffectiveEvent::operator<=( const OEffectiveEvent &e ) const{ 991
992
993bool OEffectiveEvent::operator<=( const OEffectiveEvent &e ) const
994{
731 return (data->date <= e.date() ); 995 return (data->date <= e.date() );
732} 996}
733bool OEffectiveEvent::operator==( const OEffectiveEvent &e ) const { 997
998
999bool 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()
@@ -737,11 +1004,20 @@ bool OEffectiveEvent::operator==( const OEffectiveEvent &e ) const {
737 && event() == e.event() ); 1004 && event() == e.event() );
738} 1005}
739bool OEffectiveEvent::operator!=( const OEffectiveEvent &e ) const { 1006
1007
1008bool OEffectiveEvent::operator!=( const OEffectiveEvent &e ) const
1009{
740 return !(*this == e ); 1010 return !(*this == e );
741} 1011}
742bool OEffectiveEvent::operator>( const OEffectiveEvent &e ) const { 1012
1013
1014bool OEffectiveEvent::operator>( const OEffectiveEvent &e ) const
1015{
743 return !(*this <= e ); 1016 return !(*this <= e );
744} 1017}
745bool OEffectiveEvent::operator>= ( const OEffectiveEvent &e ) const { 1018
1019
1020bool OEffectiveEvent::operator>= ( const OEffectiveEvent &e ) const
1021{
746 return !(*this < e); 1022 return !(*this < e);
747} 1023}
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,5 +1,5 @@
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.
@@ -29,19 +29,22 @@
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
44namespace Opie { 45namespace Opie
45struct OCalendarHelper { 46{
47struct 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& );
@@ -66,5 +69,6 @@ class ORecur;
66 * @short container for events. 69 * @short container for events.
67 */ 70 */
68class OEvent : public OPimRecord { 71class OEvent : public OPimRecord
72{
69public: 73public:
70 typedef QValueList<OEvent> ValueList; 74 typedef QValueList<OEvent> ValueList;
@@ -192,4 +196,5 @@ public:
192 bool operator>=(const OEvent& ); 196 bool operator>=(const OEvent& );
193*/ 197*/
198
194private: 199private:
195 inline void changeOrModify(); 200 inline void changeOrModify();
@@ -205,5 +210,7 @@ private:
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 */
207class OEffectiveEvent { 212class OEffectiveEvent
213{
214
208public: 215public:
209 typedef QValueList<OEffectiveEvent> ValueList; 216 typedef QValueList<OEffectiveEvent> ValueList;
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
@@ -28,13 +28,16 @@
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
38namespace Opie { 37/* QT */
38#include <qarray.h>
39
40namespace Opie
41{
39 42
40class ORecordListIteratorPrivate; 43class ORecordListIteratorPrivate;
@@ -48,6 +51,8 @@ class ORecordListIteratorPrivate;
48template <class T> class ORecordList; 51template <class T> class ORecordList;
49template <class T = OPimRecord> 52template <class T = OPimRecord>
50class ORecordListIterator { 53class ORecordListIterator
54{
51 friend class ORecordList<T>; 55 friend class ORecordList<T>;
56
52public: 57public:
53 typedef OTemplateBase<T> Base; 58 typedef OTemplateBase<T> Base;
@@ -106,4 +111,5 @@ private:
106}; 111};
107 112
113
108class ORecordListPrivate; 114class ORecordListPrivate;
109/** 115/**
@@ -112,5 +118,6 @@ class ORecordListPrivate;
112 */ 118 */
113template <class T = OPimRecord > 119template <class T = OPimRecord >
114class ORecordList { 120class ORecordList
121{
115public: 122public:
116 typedef OTemplateBase<T> Base; 123 typedef OTemplateBase<T> Base;
@@ -120,6 +127,6 @@ public:
120 * c'tor 127 * c'tor
121 */ 128 */
122 ORecordList () { 129 ORecordList ()
123 } 130 {}
124ORecordList( const QArray<int>& ids, 131ORecordList( const QArray<int>& ids,
125 const Base* ); 132 const Base* );
@@ -159,7 +166,9 @@ private:
159}; 166};
160 167
168
161/* ok now implement it */ 169/* ok now implement it */
162template <class T> 170template <class T>
163ORecordListIterator<T>::ORecordListIterator() { 171ORecordListIterator<T>::ORecordListIterator()
172{
164 m_current = 0; 173 m_current = 0;
165 m_temp = 0l; 174 m_temp = 0l;
@@ -169,11 +178,16 @@ ORecordListIterator<T>::ORecordListIterator() {
169 m_direction = TRUE; 178 m_direction = TRUE;
170} 179}
180
181
171template <class T> 182template <class T>
172ORecordListIterator<T>::~ORecordListIterator() { 183ORecordListIterator<T>::~ORecordListIterator()
184{
173/* nothing to delete */ 185/* nothing to delete */
174} 186}
175 187
188
176template <class T> 189template <class T>
177ORecordListIterator<T>::ORecordListIterator( const ORecordListIterator<T>& it) { 190ORecordListIterator<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;
@@ -185,6 +199,8 @@ ORecordListIterator<T>::ORecordListIterator( const ORecordListIterator<T>& it) {
185} 199}
186 200
201
187template <class T> 202template <class T>
188ORecordListIterator<T> &ORecordListIterator<T>::operator=( const ORecordListIterator<T>& it) { 203ORecordListIterator<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;
@@ -196,6 +212,8 @@ ORecordListIterator<T> &ORecordListIterator<T>::operator=( const ORecordListIter
196} 212}
197 213
214
198template <class T> 215template <class T>
199T ORecordListIterator<T>::operator*() { 216T 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 )
@@ -209,22 +227,31 @@ T ORecordListIterator<T>::operator*() {
209} 227}
210 228
229
211template <class T> 230template <class T>
212ORecordListIterator<T> &ORecordListIterator<T>::operator++() { 231ORecordListIterator<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
222template <class T> 246template <class T>
223ORecordListIterator<T> &ORecordListIterator<T>::operator--() { 247ORecordListIterator<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
@@ -232,6 +259,8 @@ ORecordListIterator<T> &ORecordListIterator<T>::operator--() {
232} 259}
233 260
261
234template <class T> 262template <class T>
235bool ORecordListIterator<T>::operator==( const ORecordListIterator<T>& it ) { 263bool 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.... */
@@ -244,8 +273,13 @@ bool ORecordListIterator<T>::operator==( const ORecordListIterator<T>& it ) {
244 return true; 273 return true;
245} 274}
275
276
246template <class T> 277template <class T>
247bool ORecordListIterator<T>::operator!=( const ORecordListIterator<T>& it ) { 278bool ORecordListIterator<T>::operator!=( const ORecordListIterator<T>& it )
279{
248 return !(*this == it ); 280 return !(*this == it );
249} 281}
282
283
250template <class T> 284template <class T>
251ORecordListIterator<T>::ORecordListIterator( const QArray<int> uids, 285ORecordListIterator<T>::ORecordListIterator( const QArray<int> uids,
@@ -258,11 +292,18 @@ ORecordListIterator<T>::ORecordListIterator( const QArray<int> uids,
258 m_end = true; 292 m_end = true;
259} 293}
294
295
260template <class T> 296template <class T>
261uint ORecordListIterator<T>::current()const { 297uint ORecordListIterator<T>::current() const
298{
262 return m_current; 299 return m_current;
263} 300}
301
302
264template <class T> 303template <class T>
265void ORecordListIterator<T>::setCurrent( uint cur ) { 304void 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;
@@ -270,24 +311,35 @@ void ORecordListIterator<T>::setCurrent( uint cur ) {
270} 311}
271template <class T> 312template <class T>
272uint ORecordListIterator<T>::count()const { 313uint ORecordListIterator<T>::count() const
314{
273 return m_uids.count(); 315 return m_uids.count();
274} 316}
317
318
275template <class T> 319template <class T>
276ORecordList<T>::ORecordList( const QArray<int>& ids, 320ORecordList<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
281template <class T> 326template <class T>
282ORecordList<T>::~ORecordList() { 327ORecordList<T>::~ORecordList()
328{
283/* nothing to do here */ 329/* nothing to do here */
284} 330}
331
332
285template <class T> 333template <class T>
286typename ORecordList<T>::Iterator ORecordList<T>::begin() { 334typename 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
290template <class T> 341template <class T>
291typename ORecordList<T>::Iterator ORecordList<T>::end() { 342typename 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;
@@ -296,10 +348,16 @@ typename ORecordList<T>::Iterator ORecordList<T>::end() {
296 return it; 348 return it;
297} 349}
350
351
298template <class T> 352template <class T>
299uint ORecordList<T>::count()const { 353uint ORecordList<T>::count() const
354{
300return m_ids.count(); 355return m_ids.count();
301} 356}
357
358
302template <class T> 359template <class T>
303T ORecordList<T>::operator[]( uint i ) { 360T ORecordList<T>::operator[] ( uint i )
361{
304 if ( i >= m_ids.count() ) 362 if ( i >= m_ids.count() )
305 return T(); 363 return T();
@@ -307,20 +365,28 @@ T ORecordList<T>::operator[]( uint i ) {
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
309template <class T> 369template <class T>
310int ORecordList<T>::uidAt( uint i ) { 370int ORecordList<T>::uidAt( uint i )
371{
311 return m_ids[i]; 372 return m_ids[i];
312} 373}
313 374
375
314template <class T> 376template <class T>
315bool ORecordList<T>::remove( int uid ) { 377bool 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 }
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
@@ -27,9 +27,13 @@
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>
@@ -39,17 +43,15 @@
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> 49namespace 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
50namespace Opie {
51 51
52struct OTodo::OTodoData : public QShared { 52struct OTodo::OTodoData : public QShared
53 OTodoData() : QShared() { 53{
54 OTodoData() : QShared()
55 {
54 recur = 0; 56 recur = 0;
55 state = 0; 57 state = 0;
@@ -57,5 +59,6 @@ struct OTodo::OTodoData : public QShared {
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;
@@ -79,4 +82,5 @@ struct OTodo::OTodoData : public QShared {
79}; 82};
80 83
84
81OTodo::OTodo(const OTodo &event ) 85OTodo::OTodo(const OTodo &event )
82 : OPimRecord( event ), data( event.data ) 86 : OPimRecord( event ), data( event.data )
@@ -85,8 +89,12 @@ OTodo::OTodo(const OTodo &event )
85// qWarning("ref up"); 89// qWarning("ref up");
86} 90}
87OTodo::~OTodo() { 91
92
93OTodo::~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;
@@ -94,4 +102,6 @@ OTodo::~OTodo() {
94 } 102 }
95} 103}
104
105
96OTodo::OTodo(bool completed, int priority, 106OTodo::OTodo(bool completed, int priority,
97 const QArray<int> &category, 107 const QArray<int> &category,
@@ -115,4 +125,6 @@ OTodo::OTodo(bool completed, int priority,
115 data->desc = Qtopia::simplifyMultiLineSpace(description ); 125 data->desc = Qtopia::simplifyMultiLineSpace(description );
116} 126}
127
128
117OTodo::OTodo(bool completed, int priority, 129OTodo::OTodo(bool completed, int priority,
118 const QStringList &category, 130 const QStringList &category,
@@ -136,16 +148,25 @@ OTodo::OTodo(bool completed, int priority,
136 data->desc = Qtopia::simplifyMultiLineSpace(description ); 148 data->desc = Qtopia::simplifyMultiLineSpace(description );
137} 149}
150
151
138bool OTodo::match( const QRegExp &regExp )const 152bool OTodo::match( const QRegExp &regExp )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;
@@ -153,50 +174,83 @@ bool OTodo::match( const QRegExp &regExp )const
153 return false; 174 return false;
154} 175}
176
177
155bool OTodo::isCompleted() const 178bool OTodo::isCompleted() const
156{ 179{
157 return data->isCompleted; 180 return data->isCompleted;
158} 181}
182
183
159bool OTodo::hasDueDate() const 184bool OTodo::hasDueDate() const
160{ 185{
161 return data->hasDate; 186 return data->hasDate;
162} 187}
163bool OTodo::hasStartDate()const { 188
189
190bool OTodo::hasStartDate() const
191{
164 return data->start.isValid(); 192 return data->start.isValid();
165} 193}
166bool OTodo::hasCompletedDate()const { 194
195
196bool OTodo::hasCompletedDate() const
197{
167 return data->completed.isValid(); 198 return data->completed.isValid();
168} 199}
200
201
169int OTodo::priority()const 202int OTodo::priority()const
170{ 203{
171 return data->priority; 204 return data->priority;
172} 205}
206
207
173QString OTodo::summary() const 208QString OTodo::summary() const
174{ 209{
175 return data->sum; 210 return data->sum;
176} 211}
212
213
177ushort OTodo::progress() const 214ushort OTodo::progress() const
178{ 215{
179 return data->prog; 216 return data->prog;
180} 217}
218
219
181QDate OTodo::dueDate()const 220QDate OTodo::dueDate()const
182{ 221{
183 return data->date; 222 return data->date;
184} 223}
185QDate OTodo::startDate()const { 224
225
226QDate OTodo::startDate() const
227{
186 return data->start; 228 return data->start;
187} 229}
188QDate OTodo::completedDate()const { 230
231
232QDate OTodo::completedDate() const
233{
189 return data->completed; 234 return data->completed;
190} 235}
236
237
191QString OTodo::description()const 238QString OTodo::description()const
192{ 239{
193 return data->desc; 240 return data->desc;
194} 241}
195bool OTodo::hasState() const{ 242
243
244bool 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}
199OPimState OTodo::state()const { 249
200 if (!data->state ) { 250
251OPimState OTodo::state() const
252{
253 if ( !data->state )
254 {
201 OPimState state; 255 OPimState state;
202 return state; 256 return state;
@@ -205,23 +259,37 @@ OPimState OTodo::state()const {
205 return (*data->state); 259 return (*data->state);
206} 260}
207bool OTodo::hasRecurrence()const { 261
262
263bool 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}
211ORecur OTodo::recurrence()const { 268
269
270ORecur 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}
216bool OTodo::hasMaintainer()const { 276
277
278bool 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}
221OPimMaintainer OTodo::maintainer()const { 284
285
286OPimMaintainer 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
226void OTodo::setCompleted( bool completed ) 294void OTodo::setCompleted( bool completed )
227{ 295{
@@ -229,4 +297,6 @@ void OTodo::setCompleted( bool completed )
229 data->isCompleted = completed; 297 data->isCompleted = completed;
230} 298}
299
300
231void OTodo::setHasDueDate( bool hasDate ) 301void OTodo::setHasDueDate( bool hasDate )
232{ 302{
@@ -234,4 +304,6 @@ void OTodo::setHasDueDate( bool hasDate )
234 data->hasDate = hasDate; 304 data->hasDate = hasDate;
235} 305}
306
307
236void OTodo::setDescription(const QString &desc ) 308void OTodo::setDescription(const QString &desc )
237{ 309{
@@ -240,4 +312,6 @@ void OTodo::setDescription(const QString &desc )
240 data->desc = Qtopia::simplifyMultiLineSpace(desc ); 312 data->desc = Qtopia::simplifyMultiLineSpace(desc );
241} 313}
314
315
242void OTodo::setSummary( const QString& sum ) 316void OTodo::setSummary( const QString& sum )
243{ 317{
@@ -245,4 +319,6 @@ void OTodo::setSummary( const QString& sum )
245 data->sum = sum; 319 data->sum = sum;
246} 320}
321
322
247void OTodo::setPriority(int prio ) 323void OTodo::setPriority(int prio )
248{ 324{
@@ -250,4 +326,6 @@ void OTodo::setPriority(int prio )
250 data->priority = prio; 326 data->priority = prio;
251} 327}
328
329
252void OTodo::setDueDate( const QDate& date ) 330void OTodo::setDueDate( const QDate& date )
253{ 331{
@@ -255,13 +333,22 @@ void OTodo::setDueDate( const QDate& date )
255 data->date = date; 333 data->date = date;
256} 334}
257void OTodo::setStartDate( const QDate& date ) { 335
336
337void OTodo::setStartDate( const QDate& date )
338{
258 changeOrModify(); 339 changeOrModify();
259 data->start = date; 340 data->start = date;
260} 341}
261void OTodo::setCompletedDate( const QDate& date ) { 342
343
344void OTodo::setCompletedDate( const QDate& date )
345{
262 changeOrModify(); 346 changeOrModify();
263 data->completed = date; 347 data->completed = date;
264} 348}
265void OTodo::setState( const OPimState& state ) { 349
350
351void OTodo::setState( const OPimState& state )
352{
266 changeOrModify(); 353 changeOrModify();
267 if (data->state ) 354 if (data->state )
@@ -270,5 +357,8 @@ void OTodo::setState( const OPimState& state ) {
270 data->state = new OPimState( state ); 357 data->state = new OPimState( state );
271} 358}
272void OTodo::setRecurrence( const ORecur& rec) { 359
360
361void OTodo::setRecurrence( const ORecur& rec )
362{
273 changeOrModify(); 363 changeOrModify();
274 if (data->recur ) 364 if (data->recur )
@@ -277,5 +367,8 @@ void OTodo::setRecurrence( const ORecur& rec) {
277 data->recur = new ORecur( rec ); 367 data->recur = new ORecur( rec );
278} 368}
279void OTodo::setMaintainer( const OPimMaintainer& pim ) { 369
370
371void OTodo::setMaintainer( const OPimMaintainer& pim )
372{
280 changeOrModify(); 373 changeOrModify();
281 374
@@ -285,4 +378,6 @@ void OTodo::setMaintainer( const OPimMaintainer& pim ) {
285 data->maintainer = new OPimMaintainer( pim ); 378 data->maintainer = new OPimMaintainer( pim );
286} 379}
380
381
287bool OTodo::isOverdue( ) 382bool OTodo::isOverdue( )
288{ 383{
@@ -291,4 +386,6 @@ bool OTodo::isOverdue( )
291 return false; 386 return false;
292} 387}
388
389
293void OTodo::setProgress(ushort progress ) 390void OTodo::setProgress(ushort progress )
294{ 391{
@@ -296,7 +393,12 @@ void OTodo::setProgress(ushort progress )
296 data->prog = progress; 393 data->prog = progress;
297} 394}
298QString OTodo::toShortText() const { 395
396
397QString 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
@@ -309,5 +411,6 @@ QString OTodo::toRichText() const
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 }
@@ -315,5 +418,6 @@ QString OTodo::toRichText() const
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>";
@@ -345,5 +449,6 @@ QString OTodo::toRichText() const
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 );
@@ -367,14 +472,23 @@ QString OTodo::toRichText() const
367 return text; 472 return text;
368} 473}
369bool OTodo::hasNotifiers()const { 474
475
476bool 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}
373OPimNotifyManager& OTodo::notifiers() { 481
482
483OPimNotifyManager& 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}
378const OPimNotifyManager& OTodo::notifiers()const{ 489
490
491const OPimNotifyManager& OTodo::notifiers() const
492{
379 if (!data->notifiers ) 493 if (!data->notifiers )
380 data->notifiers = new OPimNotifyManager; 494 data->notifiers = new OPimNotifyManager;
@@ -383,11 +497,17 @@ const OPimNotifyManager& OTodo::notifiers()const{
383} 497}
384 498
385bool OTodo::operator<( const OTodo &toDoEvent )const{ 499
500bool 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 }
@@ -395,12 +515,18 @@ bool OTodo::operator<( const OTodo &toDoEvent )const{
395 return false; 515 return false;
396} 516}
517
518
397bool OTodo::operator<=(const OTodo &toDoEvent )const 519bool 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 }
@@ -408,12 +534,18 @@ bool OTodo::operator<=(const OTodo &toDoEvent )const
408 return true; 534 return true;
409} 535}
536
537
410bool OTodo::operator>(const OTodo &toDoEvent )const 538bool 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 }
@@ -421,12 +553,18 @@ bool OTodo::operator>(const OTodo &toDoEvent )const
421 return false; 553 return false;
422} 554}
555
556
423bool OTodo::operator>=(const OTodo &toDoEvent )const 557bool 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 }
@@ -434,4 +572,6 @@ bool OTodo::operator>=(const OTodo &toDoEvent )const
434 return true; 572 return true;
435} 573}
574
575
436bool OTodo::operator==(const OTodo &toDoEvent )const 576bool OTodo::operator==(const OTodo &toDoEvent )const
437{ 577{
@@ -448,8 +588,12 @@ bool OTodo::operator==(const OTodo &toDoEvent )const
448 return OPimRecord::operator==( toDoEvent ); 588 return OPimRecord::operator==( toDoEvent );
449} 589}
450void OTodo::deref() { 590
591
592void 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;
@@ -457,4 +601,6 @@ void OTodo::deref() {
457 } 601 }
458} 602}
603
604
459OTodo &OTodo::operator=(const OTodo &item ) 605OTodo &OTodo::operator=(const OTodo &item )
460{ 606{
@@ -470,5 +616,7 @@ OTodo &OTodo::operator=(const OTodo &item )
470} 616}
471 617
472QMap<int, QString> OTodo::toMap() const { 618
619QMap<int, QString> OTodo::toMap() const
620{
473 QMap<int, QString> map; 621 QMap<int, QString> map;
474 622
@@ -493,4 +641,5 @@ QMap<int, QString> OTodo::toMap() const {
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
@@ -498,6 +647,8 @@ QMap<int, QString> OTodo::toMap() const {
498 * right in place 647 * right in place
499 */ 648 */
500void OTodo::changeOrModify() { 649void 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();
@@ -507,4 +658,6 @@ void OTodo::changeOrModify() {
507 } 658 }
508} 659}
660
661
509// WATCHOUT 662// WATCHOUT
510/* 663/*
@@ -512,5 +665,6 @@ void OTodo::changeOrModify() {
512 * be sure to copy it here 665 * be sure to copy it here
513 */ 666 */
514void OTodo::copy( OTodoData* src, OTodoData* dest ) { 667void 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;
@@ -537,12 +691,20 @@ void OTodo::copy( OTodoData* src, OTodoData* dest ) {
537 dest->notifiers = new OPimNotifyManager( *src->notifiers ); 691 dest->notifiers = new OPimNotifyManager( *src->notifiers );
538} 692}
539QString OTodo::type() const { 693
694
695QString OTodo::type() const
696{
540 return QString::fromLatin1("OTodo"); 697 return QString::fromLatin1("OTodo");
541} 698}
542QString OTodo::recordField(int /*id*/ )const { 699
700
701QString OTodo::recordField( int /*id*/ ) const
702{
543 return QString::null; 703 return QString::null;
544} 704}
545 705
546int OTodo::rtti(){ 706
707int OTodo::rtti()
708{
547 return OPimResolver::TodoList; 709 return OPimResolver::TodoList;
548} 710}
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
@@ -27,8 +27,14 @@
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>
@@ -38,11 +44,6 @@
38#include <qvaluelist.h> 44#include <qvaluelist.h>
39 45
40#include <qpe/recordfields.h> 46namespace Opie
41#include <qpe/palmtopuidgen.h> 47{
42
43#include <opie2/opimrecord.h>
44
45
46namespace Opie {
47 48
48class OPimState; 49class OPimState;
@@ -50,5 +51,6 @@ class ORecur;
50class OPimMaintainer; 51class OPimMaintainer;
51class OPimNotifyManager; 52class OPimNotifyManager;
52class OTodo : public OPimRecord { 53class OTodo : public OPimRecord
54{
53public: 55public:
54 typedef QValueList<OTodo> ValueList; 56 typedef QValueList<OTodo> ValueList;
@@ -307,5 +309,8 @@ public:
307 309
308}; 310};
309inline bool OTodo::operator!=(const OTodo &toDoEvent )const { 311
312
313inline bool OTodo::operator!=( const OTodo &toDoEvent ) const
314{
310 return !(*this == toDoEvent); 315 return !(*this == toDoEvent);
311} 316}