summaryrefslogtreecommitdiff
authormickeyl <mickeyl>2004-02-23 13:15:42 (UTC)
committer mickeyl <mickeyl>2004-02-23 13:15:42 (UTC)
commitf9f0c26d9ac94586ffc36efa1b582ece3dbc43cf (patch) (unidiff)
tree4044006e676c78370fdeccf960ea4214f13eabd2
parent2d37d653310da0a9d6e2e2e6c9f5bf092e54cbbb (diff)
downloadopie-f9f0c26d9ac94586ffc36efa1b582ece3dbc43cf.zip
opie-f9f0c26d9ac94586ffc36efa1b582ece3dbc43cf.tar.gz
opie-f9f0c26d9ac94586ffc36efa1b582ece3dbc43cf.tar.bz2
cosmetics
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opiepim/core/opimnotify.cpp251
-rw-r--r--libopie2/opiepim/core/opimnotify.h67
-rw-r--r--libopie2/opiepim/core/opimnotifymanager.cpp240
-rw-r--r--libopie2/opiepim/core/opimnotifymanager.h40
-rw-r--r--libopie2/opiepim/core/opimrecord.cpp141
-rw-r--r--libopie2/opiepim/core/opimrecord.h66
-rw-r--r--libopie2/opiepim/ocontact.cpp749
-rw-r--r--libopie2/opiepim/ocontact.h43
-rw-r--r--libopie2/opiepim/ocontactfields.cpp496
-rw-r--r--libopie2/opiepim/ocontactfields.h32
-rw-r--r--libopie2/opiepim/oevent.cpp870
-rw-r--r--libopie2/opiepim/oevent.h165
-rw-r--r--libopie2/opiepim/orecordlist.h230
-rw-r--r--libopie2/opiepim/otodo.cpp602
-rw-r--r--libopie2/opiepim/otodo.h147
15 files changed, 2491 insertions, 1648 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
@@ -28,11 +28,15 @@
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 }
@@ -44,3 +48,4 @@ struct OPimNotify::Data : public QShared {
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;
@@ -50,4 +55,6 @@ OPimNotify::OPimNotify( const QDateTime& start, int duration, int parent ) {
50} 55}
51OPimNotify::OPimNotify( const OPimNotify& noti) 56
52 : data( noti.data ) 57
58OPimNotify::OPimNotify( const OPimNotify& noti )
59 : data( noti.data )
53{ 60{
@@ -55,4 +62,8 @@ OPimNotify::OPimNotify( const OPimNotify& noti)
55} 62}
56OPimNotify::~OPimNotify() { 63
57 if ( data->deref() ) { 64
65OPimNotify::~OPimNotify()
66{
67 if ( data->deref() )
68 {
58 delete data; 69 delete data;
@@ -62,3 +73,5 @@ OPimNotify::~OPimNotify() {
62 73
63OPimNotify &OPimNotify::operator=( const OPimNotify& noti) { 74
75OPimNotify &OPimNotify::operator=( const OPimNotify& noti )
76{
64 noti.data->ref(); 77 noti.data->ref();
@@ -69,3 +82,6 @@ OPimNotify &OPimNotify::operator=( const OPimNotify& noti) {
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;
@@ -78,18 +94,36 @@ bool OPimNotify::operator==( const OPimNotify& noti ) {
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
92 return QDateTime( data->start.date(), data->start.time().addSecs( data->dur) ); 120
121QDateTime OPimNotify::endTime() const
122{
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();
@@ -97,3 +131,6 @@ void OPimNotify::setDateTime( const QDateTime& time ) {
97} 131}
98void OPimNotify::setDuration( int dur ) { 132
133
134void OPimNotify::setDuration( int dur )
135{
99 copyIntern(); 136 copyIntern();
@@ -101,3 +138,6 @@ void OPimNotify::setDuration( int dur ) {
101} 138}
102void OPimNotify::setParent( int uid ) { 139
140
141void OPimNotify::setParent( int uid )
142{
103 copyIntern(); 143 copyIntern();
@@ -105,3 +145,6 @@ void OPimNotify::setParent( int uid ) {
105} 145}
106void OPimNotify::setService( const QString& str ) { 146
147
148void OPimNotify::setService( const QString& str )
149{
107 copyIntern(); 150 copyIntern();
@@ -109,4 +152,8 @@ void OPimNotify::setService( const QString& 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();
@@ -114,3 +161,3 @@ void OPimNotify::copyIntern() {
114 dat->start = data->start; 161 dat->start = data->start;
115 dat->dur = data->dur; 162 dat->dur = data->dur;
116 dat->application = data->application; 163 dat->application = data->application;
@@ -120,4 +167,8 @@ void OPimNotify::copyIntern() {
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;
@@ -127,5 +178,8 @@ void OPimNotify::deref() {
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;
@@ -135,4 +189,6 @@ struct OPimAlarm::Data : public QShared {
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 )
138{ 194{
@@ -141,4 +197,6 @@ OPimAlarm::OPimAlarm( int sound, const QDateTime& start, int duration, int paren
141} 197}
142OPimAlarm::OPimAlarm( const OPimAlarm& al) 198
143 : OPimNotify(al), data( al.data ) 199
200OPimAlarm::OPimAlarm( const OPimAlarm& al )
201 : OPimNotify( al ), data( al.data )
144{ 202{
@@ -146,4 +204,8 @@ OPimAlarm::OPimAlarm( const OPimAlarm& al)
146} 204}
147OPimAlarm::~OPimAlarm() { 205
148 if ( data->deref() ) { 206
207OPimAlarm::~OPimAlarm()
208{
209 if ( data->deref() )
210 {
149 delete data; 211 delete data;
@@ -152,3 +214,5 @@ OPimAlarm::~OPimAlarm() {
152} 214}
153OPimAlarm &OPimAlarm::operator=( const OPimAlarm& al) 215
216
217OPimAlarm &OPimAlarm::operator=( const OPimAlarm& al )
154{ 218{
@@ -163,3 +227,6 @@ OPimAlarm &OPimAlarm::operator=( const OPimAlarm& al)
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;
@@ -170,12 +237,24 @@ bool OPimAlarm::operator==( const OPimAlarm& al) {
170} 237}
171QString OPimAlarm::type()const { 238
172 return QString::fromLatin1("OPimAlarm"); 239
240QString OPimAlarm::type() const
241{
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();
@@ -183,3 +262,6 @@ void OPimAlarm::setSound( int snd) {
183} 262}
184void OPimAlarm::setFile( const QString& sound ) { 263
264
265void OPimAlarm::setFile( const QString& sound )
266{
185 copyIntern(); 267 copyIntern();
@@ -187,4 +269,8 @@ void OPimAlarm::setFile( const QString& 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;
@@ -193,4 +279,8 @@ void OPimAlarm::deref() {
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();
@@ -198,3 +288,3 @@ void OPimAlarm::copyIntern() {
198 newDat->sound = data->sound; 288 newDat->sound = data->sound;
199 newDat->file = data->file; 289 newDat->file = data->file;
200 data = newDat; 290 data = newDat;
@@ -202,6 +292,9 @@ void OPimAlarm::copyIntern() {
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;
@@ -209,4 +302,6 @@ struct OPimReminder::Data : public QShared {
209}; 302};
210OPimReminder::OPimReminder( int uid, const QDateTime& start, int dur, int parent ) 303
211 : OPimNotify( start, dur, parent ) 304
305OPimReminder::OPimReminder( int uid, const QDateTime& start, int dur, int parent )
306 : OPimNotify( start, dur, parent )
212{ 307{
@@ -215,4 +310,6 @@ OPimReminder::OPimReminder( int uid, const QDateTime& start, int dur, int paren
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 )
218{ 315{
@@ -220,4 +317,7 @@ OPimReminder::OPimReminder( const OPimReminder& rem )
220} 317}
221OPimReminder& OPimReminder::operator=( const OPimReminder& rem) { 318
222 OPimNotify::operator=(rem ); 319
320OPimReminder& OPimReminder::operator=( const OPimReminder& rem )
321{
322 OPimNotify::operator=( rem );
223 323
@@ -229,3 +329,6 @@ OPimReminder& OPimReminder::operator=( const OPimReminder& rem) {
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;
@@ -234,9 +337,18 @@ bool OPimReminder::operator==( const OPimReminder& rem) {
234} 337}
235QString OPimReminder::type()const { 338
236 return QString::fromLatin1("OPimReminder"); 339
340QString OPimReminder::type() const
341{
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();
@@ -244,4 +356,8 @@ void OPimReminder::setRecordUid( int 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;
@@ -250,5 +366,9 @@ void OPimReminder::deref() {
250} 366}
251void OPimReminder::copyIntern() { 367
252 if ( data->count != 1 ) { 368
253 Data* da = new Data; 369void OPimReminder::copyIntern()
370{
371 if ( data->count != 1 )
372 {
373 Data * da = new Data;
254 da->record = data->record; 374 da->record = data->record;
@@ -257,2 +377,3 @@ void OPimReminder::copyIntern() {
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
@@ -28,5 +28,7 @@
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>
@@ -34,4 +36,4 @@
34 36
35 37namespace Opie
36namespace Opie { 38{
37/** 39/**
@@ -49,4 +51,6 @@ namespace Opie {
49 */ 51 */
50class OPimNotify { 52class OPimNotify
51public: 53{
54
55 public:
52 typedef QValueList<OPimNotify> ValueList; 56 typedef QValueList<OPimNotify> ValueList;
@@ -56,10 +60,10 @@ public:
56 60
57 OPimNotify &operator=(const OPimNotify& ); 61 OPimNotify &operator=( const OPimNotify& );
58 bool operator==( const OPimNotify& ); 62 bool operator==( const OPimNotify& );
59 63
60 virtual QString type()const = 0; 64 virtual QString type() const = 0;
61 65
62 /** start date */ 66 /** start date */
63 QDateTime dateTime()const; 67 QDateTime dateTime() const;
64 QString service()const; 68 QString service() const;
65 69
@@ -68,3 +72,3 @@ public:
68 */ 72 */
69 int parent()const; 73 int parent() const;
70 74
@@ -73,3 +77,3 @@ public:
73 */ 77 */
74 int duration()const; 78 int duration() const;
75 79
@@ -78,3 +82,3 @@ public:
78 */ 82 */
79 QDateTime endTime()const; 83 QDateTime endTime() const;
80 84
@@ -82,3 +86,3 @@ public:
82 void setDuration( int dur ); 86 void setDuration( int dur );
83 void setParent(int uid ); 87 void setParent( int uid );
84 void setService( const QString& ); 88 void setService( const QString& );
@@ -86,3 +90,3 @@ public:
86 90
87private: 91 private:
88 inline void copyIntern(); 92 inline void copyIntern();
@@ -102,5 +106,6 @@ private:
102 */ 106 */
103class OPimAlarm : public OPimNotify { 107class OPimAlarm : public OPimNotify
104public: 108{
105 enum Sound{Loud=1, Silent=0, Custom=2 }; 109 public:
110 enum Sound{Loud = 1, Silent = 0, Custom = 2 };
106 OPimAlarm( int sound = Silent, const QDateTime& start = QDateTime(), int duration = 0, int parent = 0 ); 111 OPimAlarm( int sound = Silent, const QDateTime& start = QDateTime(), int duration = 0, int parent = 0 );
@@ -111,6 +116,6 @@ public:
111 bool operator==( const OPimAlarm& ); 116 bool operator==( const OPimAlarm& );
112 QString type()const; 117 QString type() const;
113 118
114 int sound()const; 119 int sound() const;
115 QString file()const; 120 QString file() const;
116 121
@@ -120,3 +125,3 @@ public:
120 125
121private: 126 private:
122 void deref(); 127 void deref();
@@ -137,5 +142,5 @@ private:
137 */ 142 */
138class OPimReminder : public OPimNotify { 143class OPimReminder : public OPimNotify
139public: 144{
140 145 public:
141 /** 146 /**
@@ -147,8 +152,8 @@ public:
147 */ 152 */
148 OPimReminder( int uid = 0, const QDateTime& start = QDateTime(), 153 OPimReminder( int uid = 0, const QDateTime& start = QDateTime(),
149 int duration = 0, int parent = 0 ); 154 int duration = 0, int parent = 0 );
150 OPimReminder( const OPimReminder& ); 155 OPimReminder( const OPimReminder& );
151 OPimReminder &operator=(const OPimReminder& ); 156 OPimReminder &operator=( const OPimReminder& );
152 157
153 QString type()const; 158 QString type() const;
154 159
@@ -160,6 +165,6 @@ public:
160 */ 165 */
161 int recordUid()const; 166 int recordUid() const;
162 void setRecordUid( int uid ); 167 void setRecordUid( int uid );
163 168
164private: 169 private:
165 void deref(); 170 void deref();
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
@@ -28,22 +28,34 @@
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{
45 const OPimReminder& rem = static_cast<const OPimReminder&>(noti); 53 if ( noti.type() == QString::fromLatin1( "OPimReminder" ) )
54 {
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 }
48 const OPimAlarm& al = static_cast<const OPimAlarm&>(noti); 58 else if ( noti.type() == QString::fromLatin1( "OPimAlarm" ) )
59 {
60 const OPimAlarm & al = static_cast<const OPimAlarm&>( noti );
49 m_al.append( al ); 61 m_al.append( al );
@@ -51,8 +63,14 @@ void OPimNotifyManager::add( const OPimNotify& noti) {
51} 63}
52void OPimNotifyManager::remove( const OPimNotify& noti) { 64
53 if ( noti.type() == QString::fromLatin1("OPimReminder") ) { 65
54 const OPimReminder& rem = static_cast<const OPimReminder&>(noti); 66void OPimNotifyManager::remove( const OPimNotify& noti )
67{
68 if ( noti.type() == QString::fromLatin1( "OPimReminder" ) )
69 {
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 }
57 const OPimAlarm& al = static_cast<const OPimAlarm&>(noti); 73 else if ( noti.type() == QString::fromLatin1( "OPimAlarm" ) )
74 {
75 const OPimAlarm & al = static_cast<const OPimAlarm&>( noti );
58 m_al.remove( al ); 76 m_al.remove( al );
@@ -60,9 +78,15 @@ void OPimNotifyManager::remove( const OPimNotify& noti) {
60} 78}
61void OPimNotifyManager::replace( const OPimNotify& noti) { 79
62 if ( noti.type() == QString::fromLatin1("OPimReminder") ) { 80
63 const OPimReminder& rem = static_cast<const OPimReminder&>(noti); 81void OPimNotifyManager::replace( const OPimNotify& noti )
82{
83 if ( noti.type() == QString::fromLatin1( "OPimReminder" ) )
84 {
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 }
67 const OPimAlarm& al = static_cast<const OPimAlarm&>(noti); 89 else if ( noti.type() == QString::fromLatin1( "OPimAlarm" ) )
90 {
91 const OPimAlarm & al = static_cast<const OPimAlarm&>( noti );
68 m_al.remove( al ); 92 m_al.remove( al );
@@ -71,21 +95,31 @@ void OPimNotifyManager::replace( const OPimNotify& noti) {
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 {
79 Alarms::ConstIterator it;
80 found = true;
81 108
82 for ( it = m_al.begin(); it != m_al.end(); ++it ){
83 if ( (*it).dateTime() == when )
84 return (*it);
85 }
86 109
87 // Fall through if nothing could be found 110OPimAlarm OPimNotifyManager::alarmAtDateTime( const QDateTime& when, bool& found ) const
88 found = false; 111{
89 OPimAlarm empty; 112 Alarms::ConstIterator it;
90 return empty; 113 found = true;
114
115 for ( it = m_al.begin(); it != m_al.end(); ++it )
116 {
117 if ( ( *it ).dateTime() == when )
118 return ( *it );
119 }
120
121 // Fall through if nothing could be found
122 found = false;
123 OPimAlarm empty;
124 return empty;
91} 125}
@@ -93,8 +127,14 @@ OPimAlarm OPimNotifyManager::alarmAtDateTime( const QDateTime& when, bool& found
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!!! */
@@ -107,5 +147,7 @@ void OPimNotifyManager::setReminders( const Reminders& rem) {
107 */ 147 */
108void OPimNotifyManager::registerNotify( const OPimNotify& ) { 148void OPimNotifyManager::registerNotify( const OPimNotify& )
109 149{
110} 150}
151
152
111/* FIXME!!! */ 153/* FIXME!!! */
@@ -116,8 +158,10 @@ void OPimNotifyManager::registerNotify( const OPimNotify& ) {
116 */ 158 */
117void OPimNotifyManager::deregister( const OPimNotify& ) { 159void OPimNotifyManager::deregister( const OPimNotify& )
118 160{
119} 161}
120 162
121bool OPimNotifyManager::isEmpty()const { 163
122 qWarning("is Empty called on OPimNotifyManager %d %d", m_rem.count(), m_al.count() ); 164bool OPimNotifyManager::isEmpty() const
165{
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;
@@ -126,58 +170,69 @@ bool OPimNotifyManager::isEmpty()const {
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{
130 QString str; 175 QString str;
131 176
132 OPimNotifyManager::Alarms alarms = m_al; 177 OPimNotifyManager::Alarms alarms = m_al;
133 if ( !alarms.isEmpty() ) { 178 if ( !alarms.isEmpty() )
134 QStringList als; 179 {
135 OPimNotifyManager::Alarms::Iterator it = alarms.begin(); 180 QStringList als;
136 for ( ; it != alarms.end(); ++it ) { 181 OPimNotifyManager::Alarms::Iterator it = alarms.begin();
137 /* only if time is valid */ 182 for ( ; it != alarms.end(); ++it )
138 if ( (*it).dateTime().isValid() ) { 183 {
139 als << OConversion::dateTimeToString( (*it).dateTime() ) 184 /* only if time is valid */
140 + ":" + QString::number( (*it).duration() ) 185 if ( ( *it ).dateTime().isValid() )
141 + ":" + QString::number( (*it).sound() ) 186 {
142 + ":"; 187 als << OConversion::dateTimeToString( ( *it ).dateTime() )
143 } 188 + ":" + QString::number( ( *it ).duration() )
144 } 189 + ":" + QString::number( ( *it ).sound() )
145 // now write the list 190 + ":";
146 qWarning("als: %s", als.join("____________").latin1() ); 191 }
147 str = als.join(";"); 192 }
148 } 193 // now write the list
149 194 qWarning( "als: %s", als.join( "____________" ).latin1() );
150 return str; 195 str = als.join( ";" );
196 }
197
198 return str;
151} 199}
200
201
152QString OPimNotifyManager::remindersToString() const 202QString OPimNotifyManager::remindersToString() const
153{ 203{
154 QString str; 204 QString str;
155 205
156 OPimNotifyManager::Reminders reminders = m_rem; 206 OPimNotifyManager::Reminders reminders = m_rem;
157 if (!reminders.isEmpty() ) { 207 if ( !reminders.isEmpty() )
158 OPimNotifyManager::Reminders::Iterator it = reminders.begin(); 208 {
159 QStringList records; 209 OPimNotifyManager::Reminders::Iterator it = reminders.begin();
160 for ( ; it != reminders.end(); ++it ) { 210 QStringList records;
161 records << QString::number( (*it).recordUid() ); 211 for ( ; it != reminders.end(); ++it )
162 } 212 {
163 str = records.join(";"); 213 records << QString::number( ( *it ).recordUid() );
164 } 214 }
215 str = records.join( ";" );
216 }
165 217
166 return str; 218 return str;
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 )
173 QStringList alarm = QStringList::split(":", (*it), TRUE ); // allow empty 226 {
174 qWarning("alarm: %s", alarm.join("___").latin1() ); 227 QStringList alarm = QStringList::split( ":", ( *it ), TRUE ); // allow empty
175 qWarning("alarm[0]: %s %s", alarm[0].latin1(), 228 qWarning( "alarm: %s", alarm.join( "___" ).latin1() );
176 OConversion::dateTimeFromString( alarm[0] ).toString().latin1() ); 229 qWarning( "alarm[0]: %s %s", alarm[ 0 ].latin1(),
177 OPimAlarm al( alarm[2].toInt(), OConversion::dateTimeFromString( alarm[0] ), 230 OConversion::dateTimeFromString( alarm[ 0 ] ).toString().latin1() );
178 alarm[1].toInt() ); 231 OPimAlarm al( alarm[ 2 ].toInt(), OConversion::dateTimeFromString( alarm[ 0 ] ),
179 add( al ); 232 alarm[ 1 ].toInt() );
180 } 233 add( al );
234 }
181} 235}
182 236
237
183void OPimNotifyManager::remindersFromString( const QString& str ) 238void OPimNotifyManager::remindersFromString( const QString& str )
@@ -185,8 +240,9 @@ void OPimNotifyManager::remindersFromString( const QString& str )
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 )
188 OPimReminder rem( (*it).toInt() ); 243 {
189 add( rem ); 244 OPimReminder rem( ( *it ).toInt() );
190 } 245 add( rem );
191 246 }
247
192} 248}
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
@@ -28,10 +28,13 @@
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/**
@@ -39,6 +42,7 @@ namespace Opie {
39 */ 42 */
40class OPimNotifyManager { 43class OPimNotifyManager
41public: 44{
45 public:
42 typedef QValueList<OPimReminder> Reminders; 46 typedef QValueList<OPimReminder> Reminders;
43 typedef QValueList<OPimAlarm> Alarms; 47 typedef QValueList<OPimAlarm> Alarms;
44 OPimNotifyManager( const Reminders& rems = Reminders(), const Alarms& alarms = Alarms() ); 48 OPimNotifyManager( const Reminders& rems = Reminders(), const Alarms& alarms = Alarms() );
@@ -52,8 +56,8 @@ public:
52 56
53 Reminders reminders()const; 57 Reminders reminders() const;
54 58
55 /** 59 /**
56 * Return 60 * Return
57 */ 61 */
58 Alarms alarms()const; 62 Alarms alarms() const;
59 63
@@ -65,3 +69,3 @@ public:
65 * @param found Returns true if anything was found. 69 * @param found Returns true if anything was found.
66 * @return Returns the found alarm at given DateTime. It is empty if found is false 70 * @return Returns the found alarm at given DateTime. It is empty if found is false
67 * (nothing could be found at given date and time) 71 * (nothing could be found at given date and time)
@@ -85,5 +89,5 @@ public:
85 89
86 bool isEmpty()const; 90 bool isEmpty() const;
87 91
88 /** 92 /**
89 * Return all alarms as string 93 * Return all alarms as string
@@ -91,3 +95,3 @@ public:
91 QString alarmsToString() const; 95 QString alarmsToString() const;
92 /** 96 /**
93 * Return all notifiers as string 97 * Return all notifiers as string
@@ -97,3 +101,3 @@ public:
97 /** 101 /**
98 * Convert string to alarms 102 * Convert string to alarms
99 * @param str String created by alarmsToString() 103 * @param str String created by alarmsToString()
@@ -108,5 +112,3 @@ public:
108 112
109 113 private:
110
111private:
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
@@ -28,4 +28,6 @@
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>
@@ -33,5 +35,7 @@
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 );
@@ -40,3 +44,4 @@ Qtopia::UidGen OPimRecord::m_uidGen( Qtopia::UidGen::Qtopia );
40OPimRecord::OPimRecord( int uid ) 44OPimRecord::OPimRecord( int uid )
41 : Qtopia::Record() { 45 : Qtopia::Record()
46{
42 47
@@ -45,12 +50,18 @@ OPimRecord::OPimRecord( int 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 )
50{ 59{
51 (*this) = rec; 60 ( *this ) = rec;
52} 61}
53 62
54OPimRecord &OPimRecord::operator=( const OPimRecord& rec) { 63
55 if ( this == &rec ) return *this; 64OPimRecord &OPimRecord::operator=( const OPimRecord& rec )
65{
66 if ( this == &rec ) return * this;
56 67
@@ -60,4 +71,6 @@ OPimRecord &OPimRecord::operator=( const OPimRecord& rec) {
60 71
61 return *this; 72 return *this;
62} 73}
74
75
63/* 76/*
@@ -65,3 +78,4 @@ OPimRecord &OPimRecord::operator=( const OPimRecord& rec) {
65 */ 78 */
66QStringList OPimRecord::categoryNames( const QString& appname ) const { 79QStringList OPimRecord::categoryNames( const QString& appname ) const
80{
67 QStringList list; 81 QStringList list;
@@ -71,4 +85,5 @@ QStringList OPimRecord::categoryNames( const QString& appname ) const {
71 85
72 for (uint i = 0; i < cats.count(); i++ ) { 86 for ( uint i = 0; i < cats.count(); i++ )
73 list << catDB.label( appname, cats[i] ); 87 {
88 list << catDB.label( appname, cats[ i ] );
74 } 89 }
@@ -77,6 +92,11 @@ QStringList OPimRecord::categoryNames( const QString& appname ) const {
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;
@@ -86,5 +106,10 @@ void OPimRecord::addCategoryName( const QString& ) {
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 {
@@ -104,4 +129,5 @@ bool OPimRecord::isEmpty()const {
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 )
106 if ( uid == 1) 131{
132 if ( uid == 1 )
107 uid = uidGen().generate(); 133 uid = uidGen().generate();
@@ -110,9 +136,18 @@ void OPimRecord::setUid( int 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;
@@ -128,3 +163,4 @@ int OPimRecord::rtti(){
128 */ 163 */
129bool OPimRecord::loadFromStream( QDataStream& stream ) { 164bool OPimRecord::loadFromStream( QDataStream& stream )
165{
130 int Int; 166 int Int;
@@ -132,3 +168,3 @@ bool OPimRecord::loadFromStream( QDataStream& stream ) {
132 stream >> Int; 168 stream >> Int;
133 setUid(Int); 169 setUid( Int );
134 170
@@ -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++ )
139 stream >> array[i]; 175 {
176 stream >> array[ i ];
140 } 177 }
@@ -147,3 +184,4 @@ bool OPimRecord::loadFromStream( QDataStream& stream ) {
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 ) );
@@ -155,3 +193,6 @@ bool OPimRecord::loadFromStream( QDataStream& stream ) {
155} 193}
156bool OPimRecord::saveToStream( QDataStream& stream )const { 194
195
196bool OPimRecord::saveToStream( QDataStream& stream ) const
197{
157 /** UIDs */ 198 /** UIDs */
@@ -162,4 +203,5 @@ bool OPimRecord::saveToStream( QDataStream& stream )const {
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++ )
164 stream << categories()[i]; 205 {
206 stream << categories() [ i ];
165 } 207 }
@@ -172,5 +214,6 @@ bool OPimRecord::saveToStream( QDataStream& stream )const {
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 )
174 flush( (*it).partner( OPimXRef::One), stream ); 216 {
175 flush( (*it).partner( OPimXRef::Two), stream ); 217 flush( ( *it ).partner( OPimXRef::One ), stream );
218 flush( ( *it ).partner( OPimXRef::Two ), stream );
176 } 219 }
@@ -178,3 +221,6 @@ bool OPimRecord::saveToStream( QDataStream& stream )const {
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();
@@ -183,3 +229,6 @@ void OPimRecord::flush( const OPimXRefPartner& par, QDataStream& str ) const{
183} 229}
184OPimXRefPartner OPimRecord::partner( QDataStream& stream ) { 230
231
232OPimXRefPartner OPimRecord::partner( QDataStream& stream )
233{
185 OPimXRefPartner par; 234 OPimXRefPartner par;
@@ -199,12 +248,24 @@ OPimXRefPartner OPimRecord::partner( QDataStream& stream ) {
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;
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
@@ -28,10 +28,8 @@
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/*
@@ -43,5 +41,10 @@
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/**
@@ -51,4 +54,5 @@ namespace Opie {
51 */ 54 */
52class OPimRecord : public Qtopia::Record { 55class OPimRecord : public Qtopia::Record
53public: 56{
57 public:
54 /** 58 /**
@@ -58,3 +62,3 @@ public:
58 */ 62 */
59 OPimRecord(int uid = 0); 63 OPimRecord( int uid = 0 );
60 ~OPimRecord(); 64 ~OPimRecord();
@@ -74,3 +78,3 @@ public:
74 */ 78 */
75 QStringList categoryNames( const QString& appname )const; 79 QStringList categoryNames( const QString& appname ) const;
76 80
@@ -91,3 +95,3 @@ public:
91 */ 95 */
92 virtual bool isEmpty()const; 96 virtual bool isEmpty() const;
93 97
@@ -96,3 +100,3 @@ public:
96 */ 100 */
97 virtual QString toRichText()const = 0; 101 virtual QString toRichText() const = 0;
98 102
@@ -101,3 +105,3 @@ public:
101 */ 105 */
102 virtual QString toShortText()const = 0; 106 virtual QString toShortText() const = 0;
103 107
@@ -106,3 +110,3 @@ public:
106 */ 110 */
107 virtual QString type()const = 0; 111 virtual QString type() const = 0;
108 112
@@ -112,4 +116,6 @@ public:
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
@@ -120,3 +126,3 @@ public:
120 */ 126 */
121 int lastHitField()const; 127 int lastHitField() const;
122 128
@@ -125,3 +131,3 @@ public:
125 */ 131 */
126 virtual QMap<int, QString> toMap()const = 0; 132 virtual QMap<int, QString> toMap() const = 0;
127 // virtual fromMap( const <int, QString>& map ) = 0; // Should be added in the future (eilers) 133 // virtual fromMap( const <int, QString>& map ) = 0; // Should be added in the future (eilers)
@@ -131,3 +137,3 @@ public:
131 */ 137 */
132 QMap<QString, QString> toExtraMap()const; 138 QMap<QString, QString> toExtraMap() const;
133 void setExtraMap( const QMap<QString, QString>& ); 139 void setExtraMap( const QMap<QString, QString>& );
@@ -137,3 +143,3 @@ public:
137 */ 143 */
138 virtual QString recordField(int)const = 0; 144 virtual QString recordField( int ) const = 0;
139 145
@@ -163,13 +169,13 @@ public:
163 */ 169 */
164 virtual bool loadFromStream(QDataStream& ); 170 virtual bool loadFromStream( QDataStream& );
165 virtual bool saveToStream( QDataStream& stream )const; 171 virtual bool saveToStream( QDataStream& stream ) const;
166 172
167protected: 173 protected:
168 // need to be const cause it is called from const methods 174 // need to be const cause it is called from const methods
169 mutable int m_lastHit; 175 mutable int m_lastHit;
170 void setLastHitField( int lastHit )const; 176 void setLastHitField( int lastHit ) const;
171 Qtopia::UidGen &uidGen(); 177 Qtopia::UidGen &uidGen();
172// QString crossToString()const; 178 // QString crossToString()const;
173 179
174private: 180 private:
175 class OPimRecordPrivate; 181 class OPimRecordPrivate;
@@ -179,4 +185,4 @@ private:
179 185
180private: 186 private:
181 void flush( const OPimXRefPartner&, QDataStream& stream )const; 187 void flush( const OPimXRefPartner&, QDataStream& stream ) const;
182 OPimXRefPartner partner( QDataStream& ); 188 OPimXRefPartner partner( QDataStream& );
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
@@ -2,3 +2,3 @@
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>
@@ -29,27 +29,9 @@
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>
@@ -58,2 +40,3 @@
58 40
41/* QT */
59#include <qobject.h> 42#include <qobject.h>
@@ -64,2 +47,3 @@
64 47
48/* STD */
65#include <stdio.h> 49#include <stdio.h>
@@ -78,3 +62,4 @@
78 62
79namespace Opie { 63namespace Opie
64{
80/*! 65/*!
@@ -82,6 +67,4 @@ namespace Opie {
82*/ 67*/
83OContact::OContact() 68OContact::OContact():OPimRecord(), mMap(), d( 0 )
84 : OPimRecord(), mMap(), d( 0 ) 69{}
85{
86}
87 70
@@ -92,4 +75,3 @@ OContact::OContact()
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{
@@ -97,3 +79,3 @@ OContact::OContact( const QMap<int, QString> &fromMap ) :
97 if ( !cats.isEmpty() ) 79 if ( !cats.isEmpty() )
98 setCategories( idsFromString( cats ) ); 80 setCategories( idsFromString( cats ) );
99 81
@@ -101,10 +83,12 @@ OContact::OContact( const QMap<int, QString> &fromMap ) :
101 83
102 if ( uidStr.isEmpty() || (uidStr.toInt() == 0) ){ 84 if ( uidStr.isEmpty() || ( uidStr.toInt() == 0 ) )
103 qWarning( "Invalid UID found. Generate new one.." ); 85 {
104 setUid( uidGen().generate() ); 86 qWarning( "Invalid UID found. Generate new one.." );
105 }else 87 setUid( uidGen().generate() );
106 setUid( uidStr.toInt() ); 88 }
89 else
90 setUid( uidStr.toInt() );
107 91
108// if ( !uidStr.isEmpty() ) 92 // if ( !uidStr.isEmpty() )
109 // setUid( uidStr.toInt() ); 93 // setUid( uidStr.toInt() );
110} 94}
@@ -115,4 +99,3 @@ OContact::OContact( const QMap<int, QString> &fromMap ) :
115OContact::~OContact() 99OContact::~OContact()
116{ 100{}
117}
118 101
@@ -457,3 +440,3 @@ QMap<int, QString> OContact::toMap() const
457 if ( !cats.isEmpty() ) 440 if ( !cats.isEmpty() )
458 map.insert( Qtopia::AddressCategory, cats ); 441 map.insert( Qtopia::AddressCategory, cats );
459 return map; 442 return map;
@@ -471,4 +454,4 @@ QString OContact::toRichText() const
471 454
472 Config cfg("qpe"); 455 Config cfg( "qpe" );
473 cfg.setGroup("Appearance"); 456 cfg.setGroup( "Appearance" );
474 int addressformat = cfg.readNumEntry( "AddressFormat", Zip_City_State ); 457 int addressformat = cfg.readNumEntry( "AddressFormat", Zip_City_State );
@@ -476,15 +459,17 @@ QString OContact::toRichText() const
476 // name, jobtitle and company 459 // name, jobtitle and company
477 if ( !(value = fullName()).isEmpty() ) 460 if ( !( value = fullName() ).isEmpty() )
478 text += "<b><h3><img src=\"addressbook/AddressBook\"> " + Qtopia::escapeString(value) + "</h3></b>"; 461 text += "<b><h3><img src=\"addressbook/AddressBook\"> " + Qtopia::escapeString( value ) + "</h3></b>";
479 462
480 if ( !(value = jobTitle()).isEmpty() ) 463 if ( !( value = jobTitle() ).isEmpty() )
481 text += Qtopia::escapeString(value) + " "; 464 text += Qtopia::escapeString( value ) + " ";
482 465
483 comp = company(); 466 comp = company();
484 if ( !(value = department()).isEmpty() ) { 467 if ( !( value = department() ).isEmpty() )
485 text += Qtopia::escapeString(value); 468 {
486 if ( comp ) 469 text += Qtopia::escapeString( value );
487 text += ", " + Qtopia::escapeString(comp); 470 if ( comp )
488 }else if ( comp ) 471 text += ", " + Qtopia::escapeString( comp );
489 text += "<br>" + Qtopia::escapeString(comp); 472 }
473 else if ( comp )
474 text += "<br>" + Qtopia::escapeString( comp );
490 text += "<br><hr>"; 475 text += "<br><hr>";
@@ -493,6 +478,7 @@ QString OContact::toRichText() const
493 QString defEmail = defaultEmail(); 478 QString defEmail = defaultEmail();
494 if ( !defEmail.isEmpty() ){ 479 if ( !defEmail.isEmpty() )
495 text += "<b><img src=\"addressbook/email\"> " + QObject::tr("Default Email: ") + "</b>" 480 {
496 + Qtopia::escapeString(defEmail); 481 text += "<b><img src=\"addressbook/email\"> " + QObject::tr( "Default Email: " ) + "</b>"
497 marker = true; 482 + Qtopia::escapeString( defEmail );
483 marker = true;
498 } 484 }
@@ -501,55 +487,69 @@ QString OContact::toRichText() const
501 if ( !businessStreet().isEmpty() || !businessCity().isEmpty() || 487 if ( !businessStreet().isEmpty() || !businessCity().isEmpty() ||
502 !businessZip().isEmpty() || !businessCountry().isEmpty() ) { 488 !businessZip().isEmpty() || !businessCountry().isEmpty() )
503 text += QObject::tr( "<br><b>Work Address:</b>" ); 489 {
504 marker = true; 490 text += QObject::tr( "<br><b>Work Address:</b>" );
491 marker = true;
505 } 492 }
506 493
507 if ( !(value = businessStreet()).isEmpty() ){ 494 if ( !( value = businessStreet() ).isEmpty() )
508 text += "<br>" + Qtopia::escapeString(value); 495 {
509 marker = true; 496 text += "<br>" + Qtopia::escapeString( value );
497 marker = true;
510 } 498 }
511 499
512 switch( addressformat ){ 500 switch ( addressformat )
513 case Zip_City_State:{ // Zip_Code City, State 501 {
514 state = businessState(); 502 case Zip_City_State:
515 if ( !(value = businessZip()).isEmpty() ){ 503 { // Zip_Code City, State
516 text += "<br>" + Qtopia::escapeString(value) + " "; 504 state = businessState();
517 marker = true; 505 if ( !( value = businessZip() ).isEmpty() )
518 506 {
519 } 507 text += "<br>" + Qtopia::escapeString( value ) + " ";
520 if ( !(value = businessCity()).isEmpty() ) { 508 marker = true;
521 marker = true; 509
522 if ( businessZip().isEmpty() && !businessStreet().isEmpty() ) 510 }
523 text += "<br>"; 511 if ( !( value = businessCity() ).isEmpty() )
524 text += Qtopia::escapeString(value); 512 {
525 if ( state ) 513 marker = true;
526 text += ", " + Qtopia::escapeString(state); 514 if ( businessZip().isEmpty() && !businessStreet().isEmpty() )
527 } else if ( !state.isEmpty() ){ 515 text += "<br>";
528 text += "<br>" + Qtopia::escapeString(state); 516 text += Qtopia::escapeString( value );
529 marker = true; 517 if ( state )
530 } 518 text += ", " + Qtopia::escapeString( state );
531 break; 519 }
532 } 520 else if ( !state.isEmpty() )
533 case City_State_Zip:{ // City, State Zip_Code 521 {
534 state = businessState(); 522 text += "<br>" + Qtopia::escapeString( state );
535 if ( !(value = businessCity()).isEmpty() ) { 523 marker = true;
536 marker = true; 524 }
537 text += "<br>" + Qtopia::escapeString(value); 525 break;
538 if ( state ) 526 }
539 text += ", " + Qtopia::escapeString(state); 527 case City_State_Zip:
540 } else if ( !state.isEmpty() ){ 528 { // City, State Zip_Code
541 text += "<br>" + Qtopia::escapeString(state); 529 state = businessState();
542 marker = true; 530 if ( !( value = businessCity() ).isEmpty() )
543 } 531 {
544 if ( !(value = businessZip()).isEmpty() ){ 532 marker = true;
545 text += " " + Qtopia::escapeString(value); 533 text += "<br>" + Qtopia::escapeString( value );
546 marker = true; 534 if ( state )
547 } 535 text += ", " + Qtopia::escapeString( state );
548 break; 536 }
549 } 537 else if ( !state.isEmpty() )
538 {
539 text += "<br>" + Qtopia::escapeString( state );
540 marker = true;
541 }
542 if ( !( value = businessZip() ).isEmpty() )
543 {
544 text += " " + Qtopia::escapeString( value );
545 marker = true;
546 }
547 break;
548 }
550 } 549 }
551 550
552 if ( !(value = businessCountry()).isEmpty() ){ 551 if ( !( value = businessCountry() ).isEmpty() )
553 text += "<br>" + Qtopia::escapeString(value); 552 {
554 marker = true; 553 text += "<br>" + Qtopia::escapeString( value );
554 marker = true;
555 } 555 }
@@ -558,36 +558,42 @@ QString OContact::toRichText() const
558 str = office(); 558 str = office();
559 if ( !str.isEmpty() ){ 559 if ( !str.isEmpty() )
560 text += "<br><b>" + QObject::tr("Office: ") + "</b>" 560 {
561 + Qtopia::escapeString(str); 561 text += "<br><b>" + QObject::tr( "Office: " ) + "</b>"
562 marker = true; 562 + Qtopia::escapeString( str );
563 marker = true;
563 } 564 }
564 str = businessWebpage(); 565 str = businessWebpage();
565 if ( !str.isEmpty() ){ 566 if ( !str.isEmpty() )
566 text += "<br><b><img src=\"addressbook/webpagework\"> " + QObject::tr("Business Web Page: ") + "</b>" 567 {
567 + Qtopia::escapeString(str); 568 text += "<br><b><img src=\"addressbook/webpagework\"> " + QObject::tr( "Business Web Page: " ) + "</b>"
568 marker = true; 569 + Qtopia::escapeString( str );
570 marker = true;
569 } 571 }
570 str = businessPhone(); 572 str = businessPhone();
571 if ( !str.isEmpty() ){ 573 if ( !str.isEmpty() )
572 text += "<br><b><img src=\"addressbook/phonework\"> " + QObject::tr("Business Phone: ") + "</b>" 574 {
573 + Qtopia::escapeString(str); 575 text += "<br><b><img src=\"addressbook/phonework\"> " + QObject::tr( "Business Phone: " ) + "</b>"
574 marker = true; 576 + Qtopia::escapeString( str );
577 marker = true;
575 } 578 }
576 str = businessFax(); 579 str = businessFax();
577 if ( !str.isEmpty() ){ 580 if ( !str.isEmpty() )
578 text += "<br><b><img src=\"addressbook/faxwork\"> " + QObject::tr("Business Fax: ") + "</b>" 581 {
579 + Qtopia::escapeString(str); 582 text += "<br><b><img src=\"addressbook/faxwork\"> " + QObject::tr( "Business Fax: " ) + "</b>"
580 marker = true; 583 + Qtopia::escapeString( str );
584 marker = true;
581 } 585 }
582 str = businessMobile(); 586 str = businessMobile();
583 if ( !str.isEmpty() ){ 587 if ( !str.isEmpty() )
584 text += "<br><b><img src=\"addressbook/mobilework\"> " + QObject::tr("Business Mobile: ") + "</b>" 588 {
585 + Qtopia::escapeString(str); 589 text += "<br><b><img src=\"addressbook/mobilework\"> " + QObject::tr( "Business Mobile: " ) + "</b>"
586 marker = true; 590 + Qtopia::escapeString( str );
591 marker = true;
587 } 592 }
588 str = businessPager(); 593 str = businessPager();
589 if ( !str.isEmpty() ){ 594 if ( !str.isEmpty() )
590 text += "<br><b>" + QObject::tr("Business Pager: ") + "</b>" 595 {
591 + Qtopia::escapeString(str); 596 text += "<br><b>" + QObject::tr( "Business Pager: " ) + "</b>"
592 marker = true; 597 + Qtopia::escapeString( str );
598 marker = true;
593 } 599 }
@@ -598,54 +604,68 @@ QString OContact::toRichText() const
598 if ( !homeStreet().isEmpty() || !homeCity().isEmpty() || 604 if ( !homeStreet().isEmpty() || !homeCity().isEmpty() ||
599 !homeZip().isEmpty() || !homeCountry().isEmpty() ) { 605 !homeZip().isEmpty() || !homeCountry().isEmpty() )
600 text += QObject::tr( "<br><b>Home Address:</b>" ); 606 {
601 marker = true; 607 text += QObject::tr( "<br><b>Home Address:</b>" );
608 marker = true;
602 } 609 }
603 610
604 if ( !(value = homeStreet()).isEmpty() ){ 611 if ( !( value = homeStreet() ).isEmpty() )
605 text += "<br>" + Qtopia::escapeString(value); 612 {
606 marker = true; 613 text += "<br>" + Qtopia::escapeString( value );
614 marker = true;
607 } 615 }
608 616
609 switch( addressformat ){ 617 switch ( addressformat )
610 case Zip_City_State:{ // Zip_Code City, State 618 {
611 state = homeState(); 619 case Zip_City_State:
612 if ( !(value = homeZip()).isEmpty() ){ 620 { // Zip_Code City, State
613 text += "<br>" + Qtopia::escapeString(value) + " "; 621 state = homeState();
614 marker = true; 622 if ( !( value = homeZip() ).isEmpty() )
615 } 623 {
616 if ( !(value = homeCity()).isEmpty() ) { 624 text += "<br>" + Qtopia::escapeString( value ) + " ";
617 marker = true; 625 marker = true;
618 if ( homeZip().isEmpty() && !homeStreet().isEmpty() ) 626 }
619 text += "<br>"; 627 if ( !( value = homeCity() ).isEmpty() )
620 text += Qtopia::escapeString(value); 628 {
621 if ( !state.isEmpty() ) 629 marker = true;
622 text += ", " + Qtopia::escapeString(state); 630 if ( homeZip().isEmpty() && !homeStreet().isEmpty() )
623 } else if (!state.isEmpty()) { 631 text += "<br>";
624 text += "<br>" + Qtopia::escapeString(state); 632 text += Qtopia::escapeString( value );
625 marker = true; 633 if ( !state.isEmpty() )
626 } 634 text += ", " + Qtopia::escapeString( state );
627 break; 635 }
628 } 636 else if ( !state.isEmpty() )
629 case City_State_Zip:{ // City, State Zip_Code 637 {
630 state = homeState(); 638 text += "<br>" + Qtopia::escapeString( state );
631 if ( !(value = homeCity()).isEmpty() ) { 639 marker = true;
632 marker = true; 640 }
633 text += "<br>" + Qtopia::escapeString(value); 641 break;
634 if ( state ) 642 }
635 text += ", " + Qtopia::escapeString(state); 643 case City_State_Zip:
636 } else if ( !state.isEmpty() ){ 644 { // City, State Zip_Code
637 text += "<br>" + Qtopia::escapeString(state); 645 state = homeState();
638 marker = true; 646 if ( !( value = homeCity() ).isEmpty() )
639 } 647 {
640 if ( !(value = homeZip()).isEmpty() ){ 648 marker = true;
641 text += " " + Qtopia::escapeString(value); 649 text += "<br>" + Qtopia::escapeString( value );
642 marker = true; 650 if ( state )
643 } 651 text += ", " + Qtopia::escapeString( state );
644 break; 652 }
645 } 653 else if ( !state.isEmpty() )
654 {
655 text += "<br>" + Qtopia::escapeString( state );
656 marker = true;
657 }
658 if ( !( value = homeZip() ).isEmpty() )
659 {
660 text += " " + Qtopia::escapeString( value );
661 marker = true;
662 }
663 break;
664 }
646 } 665 }
647 666
648 if ( !(value = homeCountry()).isEmpty() ){ 667 if ( !( value = homeCountry() ).isEmpty() )
649 text += "<br>" + Qtopia::escapeString(value); 668 {
650 marker = true; 669 text += "<br>" + Qtopia::escapeString( value );
670 marker = true;
651 } 671 }
@@ -654,24 +674,28 @@ QString OContact::toRichText() const
654 str = homeWebpage(); 674 str = homeWebpage();
655 if ( !str.isEmpty() ){ 675 if ( !str.isEmpty() )
656 text += "<br><b><img src=\"addressbook/webpagehome\"> " + QObject::tr("Home Web Page: ") + "</b>" 676 {
657 + Qtopia::escapeString(str); 677 text += "<br><b><img src=\"addressbook/webpagehome\"> " + QObject::tr( "Home Web Page: " ) + "</b>"
658 marker = true; 678 + Qtopia::escapeString( str );
679 marker = true;
659 } 680 }
660 str = homePhone(); 681 str = homePhone();
661 if ( !str.isEmpty() ){ 682 if ( !str.isEmpty() )
662 text += "<br><b><img src=\"addressbook/phonehome\"> " + QObject::tr("Home Phone: ") + "</b>" 683 {
663 + Qtopia::escapeString(str); 684 text += "<br><b><img src=\"addressbook/phonehome\"> " + QObject::tr( "Home Phone: " ) + "</b>"
664 marker = true; 685 + Qtopia::escapeString( str );
686 marker = true;
665 } 687 }
666 str = homeFax(); 688 str = homeFax();
667 if ( !str.isEmpty() ){ 689 if ( !str.isEmpty() )
668 text += "<br><b><img src=\"addressbook/faxhome\"> " + QObject::tr("Home Fax: ") + "</b>" 690 {
669 + Qtopia::escapeString(str); 691 text += "<br><b><img src=\"addressbook/faxhome\"> " + QObject::tr( "Home Fax: " ) + "</b>"
670 marker = true; 692 + Qtopia::escapeString( str );
693 marker = true;
671 } 694 }
672 str = homeMobile(); 695 str = homeMobile();
673 if ( !str.isEmpty() ){ 696 if ( !str.isEmpty() )
674 text += "<br><b><img src=\"addressbook/mobilehome\"> " + QObject::tr("Home Mobile: ") + "</b>" 697 {
675 + Qtopia::escapeString(str); 698 text += "<br><b><img src=\"addressbook/mobilehome\"> " + QObject::tr( "Home Mobile: " ) + "</b>"
676 marker = true; 699 + Qtopia::escapeString( str );
700 marker = true;
677 } 701 }
@@ -679,3 +703,3 @@ QString OContact::toRichText() const
679 if ( marker ) 703 if ( marker )
680 text += "<br><hr>"; 704 text += "<br><hr>";
681 705
@@ -684,24 +708,25 @@ QString OContact::toRichText() const
684 if ( !str.isEmpty() && ( str != defEmail ) ) 708 if ( !str.isEmpty() && ( str != defEmail ) )
685 text += "<br><b>" + QObject::tr("All Emails: ") + "</b>" 709 text += "<br><b>" + QObject::tr( "All Emails: " ) + "</b>"
686 + Qtopia::escapeString(str); 710 + Qtopia::escapeString( str );
687 str = profession(); 711 str = profession();
688 if ( !str.isEmpty() ) 712 if ( !str.isEmpty() )
689 text += "<br><b>" + QObject::tr("Profession: ") + "</b>" 713 text += "<br><b>" + QObject::tr( "Profession: " ) + "</b>"
690 + Qtopia::escapeString(str); 714 + Qtopia::escapeString( str );
691 str = assistant(); 715 str = assistant();
692 if ( !str.isEmpty() ) 716 if ( !str.isEmpty() )
693 text += "<br><b>" + QObject::tr("Assistant: ") + "</b>" 717 text += "<br><b>" + QObject::tr( "Assistant: " ) + "</b>"
694 + Qtopia::escapeString(str); 718 + Qtopia::escapeString( str );
695 str = manager(); 719 str = manager();
696 if ( !str.isEmpty() ) 720 if ( !str.isEmpty() )
697 text += "<br><b>" + QObject::tr("Manager: ") + "</b>" 721 text += "<br><b>" + QObject::tr( "Manager: " ) + "</b>"
698 + Qtopia::escapeString(str); 722 + Qtopia::escapeString( str );
699 str = gender(); 723 str = gender();
700 if ( !str.isEmpty() && str.toInt() != 0 ) { 724 if ( !str.isEmpty() && str.toInt() != 0 )
701 text += "<br>"; 725 {
702 if ( str.toInt() == 1 ) 726 text += "<br>";
703 str = QObject::tr( "Male" ); 727 if ( str.toInt() == 1 )
704 else if ( str.toInt() == 2 ) 728 str = QObject::tr( "Male" );
705 str = QObject::tr( "Female" ); 729 else if ( str.toInt() == 2 )
706 text += "<b>" + QObject::tr("Gender: ") + "</b>" + str; 730 str = QObject::tr( "Female" );
731 text += "<b>" + QObject::tr( "Gender: " ) + "</b>" + str;
707 } 732 }
@@ -709,13 +734,15 @@ QString OContact::toRichText() const
709 if ( !str.isEmpty() ) 734 if ( !str.isEmpty() )
710 text += "<br><b>" + QObject::tr("Spouse: ") + "</b>" 735 text += "<br><b>" + QObject::tr( "Spouse: " ) + "</b>"
711 + Qtopia::escapeString(str); 736 + Qtopia::escapeString( str );
712 if ( birthday().isValid() ){ 737 if ( birthday().isValid() )
713 str = TimeString::numberDateString( birthday() ); 738 {
714 text += "<br><b>" + QObject::tr("Birthday: ") + "</b>" 739 str = TimeString::numberDateString( birthday() );
715 + Qtopia::escapeString(str); 740 text += "<br><b>" + QObject::tr( "Birthday: " ) + "</b>"
741 + Qtopia::escapeString( str );
716 } 742 }
717 if ( anniversary().isValid() ){ 743 if ( anniversary().isValid() )
718 str = TimeString::numberDateString( anniversary() ); 744 {
719 text += "<br><b>" + QObject::tr("Anniversary: ") + "</b>" 745 str = TimeString::numberDateString( anniversary() );
720 + Qtopia::escapeString(str); 746 text += "<br><b>" + QObject::tr( "Anniversary: " ) + "</b>"
747 + Qtopia::escapeString( str );
721 } 748 }
@@ -723,4 +750,4 @@ QString OContact::toRichText() const
723 if ( !str.isEmpty() ) 750 if ( !str.isEmpty() )
724 text += "<br><b>" + QObject::tr("Children: ") + "</b>" 751 text += "<br><b>" + QObject::tr( "Children: " ) + "</b>"
725 + Qtopia::escapeString(str); 752 + Qtopia::escapeString( str );
726 753
@@ -728,9 +755,10 @@ QString OContact::toRichText() const
728 if ( !str.isEmpty() ) 755 if ( !str.isEmpty() )
729 text += "<br><b>" + QObject::tr("Nickname: ") + "</b>" 756 text += "<br><b>" + QObject::tr( "Nickname: " ) + "</b>"
730 + Qtopia::escapeString(str); 757 + Qtopia::escapeString( str );
731 758
732 // categories 759 // categories
733 if ( categoryNames("Contacts").count() ){ 760 if ( categoryNames( "Contacts" ).count() )
734 text += "<br><b>" + QObject::tr( "Category:") + "</b> "; 761 {
735 text += categoryNames("Contacts").join(", "); 762 text += "<br><b>" + QObject::tr( "Category:" ) + "</b> ";
763 text += categoryNames( "Contacts" ).join( ", " );
736 } 764 }
@@ -738,10 +766,11 @@ QString OContact::toRichText() const
738 // notes last 766 // notes last
739 if ( !(value = notes()).isEmpty() ) { 767 if ( !( value = notes() ).isEmpty() )
740 text += "<br><hr><b>" + QObject::tr( "Notes:") + "</b> "; 768 {
741 QRegExp reg("\n"); 769 text += "<br><hr><b>" + QObject::tr( "Notes:" ) + "</b> ";
742 770 QRegExp reg( "\n" );
743 //QString tmp = Qtopia::escapeString(value); 771
744 QString tmp = QStyleSheet::convertFromPlainText(value); 772 //QString tmp = Qtopia::escapeString(value);
745 //tmp.replace( reg, "<br>" ); 773 QString tmp = QStyleSheet::convertFromPlainText( value );
746 text += "<br>" + tmp + "<br>"; 774 //tmp.replace( reg, "<br>" );
775 text += "<br>" + tmp + "<br>";
747 } 776 }
@@ -757,5 +786,5 @@ void OContact::insert( int key, const QString &v )
757 if ( value.isEmpty() ) 786 if ( value.isEmpty() )
758 mMap.remove( key ); 787 mMap.remove( key );
759 else 788 else
760 mMap.insert( key, value ); 789 mMap.insert( key, value );
761} 790}
@@ -769,5 +798,5 @@ void OContact::replace( int key, const QString & v )
769 if ( value.isEmpty() ) 798 if ( value.isEmpty() )
770 mMap.remove( key ); 799 mMap.remove( key );
771 else 800 else
772 mMap.replace( key, value ); 801 mMap.replace( key, value );
773} 802}
@@ -779,3 +808,3 @@ QString OContact::find( int key ) const
779{ 808{
780 return mMap[key]; 809 return mMap[ key ];
781} 810}
@@ -786,6 +815,6 @@ QString OContact::find( int key ) const
786QString OContact::displayAddress( const QString &street, 815QString OContact::displayAddress( const QString &street,
787 const QString &city, 816 const QString &city,
788 const QString &state, 817 const QString &state,
789 const QString &zip, 818 const QString &zip,
790 const QString &country ) const 819 const QString &country ) const
791{ 820{
@@ -793,12 +822,12 @@ QString OContact::displayAddress( const QString &street,
793 if ( !street.isEmpty() ) 822 if ( !street.isEmpty() )
794 s+= "\n"; 823 s += "\n";
795 s += city; 824 s += city;
796 if ( !city.isEmpty() && !state.isEmpty() ) 825 if ( !city.isEmpty() && !state.isEmpty() )
797 s += ", "; 826 s += ", ";
798 s += state; 827 s += state;
799 if ( !state.isEmpty() && !zip.isEmpty() ) 828 if ( !state.isEmpty() && !zip.isEmpty() )
800 s += " "; 829 s += " ";
801 s += zip; 830 s += zip;
802 if ( !country.isEmpty() && !s.isEmpty() ) 831 if ( !country.isEmpty() && !s.isEmpty() )
803 s += "\n"; 832 s += "\n";
804 s += country; 833 s += country;
@@ -813,4 +842,4 @@ QString OContact::displayBusinessAddress() const
813 return displayAddress( businessStreet(), businessCity(), 842 return displayAddress( businessStreet(), businessCity(),
814 businessState(), businessZip(), 843 businessState(), businessZip(),
815 businessCountry() ); 844 businessCountry() );
816} 845}
@@ -823,4 +852,4 @@ QString OContact::displayHomeAddress() const
823 return displayAddress( homeStreet(), homeCity(), 852 return displayAddress( homeStreet(), homeCity(),
824 homeState(), homeZip(), 853 homeState(), homeZip(),
825 homeCountry() ); 854 homeCountry() );
826} 855}
@@ -839,21 +868,25 @@ QString OContact::fullName() const
839 QString name = title; 868 QString name = title;
840 if ( !firstName.isEmpty() ) { 869 if ( !firstName.isEmpty() )
841 if ( !name.isEmpty() ) 870 {
842 name += " "; 871 if ( !name.isEmpty() )
843 name += firstName; 872 name += " ";
873 name += firstName;
844 } 874 }
845 if ( !middleName.isEmpty() ) { 875 if ( !middleName.isEmpty() )
846 if ( !name.isEmpty() ) 876 {
847 name += " "; 877 if ( !name.isEmpty() )
848 name += middleName; 878 name += " ";
879 name += middleName;
849 } 880 }
850 if ( !lastName.isEmpty() ) { 881 if ( !lastName.isEmpty() )
851 if ( !name.isEmpty() ) 882 {
852 name += " "; 883 if ( !name.isEmpty() )
853 name += lastName; 884 name += " ";
885 name += lastName;
854 } 886 }
855 if ( !suffix.isEmpty() ) { 887 if ( !suffix.isEmpty() )
856 if ( !name.isEmpty() ) 888 {
857 name += " "; 889 if ( !name.isEmpty() )
858 name += suffix; 890 name += " ";
891 name += suffix;
859 } 892 }
@@ -902,7 +935,8 @@ QStringList OContact::emailList() const
902 QStringList r; 935 QStringList r;
903 if ( !emailStr.isEmpty() ) { 936 if ( !emailStr.isEmpty() )
904 qDebug(" emailstr "); 937 {
905 QStringList l = QStringList::split( emailSeparator(), emailStr ); 938 qDebug( " emailstr " );
906 for ( QStringList::ConstIterator it = l.begin();it != l.end();++it ) 939 QStringList l = QStringList::split( emailSeparator(), emailStr );
907 r += (*it).simplifyWhiteSpace(); 940 for ( QStringList::ConstIterator it = l.begin();it != l.end();++it )
941 r += ( *it ).simplifyWhiteSpace();
908 } 942 }
@@ -926,11 +960,11 @@ void OContact::setFileAs()
926 if ( !lastName.isEmpty() && !firstName.isEmpty() 960 if ( !lastName.isEmpty() && !firstName.isEmpty()
927 && !middleName.isEmpty() ) 961 && !middleName.isEmpty() )
928 fileas = lastName + ", " + firstName + " " + middleName; 962 fileas = lastName + ", " + firstName + " " + middleName;
929 else if ( !lastName.isEmpty() && !firstName.isEmpty() ) 963 else if ( !lastName.isEmpty() && !firstName.isEmpty() )
930 fileas = lastName + ", " + firstName; 964 fileas = lastName + ", " + firstName;
931 else if ( !lastName.isEmpty() || !firstName.isEmpty() || 965 else if ( !lastName.isEmpty() || !firstName.isEmpty() ||
932 !middleName.isEmpty() ) 966 !middleName.isEmpty() )
933 fileas = firstName + ( firstName.isEmpty() ? "" : " " ) 967 fileas = firstName + ( firstName.isEmpty() ? "" : " " )
934 + middleName + ( middleName.isEmpty() ? "" : " " ) 968 + middleName + ( middleName.isEmpty() ? "" : " " )
935 + lastName; 969 + lastName;
936 970
@@ -948,13 +982,15 @@ void OContact::save( QString &buf ) const
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 )
950 const QString &value = it.data(); 984 {
951 int key = it.key(); 985 const QString &value = it.data();
952 if ( !value.isEmpty() ) { 986 int key = it.key();
953 if ( key == Qtopia::AddressCategory || key == Qtopia::AddressUid) 987 if ( !value.isEmpty() )
954 continue; 988 {
955 989 if ( key == Qtopia::AddressCategory || key == Qtopia::AddressUid )
956 key -= Qtopia::AddressCategory+1; 990 continue;
957 buf += SLFIELDS[key]; 991
958 buf += "=\"" + Qtopia::escapeString(value) + "\" "; 992 key -= Qtopia::AddressCategory + 1;
959 } 993 buf += SLFIELDS[ key ];
994 buf += "=\"" + Qtopia::escapeString( value ) + "\" ";
995 }
960 } 996 }
@@ -962,3 +998,3 @@ void OContact::save( QString &buf ) const
962 if ( categories().count() > 0 ) 998 if ( categories().count() > 0 )
963 buf += "Categories=\"" + idsToString( categories() ) + "\" "; 999 buf += "Categories=\"" + idsToString( categories() ) + "\" ";
964 buf += "Uid=\"" + QString::number( uid() ) + "\" "; 1000 buf += "Uid=\"" + QString::number( uid() ) + "\" ";
@@ -1063,8 +1099,10 @@ bool OContact::match( const QRegExp &r ) const
1063 QMap<int, QString>::ConstIterator it; 1099 QMap<int, QString>::ConstIterator it;
1064 for ( it = mMap.begin(); it != mMap.end(); ++it ) { 1100 for ( it = mMap.begin(); it != mMap.end(); ++it )
1065 if ( (*it).find( r ) > -1 ) { 1101 {
1102 if ( ( *it ).find( r ) > -1 )
1103 {
1066 setLastHitField( it.key() ); 1104 setLastHitField( it.key() );
1067 match = true; 1105 match = true;
1068 break; 1106 break;
1069 } 1107 }
1070 } 1108 }
@@ -1076,7 +1114,9 @@ QString OContact::toShortText() const
1076{ 1114{
1077 return ( fullName() ); 1115 return ( fullName() );
1078} 1116}
1117
1118
1079QString OContact::type() const 1119QString OContact::type() const
1080{ 1120{
1081 return QString::fromLatin1( "OContact" ); 1121 return QString::fromLatin1( "OContact" );
1082} 1122}
@@ -1084,7 +1124,6 @@ QString OContact::type() const
1084 1124
1085
1086class QString OContact::recordField( int pos ) const 1125class QString OContact::recordField( int pos ) const
1087{ 1126{
1088 QStringList SLFIELDS = fields(); // ?? why this ? (se) 1127 QStringList SLFIELDS = fields(); // ?? why this ? (se)
1089 return SLFIELDS[pos]; 1128 return SLFIELDS[ pos ];
1090} 1129}
@@ -1101,10 +1140,11 @@ void OContact::setBirthday( const QDate &v )
1101{ 1140{
1102 if ( v.isNull() ){ 1141 if ( v.isNull() )
1103 qWarning( "Remove Birthday"); 1142 {
1104 replace( Qtopia::Birthday, QString::null ); 1143 qWarning( "Remove Birthday" );
1105 return; 1144 replace( Qtopia::Birthday, QString::null );
1106 } 1145 return ;
1146 }
1107 1147
1108 if ( v.isValid() ) 1148 if ( v.isValid() )
1109 replace( Qtopia::Birthday, OConversion::dateToString( v ) ); 1149 replace( Qtopia::Birthday, OConversion::dateToString( v ) );
1110 1150
@@ -1119,12 +1159,14 @@ void OContact::setAnniversary( const QDate &v )
1119{ 1159{
1120 if ( v.isNull() ){ 1160 if ( v.isNull() )
1121 qWarning( "Remove Anniversary"); 1161 {
1122 replace( Qtopia::Anniversary, QString::null ); 1162 qWarning( "Remove Anniversary" );
1123 return; 1163 replace( Qtopia::Anniversary, QString::null );
1124 } 1164 return ;
1125 1165 }
1126 if ( v.isValid() ) 1166
1127 replace( Qtopia::Anniversary, OConversion::dateToString( v ) ); 1167 if ( v.isValid() )
1168 replace( Qtopia::Anniversary, OConversion::dateToString( v ) );
1128} 1169}
1129 1170
1171
1130/*! \fn QDate OContact::birthday() const 1172/*! \fn QDate OContact::birthday() const
@@ -1134,8 +1176,8 @@ QDate OContact::birthday() const
1134{ 1176{
1135 QString str = find( Qtopia::Birthday ); 1177 QString str = find( Qtopia::Birthday );
1136 // qWarning ("Birthday %s", str.latin1() ); 1178 // qWarning ("Birthday %s", str.latin1() );
1137 if ( !str.isEmpty() ) 1179 if ( !str.isEmpty() )
1138 return OConversion::dateFromString ( str ); 1180 return OConversion::dateFromString ( str );
1139 else 1181 else
1140 return QDate(); 1182 return QDate();
1141} 1183}
@@ -1148,9 +1190,9 @@ QDate OContact::anniversary() const
1148{ 1190{
1149 QDate empty; 1191 QDate empty;
1150 QString str = find( Qtopia::Anniversary ); 1192 QString str = find( Qtopia::Anniversary );
1151 // qWarning ("Anniversary %s", str.latin1() ); 1193 // qWarning ("Anniversary %s", str.latin1() );
1152 if ( !str.isEmpty() ) 1194 if ( !str.isEmpty() )
1153 return OConversion::dateFromString ( str ); 1195 return OConversion::dateFromString ( str );
1154 else 1196 else
1155 return empty; 1197 return empty;
1156} 1198}
@@ -1165,5 +1207,6 @@ void OContact::insertEmail( const QString &v )
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() )
1167 setDefaultEmail( e ); // will insert into the list for us 1209 {
1168 return; 1210 setDefaultEmail( e ); // will insert into the list for us
1211 return ;
1169 } 1212 }
@@ -1172,6 +1215,6 @@ void OContact::insertEmail( const QString &v )
1172 QString emailsStr = find( Qtopia::Emails ); 1215 QString emailsStr = find( Qtopia::Emails );
1173 if ( emailsStr.contains( e )) 1216 if ( emailsStr.contains( e ) )
1174 return; 1217 return ;
1175 if ( !emailsStr.isEmpty() ) 1218 if ( !emailsStr.isEmpty() )
1176 emailsStr += emailSeparator(); 1219 emailsStr += emailSeparator();
1177 emailsStr += e; 1220 emailsStr += e;
@@ -1180,3 +1223,4 @@ void OContact::insertEmail( const QString &v )
1180 1223
1181void OContact::removeEmail( const QString &v ) 1224
1225 void OContact::removeEmail( const QString &v )
1182{ 1226{
@@ -1189,3 +1233,3 @@ void OContact::removeEmail( const QString &v )
1189 if ( !emailsStr.contains( e ) ) 1233 if ( !emailsStr.contains( e ) )
1190 return; 1234 return ;
1191 1235
@@ -1195,3 +1239,3 @@ void OContact::removeEmail( const QString &v )
1195 // reset the string 1239 // reset the string
1196 emailsStr = emails.join(emailSeparator()); // Sharp's brain dead separator 1240 emailsStr = emails.join( emailSeparator() ); // Sharp's brain dead separator
1197 replace( Qtopia::Emails, emailsStr ); 1241 replace( Qtopia::Emails, emailsStr );
@@ -1199,10 +1243,13 @@ void OContact::removeEmail( const QString &v )
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 )
1201 //qDebug("removeEmail is default; setting new default"); 1245 {
1202 if ( !emails.count() ) 1246 //qDebug("removeEmail is default; setting new default");
1203 clearEmails(); 1247 if ( !emails.count() )
1204 else // setDefaultEmail will remove e from the list 1248 clearEmails();
1205 setDefaultEmail( emails.first() ); 1249 else // setDefaultEmail will remove e from the list
1250 setDefaultEmail( emails.first() );
1206 } 1251 }
1207} 1252}
1253
1254
1208void OContact::clearEmails() 1255void OContact::clearEmails()
@@ -1212,2 +1259,4 @@ void OContact::clearEmails()
1212} 1259}
1260
1261
1213void OContact::setDefaultEmail( const QString &v ) 1262void OContact::setDefaultEmail( const QString &v )
@@ -1220,3 +1269,3 @@ void OContact::setDefaultEmail( const QString &v )
1220 if ( !e.isEmpty() ) 1269 if ( !e.isEmpty() )
1221 insertEmail( e ); 1270 insertEmail( e );
1222 1271
@@ -1224,2 +1273,3 @@ void OContact::setDefaultEmail( const QString &v )
1224 1273
1274
1225void OContact::insertEmails( const QStringList &v ) 1275void OContact::insertEmails( const QStringList &v )
@@ -1227,11 +1277,16 @@ void OContact::insertEmails( const QStringList &v )
1227 for ( QStringList::ConstIterator it = v.begin(); it != v.end(); ++it ) 1277 for ( QStringList::ConstIterator it = v.begin(); it != v.end(); ++it )
1228 insertEmail( *it ); 1278 insertEmail( *it );
1229} 1279}
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{
1235 OPimRecord::setUid(i); 1290 OPimRecord::setUid( i );
1236 replace( Qtopia::AddressUid , QString::number(i)); 1291 replace( Qtopia::AddressUid , QString::number( i ) );
1237} 1292}
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
@@ -28,5 +28,7 @@
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>
@@ -34,2 +36,3 @@
34 36
37/* QT */
35#include <qdatetime.h> 38#include <qdatetime.h>
@@ -43,3 +46,4 @@ QPC_TEMPLATEEXTERN template class QPC_EXPORT QMap<int, QString>;
43 46
44namespace Opie { 47namespace Opie
48{
45class OContactPrivate; 49class OContactPrivate;
@@ -56,3 +60,4 @@ class QPC_EXPORT OContact : public OPimRecord
56 friend class DataSet; 60 friend class DataSet;
57public: 61
62 public:
58 OContact(); 63 OContact();
@@ -62,4 +67,4 @@ public:
62 enum DateFormat{ 67 enum DateFormat{
63 Zip_City_State = 0, 68 Zip_City_State = 0,
64 City_State_Zip 69 City_State_Zip
65 }; 70 };
@@ -126,3 +131,3 @@ public:
126 // other 131 // other
127 void setNotes( const QString &v ) { replace( Qtopia::Notes, v); } 132 void setNotes( const QString &v ) { replace( Qtopia::Notes, v ); }
128 133
@@ -130,5 +135,5 @@ public:
130 135
131// // custom 136 // // custom
132// void setCustomField( const QString &key, const QString &v ) 137 // void setCustomField( const QString &key, const QString &v )
133// { replace(Custom- + key, v ); } 138 // { replace(Custom- + key, v ); }
134 139
@@ -187,3 +192,3 @@ public:
187 QString manager() const { return find( Qtopia::Manager ); } 192 QString manager() const { return find( Qtopia::Manager ); }
188 /** Multi line string containing all non-empty address info in the form 193 /** Multi line string containing all non-empty address info in the form
189 * Street 194 * Street
@@ -215,5 +220,5 @@ public:
215 220
216 QString toShortText()const; 221 QString toShortText() const;
217 QString type()const; 222 QString type() const;
218 class QString recordField(int) const; 223 class QString recordField( int ) const;
219 224
@@ -227,3 +232,3 @@ public:
227 232
228private: 233 private:
229 // The XML Backend needs some access to the private functions 234 // The XML Backend needs some access to the private functions
@@ -239,6 +244,6 @@ private:
239 QString displayAddress( const QString &street, 244 QString displayAddress( const QString &street,
240 const QString &city, 245 const QString &city,
241 const QString &state, 246 const QString &state,
242 const QString &zip, 247 const QString &zip,
243 const QString &country ) const; 248 const QString &country ) const;
244 249
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
@@ -2,3 +2,3 @@
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>
@@ -29,13 +29,16 @@
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/*!
@@ -49,5 +52,5 @@ QStringList OContactFields::personalfields( bool sorted, bool translated )
49 if ( translated ) 52 if ( translated )
50 mapIdToStr = idToTrFields(); 53 mapIdToStr = idToTrFields();
51 else 54 else
52 mapIdToStr = idToUntrFields(); 55 mapIdToStr = idToUntrFields();
53 56
@@ -70,3 +73,3 @@ QStringList OContactFields::personalfields( bool sorted, bool translated )
70 73
71 if (sorted) list.sort(); 74 if ( sorted ) list.sort();
72 return list; 75 return list;
@@ -83,5 +86,5 @@ QStringList OContactFields::detailsfields( bool sorted, bool translated )
83 if ( translated ) 86 if ( translated )
84 mapIdToStr = idToTrFields(); 87 mapIdToStr = idToTrFields();
85 else 88 else
86 mapIdToStr = idToUntrFields(); 89 mapIdToStr = idToUntrFields();
87 90
@@ -99,3 +102,3 @@ QStringList OContactFields::detailsfields( bool sorted, bool translated )
99 102
100 if (sorted) list.sort(); 103 if ( sorted ) list.sort();
101 return list; 104 return list;
@@ -112,22 +115,22 @@ QStringList OContactFields::phonefields( bool sorted, bool translated )
112 if ( translated ) 115 if ( translated )
113 mapIdToStr = idToTrFields(); 116 mapIdToStr = idToTrFields();
114 else 117 else
115 mapIdToStr = idToUntrFields(); 118 mapIdToStr = idToUntrFields();
116 119
117 list.append( mapIdToStr[Qtopia::BusinessPhone] ); 120 list.append( mapIdToStr[ Qtopia::BusinessPhone ] );
118 list.append( mapIdToStr[Qtopia::BusinessFax] ); 121 list.append( mapIdToStr[ Qtopia::BusinessFax ] );
119 list.append( mapIdToStr[Qtopia::BusinessMobile] ); 122 list.append( mapIdToStr[ Qtopia::BusinessMobile ] );
120 list.append( mapIdToStr[Qtopia::BusinessPager] ); 123 list.append( mapIdToStr[ Qtopia::BusinessPager ] );
121 list.append( mapIdToStr[Qtopia::BusinessWebPage] ); 124 list.append( mapIdToStr[ Qtopia::BusinessWebPage ] );
122 125
123 list.append( mapIdToStr[Qtopia::DefaultEmail] ); 126 list.append( mapIdToStr[ Qtopia::DefaultEmail ] );
124 list.append( mapIdToStr[Qtopia::Emails] ); 127 list.append( mapIdToStr[ Qtopia::Emails ] );
125 128
126 list.append( mapIdToStr[Qtopia::HomePhone] ); 129 list.append( mapIdToStr[ Qtopia::HomePhone ] );
127 list.append( mapIdToStr[Qtopia::HomeFax] ); 130 list.append( mapIdToStr[ Qtopia::HomeFax ] );
128 list.append( mapIdToStr[Qtopia::HomeMobile] ); 131 list.append( mapIdToStr[ Qtopia::HomeMobile ] );
129 // list.append( mapIdToStr[Qtopia::HomePager] ); 132 // list.append( mapIdToStr[Qtopia::HomePager] );
130 list.append( mapIdToStr[Qtopia::HomeWebPage] ); 133 list.append( mapIdToStr[ Qtopia::HomeWebPage ] );
131 134
132 if (sorted) list.sort(); 135 if ( sorted ) list.sort();
133 136
@@ -145,5 +148,5 @@ QStringList OContactFields::fields( bool sorted, bool translated )
145 if ( translated ) 148 if ( translated )
146 mapIdToStr = idToTrFields(); 149 mapIdToStr = idToTrFields();
147 else 150 else
148 mapIdToStr = idToUntrFields(); 151 mapIdToStr = idToUntrFields();
149 152
@@ -153,13 +156,13 @@ QStringList OContactFields::fields( bool sorted, bool translated )
153 156
154 list.append( mapIdToStr[Qtopia::BusinessStreet] ); 157 list.append( mapIdToStr[ Qtopia::BusinessStreet ] );
155 list.append( mapIdToStr[Qtopia::BusinessCity] ); 158 list.append( mapIdToStr[ Qtopia::BusinessCity ] );
156 list.append( mapIdToStr[Qtopia::BusinessState] ); 159 list.append( mapIdToStr[ Qtopia::BusinessState ] );
157 list.append( mapIdToStr[Qtopia::BusinessZip] ); 160 list.append( mapIdToStr[ Qtopia::BusinessZip ] );
158 list.append( mapIdToStr[Qtopia::BusinessCountry] ); 161 list.append( mapIdToStr[ Qtopia::BusinessCountry ] );
159 162
160 list.append( mapIdToStr[Qtopia::HomeStreet] ); 163 list.append( mapIdToStr[ Qtopia::HomeStreet ] );
161 list.append( mapIdToStr[Qtopia::HomeCity] ); 164 list.append( mapIdToStr[ Qtopia::HomeCity ] );
162 list.append( mapIdToStr[Qtopia::HomeState] ); 165 list.append( mapIdToStr[ Qtopia::HomeState ] );
163 list.append( mapIdToStr[Qtopia::HomeZip] ); 166 list.append( mapIdToStr[ Qtopia::HomeZip ] );
164 list.append( mapIdToStr[Qtopia::HomeCountry] ); 167 list.append( mapIdToStr[ Qtopia::HomeCountry ] );
165 168
@@ -167,3 +170,3 @@ QStringList OContactFields::fields( bool sorted, bool translated )
167 170
168 if (sorted) list.sort(); 171 if ( sorted ) list.sort();
169 172
@@ -179,3 +182,3 @@ QStringList OContactFields::untrpersonalfields( bool sorted )
179{ 182{
180 return personalfields( sorted, false ); 183 return personalfields( sorted, false );
181} 184}
@@ -189,3 +192,3 @@ QStringList OContactFields::trpersonalfields( bool sorted )
189{ 192{
190 return personalfields( sorted, true ); 193 return personalfields( sorted, true );
191} 194}
@@ -199,3 +202,3 @@ QStringList OContactFields::untrdetailsfields( bool sorted )
199{ 202{
200 return detailsfields( sorted, false ); 203 return detailsfields( sorted, false );
201} 204}
@@ -209,3 +212,3 @@ QStringList OContactFields::trdetailsfields( bool sorted )
209{ 212{
210 return detailsfields( sorted, true ); 213 return detailsfields( sorted, true );
211} 214}
@@ -219,3 +222,3 @@ QStringList OContactFields::trphonefields( bool sorted )
219{ 222{
220 return phonefields( sorted, true ); 223 return phonefields( sorted, true );
221} 224}
@@ -228,3 +231,3 @@ QStringList OContactFields::untrphonefields( bool sorted )
228{ 231{
229 return phonefields( sorted, false ); 232 return phonefields( sorted, false );
230} 233}
@@ -238,3 +241,3 @@ QStringList OContactFields::trfields( bool sorted )
238{ 241{
239 return fields( sorted, true ); 242 return fields( sorted, true );
240} 243}
@@ -252,64 +255,64 @@ QMap<int, QString> OContactFields::idToTrFields()
252{ 255{
253 QMap<int, QString> ret_map; 256 QMap<int, QString> ret_map;
254 257
255 ret_map.insert( Qtopia::AddressUid, QObject::tr( "User Id" ) ); 258 ret_map.insert( Qtopia::AddressUid, QObject::tr( "User Id" ) );
256 ret_map.insert( Qtopia::AddressCategory, QObject::tr( "Categories" ) ); 259 ret_map.insert( Qtopia::AddressCategory, QObject::tr( "Categories" ) );
257 260
258 ret_map.insert( Qtopia::Title, QObject::tr( "Name Title") ); 261 ret_map.insert( Qtopia::Title, QObject::tr( "Name Title" ) );
259 ret_map.insert( Qtopia::FirstName, QObject::tr( "First Name" ) ); 262 ret_map.insert( Qtopia::FirstName, QObject::tr( "First Name" ) );
260 ret_map.insert( Qtopia::MiddleName, QObject::tr( "Middle Name" ) ); 263 ret_map.insert( Qtopia::MiddleName, QObject::tr( "Middle Name" ) );
261 ret_map.insert( Qtopia::LastName, QObject::tr( "Last Name" ) ); 264 ret_map.insert( Qtopia::LastName, QObject::tr( "Last Name" ) );
262 ret_map.insert( Qtopia::Suffix, QObject::tr( "Suffix" )); 265 ret_map.insert( Qtopia::Suffix, QObject::tr( "Suffix" ) );
263 ret_map.insert( Qtopia::FileAs, QObject::tr( "File As" ) ); 266 ret_map.insert( Qtopia::FileAs, QObject::tr( "File As" ) );
264 267
265 ret_map.insert( Qtopia::JobTitle, QObject::tr( "Job Title" ) ); 268 ret_map.insert( Qtopia::JobTitle, QObject::tr( "Job Title" ) );
266 ret_map.insert( Qtopia::Department, QObject::tr( "Department" ) ); 269 ret_map.insert( Qtopia::Department, QObject::tr( "Department" ) );
267 ret_map.insert( Qtopia::Company, QObject::tr( "Company" ) ); 270 ret_map.insert( Qtopia::Company, QObject::tr( "Company" ) );
268 ret_map.insert( Qtopia::BusinessPhone, QObject::tr( "Business Phone" ) ); 271 ret_map.insert( Qtopia::BusinessPhone, QObject::tr( "Business Phone" ) );
269 ret_map.insert( Qtopia::BusinessFax, QObject::tr( "Business Fax" ) ); 272 ret_map.insert( Qtopia::BusinessFax, QObject::tr( "Business Fax" ) );
270 ret_map.insert( Qtopia::BusinessMobile, QObject::tr( "Business Mobile" )); 273 ret_map.insert( Qtopia::BusinessMobile, QObject::tr( "Business Mobile" ) );
271 274
272 // email 275 // email
273 ret_map.insert( Qtopia::DefaultEmail, QObject::tr( "Default Email" ) ); 276 ret_map.insert( Qtopia::DefaultEmail, QObject::tr( "Default Email" ) );
274 ret_map.insert( Qtopia::Emails, QObject::tr( "Emails" ) ); 277 ret_map.insert( Qtopia::Emails, QObject::tr( "Emails" ) );
275 278
276 ret_map.insert( Qtopia::HomePhone, QObject::tr( "Home Phone" ) ); 279 ret_map.insert( Qtopia::HomePhone, QObject::tr( "Home Phone" ) );
277 ret_map.insert( Qtopia::HomeFax, QObject::tr( "Home Fax" ) ); 280 ret_map.insert( Qtopia::HomeFax, QObject::tr( "Home Fax" ) );
278 ret_map.insert( Qtopia::HomeMobile, QObject::tr( "Home Mobile" ) ); 281 ret_map.insert( Qtopia::HomeMobile, QObject::tr( "Home Mobile" ) );
279 282
280 // business 283 // business
281 ret_map.insert( Qtopia::BusinessStreet, QObject::tr( "Business Street" ) ); 284 ret_map.insert( Qtopia::BusinessStreet, QObject::tr( "Business Street" ) );
282 ret_map.insert( Qtopia::BusinessCity, QObject::tr( "Business City" ) ); 285 ret_map.insert( Qtopia::BusinessCity, QObject::tr( "Business City" ) );
283 ret_map.insert( Qtopia::BusinessState, QObject::tr( "Business State" ) ); 286 ret_map.insert( Qtopia::BusinessState, QObject::tr( "Business State" ) );
284 ret_map.insert( Qtopia::BusinessZip, QObject::tr( "Business Zip" ) ); 287 ret_map.insert( Qtopia::BusinessZip, QObject::tr( "Business Zip" ) );
285 ret_map.insert( Qtopia::BusinessCountry, QObject::tr( "Business Country" ) ); 288 ret_map.insert( Qtopia::BusinessCountry, QObject::tr( "Business Country" ) );
286 ret_map.insert( Qtopia::BusinessPager, QObject::tr( "Business Pager" ) ); 289 ret_map.insert( Qtopia::BusinessPager, QObject::tr( "Business Pager" ) );
287 ret_map.insert( Qtopia::BusinessWebPage, QObject::tr( "Business WebPage" ) ); 290 ret_map.insert( Qtopia::BusinessWebPage, QObject::tr( "Business WebPage" ) );
288 291
289 ret_map.insert( Qtopia::Office, QObject::tr( "Office" ) ); 292 ret_map.insert( Qtopia::Office, QObject::tr( "Office" ) );
290 ret_map.insert( Qtopia::Profession, QObject::tr( "Profession" ) ); 293 ret_map.insert( Qtopia::Profession, QObject::tr( "Profession" ) );
291 ret_map.insert( Qtopia::Assistant, QObject::tr( "Assistant" ) ); 294 ret_map.insert( Qtopia::Assistant, QObject::tr( "Assistant" ) );
292 ret_map.insert( Qtopia::Manager, QObject::tr( "Manager" ) ); 295 ret_map.insert( Qtopia::Manager, QObject::tr( "Manager" ) );
293 296
294 // home 297 // home
295 ret_map.insert( Qtopia::HomeStreet, QObject::tr( "Home Street" ) ); 298 ret_map.insert( Qtopia::HomeStreet, QObject::tr( "Home Street" ) );
296 ret_map.insert( Qtopia::HomeCity, QObject::tr( "Home City" ) ); 299 ret_map.insert( Qtopia::HomeCity, QObject::tr( "Home City" ) );
297 ret_map.insert( Qtopia::HomeState, QObject::tr( "Home State" ) ); 300 ret_map.insert( Qtopia::HomeState, QObject::tr( "Home State" ) );
298 ret_map.insert( Qtopia::HomeZip, QObject::tr( "Home Zip" ) ); 301 ret_map.insert( Qtopia::HomeZip, QObject::tr( "Home Zip" ) );
299 ret_map.insert( Qtopia::HomeCountry, QObject::tr( "Home Country" ) ); 302 ret_map.insert( Qtopia::HomeCountry, QObject::tr( "Home Country" ) );
300 ret_map.insert( Qtopia::HomeWebPage, QObject::tr( "Home Web Page" ) ); 303 ret_map.insert( Qtopia::HomeWebPage, QObject::tr( "Home Web Page" ) );
301 304
302 //personal 305 //personal
303 ret_map.insert( Qtopia::Spouse, QObject::tr( "Spouse" ) ); 306 ret_map.insert( Qtopia::Spouse, QObject::tr( "Spouse" ) );
304 ret_map.insert( Qtopia::Gender, QObject::tr( "Gender" ) ); 307 ret_map.insert( Qtopia::Gender, QObject::tr( "Gender" ) );
305 ret_map.insert( Qtopia::Birthday, QObject::tr( "Birthday" ) ); 308 ret_map.insert( Qtopia::Birthday, QObject::tr( "Birthday" ) );
306 ret_map.insert( Qtopia::Anniversary, QObject::tr( "Anniversary" ) ); 309 ret_map.insert( Qtopia::Anniversary, QObject::tr( "Anniversary" ) );
307 ret_map.insert( Qtopia::Nickname, QObject::tr( "Nickname" ) ); 310 ret_map.insert( Qtopia::Nickname, QObject::tr( "Nickname" ) );
308 ret_map.insert( Qtopia::Children, QObject::tr( "Children" ) ); 311 ret_map.insert( Qtopia::Children, QObject::tr( "Children" ) );
309 312
310 // other 313 // other
311 ret_map.insert( Qtopia::Notes, QObject::tr( "Notes" ) ); 314 ret_map.insert( Qtopia::Notes, QObject::tr( "Notes" ) );
312 315
313 316
314 return ret_map; 317 return ret_map;
315} 318}
@@ -318,65 +321,65 @@ QMap<int, QString> OContactFields::idToUntrFields()
318{ 321{
319 QMap<int, QString> ret_map; 322 QMap<int, QString> ret_map;
320 323
321 ret_map.insert( Qtopia::AddressUid, "User Id" ); 324 ret_map.insert( Qtopia::AddressUid, "User Id" );
322 ret_map.insert( Qtopia::AddressCategory, "Categories" ); 325 ret_map.insert( Qtopia::AddressCategory, "Categories" );
323 326
324 ret_map.insert( Qtopia::Title, "Name Title" ); 327 ret_map.insert( Qtopia::Title, "Name Title" );
325 ret_map.insert( Qtopia::FirstName, "First Name" ); 328 ret_map.insert( Qtopia::FirstName, "First Name" );
326 ret_map.insert( Qtopia::MiddleName, "Middle Name" ); 329 ret_map.insert( Qtopia::MiddleName, "Middle Name" );
327 ret_map.insert( Qtopia::LastName, "Last Name" ); 330 ret_map.insert( Qtopia::LastName, "Last Name" );
328 ret_map.insert( Qtopia::Suffix, "Suffix" ); 331 ret_map.insert( Qtopia::Suffix, "Suffix" );
329 ret_map.insert( Qtopia::FileAs, "File As" ); 332 ret_map.insert( Qtopia::FileAs, "File As" );
330 333
331 ret_map.insert( Qtopia::JobTitle, "Job Title" ); 334 ret_map.insert( Qtopia::JobTitle, "Job Title" );
332 ret_map.insert( Qtopia::Department, "Department" ); 335 ret_map.insert( Qtopia::Department, "Department" );
333 ret_map.insert( Qtopia::Company, "Company" ); 336 ret_map.insert( Qtopia::Company, "Company" );
334 ret_map.insert( Qtopia::BusinessPhone, "Business Phone" ); 337 ret_map.insert( Qtopia::BusinessPhone, "Business Phone" );
335 ret_map.insert( Qtopia::BusinessFax, "Business Fax" ); 338 ret_map.insert( Qtopia::BusinessFax, "Business Fax" );
336 ret_map.insert( Qtopia::BusinessMobile, "Business Mobile" ); 339 ret_map.insert( Qtopia::BusinessMobile, "Business Mobile" );
337 340
338 // email 341 // email
339 ret_map.insert( Qtopia::DefaultEmail, "Default Email" ); 342 ret_map.insert( Qtopia::DefaultEmail, "Default Email" );
340 ret_map.insert( Qtopia::Emails, "Emails" ); 343 ret_map.insert( Qtopia::Emails, "Emails" );
341 344
342 ret_map.insert( Qtopia::HomePhone, "Home Phone" ); 345 ret_map.insert( Qtopia::HomePhone, "Home Phone" );
343 ret_map.insert( Qtopia::HomeFax, "Home Fax" ); 346 ret_map.insert( Qtopia::HomeFax, "Home Fax" );
344 ret_map.insert( Qtopia::HomeMobile, "Home Mobile" ); 347 ret_map.insert( Qtopia::HomeMobile, "Home Mobile" );
345 348
346 // business 349 // business
347 ret_map.insert( Qtopia::BusinessStreet, "Business Street" ); 350 ret_map.insert( Qtopia::BusinessStreet, "Business Street" );
348 ret_map.insert( Qtopia::BusinessCity, "Business City" ); 351 ret_map.insert( Qtopia::BusinessCity, "Business City" );
349 ret_map.insert( Qtopia::BusinessState, "Business State" ); 352 ret_map.insert( Qtopia::BusinessState, "Business State" );
350 ret_map.insert( Qtopia::BusinessZip, "Business Zip" ); 353 ret_map.insert( Qtopia::BusinessZip, "Business Zip" );
351 ret_map.insert( Qtopia::BusinessCountry, "Business Country" ); 354 ret_map.insert( Qtopia::BusinessCountry, "Business Country" );
352 ret_map.insert( Qtopia::BusinessPager, "Business Pager" ); 355 ret_map.insert( Qtopia::BusinessPager, "Business Pager" );
353 ret_map.insert( Qtopia::BusinessWebPage, "Business WebPage" ); 356 ret_map.insert( Qtopia::BusinessWebPage, "Business WebPage" );
354 357
355 ret_map.insert( Qtopia::Office, "Office" ); 358 ret_map.insert( Qtopia::Office, "Office" );
356 ret_map.insert( Qtopia::Profession, "Profession" ); 359 ret_map.insert( Qtopia::Profession, "Profession" );
357 ret_map.insert( Qtopia::Assistant, "Assistant" ); 360 ret_map.insert( Qtopia::Assistant, "Assistant" );
358 ret_map.insert( Qtopia::Manager, "Manager" ); 361 ret_map.insert( Qtopia::Manager, "Manager" );
359 362
360 // home 363 // home
361 ret_map.insert( Qtopia::HomeStreet, "Home Street" ); 364 ret_map.insert( Qtopia::HomeStreet, "Home Street" );
362 ret_map.insert( Qtopia::HomeCity, "Home City" ); 365 ret_map.insert( Qtopia::HomeCity, "Home City" );
363 ret_map.insert( Qtopia::HomeState, "Home State" ); 366 ret_map.insert( Qtopia::HomeState, "Home State" );
364 ret_map.insert( Qtopia::HomeZip, "Home Zip" ); 367 ret_map.insert( Qtopia::HomeZip, "Home Zip" );
365 ret_map.insert( Qtopia::HomeCountry, "Home Country" ); 368 ret_map.insert( Qtopia::HomeCountry, "Home Country" );
366 ret_map.insert( Qtopia::HomeWebPage, "Home Web Page" ); 369 ret_map.insert( Qtopia::HomeWebPage, "Home Web Page" );
367 370
368 //personal 371 //personal
369 ret_map.insert( Qtopia::Spouse, "Spouse" ); 372 ret_map.insert( Qtopia::Spouse, "Spouse" );
370 ret_map.insert( Qtopia::Gender, "Gender" ); 373 ret_map.insert( Qtopia::Gender, "Gender" );
371 ret_map.insert( Qtopia::Birthday, "Birthday" ); 374 ret_map.insert( Qtopia::Birthday, "Birthday" );
372 ret_map.insert( Qtopia::Anniversary, "Anniversary" ); 375 ret_map.insert( Qtopia::Anniversary, "Anniversary" );
373 ret_map.insert( Qtopia::Nickname, "Nickname" ); 376 ret_map.insert( Qtopia::Nickname, "Nickname" );
374 ret_map.insert( Qtopia::Children, "Children" ); 377 ret_map.insert( Qtopia::Children, "Children" );
375 378
376 // other 379 // other
377 ret_map.insert( Qtopia::Notes, "Notes" ); 380 ret_map.insert( Qtopia::Notes, "Notes" );
378 ret_map.insert( Qtopia::Groups, "Groups" ); 381 ret_map.insert( Qtopia::Groups, "Groups" );
379 382
380 383
381 return ret_map; 384 return ret_map;
382} 385}
@@ -385,12 +388,12 @@ QMap<QString, int> OContactFields::trFieldsToId()
385{ 388{
386 QMap<int, QString> idtostr = idToTrFields(); 389 QMap<int, QString> idtostr = idToTrFields();
387 QMap<QString, int> ret_map; 390 QMap<QString, int> ret_map;
388 391
389 392
390 QMap<int, QString>::Iterator it; 393 QMap<int, QString>::Iterator it;
391 for( it = idtostr.begin(); it != idtostr.end(); ++it ) 394 for ( it = idtostr.begin(); it != idtostr.end(); ++it )
392 ret_map.insert( *it, it.key() ); 395 ret_map.insert( *it, it.key() );
393 396
394 397
395 return ret_map; 398 return ret_map;
396} 399}
@@ -401,12 +404,12 @@ QMap<QString, int> OContactFields::untrFieldsToId()
401{ 404{
402 QMap<int, QString> idtostr = idToUntrFields(); 405 QMap<int, QString> idtostr = idToUntrFields();
403 QMap<QString, int> ret_map; 406 QMap<QString, int> ret_map;
404 407
405 408
406 QMap<int, QString>::Iterator it; 409 QMap<int, QString>::Iterator it;
407 for( it = idtostr.begin(); it != idtostr.end(); ++it ) 410 for ( it = idtostr.begin(); it != idtostr.end(); ++it )
408 ret_map.insert( *it, it.key() ); 411 ret_map.insert( *it, it.key() );
409 412
410 413
411 return ret_map; 414 return ret_map;
412} 415}
@@ -414,22 +417,24 @@ QMap<QString, int> OContactFields::untrFieldsToId()
414 417
415OContactFields::OContactFields(): 418OContactFields::OContactFields() :
416 fieldOrder( DEFAULT_FIELD_ORDER ), 419 fieldOrder( DEFAULT_FIELD_ORDER ),
417 changedFieldOrder( false ) 420 changedFieldOrder( false )
418{ 421{
419 // Get the global field order from the config file and 422 // Get the global field order from the config file and
420 // use it as a start pattern 423 // use it as a start pattern
421 Config cfg ( "AddressBook" ); 424 Config cfg ( "AddressBook" );
422 cfg.setGroup( "ContactFieldOrder" ); 425 cfg.setGroup( "ContactFieldOrder" );
423 globalFieldOrder = cfg.readEntry( "General", DEFAULT_FIELD_ORDER ); 426 globalFieldOrder = cfg.readEntry( "General", DEFAULT_FIELD_ORDER );
424} 427}
425 428
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 )
431 Config cfg ( "AddressBook" ); 435 {
432 cfg.setGroup( "ContactFieldOrder" ); 436 Config cfg ( "AddressBook" );
433 cfg.writeEntry( "General", globalFieldOrder ); 437 cfg.setGroup( "ContactFieldOrder" );
434 } 438 cfg.writeEntry( "General", globalFieldOrder );
439 }
435} 440}
@@ -438,11 +443,12 @@ OContactFields::~OContactFields(){
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() );
442 448
443 // Store fieldorder into this contact. 449 // Store fieldorder into this contact.
444 cnt.setCustomField( CONTACT_FIELD_ORDER_NAME, fieldOrder ); 450 cnt.setCustomField( CONTACT_FIELD_ORDER_NAME, fieldOrder );
445 451
446 globalFieldOrder = fieldOrder; 452 globalFieldOrder = fieldOrder;
447 changedFieldOrder = true; 453 changedFieldOrder = true;
448 454
@@ -450,56 +456,60 @@ void OContactFields::saveToRecord( OContact &cnt ){
450 456
451void OContactFields::loadFromRecord( const OContact &cnt ){ 457void OContactFields::loadFromRecord( const OContact &cnt )
452 qDebug("ocontactfields loadFromRecord"); 458{
453 qDebug("loading >%s<",cnt.fullName().latin1()); 459 qDebug( "ocontactfields loadFromRecord" );
460 qDebug( "loading >%s<", cnt.fullName().latin1() );
454 461
455 // Get fieldorder for this contact. If none is defined, 462 // Get fieldorder for this contact. If none is defined,
456 // we will use the global one from the config file.. 463 // we will use the global one from the config file..
457 464
458 fieldOrder = cnt.customField( CONTACT_FIELD_ORDER_NAME ); 465 fieldOrder = cnt.customField( CONTACT_FIELD_ORDER_NAME );
459 466
460 qDebug("fieldOrder from contact>%s<",fieldOrder.latin1()); 467 qDebug( "fieldOrder from contact>%s<", fieldOrder.latin1() );
461 468
462 if (fieldOrder.isEmpty()){ 469 if ( fieldOrder.isEmpty() )
463 fieldOrder = globalFieldOrder; 470 {
464 } 471 fieldOrder = globalFieldOrder;
472 }
465 473
466 474
467 qDebug("effective fieldOrder in loadFromRecord >%s<",fieldOrder.latin1()); 475 qDebug( "effective fieldOrder in loadFromRecord >%s<", fieldOrder.latin1() );
468} 476}
469 477
470void OContactFields::setFieldOrder( int num, int index ){ 478void OContactFields::setFieldOrder( int num, int index )
471 qDebug("qcontactfields setfieldorder pos %i -> %i",num,index); 479{
480 qDebug( "qcontactfields setfieldorder pos %i -> %i", num, index );
472 481
473 fieldOrder[num] = QString::number( index, 16 )[0]; 482 fieldOrder[ num ] = QString::number( index, 16 ) [ 0 ];
474 483
475 // We will store this new fieldorder globally to 484 // We will store this new fieldorder globally to
476 // remember it for contacts which have none 485 // remember it for contacts which have none
477 globalFieldOrder = fieldOrder; 486 globalFieldOrder = fieldOrder;
478 changedFieldOrder = true; 487 changedFieldOrder = true;
479 488
480 qDebug("fieldOrder >%s<",fieldOrder.latin1()); 489 qDebug( "fieldOrder >%s<", fieldOrder.latin1() );
481} 490}
482 491
483int OContactFields::getFieldOrder( int num, int defIndex ){ 492int OContactFields::getFieldOrder( int num, int defIndex )
484 qDebug("ocontactfields getFieldOrder"); 493{
485 qDebug("fieldOrder >%s<",fieldOrder.latin1()); 494 qDebug( "ocontactfields getFieldOrder" );
495 qDebug( "fieldOrder >%s<", fieldOrder.latin1() );
486 496
487 // Get index of combo as char.. 497 // Get index of combo as char..
488 QChar poschar = fieldOrder[num]; 498 QChar poschar = fieldOrder[ num ];
489 499
490 bool ok; 500 bool ok;
491 int ret = 0; 501 int ret = 0;
492 // Convert char to number.. 502 // Convert char to number..
493 if ( !( poschar == QChar::null ) ) 503 if ( !( poschar == QChar::null ) )
494 ret = QString( poschar ).toInt(&ok, 16); 504 ret = QString( poschar ).toInt( &ok, 16 );
495 else 505 else
496 ok = false; 506 ok = false;
497 507
498 // Return default value if index for 508 // Return default value if index for
499 // num was not set or if anything else happened.. 509 // num was not set or if anything else happened..
500 if ( !ok ) ret = defIndex; 510 if ( !ok ) ret = defIndex;
501 511
502 qDebug("returning >%i<",ret); 512 qDebug( "returning >%i<", ret );
503 513
504 return ret; 514 return ret;
505 515
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
@@ -28,4 +28,5 @@
28*/ 28*/
29#ifndef OPIE_CONTACTS_FIELDS 29
30#define OPIE_CONTACTS_FIELDS 30#ifndef OCONTACTFIELDS_H
31#define OCONTACTFIELDS_H
31 32
@@ -33,5 +34,8 @@ class QStringList;
33 34
35/* OPIE */
36#include <opie2/ocontact.h>
37
38/* QT */
34#include <qmap.h> 39#include <qmap.h>
35#include <qstring.h> 40#include <qstring.h>
36#include <opie2/ocontact.h>
37 41
@@ -39,7 +43,9 @@ class QStringList;
39#define DEFAULT_FIELD_ORDER "__________" 43#define DEFAULT_FIELD_ORDER "__________"
40
41namespace Opie {
42class OContactFields{
43 44
44 public: 45namespace Opie
46{
47class OContactFields
48{
49
50 public:
45 OContactFields(); 51 OContactFields();
@@ -57,7 +63,7 @@ class OContactFields{
57 * @param num Selects the number of the combo 63 * @param num Selects the number of the combo
58 * @param defIndex will be returned if none was defined (either 64 * @param defIndex will be returned if none was defined (either
59 * globally in the config file, nor by the contact which was used 65 * globally in the config file, nor by the contact which was used
60 * by loadFromRecord() ) 66 * by loadFromRecord() )
61 */ 67 */
62 int getFieldOrder( int num, int defIndex); 68 int getFieldOrder( int num, int defIndex );
63 69
@@ -68,3 +74,3 @@ class OContactFields{
68 74
69 private: 75 private:
70 QString fieldOrder; 76 QString fieldOrder;
@@ -73,3 +79,3 @@ class OContactFields{
73 79
74 public: 80 public:
75 static QStringList personalfields( bool sorted = true, bool translated = false ); 81 static QStringList personalfields( bool sorted = true, bool translated = false );
@@ -78,3 +84,3 @@ class OContactFields{
78 static QStringList fields( bool sorted = true, bool translated = false ); 84 static QStringList fields( bool sorted = true, bool translated = false );
79 85
80 static QStringList trpersonalfields( bool sorted = true ); 86 static QStringList trpersonalfields( bool sorted = true );
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
@@ -2,3 +2,3 @@
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>
@@ -28,9 +28,6 @@
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>
@@ -38,8 +35,15 @@
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
@@ -55,3 +59,6 @@ int OCalendarHelper::week( const QDate& date) {
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
@@ -60,6 +67,10 @@ int OCalendarHelper::ocurrence( const QDate& date) {
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;
@@ -69,9 +80,15 @@ int OCalendarHelper::dayOfWeek( char day ) {
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;
@@ -82,3 +99,4 @@ struct OEvent::Data : public QShared {
82 } 99 }
83 ~Data() { 100 ~Data()
101 {
84 delete manager; 102 delete manager;
@@ -94,3 +112,3 @@ struct OEvent::Data : public QShared {
94 QDateTime end; 112 QDateTime end;
95 bool isAllDay : 1; 113bool isAllDay : 1;
96 QString timezone; 114 QString timezone;
@@ -100,8 +118,12 @@ struct OEvent::Data : public QShared {
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}
105OEvent::OEvent( const OEvent& ev) 125
106 : OPimRecord( ev ), data( ev.data ) 126
127OEvent::OEvent( const OEvent& ev )
128 : OPimRecord( ev ), data( ev.data )
107{ 129{
@@ -110,12 +132,16 @@ OEvent::OEvent( const OEvent& ev)
110 132
133
111OEvent::OEvent( const QMap<int, QString> map ) 134OEvent::OEvent( const QMap<int, QString> map )
112 : OPimRecord( 0 ) 135 : OPimRecord( 0 )
113{ 136{
114 data = new Data; 137 data = new Data;
115 138
116 fromMap( map ); 139 fromMap( map );
117} 140}
118 141
119OEvent::~OEvent() { 142
120 if ( data->deref() ) { 143OEvent::~OEvent()
144{
145 if ( data->deref() )
146 {
121 delete data; 147 delete data;
@@ -124,4 +150,7 @@ OEvent::~OEvent() {
124} 150}
125OEvent& OEvent::operator=( const OEvent& ev) { 151
126 if ( this == &ev ) return *this; 152
153OEvent& OEvent::operator=( const OEvent& ev )
154{
155 if ( this == &ev ) return * this;
127 156
@@ -135,6 +164,12 @@ OEvent& OEvent::operator=( const OEvent& ev) {
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();
@@ -142,3 +177,6 @@ void OEvent::setDescription( const QString& description ) {
142} 177}
143void OEvent::setLocation( const QString& loc ) { 178
179
180void OEvent::setLocation( const QString& loc )
181{
144 changeOrModify(); 182 changeOrModify();
@@ -146,6 +184,12 @@ void OEvent::setLocation( const QString& 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
@@ -153,3 +197,3 @@ OPimNotifyManager &OEvent::notifiers()const {
153 // and OPimNotify is shared too 197 // and OPimNotify is shared too
154 if (!data->manager ) 198 if ( !data->manager )
155 data->manager = new OPimNotifyManager; 199 data->manager = new OPimNotifyManager;
@@ -158,7 +202,10 @@ OPimNotifyManager &OEvent::notifiers()const {
158} 202}
159bool OEvent::hasNotifiers()const { 203
160 if (!data->manager ) 204
205bool OEvent::hasNotifiers() const
206{
207 if ( !data->manager )
161 return false; 208 return false;
162 if (data->manager->reminders().isEmpty() && 209 if ( data->manager->reminders().isEmpty() &&
163 data->manager->alarms().isEmpty() ) 210 data->manager->alarms().isEmpty() )
164 return false; 211 return false;
@@ -167,4 +214,7 @@ bool OEvent::hasNotifiers()const {
167} 214}
168ORecur OEvent::recurrence()const { 215
169 if (!data->recur) 216
217ORecur OEvent::recurrence() const
218{
219 if ( !data->recur )
170 data->recur = new ORecur; 220 data->recur = new ORecur;
@@ -173,6 +223,9 @@ ORecur OEvent::recurrence()const {
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 )
177 (*data->recur) = rec; 230 ( *data->recur ) = rec;
178 else 231 else
@@ -180,10 +233,19 @@ void OEvent::setRecurrence( const ORecur& rec) {
180} 233}
181bool OEvent::hasRecurrence()const { 234
182 if (!data->recur ) return false; 235
236bool OEvent::hasRecurrence() const
237{
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();
@@ -191,6 +253,12 @@ void OEvent::setNote( const QString& 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();
@@ -198,15 +266,24 @@ void OEvent::setCreatedDateTime( const QDateTime& 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();
207 281
208 OTimeZone zone(data->timezone ); 282 OTimeZone zone( data->timezone );
209 return zone.toDateTime( data->start, OTimeZone::current() ); 283 return zone.toDateTime( data->start, OTimeZone::current() );
210} 284}
211void OEvent::setStartDateTime( const QDateTime& dt ) { 285
286
287void OEvent::setStartDateTime( const QDateTime& dt )
288{
212 changeOrModify(); 289 changeOrModify();
@@ -214,3 +291,6 @@ void OEvent::setStartDateTime( const QDateTime& dt ) {
214} 291}
215QDateTime OEvent::endDateTime()const { 292
293
294QDateTime OEvent::endDateTime() const
295{
216 /* 296 /*
@@ -220,28 +300,46 @@ QDateTime OEvent::endDateTime()const {
220 if ( data->isAllDay ) 300 if ( data->isAllDay )
221 return QDateTime( data->start.date(), QTime(23, 59, 59 ) ); 301 return QDateTime( data->start.date(), QTime( 23, 59, 59 ) );
222 return data->end; 302 return data->end;
223} 303}
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();
227 310
228 OTimeZone zone(data->timezone ); 311 OTimeZone zone( data->timezone );
229 return zone.toDateTime( data->end, OTimeZone::current() ); 312 return zone.toDateTime( data->end, OTimeZone::current() );
230} 313}
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();
@@ -249,8 +347,15 @@ void OEvent::setTimeZone( const QString& tz ) {
249} 347}
250QString OEvent::timeZone()const { 348
251 if (data->isAllDay ) return QString::fromLatin1("UTC"); 349
350QString OEvent::timeZone() const
351{
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 );
@@ -258,3 +363,4 @@ bool OEvent::match( const QRegExp& re )const {
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 );
@@ -262,3 +368,4 @@ bool OEvent::match( const QRegExp& re )const {
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 );
@@ -266,3 +373,4 @@ bool OEvent::match( const QRegExp& re )const {
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 );
@@ -270,3 +378,4 @@ bool OEvent::match( const QRegExp& re )const {
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 );
@@ -276,3 +385,6 @@ bool OEvent::match( const QRegExp& re )const {
276} 385}
277QString OEvent::toRichText()const { 386
387
388QString OEvent::toRichText() const
389{
278 QString text, value; 390 QString text, value;
@@ -281,4 +393,5 @@ QString OEvent::toRichText()const {
281 text += "<b><h3><img src=\"datebook/DateBook\">"; 393 text += "<b><h3><img src=\"datebook/DateBook\">";
282 if ( !description().isEmpty() ) { 394 if ( !description().isEmpty() )
283 text += Qtopia::escapeString(description() ).replace(QRegExp( "[\n]"), "" ); 395 {
396 text += Qtopia::escapeString( description() ).replace( QRegExp( "[\n]" ), "" );
284 } 397 }
@@ -287,5 +400,6 @@ QString OEvent::toRichText()const {
287 // location 400 // location
288 if ( !(value = location()).isEmpty() ) { 401 if ( !( value = location() ).isEmpty() )
402 {
289 text += "<b>" + QObject::tr( "Location:" ) + "</b> "; 403 text += "<b>" + QObject::tr( "Location:" ) + "</b> ";
290 text += Qtopia::escapeString(value) + "<br>"; 404 text += Qtopia::escapeString( value ) + "<br>";
291 } 405 }
@@ -293,3 +407,4 @@ QString OEvent::toRichText()const {
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>";
@@ -297,3 +412,4 @@ QString OEvent::toRichText()const {
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>";
@@ -301,8 +417,10 @@ QString OEvent::toRichText()const {
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() )
305 text += "<b>" + QObject::tr( "Start:") + "</b> "; 422 {
306 text += Qtopia::escapeString(startDateTime().toString() ). 423 text += "<b>" + QObject::tr( "Start:" ) + "</b> ";
307 replace(QRegExp( "[\n]"), "<br>" ) + "<br>"; 424 text += Qtopia::escapeString( startDateTime().toString() ).
425 replace( QRegExp( "[\n]" ), "<br>" ) + "<br>";
308 } 426 }
@@ -310,6 +428,7 @@ QString OEvent::toRichText()const {
310 // end time 428 // end time
311 if ( endDateTime().isValid() ) { 429 if ( endDateTime().isValid() )
312 text += "<b>" + QObject::tr( "End:") + "</b> "; 430 {
313 text += Qtopia::escapeString(endDateTime().toString() ). 431 text += "<b>" + QObject::tr( "End:" ) + "</b> ";
314 replace(QRegExp( "[\n]"), "<br>" ) + "<br>"; 432 text += Qtopia::escapeString( endDateTime().toString() ).
433 replace( QRegExp( "[\n]" ), "<br>" ) + "<br>";
315 } 434 }
@@ -318,6 +437,7 @@ QString OEvent::toRichText()const {
318 // categories 437 // categories
319 if ( categoryNames("Calendar").count() ){ 438 if ( categoryNames( "Calendar" ).count() )
320 text += "<b>" + QObject::tr( "Category:") + "</b> "; 439 {
321 text += categoryNames("Calendar").join(", "); 440 text += "<b>" + QObject::tr( "Category:" ) + "</b> ";
322 text += "<br>"; 441 text += categoryNames( "Calendar" ).join( ", " );
442 text += "<br>";
323 } 443 }
@@ -325,7 +445,8 @@ QString OEvent::toRichText()const {
325 //notes 445 //notes
326 if ( !note().isEmpty() ) { 446 if ( !note().isEmpty() )
327 text += "<b>" + QObject::tr( "Note:") + "</b><br>"; 447 {
448 text += "<b>" + QObject::tr( "Note:" ) + "</b><br>";
328 text += note(); 449 text += note();
329// text += Qtopia::escapeString(note() ). 450 // text += Qtopia::escapeString(note() ).
330// replace(QRegExp( "[\n]"), "<br>" ) + "<br>"; 451 // replace(QRegExp( "[\n]"), "<br>" ) + "<br>";
331 } 452 }
@@ -333,3 +454,6 @@ QString OEvent::toRichText()const {
333} 454}
334QString OEvent::toShortText()const { 455
456
457QString OEvent::toShortText() const
458{
335 QString text; 459 QString text;
@@ -348,19 +472,38 @@ QString OEvent::toShortText()const {
348} 472}
349QString OEvent::type()const { 473
350 return QString::fromLatin1("OEvent"); 474
475QString OEvent::type() const
476{
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();
@@ -370,3 +513,3 @@ void OEvent::changeOrModify() {
370 513
371 if (data->manager ) 514 if ( data->manager )
372 d2->manager = new OPimNotifyManager( *data->manager ); 515 d2->manager = new OPimNotifyManager( *data->manager );
@@ -384,3 +527,4 @@ void OEvent::changeOrModify() {
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 );
@@ -392,4 +536,8 @@ void OEvent::changeOrModify() {
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;
@@ -403,3 +551,4 @@ void OEvent::deref() {
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;
@@ -407,3 +556,3 @@ QMap<int, QString> OEvent::toMap()const {
407 retMap.insert( OEvent::FUid, QString::number( uid() ) ); 556 retMap.insert( OEvent::FUid, QString::number( uid() ) );
408 retMap.insert( OEvent::FCategories, Qtopia::escapeString( Qtopia::Record::idsToString( categories() ) )); 557 retMap.insert( OEvent::FCategories, Qtopia::escapeString( Qtopia::Record::idsToString( categories() ) ) );
409 retMap.insert( OEvent::FDescription, Qtopia::escapeString( description() ) ); 558 retMap.insert( OEvent::FDescription, Qtopia::escapeString( description() ) );
@@ -411,41 +560,46 @@ QMap<int, QString> OEvent::toMap()const {
411 retMap.insert( OEvent::FType, isAllDay() ? "AllDay" : "" ); 560 retMap.insert( OEvent::FType, isAllDay() ? "AllDay" : "" );
412 OPimAlarm alarm = notifiers().alarms()[0]; 561 OPimAlarm alarm = notifiers().alarms() [ 0 ];
413 retMap.insert( OEvent::FAlarm, QString::number( alarm.dateTime().secsTo( startDateTime() ) / 60 ) ); 562 retMap.insert( OEvent::FAlarm, QString::number( alarm.dateTime().secsTo( startDateTime() ) / 60 ) );
414 retMap.insert( OEvent::FSound, (alarm.sound() == OPimAlarm::Loud) ? "loud" : "silent" ); 563 retMap.insert( OEvent::FSound, ( alarm.sound() == OPimAlarm::Loud ) ? "loud" : "silent" );
415 564
416 OTimeZone zone( timeZone().isEmpty() ? OTimeZone::current() : timeZone() ); 565 OTimeZone zone( timeZone().isEmpty() ? OTimeZone::current() : timeZone() );
417 retMap.insert( OEvent::FStart, QString::number( zone.fromUTCDateTime( zone.toDateTime( startDateTime(), OTimeZone::utc() ) ) ) ); 566 retMap.insert( OEvent::FStart, QString::number( zone.fromUTCDateTime( zone.toDateTime( startDateTime(), OTimeZone::utc() ) ) ) );
418 retMap.insert( OEvent::FEnd, QString::number( zone.fromUTCDateTime( zone.toDateTime( endDateTime(), OTimeZone::utc() ) ) ) ); 567 retMap.insert( OEvent::FEnd, QString::number( zone.fromUTCDateTime( zone.toDateTime( endDateTime(), OTimeZone::utc() ) ) ) );
419 retMap.insert( OEvent::FNote, Qtopia::escapeString( note() ) ); 568 retMap.insert( OEvent::FNote, Qtopia::escapeString( note() ) );
420 retMap.insert( OEvent::FTimeZone, timeZone().isEmpty() ? QString( "None" ) : timeZone() ); 569 retMap.insert( OEvent::FTimeZone, timeZone().isEmpty() ? QString( "None" ) : timeZone() );
421 if( parent() ) 570 if ( parent() )
422 retMap.insert( OEvent::FRecParent, QString::number( parent() ) ); 571 retMap.insert( OEvent::FRecParent, QString::number( parent() ) );
423 if( children().count() ){ 572 if ( children().count() )
424 QArray<int> childr = children(); 573 {
425 QString buf; 574 QArray<int> childr = children();
426 for ( uint i = 0; i < childr.count(); i++ ) { 575 QString buf;
427 if ( i != 0 ) buf += " "; 576 for ( uint i = 0; i < childr.count(); i++ )
428 buf += QString::number( childr[i] ); 577 {
429 } 578 if ( i != 0 ) buf += " ";
430 retMap.insert( OEvent::FRecChildren, buf ); 579 buf += QString::number( childr[ i ] );
431 } 580 }
432 581 retMap.insert( OEvent::FRecChildren, buf );
582 }
583
433 // Add recurrence stuff 584 // Add recurrence stuff
434 if( hasRecurrence() ){ 585 if ( hasRecurrence() )
435 ORecur recur = recurrence(); 586 {
436 QMap<int, QString> recFields = recur.toMap(); 587 ORecur recur = recurrence();
437 retMap.insert( OEvent::FRType, recFields[ORecur::RType] ); 588 QMap<int, QString> recFields = recur.toMap();
438 retMap.insert( OEvent::FRWeekdays, recFields[ORecur::RWeekdays] ); 589 retMap.insert( OEvent::FRType, recFields[ ORecur::RType ] );
439 retMap.insert( OEvent::FRPosition, recFields[ORecur::RPosition] ); 590 retMap.insert( OEvent::FRWeekdays, recFields[ ORecur::RWeekdays ] );
440 retMap.insert( OEvent::FRFreq, recFields[ORecur::RFreq] ); 591 retMap.insert( OEvent::FRPosition, recFields[ ORecur::RPosition ] );
441 retMap.insert( OEvent::FRHasEndDate, recFields[ORecur::RHasEndDate] ); 592 retMap.insert( OEvent::FRFreq, recFields[ ORecur::RFreq ] );
442 retMap.insert( OEvent::FREndDate, recFields[ORecur::EndDate] ); 593 retMap.insert( OEvent::FRHasEndDate, recFields[ ORecur::RHasEndDate ] );
443 retMap.insert( OEvent::FRCreated, recFields[ORecur::Created] ); 594 retMap.insert( OEvent::FREndDate, recFields[ ORecur::EndDate ] );
444 retMap.insert( OEvent::FRExceptions, recFields[ORecur::Exceptions] ); 595 retMap.insert( OEvent::FRCreated, recFields[ ORecur::Created ] );
445 } else { 596 retMap.insert( OEvent::FRExceptions, recFields[ ORecur::Exceptions ] );
446 ORecur recur = recurrence(); 597 }
447 QMap<int, QString> recFields = recur.toMap(); 598 else
448 retMap.insert( OEvent::FRType, recFields[ORecur::RType] ); 599 {
449 } 600 ORecur recur = recurrence();
450 601 QMap<int, QString> recFields = recur.toMap();
602 retMap.insert( OEvent::FRType, recFields[ ORecur::RType ] );
603 }
604
451 return retMap; 605 return retMap;
@@ -453,2 +607,3 @@ QMap<int, QString> OEvent::toMap()const {
453 607
608
454void OEvent::fromMap( const QMap<int, QString>& map ) 609void OEvent::fromMap( const QMap<int, QString>& map )
@@ -456,82 +611,94 @@ void OEvent::fromMap( const QMap<int, QString>& map )
456 611
457 // We just want to set the UID if it is really stored. 612 // We just want to set the UID if it is really stored.
458 if ( !map[OEvent::FUid].isEmpty() ) 613 if ( !map[ OEvent::FUid ].isEmpty() )
459 setUid( map[OEvent::FUid].toInt() ); 614 setUid( map[ OEvent::FUid ].toInt() );
460 615
461 setCategories( idsFromString( map[OEvent::FCategories] ) ); 616 setCategories( idsFromString( map[ OEvent::FCategories ] ) );
462 setDescription( map[OEvent::FDescription] ); 617 setDescription( map[ OEvent::FDescription ] );
463 setLocation( map[OEvent::FLocation] ); 618 setLocation( map[ OEvent::FLocation ] );
464 619
465 if ( map[OEvent::FType] == "AllDay" ) 620 if ( map[ OEvent::FType ] == "AllDay" )
466 setAllDay( true ); 621 setAllDay( true );
467 else 622 else
468 setAllDay( false ); 623 setAllDay( false );
469 624
470 int alarmTime = -1; 625 int alarmTime = -1;
471 if( !map[OEvent::FAlarm].isEmpty() ) 626 if ( !map[ OEvent::FAlarm ].isEmpty() )
472 alarmTime = map[OEvent::FAlarm].toInt(); 627 alarmTime = map[ OEvent::FAlarm ].toInt();
473 628
474 int sound = ( ( map[OEvent::FSound] == "loud" ) ? OPimAlarm::Loud : OPimAlarm::Silent ); 629 int sound = ( ( map[ OEvent::FSound ] == "loud" ) ? OPimAlarm::Loud : OPimAlarm::Silent );
475 if ( ( alarmTime != -1 ) ){ 630 if ( ( alarmTime != -1 ) )
476 QDateTime dt = startDateTime().addSecs( -1*alarmTime*60 ); 631 {
477 OPimAlarm al( sound , dt ); 632 QDateTime dt = startDateTime().addSecs( -1 * alarmTime * 60 );
478 notifiers().add( al ); 633 OPimAlarm al( sound , dt );
479 } 634 notifiers().add( al );
480 if ( !map[OEvent::FTimeZone].isEmpty() && ( map[OEvent::FTimeZone] != "None" ) ){ 635 }
481 setTimeZone( map[OEvent::FTimeZone] ); 636 if ( !map[ OEvent::FTimeZone ].isEmpty() && ( map[ OEvent::FTimeZone ] != "None" ) )
482 } 637 {
483 638 setTimeZone( map[ OEvent::FTimeZone ] );
484 time_t start = (time_t) map[OEvent::FStart].toLong(); 639 }
485 time_t end = (time_t) map[OEvent::FEnd].toLong(); 640
486 641 time_t start = ( time_t ) map[ OEvent::FStart ].toLong();
487 /* AllDay is always in UTC */ 642 time_t end = ( time_t ) map[ OEvent::FEnd ].toLong();
488 if ( isAllDay() ) { 643
489 OTimeZone utc = OTimeZone::utc(); 644 /* AllDay is always in UTC */
490 setStartDateTime( utc.fromUTCDateTime( start ) ); 645 if ( isAllDay() )
491 setEndDateTime ( utc.fromUTCDateTime( end ) ); 646 {
492 setTimeZone( "UTC"); // make sure it is really utc 647 OTimeZone utc = OTimeZone::utc();
493 }else { 648 setStartDateTime( utc.fromUTCDateTime( start ) );
494 /* to current date time */ 649 setEndDateTime ( utc.fromUTCDateTime( end ) );
495 // qWarning(" Start is %d", start ); 650 setTimeZone( "UTC" ); // make sure it is really utc
496 OTimeZone zone( timeZone().isEmpty() ? OTimeZone::current() : timeZone() ); 651 }
497 QDateTime date = zone.toDateTime( start ); 652 else
498 qWarning(" Start is %s", date.toString().latin1() ); 653 {
499 setStartDateTime( zone.toDateTime( date, OTimeZone::current() ) ); 654 /* to current date time */
500 655 // qWarning(" Start is %d", start );
501 date = zone.toDateTime( end ); 656 OTimeZone zone( timeZone().isEmpty() ? OTimeZone::current() : timeZone() );
502 setEndDateTime ( zone.toDateTime( date, OTimeZone::current() ) ); 657 QDateTime date = zone.toDateTime( start );
503 } 658 qWarning( " Start is %s", date.toString().latin1() );
504 659 setStartDateTime( zone.toDateTime( date, OTimeZone::current() ) );
505 if ( !map[OEvent::FRecParent].isEmpty() ) 660
506 setParent( map[OEvent::FRecParent].toInt() ); 661 date = zone.toDateTime( end );
507 662 setEndDateTime ( zone.toDateTime( date, OTimeZone::current() ) );
508 if ( !map[OEvent::FRecChildren].isEmpty() ){ 663 }
509 QStringList list = QStringList::split(' ', map[OEvent::FRecChildren] ); 664
510 for ( QStringList::Iterator it = list.begin(); it != list.end(); ++it ) { 665 if ( !map[ OEvent::FRecParent ].isEmpty() )
511 addChild( (*it).toInt() ); 666 setParent( map[ OEvent::FRecParent ].toInt() );
512 } 667
513 } 668 if ( !map[ OEvent::FRecChildren ].isEmpty() )
514 669 {
515 // Fill recurrence stuff and put it directly into the ORecur-Object using fromMap.. 670 QStringList list = QStringList::split( ' ', map[ OEvent::FRecChildren ] );
516 if( !map[OEvent::FRType].isEmpty() ){ 671 for ( QStringList::Iterator it = list.begin(); it != list.end(); ++it )
517 QMap<int, QString> recFields; 672 {
518 recFields.insert( ORecur::RType, map[OEvent::FRType] ); 673 addChild( ( *it ).toInt() );
519 recFields.insert( ORecur::RWeekdays, map[OEvent::FRWeekdays] ); 674 }
520 recFields.insert( ORecur::RPosition, map[OEvent::FRPosition] ); 675 }
521 recFields.insert( ORecur::RFreq, map[OEvent::FRFreq] ); 676
522 recFields.insert( ORecur::RHasEndDate, map[OEvent::FRHasEndDate] ); 677 // Fill recurrence stuff and put it directly into the ORecur-Object using fromMap..
523 recFields.insert( ORecur::EndDate, map[OEvent::FREndDate] ); 678 if ( !map[ OEvent::FRType ].isEmpty() )
524 recFields.insert( ORecur::Created, map[OEvent::FRCreated] ); 679 {
525 recFields.insert( ORecur::Exceptions, map[OEvent::FRExceptions] ); 680 QMap<int, QString> recFields;
526 ORecur recur( recFields ); 681 recFields.insert( ORecur::RType, map[ OEvent::FRType ] );
527 setRecurrence( recur ); 682 recFields.insert( ORecur::RWeekdays, map[ OEvent::FRWeekdays ] );
528 } 683 recFields.insert( ORecur::RPosition, map[ OEvent::FRPosition ] );
529 684 recFields.insert( ORecur::RFreq, map[ OEvent::FRFreq ] );
530} 685 recFields.insert( ORecur::RHasEndDate, map[ OEvent::FRHasEndDate ] );
531 686 recFields.insert( ORecur::EndDate, map[ OEvent::FREndDate ] );
532 687 recFields.insert( ORecur::Created, map[ OEvent::FRCreated ] );
533int OEvent::parent()const { 688 recFields.insert( ORecur::Exceptions, map[ OEvent::FRExceptions ] );
689 ORecur recur( recFields );
690 setRecurrence( recur );
691 }
692
693}
694
695
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();
@@ -539,4 +706,7 @@ void OEvent::setParent( int uid ) {
539} 706}
540QArray<int> OEvent::children() const{ 707
541 if (!data->child) return QArray<int>(); 708
709QArray<int> OEvent::children() const
710{
711 if ( !data->child ) return QArray<int>();
542 else 712 else
@@ -544,5 +714,8 @@ QArray<int> OEvent::children() const{
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;
548 721
@@ -551,15 +724,24 @@ void OEvent::setChildren( const QArray<int>& arr ) {
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 )
555 data->child = new QArray<int>(1); 731 {
556 (*data->child)[0] = uid; 732 data->child = new QArray<int>( 1 );
557 }else{ 733 ( *data->child ) [ 0 ] = uid;
734 }
735 else
736 {
558 int count = data->child->count(); 737 int count = data->child->count();
559 data->child->resize( count + 1 ); 738 data->child->resize( count + 1 );
560 (*data->child)[count] = uid; 739 ( *data->child ) [ count ] = uid;
561 } 740 }
562} 741}
563void OEvent::removeChild( int uid ) { 742
564 if (!data->child || !data->child->contains( uid ) ) return; 743
744void OEvent::removeChild( int uid )
745{
746 if ( !data->child || !data->child->contains( uid ) ) return ;
565 changeOrModify(); 747 changeOrModify();
@@ -568,5 +750,7 @@ void OEvent::removeChild( int uid ) {
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 {
571 newAr[j] = (*data->child)[i]; 753 if ( ( *data->child ) [ i ] != uid )
754 {
755 newAr[ j ] = ( *data->child ) [ i ];
572 j++; 756 j++;
@@ -574,7 +758,10 @@ void OEvent::removeChild( int uid ) {
574 } 758 }
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;
@@ -583,6 +770,8 @@ struct OEffectiveEvent::Data : public QShared {
583 QDate startDate, endDate; 770 QDate startDate, endDate;
584 bool dates : 1; 771bool dates : 1;
585}; 772};
586 773
587OEffectiveEvent::OEffectiveEvent() { 774
775OEffectiveEvent::OEffectiveEvent()
776{
588 data = new Data; 777 data = new Data;
@@ -592,4 +781,7 @@ OEffectiveEvent::OEffectiveEvent() {
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;
@@ -609,3 +801,6 @@ OEffectiveEvent::OEffectiveEvent( const OEvent& ev, const QDate& startDate,
609} 801}
610OEffectiveEvent::OEffectiveEvent( const OEffectiveEvent& ev) { 802
803
804OEffectiveEvent::OEffectiveEvent( const OEffectiveEvent& ev )
805{
611 data = ev.data; 806 data = ev.data;
@@ -613,4 +808,8 @@ OEffectiveEvent::OEffectiveEvent( const OEffectiveEvent& ev) {
613} 808}
614OEffectiveEvent::~OEffectiveEvent() { 809
615 if ( data->deref() ) { 810
811OEffectiveEvent::~OEffectiveEvent()
812{
813 if ( data->deref() )
814 {
616 delete data; 815 delete data;
@@ -619,4 +818,7 @@ OEffectiveEvent::~OEffectiveEvent() {
619} 818}
620OEffectiveEvent& OEffectiveEvent::operator=( const OEffectiveEvent& ev ) { 819
621 if ( *this == ev ) return *this; 820
821OEffectiveEvent& OEffectiveEvent::operator=( const OEffectiveEvent& ev )
822{
823 if ( *this == ev ) return * this;
622 824
@@ -629,3 +831,5 @@ OEffectiveEvent& OEffectiveEvent::operator=( const OEffectiveEvent& ev ) {
629 831
630void OEffectiveEvent::setStartTime( const QTime& ti) { 832
833void OEffectiveEvent::setStartTime( const QTime& ti )
834{
631 changeOrModify(); 835 changeOrModify();
@@ -633,3 +837,6 @@ void OEffectiveEvent::setStartTime( const QTime& ti) {
633} 837}
634void OEffectiveEvent::setEndTime( const QTime& en) { 838
839
840void OEffectiveEvent::setEndTime( const QTime& en )
841{
635 changeOrModify(); 842 changeOrModify();
@@ -637,3 +844,6 @@ void OEffectiveEvent::setEndTime( const QTime& en) {
637} 844}
638void OEffectiveEvent::setEvent( const OEvent& ev) { 845
846
847void OEffectiveEvent::setEvent( const OEvent& ev )
848{
639 changeOrModify(); 849 changeOrModify();
@@ -641,3 +851,6 @@ void OEffectiveEvent::setEvent( const OEvent& ev) {
641} 851}
642void OEffectiveEvent::setDate( const QDate& da) { 852
853
854void OEffectiveEvent::setDate( const QDate& da )
855{
643 changeOrModify(); 856 changeOrModify();
@@ -645,7 +858,11 @@ void OEffectiveEvent::setDate( const QDate& 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 ;
651 } 868 }
@@ -655,36 +872,66 @@ void OEffectiveEvent::setEffectiveDates( const QDate& from,
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
678 return (data->end.hour() * 60 - data->start.hour() * 60) 916
679 + QABS(data->start.minute() - data->end.minute() ); 917int OEffectiveEvent::length() const
918{
919 return ( data->end.hour() * 60 - data->start.hour() * 60 )
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;
689 else if ( data->event.hasRecurrence() ) // single day, since multi-day should have a d pointer 936 else if ( data->event.hasRecurrence() ) // single day, since multi-day should have a d pointer
690 return data->date; 937 return data->date;
@@ -693,3 +940,6 @@ QDate OEffectiveEvent::startDate()const {
693} 940}
694QDate OEffectiveEvent::endDate()const { 941
942
943QDate OEffectiveEvent::endDate() const
944{
695 if ( data->dates ) 945 if ( data->dates )
@@ -701,4 +951,8 @@ QDate OEffectiveEvent::endDate()const {
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;
@@ -707,4 +961,8 @@ void OEffectiveEvent::deref() {
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();
@@ -721,27 +979,45 @@ void OEffectiveEvent::changeOrModify() {
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;
725 if ( data->date == e.date() ) 986 if ( data->date == e.date() )
726 return ( startTime() < e.startTime() ); 987 return ( startTime() < e.startTime() );
727 else 988 else
728 return FALSE; 989 return FALSE;
729} 990}
730bool OEffectiveEvent::operator<=( const OEffectiveEvent &e ) const{ 991
731 return (data->date <= e.date() ); 992
993bool OEffectiveEvent::operator<=( const OEffectiveEvent &e ) const
994{
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()
736 && endTime()== e.endTime() 1003 && endTime() == e.endTime()
737 && event() == e.event() ); 1004 && event() == e.event() );
738} 1005}
739bool OEffectiveEvent::operator!=( const OEffectiveEvent &e ) const { 1006
740 return !(*this == e ); 1007
1008bool OEffectiveEvent::operator!=( const OEffectiveEvent &e ) const
1009{
1010 return !( *this == e );
741} 1011}
742bool OEffectiveEvent::operator>( const OEffectiveEvent &e ) const { 1012
743 return !(*this <= e ); 1013
1014bool OEffectiveEvent::operator>( const OEffectiveEvent &e ) const
1015{
1016 return !( *this <= e );
744} 1017}
745bool OEffectiveEvent::operator>= ( const OEffectiveEvent &e ) const { 1018
746 return !(*this < e); 1019
1020bool OEffectiveEvent::operator>= ( const OEffectiveEvent &e ) const
1021{
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
@@ -2,3 +2,3 @@
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>
@@ -30,9 +30,8 @@
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>
@@ -40,7 +39,11 @@
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 */
@@ -67,4 +70,5 @@ class ORecur;
67 */ 70 */
68class OEvent : public OPimRecord { 71class OEvent : public OPimRecord
69public: 72{
73 public:
70 typedef QValueList<OEvent> ValueList; 74 typedef QValueList<OEvent> ValueList;
@@ -79,16 +83,16 @@ public:
79 FLocation, 83 FLocation,
80 FType, 84 FType,
81 FAlarm, 85 FAlarm,
82 FSound, 86 FSound,
83 FRType, 87 FRType,
84 FRWeekdays, 88 FRWeekdays,
85 FRPosition, 89 FRPosition,
86 FRFreq, 90 FRFreq,
87 FRHasEndDate, 91 FRHasEndDate,
88 FREndDate, 92 FREndDate,
89 FRCreated, 93 FRCreated,
90 FRExceptions, 94 FRExceptions,
91 FStart, 95 FStart,
92 FEnd, 96 FEnd,
93 FNote, 97 FNote,
94 FTimeZone, 98 FTimeZone,
@@ -101,3 +105,3 @@ public:
101 */ 105 */
102 OEvent(int uid = 0); 106 OEvent( int uid = 0 );
103 107
@@ -116,16 +120,16 @@ public:
116 120
117 QString description()const; 121 QString description() const;
118 void setDescription( const QString& description ); 122 void setDescription( const QString& description );
119 123
120 QString location()const; 124 QString location() const;
121 void setLocation( const QString& loc ); 125 void setLocation( const QString& loc );
122 126
123 bool hasNotifiers()const; 127 bool hasNotifiers() const;
124 OPimNotifyManager &notifiers()const; 128 OPimNotifyManager &notifiers() const;
125 129
126 ORecur recurrence()const; 130 ORecur recurrence() const;
127 void setRecurrence( const ORecur& ); 131 void setRecurrence( const ORecur& );
128 bool hasRecurrence()const; 132 bool hasRecurrence() const;
129 133
130 QString note()const; 134 QString note() const;
131 void setNote( const QString& note ); 135 void setNote( const QString& note );
@@ -133,4 +137,4 @@ public:
133 137
134 QDateTime createdDateTime()const; 138 QDateTime createdDateTime() const;
135 void setCreatedDateTime( const QDateTime& dt); 139 void setCreatedDateTime( const QDateTime& dt );
136 140
@@ -139,6 +143,6 @@ public:
139 /** returns the datetime in the local timeZone */ 143 /** returns the datetime in the local timeZone */
140 QDateTime startDateTime()const; 144 QDateTime startDateTime() const;
141 145
142 /** returns the start datetime in the current zone */ 146 /** returns the start datetime in the current zone */
143 QDateTime startDateTimeInZone()const; 147 QDateTime startDateTimeInZone() const;
144 148
@@ -147,7 +151,7 @@ public:
147 /** in current timezone */ 151 /** in current timezone */
148 QDateTime endDateTime()const; 152 QDateTime endDateTime() const;
149 QDateTime endDateTimeInZone()const; 153 QDateTime endDateTimeInZone() const;
150 154
151 bool isMultipleDay()const; 155 bool isMultipleDay() const;
152 bool isAllDay()const; 156 bool isAllDay() const;
153 void setAllDay( bool isAllDay ); 157 void setAllDay( bool isAllDay );
@@ -156,9 +160,9 @@ public:
156 void setTimeZone( const QString& timeZone ); 160 void setTimeZone( const QString& timeZone );
157 QString timeZone()const; 161 QString timeZone() const;
158 162
159 163
160 virtual bool match( const QRegExp& )const; 164 virtual bool match( const QRegExp& ) const;
161 165
162 /** For exception to recurrence here is a list of children... */ 166 /** For exception to recurrence here is a list of children... */
163 QArray<int> children()const; 167 QArray<int> children() const;
164 void setChildren( const QArray<int>& ); 168 void setChildren( const QArray<int>& );
@@ -168,3 +172,3 @@ public:
168 /** return the parent OEvent */ 172 /** return the parent OEvent */
169 int parent()const; 173 int parent() const;
170 void setParent( int uid ); 174 void setParent( int uid );
@@ -173,9 +177,9 @@ public:
173 /* needed reimp */ 177 /* needed reimp */
174 QString toRichText()const; 178 QString toRichText() const;
175 QString toShortText()const; 179 QString toShortText() const;
176 QString type()const; 180 QString type() const;
177 181
178 QMap<int, QString> toMap()const; 182 QMap<int, QString> toMap() const;
179 void fromMap( const QMap<int, QString>& map ); 183 void fromMap( const QMap<int, QString>& map );
180 QString recordField(int )const; 184 QString recordField( int ) const;
181 185
@@ -184,12 +188,13 @@ public:
184 bool loadFromStream( QDataStream& ); 188 bool loadFromStream( QDataStream& );
185 bool saveToStream( QDataStream& )const; 189 bool saveToStream( QDataStream& ) const;
186 190
187/* bool operator==( const OEvent& ); 191 /* bool operator==( const OEvent& );
188 bool operator!=( const OEvent& ); 192 bool operator!=( const OEvent& );
189 bool operator<( const OEvent& ); 193 bool operator<( const OEvent& );
190 bool operator<=( const OEvent& ); 194 bool operator<=( const OEvent& );
191 bool operator>( const OEvent& ); 195 bool operator>( const OEvent& );
192 bool operator>=(const OEvent& ); 196 bool operator>=(const OEvent& );
193*/ 197 */
194private: 198
199 private:
195 inline void changeOrModify(); 200 inline void changeOrModify();
@@ -206,7 +211,9 @@ private:
206 */ 211 */
207class OEffectiveEvent { 212class OEffectiveEvent
208public: 213{
214
215 public:
209 typedef QValueList<OEffectiveEvent> ValueList; 216 typedef QValueList<OEffectiveEvent> ValueList;
210 enum Position { MidWay, Start, End, StartEnd }; 217 enum Position { MidWay, Start, End, StartEnd };
211 // If we calculate the effective event of a multi-day event 218 // If we calculate the effective event of a multi-day event
212 // we have to figure out whether we are at the first day, 219 // we have to figure out whether we are at the first day,
@@ -223,3 +230,3 @@ public:
223 OEffectiveEvent( const OEffectiveEvent& ); 230 OEffectiveEvent( const OEffectiveEvent& );
224 OEffectiveEvent &operator=(const OEffectiveEvent& ); 231 OEffectiveEvent &operator=( const OEffectiveEvent& );
225 ~OEffectiveEvent(); 232 ~OEffectiveEvent();
@@ -233,16 +240,16 @@ public:
233 240
234 QString description()const; 241 QString description() const;
235 QString location()const; 242 QString location() const;
236 QString note()const; 243 QString note() const;
237 OEvent event()const; 244 OEvent event() const;
238 QTime startTime()const; 245 QTime startTime() const;
239 QTime endTime()const; 246 QTime endTime() const;
240 QDate date()const; 247 QDate date() const;
241 248
242 /* return the length in hours */ 249 /* return the length in hours */
243 int length()const; 250 int length() const;
244 int size()const; 251 int size() const;
245 252
246 QDate startDate()const; 253 QDate startDate() const;
247 QDate endDate()const; 254 QDate endDate() const;
248 255
@@ -255,3 +262,3 @@ public:
255 262
256private: 263 private:
257 void deref(); 264 void deref();
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
@@ -29,7 +29,6 @@
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>
@@ -37,3 +36,7 @@
37 36
38namespace Opie { 37/* QT */
38#include <qarray.h>
39
40namespace Opie
41{
39 42
@@ -49,5 +52,7 @@ template <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>;
52public: 56
57 public:
53 typedef OTemplateBase<T> Base; 58 typedef OTemplateBase<T> Base;
@@ -67,3 +72,3 @@ public:
67 ORecordListIterator( const ORecordListIterator& ); 72 ORecordListIterator( const ORecordListIterator& );
68 ORecordListIterator &operator=(const ORecordListIterator& ); 73 ORecordListIterator &operator=( const ORecordListIterator& );
69 74
@@ -83,3 +88,3 @@ public:
83 */ 88 */
84 uint current()const; 89 uint current() const;
85 90
@@ -88,3 +93,3 @@ public:
88 */ 93 */
89 uint count()const; 94 uint count() const;
90 95
@@ -95,3 +100,3 @@ public:
95 100
96private: 101 private:
97 QArray<int> m_uids; 102 QArray<int> m_uids;
@@ -101,3 +106,3 @@ private:
101 T m_record; 106 T m_record;
102 bool m_direction :1; 107 bool m_direction : 1;
103 108
@@ -107,2 +112,3 @@ private:
107 112
113
108class ORecordListPrivate; 114class ORecordListPrivate;
@@ -113,4 +119,5 @@ class ORecordListPrivate;
113template <class T = OPimRecord > 119template <class T = OPimRecord >
114class ORecordList { 120class ORecordList
115public: 121{
122 public:
116 typedef OTemplateBase<T> Base; 123 typedef OTemplateBase<T> Base;
@@ -121,5 +128,5 @@ public:
121 */ 128 */
122 ORecordList () { 129 ORecordList ()
123 } 130 {}
124ORecordList( const QArray<int>& ids, 131 ORecordList( const QArray<int>& ids,
125 const Base* ); 132 const Base* );
@@ -140,10 +147,10 @@ ORecordList( const QArray<int>& ids,
140 */ 147 */
141 uint count()const; 148 uint count() const;
142 149
143 T operator[]( uint i ); 150 T operator[] ( uint i );
144 int uidAt(uint i ); 151 int uidAt( uint i );
145 152
146 /** 153 /**
147 * Remove the contact with given uid 154 * Remove the contact with given uid
148 */ 155 */
149 bool remove( int uid ); 156 bool remove( int uid );
@@ -154,3 +161,3 @@ ORecordList( const QArray<int>& ids,
154 */ 161 */
155private: 162 private:
156 QArray<int> m_ids; 163 QArray<int> m_ids;
@@ -160,5 +167,7 @@ private:
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;
@@ -170,10 +179,15 @@ ORecordListIterator<T>::ORecordListIterator() {
170} 179}
180
181
171template <class T> 182template <class T>
172ORecordListIterator<T>::~ORecordListIterator() { 183ORecordListIterator<T>::~ORecordListIterator()
173/* nothing to delete */ 184{
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 )
178// qWarning("ORecordListIterator copy c'tor"); 191{
192 // qWarning("ORecordListIterator copy c'tor");
179 m_uids = it.m_uids; 193 m_uids = it.m_uids;
@@ -186,4 +200,6 @@ ORecordListIterator<T>::ORecordListIterator( const ORecordListIterator<T>& it) {
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;
@@ -197,9 +213,11 @@ ORecordListIterator<T> &ORecordListIterator<T>::operator=( const ORecordListIter
197 213
214
198template <class T> 215template <class T>
199T ORecordListIterator<T>::operator*() { 216T ORecordListIterator<T>::operator*()
200 //qWarning("operator* %d %d", m_current, m_uids[m_current] ); 217{
201 if (!m_end ) 218 //qWarning("operator* %d %d", m_current, m_uids[m_current] );
202 m_record = m_temp->find( m_uids[m_current], m_uids, m_current, 219 if ( !m_end )
220 m_record = m_temp->find( m_uids[ m_current ], m_uids, m_current,
203 m_direction ? Base::Forward : 221 m_direction ? Base::Forward :
204 Base::Reverse ); 222 Base::Reverse );
205 else 223 else
@@ -210,9 +228,13 @@ T ORecordListIterator<T>::operator*() {
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;
@@ -221,9 +243,14 @@ ORecordListIterator<T> &ORecordListIterator<T>::operator++() {
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;
@@ -233,4 +260,6 @@ ORecordListIterator<T> &ORecordListIterator<T>::operator--() {
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
@@ -245,25 +274,37 @@ bool ORecordListIterator<T>::operator==( const ORecordListIterator<T>& it ) {
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 )
248 return !(*this == it ); 279{
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,
252 const Base* t ) 286 const Base* t )
253 : m_uids( uids ), m_current( 0 ), m_temp( t ), m_end( false ), 287 : m_uids( uids ), m_current( 0 ), m_temp( t ), m_end( false ),
254 m_direction( false ) 288 m_direction( false )
255{ 289{
256 /* if the list is empty we're already at the end of the list */ 290 /* if the list is empty we're already at the end of the list */
257 if (uids.count() == 0 ) 291 if ( uids.count() == 0 )
258 m_end = true; 292 m_end = true;
259} 293}
294
295
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{
267 m_end = false; 306 if ( cur < m_uids.count() )
268 m_current= cur; 307 {
308 m_end = false;
309 m_current = cur;
269 } 310 }
@@ -271,5 +312,8 @@ void ORecordListIterator<T>::setCurrent( uint cur ) {
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>
@@ -277,11 +321,16 @@ ORecordList<T>::ORecordList( const QArray<int>& ids,
277 const Base* acc ) 321 const Base* acc )
278 : m_ids( ids ), m_acc( acc ) 322 : m_ids( ids ), m_acc( acc )
279{ 323{}
280} 324
325
281template <class T> 326template <class T>
282ORecordList<T>::~ORecordList() { 327ORecordList<T>::~ORecordList()
283/* nothing to do here */ 328{
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 );
@@ -289,4 +338,7 @@ typename ORecordList<T>::Iterator ORecordList<T>::begin() {
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 );
@@ -297,8 +349,14 @@ typename ORecordList<T>::Iterator ORecordList<T>::end() {
297} 349}
350
351
298template <class T> 352template <class T>
299uint ORecordList<T>::count()const { 353uint ORecordList<T>::count() const
300return m_ids.count(); 354{
355 return 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() )
@@ -306,28 +364,36 @@ T ORecordList<T>::operator[]( uint i ) {
306 /* forward */ 364 /* forward */
307 return m_acc->find( m_ids[i], m_ids, i ); 365 return m_acc->find( m_ids[ i ], m_ids, i );
308}
309template <class T>
310int ORecordList<T>::uidAt( uint i ) {
311 return m_ids[i];
312} 366}
313 367
368
314template <class T> 369template <class T>
315bool ORecordList<T>::remove( int uid ) { 370int ORecordList<T>::uidAt( uint i )
316 QArray<int> copy( m_ids.count() ); 371{
317 int counter = 0; 372 return m_ids[ i ];
318 bool ret_val = false; 373}
319 374
320 for (uint i = 0; i < m_ids.count(); i++){
321 if ( m_ids[i] != uid ){
322 copy[counter++] = m_ids[i];
323 375
324 }else 376template <class T>
325 ret_val = true; 377bool ORecordList<T>::remove( int uid )
326 } 378{
379 QArray<int> copy( m_ids.count() );
380 int counter = 0;
381 bool ret_val = false;
382
383 for ( uint i = 0; i < m_ids.count(); i++ )
384 {
385 if ( m_ids[ i ] != uid )
386 {
387 copy[ counter++ ] = m_ids[ i ];
388
389 }
390 else
391 ret_val = true;
392 }
327 393
328 copy.resize( counter ); 394 copy.resize( counter );
329 m_ids = copy; 395 m_ids = copy;
330 396
331 397
332 return ret_val; 398 return ret_val;
333} 399}
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
@@ -28,7 +28,11 @@
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>
@@ -40,15 +44,13 @@
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;
@@ -58,3 +60,4 @@ struct OTodo::OTodoData : public QShared {
58 }; 60 };
59 ~OTodoData() { 61 ~OTodoData()
62 {
60 delete recur; 63 delete recur;
@@ -65,4 +68,4 @@ struct OTodo::OTodoData : public QShared {
65 QDate date; 68 QDate date;
66 bool isCompleted:1; 69 bool isCompleted: 1;
67 bool hasDate:1; 70 bool hasDate: 1;
68 int priority; 71 int priority;
@@ -80,13 +83,18 @@ struct OTodo::OTodoData : public QShared {
80 83
81OTodo::OTodo(const OTodo &event ) 84
82 : OPimRecord( event ), data( event.data ) 85OTodo::OTodo( const OTodo &event )
86 : OPimRecord( event ), data( event.data )
83{ 87{
84 data->ref(); 88 data->ref();
85// qWarning("ref up"); 89 // qWarning("ref up");
86} 90}
87OTodo::~OTodo() {
88 91
89// qWarning("~OTodo " ); 92
90 if ( data->deref() ) { 93OTodo::~OTodo()
91// qWarning("OTodo::dereffing"); 94{
95
96 // qWarning("~OTodo " );
97 if ( data->deref() )
98 {
99 // qWarning("OTodo::dereffing");
92 delete data; 100 delete data;
@@ -95,11 +103,13 @@ OTodo::~OTodo() {
95} 103}
96OTodo::OTodo(bool completed, int priority, 104
97 const QArray<int> &category, 105
98 const QString& summary, 106OTodo::OTodo( bool completed, int priority,
99 const QString &description, 107 const QArray<int> &category,
100 ushort progress, 108 const QString& summary,
101 bool hasDate, QDate date, int uid ) 109 const QString &description,
102 : OPimRecord( uid ) 110 ushort progress,
111 bool hasDate, QDate date, int uid )
112 : OPimRecord( uid )
103{ 113{
104// qWarning("OTodoData " + summary); 114 // qWarning("OTodoData " + summary);
105 setCategories( category ); 115 setCategories( category );
@@ -114,14 +124,16 @@ OTodo::OTodo(bool completed, int priority,
114 data->prog = progress; 124 data->prog = progress;
115 data->desc = Qtopia::simplifyMultiLineSpace(description ); 125 data->desc = Qtopia::simplifyMultiLineSpace( description );
116} 126}
117OTodo::OTodo(bool completed, int priority, 127
118 const QStringList &category, 128
119 const QString& summary, 129OTodo::OTodo( bool completed, int priority,
120 const QString &description, 130 const QStringList &category,
121 ushort progress, 131 const QString& summary,
122 bool hasDate, QDate date, int uid ) 132 const QString &description,
123 : OPimRecord( uid ) 133 ushort progress,
134 bool hasDate, QDate date, int uid )
135 : OPimRecord( uid )
124{ 136{
125// qWarning("OTodoData" + summary); 137 // qWarning("OTodoData" + summary);
126 setCategories( idsFromString( category.join(";") ) ); 138 setCategories( idsFromString( category.join( ";" ) ) );
127 139
@@ -135,21 +147,32 @@ OTodo::OTodo(bool completed, int priority,
135 data->prog = progress; 147 data->prog = progress;
136 data->desc = Qtopia::simplifyMultiLineSpace(description ); 148 data->desc = Qtopia::simplifyMultiLineSpace( description );
137} 149}
138bool OTodo::match( const QRegExp &regExp )const 150
151
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 )
141 setLastHitField( Priority ); 155 {
142 return true; 156 setLastHitField( Priority );
143 }else if( data->hasDate && data->date.toString().find( regExp) != -1 ){ 157 return true;
144 setLastHitField( HasDate ); 158 }
145 return true; 159 else if ( data->hasDate && data->date.toString().find( regExp ) != -1 )
146 }else if(data->desc.find( regExp ) != -1 ){ 160 {
161 setLastHitField( HasDate );
162 return true;
163 }
164 else if ( data->desc.find( regExp ) != -1 )
165 {
147 setLastHitField( Description ); 166 setLastHitField( Description );
148 return true; 167 return true;
149 }else if(data->sum.find( regExp ) != -1 ) { 168 }
169 else if ( data->sum.find( regExp ) != -1 )
170 {
150 setLastHitField( Summary ); 171 setLastHitField( Summary );
151 return true; 172 return true;
152 } 173 }
153 return false; 174 return false;
154} 175}
176
177
155bool OTodo::isCompleted() const 178bool OTodo::isCompleted() const
@@ -158,2 +181,4 @@ bool OTodo::isCompleted() const
158} 181}
182
183
159bool OTodo::hasDueDate() const 184bool OTodo::hasDueDate() const
@@ -162,9 +187,17 @@ bool OTodo::hasDueDate() const
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}
169int OTodo::priority()const 200
201
202int OTodo::priority() const
170{ 203{
@@ -172,2 +205,4 @@ int OTodo::priority()const
172} 205}
206
207
173QString OTodo::summary() const 208QString OTodo::summary() const
@@ -176,2 +211,4 @@ QString OTodo::summary() const
176} 211}
212
213
177ushort OTodo::progress() const 214ushort OTodo::progress() const
@@ -180,3 +217,5 @@ ushort OTodo::progress() const
180} 217}
181QDate OTodo::dueDate()const 218
219
220QDate OTodo::dueDate() const
182{ 221{
@@ -184,9 +223,17 @@ QDate OTodo::dueDate()const
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}
191QString OTodo::description()const 236
237
238QString OTodo::description() const
192{ 239{
@@ -194,8 +241,15 @@ QString OTodo::description()const
194} 241}
195bool OTodo::hasState() const{ 242
196 if (!data->state ) return false; 243
244bool OTodo::hasState() const
245{
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;
@@ -204,23 +258,37 @@ OPimState OTodo::state()const {
204 258
205 return (*data->state); 259 return ( *data->state );
206} 260}
207bool OTodo::hasRecurrence()const { 261
208 if (!data->recur) return false; 262
263bool OTodo::hasRecurrence() const
264{
265 if ( !data->recur ) return false;
209 return data->recur->doesRecur(); 266 return data->recur->doesRecur();
210} 267}
211ORecur OTodo::recurrence()const {
212 if (!data->recur) return ORecur();
213 268
214 return (*data->recur); 269
270ORecur OTodo::recurrence() const
271{
272 if ( !data->recur ) return ORecur();
273
274 return ( *data->recur );
215} 275}
216bool OTodo::hasMaintainer()const {
217 if (!data->maintainer) return false;
218 276
219 return (data->maintainer->mode() != OPimMaintainer::Undefined ); 277
278bool OTodo::hasMaintainer() const
279{
280 if ( !data->maintainer ) return false;
281
282 return ( data->maintainer->mode() != OPimMaintainer::Undefined );
220} 283}
221OPimMaintainer OTodo::maintainer()const {
222 if (!data->maintainer) return OPimMaintainer();
223 284
224 return (*data->maintainer); 285
286OPimMaintainer OTodo::maintainer() const
287{
288 if ( !data->maintainer ) return OPimMaintainer();
289
290 return ( *data->maintainer );
225} 291}
292
293
226void OTodo::setCompleted( bool completed ) 294void OTodo::setCompleted( bool completed )
@@ -230,2 +298,4 @@ void OTodo::setCompleted( bool completed )
230} 298}
299
300
231void OTodo::setHasDueDate( bool hasDate ) 301void OTodo::setHasDueDate( bool hasDate )
@@ -235,8 +305,12 @@ void OTodo::setHasDueDate( bool hasDate )
235} 305}
236void OTodo::setDescription(const QString &desc ) 306
307
308void OTodo::setDescription( const QString &desc )
237{ 309{
238// qWarning( "desc " + desc ); 310 // qWarning( "desc " + desc );
239 changeOrModify(); 311 changeOrModify();
240 data->desc = Qtopia::simplifyMultiLineSpace(desc ); 312 data->desc = Qtopia::simplifyMultiLineSpace( desc );
241} 313}
314
315
242void OTodo::setSummary( const QString& sum ) 316void OTodo::setSummary( const QString& sum )
@@ -246,3 +320,5 @@ void OTodo::setSummary( const QString& sum )
246} 320}
247void OTodo::setPriority(int prio ) 321
322
323void OTodo::setPriority( int prio )
248{ 324{
@@ -251,2 +327,4 @@ void OTodo::setPriority(int prio )
251} 327}
328
329
252void OTodo::setDueDate( const QDate& date ) 330void OTodo::setDueDate( const QDate& date )
@@ -256,3 +334,6 @@ void OTodo::setDueDate( const QDate& date )
256} 334}
257void OTodo::setStartDate( const QDate& date ) { 335
336
337void OTodo::setStartDate( const QDate& date )
338{
258 changeOrModify(); 339 changeOrModify();
@@ -260,3 +341,6 @@ void OTodo::setStartDate( const QDate& date ) {
260} 341}
261void OTodo::setCompletedDate( const QDate& date ) { 342
343
344void OTodo::setCompletedDate( const QDate& date )
345{
262 changeOrModify(); 346 changeOrModify();
@@ -264,6 +348,9 @@ void OTodo::setCompletedDate( const QDate& 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 )
268 (*data->state) = state; 355 ( *data->state ) = state;
269 else 356 else
@@ -271,6 +358,9 @@ void OTodo::setState( const 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 )
275 (*data->recur) = rec; 365 ( *data->recur ) = rec;
276 else 366 else
@@ -278,7 +368,10 @@ void OTodo::setRecurrence( const 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
282 if (data->maintainer ) 375 if ( data->maintainer )
283 (*data->maintainer) = pim; 376 ( *data->maintainer ) = pim;
284 else 377 else
@@ -286,9 +379,13 @@ void OTodo::setMaintainer( const OPimMaintainer& pim ) {
286} 379}
380
381
287bool OTodo::isOverdue( ) 382bool OTodo::isOverdue( )
288{ 383{
289 if( data->hasDate && !data->isCompleted) 384 if ( data->hasDate && !data->isCompleted )
290 return QDate::currentDate() > data->date; 385 return QDate::currentDate() > data->date;
291 return false; 386 return false;
292} 387}
293void OTodo::setProgress(ushort progress ) 388
389
390void OTodo::setProgress( ushort progress )
294{ 391{
@@ -297,5 +394,10 @@ void OTodo::setProgress(ushort progress )
297} 394}
298QString OTodo::toShortText() const { 395
299 return summary(); 396
397QString OTodo::toShortText() const
398{
399 return summary();
300} 400}
401
402
301/*! 403/*!
@@ -305,25 +407,27 @@ QString OTodo::toRichText() const
305{ 407{
306 QString text; 408 QString text;
307 QStringList catlist; 409 QStringList catlist;
308 410
309 // summary 411 // summary
310 text += "<b><h3><img src=\"todo/TodoList\"> "; 412 text += "<b><h3><img src=\"todo/TodoList\"> ";
311 if ( !summary().isEmpty() ) { 413 if ( !summary().isEmpty() )
312 text += Qtopia::escapeString(summary() ).replace(QRegExp( "[\n]"), "" ); 414 {
313 } 415 text += Qtopia::escapeString( summary() ).replace( QRegExp( "[\n]" ), "" );
314 text += "</h3></b><br><hr><br>"; 416 }
315 417 text += "</h3></b><br><hr><br>";
316 // description 418
317 if( !description().isEmpty() ){ 419 // description
318 text += "<b>" + QObject::tr( "Description:" ) + "</b><br>"; 420 if ( !description().isEmpty() )
319 text += Qtopia::escapeString(description() ).replace(QRegExp( "[\n]"), "<br>" ) + "<br>"; 421 {
320 } 422 text += "<b>" + QObject::tr( "Description:" ) + "</b><br>";
321 423 text += Qtopia::escapeString( description() ).replace( QRegExp( "[\n]" ), "<br>" ) + "<br>";
322 // priority 424 }
323 int priorityval = priority(); 425
324 text += "<b>" + QObject::tr( "Priority:") +" </b><img src=\"todo/priority" + 426 // priority
325 QString::number( priorityval ) + "\"> "; 427 int priorityval = priority();
326 428 text += "<b>" + QObject::tr( "Priority:" ) + " </b><img src=\"todo/priority" +
327 switch ( priorityval ) 429 QString::number( priorityval ) + "\"> ";
328 { 430
431 switch ( priorityval )
432 {
329 case 1 : text += QObject::tr( "Very high" ); 433 case 1 : text += QObject::tr( "Very high" );
@@ -338,57 +442,73 @@ QString OTodo::toRichText() const
338 break; 442 break;
339 }; 443 };
340 text += "<br>"; 444 text += "<br>";
341 445
342 // progress 446 // progress
343 text += "<b>" + QObject::tr( "Progress:") + " </b>" 447 text += "<b>" + QObject::tr( "Progress:" ) + " </b>"
344 + QString::number( progress() ) + " %<br>"; 448 + QString::number( progress() ) + " %<br>";
345 449
346 // due date 450 // due date
347 if (hasDueDate() ){ 451 if ( hasDueDate() )
348 QDate dd = dueDate(); 452 {
349 int off = QDate::currentDate().daysTo( dd ); 453 QDate dd = dueDate();
350 454 int off = QDate::currentDate().daysTo( dd );
351 text += "<b>" + QObject::tr( "Deadline:" ) + " </b><font color=\""; 455
352 if ( off < 0 ) 456 text += "<b>" + QObject::tr( "Deadline:" ) + " </b><font color=\"";
353 text += "#FF0000"; 457 if ( off < 0 )
354 else if ( off == 0 ) 458 text += "#FF0000";
355 text += "#FFFF00"; 459 else if ( off == 0 )
356 else if ( off > 0 ) 460 text += "#FFFF00";
357 text += "#00FF00"; 461 else if ( off > 0 )
358 462 text += "#00FF00";
359 text += "\">" + dd.toString() + "</font><br>"; 463
360 } 464 text += "\">" + dd.toString() + "</font><br>";
361 465 }
362 // categories 466
363 text += "<b>" + QObject::tr( "Category:") + "</b> "; 467 // categories
364 text += categoryNames( "Todo List" ).join(", "); 468 text += "<b>" + QObject::tr( "Category:" ) + "</b> ";
365 text += "<br>"; 469 text += categoryNames( "Todo List" ).join( ", " );
366 470 text += "<br>";
367 return text; 471
368} 472 return text;
369bool OTodo::hasNotifiers()const { 473}
370 if (!data->notifiers) return false; 474
475
476bool OTodo::hasNotifiers() const
477{
478 if ( !data->notifiers ) return false;
371 return !data->notifiers->isEmpty(); 479 return !data->notifiers->isEmpty();
372} 480}
373OPimNotifyManager& OTodo::notifiers() { 481
374 if (!data->notifiers ) 482
483OPimNotifyManager& OTodo::notifiers()
484{
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
379 if (!data->notifiers ) 490
491const OPimNotifyManager& OTodo::notifiers() const
492{
493 if ( !data->notifiers )
380 data->notifiers = new OPimNotifyManager; 494 data->notifiers = new OPimNotifyManager;
381 495
382 return (*data->notifiers); 496 return ( *data->notifiers );
383} 497}
384 498
385bool OTodo::operator<( const OTodo &toDoEvent )const{ 499
386 if( !hasDueDate() && !toDoEvent.hasDueDate() ) return true; 500bool OTodo::operator<( const OTodo &toDoEvent ) const
387 if( !hasDueDate() && toDoEvent.hasDueDate() ) return false; 501{
388 if( hasDueDate() && toDoEvent.hasDueDate() ){ 502 if ( !hasDueDate() && !toDoEvent.hasDueDate() ) return true;
389 if( dueDate() == toDoEvent.dueDate() ){ // let's the priority decide 503 if ( !hasDueDate() && toDoEvent.hasDueDate() ) return false;
390 return priority() < toDoEvent.priority(); 504 if ( hasDueDate() && toDoEvent.hasDueDate() )
391 }else{ 505 {
392 return dueDate() < toDoEvent.dueDate(); 506 if ( dueDate() == toDoEvent.dueDate() )
393 } 507 { // let's the priority decide
508 return priority() < toDoEvent.priority();
509 }
510 else
511 {
512 return dueDate() < toDoEvent.dueDate();
513 }
394 } 514 }
@@ -396,12 +516,18 @@ bool OTodo::operator<( const OTodo &toDoEvent )const{
396} 516}
397bool OTodo::operator<=(const OTodo &toDoEvent )const 517
518
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 {
403 return priority() <= toDoEvent.priority(); 525 if ( dueDate() == toDoEvent.dueDate() )
404 }else{ 526 { // let's the priority decide
405 return dueDate() <= toDoEvent.dueDate(); 527 return priority() <= toDoEvent.priority();
406 } 528 }
529 else
530 {
531 return dueDate() <= toDoEvent.dueDate();
532 }
407 } 533 }
@@ -409,12 +535,18 @@ bool OTodo::operator<=(const OTodo &toDoEvent )const
409} 535}
410bool OTodo::operator>(const OTodo &toDoEvent )const 536
537
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 {
416 return priority() > toDoEvent.priority(); 544 if ( dueDate() == toDoEvent.dueDate() )
417 }else{ 545 { // let's the priority decide
418 return dueDate() > toDoEvent.dueDate(); 546 return priority() > toDoEvent.priority();
419 } 547 }
548 else
549 {
550 return dueDate() > toDoEvent.dueDate();
551 }
420 } 552 }
@@ -422,12 +554,18 @@ bool OTodo::operator>(const OTodo &toDoEvent )const
422} 554}
423bool OTodo::operator>=(const OTodo &toDoEvent )const 555
556
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 {
429 return priority() > toDoEvent.priority(); 563 if ( dueDate() == toDoEvent.dueDate() )
430 }else{ 564 { // let's the priority decide
431 return dueDate() > toDoEvent.dueDate(); 565 return priority() > toDoEvent.priority();
432 } 566 }
567 else
568 {
569 return dueDate() > toDoEvent.dueDate();
570 }
433 } 571 }
@@ -435,3 +573,5 @@ bool OTodo::operator>=(const OTodo &toDoEvent )const
435} 573}
436bool OTodo::operator==(const OTodo &toDoEvent )const 574
575
576bool OTodo::operator==( const OTodo &toDoEvent ) const
437{ 577{
@@ -444,3 +584,3 @@ bool OTodo::operator==(const OTodo &toDoEvent )const
444 if ( data->desc != toDoEvent.data->desc ) return false; 584 if ( data->desc != toDoEvent.data->desc ) return false;
445 if ( data->maintainer != toDoEvent.data->maintainer ) 585 if ( data->maintainer != toDoEvent.data->maintainer )
446 return false; 586 return false;
@@ -449,14 +589,20 @@ bool OTodo::operator==(const OTodo &toDoEvent )const
449} 589}
450void OTodo::deref() {
451 590
452// qWarning("deref in ToDoEvent"); 591
453 if ( data->deref() ) { 592void OTodo::deref()
454// qWarning("deleting"); 593{
594
595 // qWarning("deref in ToDoEvent");
596 if ( data->deref() )
597 {
598 // qWarning("deleting");
455 delete data; 599 delete data;
456 data= 0; 600 data = 0;
457 } 601 }
458} 602}
459OTodo &OTodo::operator=(const OTodo &item ) 603
604
605OTodo &OTodo::operator=( const OTodo &item )
460{ 606{
461 if ( this == &item ) return *this; 607 if ( this == &item ) return * this;
462 608
@@ -471,3 +617,5 @@ OTodo &OTodo::operator=(const OTodo &item )
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;
@@ -475,3 +623,3 @@ QMap<int, QString> OTodo::toMap() const {
475 map.insert( Uid, QString::number( uid() ) ); 623 map.insert( Uid, QString::number( uid() ) );
476 map.insert( Category, idsToString( categories() ) ); 624 map.insert( Category, idsToString( categories() ) );
477 map.insert( HasDate, QString::number( data->hasDate ) ); 625 map.insert( HasDate, QString::number( data->hasDate ) );
@@ -481,3 +629,3 @@ QMap<int, QString> OTodo::toMap() const {
481 map.insert( Priority, QString::number( data->priority ) ); 629 map.insert( Priority, QString::number( data->priority ) );
482 map.insert( DateDay, QString::number( data->date.day() ) ); 630 map.insert( DateDay, QString::number( data->date.day() ) );
483 map.insert( DateMonth, QString::number( data->date.month() ) ); 631 map.insert( DateMonth, QString::number( data->date.month() ) );
@@ -485,3 +633,3 @@ QMap<int, QString> OTodo::toMap() const {
485 map.insert( Progress, QString::number( data->prog ) ); 633 map.insert( Progress, QString::number( data->prog ) );
486// map.insert( CrossReference, crossToString() ); 634 // map.insert( CrossReference, crossToString() );
487 /* FIXME!!! map.insert( State, ); 635 /* FIXME!!! map.insert( State, );
@@ -494,2 +642,3 @@ QMap<int, QString> OTodo::toMap() const {
494 642
643
495/** 644/**
@@ -499,8 +648,10 @@ QMap<int, QString> OTodo::toMap() const {
499 */ 648 */
500void OTodo::changeOrModify() { 649void OTodo::changeOrModify()
501 if ( data->count != 1 ) { 650{
502 qWarning("changeOrModify"); 651 if ( data->count != 1 )
652 {
653 qWarning( "changeOrModify" );
503 data->deref(); 654 data->deref();
504 OTodoData* d2 = new OTodoData(); 655 OTodoData* d2 = new OTodoData();
505 copy(data, d2 ); 656 copy( data, d2 );
506 data = d2; 657 data = d2;
@@ -508,2 +659,4 @@ void OTodo::changeOrModify() {
508} 659}
660
661
509// WATCHOUT 662// WATCHOUT
@@ -513,3 +666,4 @@ void OTodo::changeOrModify() {
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;
@@ -523,9 +677,9 @@ void OTodo::copy( OTodoData* src, OTodoData* dest ) {
523 677
524 if (src->state ) 678 if ( src->state )
525 dest->state = new OPimState( *src->state ); 679 dest->state = new OPimState( *src->state );
526 680
527 if (src->recur ) 681 if ( src->recur )
528 dest->recur = new ORecur( *src->recur ); 682 dest->recur = new ORecur( *src->recur );
529 683
530 if (src->maintainer ) 684 if ( src->maintainer )
531 dest->maintainer = new OPimMaintainer( *src->maintainer ) 685 dest->maintainer = new OPimMaintainer( *src->maintainer )
@@ -535,9 +689,15 @@ void OTodo::copy( OTodoData* src, OTodoData* dest ) {
535 689
536 if (src->notifiers ) 690 if ( src->notifiers )
537 dest->notifiers = new OPimNotifyManager( *src->notifiers ); 691 dest->notifiers = new OPimNotifyManager( *src->notifiers );
538} 692}
539QString OTodo::type() const { 693
540 return QString::fromLatin1("OTodo"); 694
695QString OTodo::type() const
696{
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;
@@ -545,3 +705,5 @@ QString OTodo::recordField(int /*id*/ )const {
545 705
546int OTodo::rtti(){ 706
707int OTodo::rtti()
708{
547 return OPimResolver::TodoList; 709 return OPimResolver::TodoList;
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
@@ -1,8 +1,8 @@
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) The Main Author <main-author@whereever.org>
4 =. Copyright (C) The Opie Team <opie-devel@handhelds.org> 4 =. Copyright (C) The Opie Team <opie-devel@handhelds.org>
5 .=l. 5 .=l.
6 .>+-= 6 .>+-=
7 _;:, .> :=|. This program is free software; you can 7_;:, .> :=|. This program is free software; you can
8.> <`_, > . <= redistribute it and/or modify it under 8.> <`_, > . <= redistribute it and/or modify it under
@@ -10,24 +10,30 @@
10.="- .-=="i, .._ License as published by the Free Software 10.="- .-=="i, .._ License as published by the Free Software
11 - . .-<_> .<> Foundation; either version 2 of the License, 11- . .-<_> .<> Foundation; either version 2 of the License,
12 ._= =} : or (at your option) any later version. 12 ._= =} : or (at your option) any later version.
13 .%`+i> _;_. 13 .%`+i> _;_.
14 .i_,=:_. -<s. This program is distributed in the hope that 14 .i_,=:_. -<s. This program is distributed in the hope that
15 + . -:. = it will be useful, but WITHOUT ANY WARRANTY; 15 + . -:. = it will be useful, but WITHOUT ANY WARRANTY;
16 : .. .:, . . . without even the implied warranty of 16 : .. .:, . . . without even the implied warranty of
17 =_ + =;=|` MERCHANTABILITY or FITNESS FOR A 17 =_ + =;=|` MERCHANTABILITY or FITNESS FOR A
18 _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU 18 _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU
19..}^=.= = ; Library General Public License for more 19..}^=.= = ; Library General Public License for more
20++= -. .` .: details. 20++= -. .` .: details.
21 : = ...= . :.=- 21: = ...= . :.=-
22 -. .:....=;==+<; You should have received a copy of the GNU 22-. .:....=;==+<; You should have received a copy of the GNU
23 -_. . . )=. = Library General Public License along with 23 -_. . . )=. = Library General Public License along with
24 -- :-=` this library; see the file COPYING.LIB. 24 -- :-=` this library; see the file COPYING.LIB.
25 If not, write to the Free Software Foundation, 25 If not, write to the Free Software Foundation,
26 Inc., 59 Temple Place - Suite 330, 26 Inc., 59 Temple Place - Suite 330,
27 Boston, MA 02111-1307, USA. 27 Boston, MA 02111-1307, USA.
28*/ 28*/
29#ifndef OPIE_TODO_EVENT_H
30#define OPIE_TODO_EVENT_H
31 29
30#ifndef OTODOEVENT_H
31#define OTODOEVENT_H
32 32
33/* OPIE */
34#include <opie2/opimrecord.h>
35#include <qpe/recordfields.h>
36#include <qpe/palmtopuidgen.h>
37
38/* QT */
33#include <qarray.h> 39#include <qarray.h>
@@ -39,9 +45,4 @@
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
@@ -51,4 +52,5 @@ class OPimMaintainer;
51class OPimNotifyManager; 52class OPimNotifyManager;
52class OTodo : public OPimRecord { 53class OTodo : public OPimRecord
53public: 54{
55 public:
54 typedef QValueList<OTodo> ValueList; 56 typedef QValueList<OTodo> ValueList;
@@ -76,5 +78,5 @@ public:
76 }; 78 };
77 public: 79 public:
78 // priorities from Very low to very high 80 // priorities from Very low to very high
79 enum TaskPriority { VeryHigh=1, High, Normal, Low, VeryLow }; 81 enum TaskPriority { VeryHigh = 1, High, Normal, Low, VeryLow };
80 82
@@ -103,3 +105,3 @@ public:
103 ushort progress = 0, 105 ushort progress = 0,
104 bool hasDate = false, QDate date = QDate::currentDate(), 106 bool hasDate = false, QDate date = QDate::currentDate(),
105 int uid = 0 /* empty */ ); 107 int uid = 0 /* empty */ );
@@ -109,3 +111,3 @@ public:
109 */ 111 */
110 OTodo(const OTodo & ); 112 OTodo( const OTodo & );
111 113
@@ -125,4 +127,4 @@ public:
125 bool hasDueDate() const; 127 bool hasDueDate() const;
126 bool hasStartDate()const; 128 bool hasStartDate() const;
127 bool hasCompletedDate()const; 129 bool hasCompletedDate() const;
128 130
@@ -131,3 +133,3 @@ public:
131 */ 133 */
132 int priority()const ; 134 int priority() const ;
133 135
@@ -141,3 +143,3 @@ public:
141 */ 143 */
142 QDate dueDate()const; 144 QDate dueDate() const;
143 145
@@ -146,3 +148,3 @@ public:
146 */ 148 */
147 QDate startDate()const; 149 QDate startDate() const;
148 150
@@ -151,3 +153,3 @@ public:
151 */ 153 */
152 QDate completedDate()const; 154 QDate completedDate() const;
153 155
@@ -156,3 +158,3 @@ public:
156 */ 158 */
157 bool hasState()const; 159 bool hasState() const;
158 160
@@ -161,3 +163,3 @@ public:
161 */ 163 */
162 OPimState state()const; 164 OPimState state() const;
163 165
@@ -166,3 +168,3 @@ public:
166 */ 168 */
167 bool hasRecurrence()const; 169 bool hasRecurrence() const;
168 170
@@ -171,3 +173,3 @@ public:
171 */ 173 */
172 ORecur recurrence()const; 174 ORecur recurrence() const;
173 175
@@ -176,3 +178,3 @@ public:
176 */ 178 */
177 bool hasMaintainer()const; 179 bool hasMaintainer() const;
178 180
@@ -181,3 +183,3 @@ public:
181 */ 183 */
182 OPimMaintainer maintainer()const; 184 OPimMaintainer maintainer() const;
183 185
@@ -186,3 +188,3 @@ public:
186 */ 188 */
187 QString description()const; 189 QString description() const;
188 190
@@ -199,3 +201,3 @@ public:
199 201
200 bool hasNotifiers()const; 202 bool hasNotifiers() const;
201 /* 203 /*
@@ -212,3 +214,3 @@ public:
212 */ 214 */
213 const OPimNotifyManager &notifiers()const; 215 const OPimNotifyManager &notifiers() const;
214 216
@@ -217,5 +219,5 @@ public:
217 */ 219 */
218 QString type()const; 220 QString type() const;
219 QString toShortText()const; 221 QString toShortText() const;
220 QString recordField(int id )const; 222 QString recordField( int id ) const;
221 223
@@ -225,3 +227,3 @@ public:
225 */ 227 */
226 QMap<int, QString> toMap()const; 228 QMap<int, QString> toMap() const;
227 229
@@ -230,3 +232,3 @@ public:
230 */ 232 */
231 void setCompleted(bool completed ); 233 void setCompleted( bool completed );
232 234
@@ -244,3 +246,3 @@ public:
244 */ 246 */
245 void setPriority(int priority ); 247 void setPriority( int priority );
246 248
@@ -268,4 +270,4 @@ public:
268 270
269 void setDescription(const QString& ); 271 void setDescription( const QString& );
270 void setSummary(const QString& ); 272 void setSummary( const QString& );
271 273
@@ -275,3 +277,3 @@ public:
275 */ 277 */
276 void setState( const OPimState& state); 278 void setState( const OPimState& state );
277 279
@@ -285,11 +287,11 @@ public:
285 287
286 virtual bool match( const QRegExp &r )const; 288 virtual bool match( const QRegExp &r ) const;
287 289
288 bool operator<(const OTodo &toDoEvent )const; 290 bool operator<( const OTodo &toDoEvent ) const;
289 bool operator<=(const OTodo &toDoEvent )const; 291 bool operator<=( const OTodo &toDoEvent ) const;
290 bool operator!=(const OTodo &toDoEvent )const; 292 bool operator!=( const OTodo &toDoEvent ) const;
291 bool operator>(const OTodo &toDoEvent )const; 293 bool operator>( const OTodo &toDoEvent ) const;
292 bool operator>=(const OTodo &toDoEvent)const; 294 bool operator>=( const OTodo &toDoEvent ) const;
293 bool operator==(const OTodo &toDoEvent )const; 295 bool operator==( const OTodo &toDoEvent ) const;
294 OTodo &operator=(const OTodo &toDoEvent ); 296 OTodo &operator=( const OTodo &toDoEvent );
295 297
@@ -297,3 +299,3 @@ public:
297 299
298 private: 300 private:
299 class OTodoPrivate; 301 class OTodoPrivate;
@@ -308,4 +310,7 @@ public:
308}; 310};
309inline bool OTodo::operator!=(const OTodo &toDoEvent )const { 311
310 return !(*this == toDoEvent); 312
313inline bool OTodo::operator!=( const OTodo &toDoEvent ) const
314{
315 return !( *this == toDoEvent );
311} 316}