summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opiepim/TODO5
-rw-r--r--libopie2/opiepim/core/opimcontact.cpp2
-rw-r--r--libopie2/opiepim/core/opimcontact.h2
-rw-r--r--libopie2/opiepim/core/opimevent.cpp2
-rw-r--r--libopie2/opiepim/core/opimevent.h2
-rw-r--r--libopie2/opiepim/core/opimrecord.cpp2
-rw-r--r--libopie2/opiepim/core/opimrecord.h2
-rw-r--r--libopie2/opiepim/core/opimtodo.cpp2
-rw-r--r--libopie2/opiepim/core/opimtodo.h2
9 files changed, 12 insertions, 9 deletions
diff --git a/libopie2/opiepim/TODO b/libopie2/opiepim/TODO
index cdde11c..c3420cf 100644
--- a/libopie2/opiepim/TODO
+++ b/libopie2/opiepim/TODO
@@ -1,60 +1,63 @@
1As to popular request.... 1As to popular request....
2 2
31.) fix up the core/backend mess. 31.) fix up the core/backend mess.
4 The actual Backend Implementation + Interface should be there 4 The actual Backend Implementation + Interface should be there
5 The API frontend used by the developer should not be used 5 The API frontend used by the developer should not be used
6 6
7 Rename ODateBookAccess* to OPimDateBookAccess*
8 Fix filenames to OPim* ...
9
72.) Move sorting, Query By Example, Exposing of Attributes of a Record 102.) Move sorting, Query By Example, Exposing of Attributes of a Record
8 available to the Ptr base class and have sane implementation 11 available to the Ptr base class and have sane implementation
9 on the template level 12 on the template level
10 13
113.) Have something like QProperty to expose attributes from OPimRecord. 143.) Have something like QProperty to expose attributes from OPimRecord.
12 This would include exporting,importing of data, and translated names. 15 This would include exporting,importing of data, and translated names.
13 This can be used for Cross Reference, Selector Widget, Generic Table 16 This can be used for Cross Reference, Selector Widget, Generic Table
14 Shower 17 Shower
15 18
164.) Marshall/Demarshall all PIM Records correctly 194.) Marshall/Demarshall all PIM Records correctly
17 20
185.) Add the Private Backend to the OPimRecord ( private ) make the base 215.) Add the Private Backend to the OPimRecord ( private ) make the base
19 access class friend and allow retrieving the backend. Make it virtual 22 access class friend and allow retrieving the backend. Make it virtual
20 so the template gets the right pointer. So it can only be accessed from 23 so the template gets the right pointer. So it can only be accessed from
21 the inside 24 the inside
22 25
236.) Add signals for updating/adding/removing records to the access template 266.) Add signals for updating/adding/removing records to the access template
24 Internal connect method 27 Internal connect method
25 28
267.) internal QCOP communication between the interfaces 297.) internal QCOP communication between the interfaces
27 30
288.) GUI:Better and Improved Recurrence Widget 318.) GUI:Better and Improved Recurrence Widget
29 32
309.) GUI:Improved Alarm Widget and handling classes 339.) GUI:Improved Alarm Widget and handling classes
31 34
3210.) GUI:Undo/Redo template look at KDE 3510.) GUI:Undo/Redo template look at KDE
33 36
3411.) GUI: Generic X-Ref Selector using the factory and pointer interface 3711.) GUI: Generic X-Ref Selector using the factory and pointer interface
35 38
3612.) GUI: Factory and also registration of foreign services. generate a records of type 3912.) GUI: Factory and also registration of foreign services. generate a records of type
37 40
3813.) Multiple Backends for an Access Template 4113.) Multiple Backends for an Access Template
39 42
4014.) ReadOnly Access 4314.) ReadOnly Access
41 44
4215.) GUI: Generic Table Widget maybe even baed on Selector with 4515.) GUI: Generic Table Widget maybe even baed on Selector with
43 configuration of shown Attribute 46 configuration of shown Attribute
44 47
4516.) Multiple Categories with Sub Categories including popup selector 4816.) Multiple Categories with Sub Categories including popup selector
46 Widget. Fix Bug with changing visible. Both helper class + gui. 49 Widget. Fix Bug with changing visible. Both helper class + gui.
47 Also group PopupNames Like in Function Menu of XEmacs 50 Also group PopupNames Like in Function Menu of XEmacs
48 51
4917.) ListView for TodolIst At least introduce parents and child 5217.) ListView for TodolIst At least introduce parents and child
50 And query for them 53 And query for them
51 54
5218.) Add querieng to Ptr Level for dates and date ranges. 5518.) Add querieng to Ptr Level for dates and date ranges.
53 Return OEffectiveEvents or such which is also only loaded 56 Return OEffectiveEvents or such which is also only loaded
54 if required. 57 if required.
55 58
5619.) Clean Up 5919.) Clean Up
57 60
5820.) Datebook Classes 6120.) Datebook Classes
59 62
6022.) Better helper for AlarmServer \ No newline at end of file 6322.) Better helper for AlarmServer \ No newline at end of file
diff --git a/libopie2/opiepim/core/opimcontact.cpp b/libopie2/opiepim/core/opimcontact.cpp
index 4a774e8..c1e06c8 100644
--- a/libopie2/opiepim/core/opimcontact.cpp
+++ b/libopie2/opiepim/core/opimcontact.cpp
@@ -1086,204 +1086,204 @@ void OPimContact::setChildren( const QString &str )
1086 \overload 1086 \overload
1087 Returns TRUE if the contact matches the regular expression \a regexp. 1087 Returns TRUE if the contact matches the regular expression \a regexp.
1088 Otherwise returns FALSE. 1088 Otherwise returns FALSE.
1089*/ 1089*/
1090bool OPimContact::match( const QRegExp &r ) const 1090bool OPimContact::match( const QRegExp &r ) const
1091{ 1091{
1092 setLastHitField( -1 ); 1092 setLastHitField( -1 );
1093 bool match; 1093 bool match;
1094 match = false; 1094 match = false;
1095 QMap<int, QString>::ConstIterator it; 1095 QMap<int, QString>::ConstIterator it;
1096 for ( it = mMap.begin(); it != mMap.end(); ++it ) 1096 for ( it = mMap.begin(); it != mMap.end(); ++it )
1097 { 1097 {
1098 if ( ( *it ).find( r ) > -1 ) 1098 if ( ( *it ).find( r ) > -1 )
1099 { 1099 {
1100 setLastHitField( it.key() ); 1100 setLastHitField( it.key() );
1101 match = true; 1101 match = true;
1102 break; 1102 break;
1103 } 1103 }
1104 } 1104 }
1105 return match; 1105 return match;
1106} 1106}
1107 1107
1108 1108
1109QString OPimContact::toShortText() const 1109QString OPimContact::toShortText() const
1110{ 1110{
1111 return ( fullName() ); 1111 return ( fullName() );
1112} 1112}
1113 1113
1114 1114
1115QString OPimContact::type() const 1115QString OPimContact::type() const
1116{ 1116{
1117 return QString::fromLatin1( "OPimContact" ); 1117 return QString::fromLatin1( "OPimContact" );
1118} 1118}
1119 1119
1120 1120
1121class QString OPimContact::recordField( int pos ) const 1121class QString OPimContact::recordField( int pos ) const
1122{ 1122{
1123 QStringList SLFIELDS = fields(); // ?? why this ? (se) 1123 QStringList SLFIELDS = fields(); // ?? why this ? (se)
1124 return SLFIELDS[ pos ]; 1124 return SLFIELDS[ pos ];
1125} 1125}
1126 1126
1127// In future releases, we should store birthday and anniversary 1127// In future releases, we should store birthday and anniversary
1128// internally as QDate instead of QString ! 1128// internally as QDate instead of QString !
1129// QString is always too complicate to interprete (DD.MM.YY, DD/MM/YY, MM/DD/YY, etc..)(se) 1129// QString is always too complicate to interprete (DD.MM.YY, DD/MM/YY, MM/DD/YY, etc..)(se)
1130 1130
1131/*! \fn void OPimContact::setBirthday( const QDate& date ) 1131/*! \fn void OPimContact::setBirthday( const QDate& date )
1132 Sets the birthday for the contact to \a date. If date is null 1132 Sets the birthday for the contact to \a date. If date is null
1133 the current stored date will be removed. 1133 the current stored date will be removed.
1134*/ 1134*/
1135void OPimContact::setBirthday( const QDate &v ) 1135void OPimContact::setBirthday( const QDate &v )
1136{ 1136{
1137 if ( v.isNull() ) 1137 if ( v.isNull() )
1138 { 1138 {
1139 qWarning( "Remove Birthday" ); 1139 qWarning( "Remove Birthday" );
1140 replace( Qtopia::Birthday, QString::null ); 1140 replace( Qtopia::Birthday, QString::null );
1141 return ; 1141 return ;
1142 } 1142 }
1143 1143
1144 if ( v.isValid() ) 1144 if ( v.isValid() )
1145 replace( Qtopia::Birthday, OPimDateConversion::dateToString( v ) ); 1145 replace( Qtopia::Birthday, OPimDateConversion::dateToString( v ) );
1146 1146
1147} 1147}
1148 1148
1149 1149
1150/*! \fn void OPimContact::setAnniversary( const QDate &date ) 1150/*! \fn void OPimContact::setAnniversary( const QDate &date )
1151 Sets the anniversary of the contact to \a date. If date is 1151 Sets the anniversary of the contact to \a date. If date is
1152 null, the current stored date will be removed. 1152 null, the current stored date will be removed.
1153*/ 1153*/
1154void OPimContact::setAnniversary( const QDate &v ) 1154void OPimContact::setAnniversary( const QDate &v )
1155{ 1155{
1156 if ( v.isNull() ) 1156 if ( v.isNull() )
1157 { 1157 {
1158 qWarning( "Remove Anniversary" ); 1158 qWarning( "Remove Anniversary" );
1159 replace( Qtopia::Anniversary, QString::null ); 1159 replace( Qtopia::Anniversary, QString::null );
1160 return ; 1160 return ;
1161 } 1161 }
1162 1162
1163 if ( v.isValid() ) 1163 if ( v.isValid() )
1164 replace( Qtopia::Anniversary, OPimDateConversion::dateToString( v ) ); 1164 replace( Qtopia::Anniversary, OPimDateConversion::dateToString( v ) );
1165} 1165}
1166 1166
1167 1167
1168/*! \fn QDate OPimContact::birthday() const 1168/*! \fn QDate OPimContact::birthday() const
1169 Returns the birthday of the contact. 1169 Returns the birthday of the contact.
1170*/ 1170*/
1171QDate OPimContact::birthday() const 1171QDate OPimContact::birthday() const
1172{ 1172{
1173 QString str = find( Qtopia::Birthday ); 1173 QString str = find( Qtopia::Birthday );
1174 // qWarning ("Birthday %s", str.latin1() ); 1174 // qWarning ("Birthday %s", str.latin1() );
1175 if ( !str.isEmpty() ) 1175 if ( !str.isEmpty() )
1176 return OPimDateConversion::dateFromString ( str ); 1176 return OPimDateConversion::dateFromString ( str );
1177 else 1177 else
1178 return QDate(); 1178 return QDate();
1179} 1179}
1180 1180
1181 1181
1182/*! \fn QDate OPimContact::anniversary() const 1182/*! \fn QDate OPimContact::anniversary() const
1183 Returns the anniversary of the contact. 1183 Returns the anniversary of the contact.
1184*/ 1184*/
1185QDate OPimContact::anniversary() const 1185QDate OPimContact::anniversary() const
1186{ 1186{
1187 QDate empty; 1187 QDate empty;
1188 QString str = find( Qtopia::Anniversary ); 1188 QString str = find( Qtopia::Anniversary );
1189 // qWarning ("Anniversary %s", str.latin1() ); 1189 // qWarning ("Anniversary %s", str.latin1() );
1190 if ( !str.isEmpty() ) 1190 if ( !str.isEmpty() )
1191 return OPimDateConversion::dateFromString ( str ); 1191 return OPimDateConversion::dateFromString ( str );
1192 else 1192 else
1193 return empty; 1193 return empty;
1194} 1194}
1195 1195
1196 1196
1197void OPimContact::insertEmail( const QString &v ) 1197void OPimContact::insertEmail( const QString &v )
1198{ 1198{
1199 //qDebug("insertEmail %s", v.latin1()); 1199 //qDebug("insertEmail %s", v.latin1());
1200 QString e = v.simplifyWhiteSpace(); 1200 QString e = v.simplifyWhiteSpace();
1201 QString def = defaultEmail(); 1201 QString def = defaultEmail();
1202 1202
1203 // if no default, set it as the default email and don't insert 1203 // if no default, set it as the default email and don't insert
1204 if ( def.isEmpty() ) 1204 if ( def.isEmpty() )
1205 { 1205 {
1206 setDefaultEmail( e ); // will insert into the list for us 1206 setDefaultEmail( e ); // will insert into the list for us
1207 return ; 1207 return ;
1208 } 1208 }
1209 1209
1210 // otherwise, insert assuming doesn't already exist 1210 // otherwise, insert assuming doesn't already exist
1211 QString emailsStr = find( Qtopia::Emails ); 1211 QString emailsStr = find( Qtopia::Emails );
1212 if ( emailsStr.contains( e ) ) 1212 if ( emailsStr.contains( e ) )
1213 return ; 1213 return ;
1214 if ( !emailsStr.isEmpty() ) 1214 if ( !emailsStr.isEmpty() )
1215 emailsStr += emailSeparator(); 1215 emailsStr += emailSeparator();
1216 emailsStr += e; 1216 emailsStr += e;
1217 replace( Qtopia::Emails, emailsStr ); 1217 replace( Qtopia::Emails, emailsStr );
1218} 1218}
1219 1219
1220 1220
1221 void OPimContact::removeEmail( const QString &v ) 1221 void OPimContact::removeEmail( const QString &v )
1222{ 1222{
1223 QString e = v.simplifyWhiteSpace(); 1223 QString e = v.simplifyWhiteSpace();
1224 QString def = defaultEmail(); 1224 QString def = defaultEmail();
1225 QString emailsStr = find( Qtopia::Emails ); 1225 QString emailsStr = find( Qtopia::Emails );
1226 QStringList emails = emailList(); 1226 QStringList emails = emailList();
1227 1227
1228 // otherwise, must first contain it 1228 // otherwise, must first contain it
1229 if ( !emailsStr.contains( e ) ) 1229 if ( !emailsStr.contains( e ) )
1230 return ; 1230 return ;
1231 1231
1232 // remove it 1232 // remove it
1233 //qDebug(" removing email from list %s", e.latin1()); 1233 //qDebug(" removing email from list %s", e.latin1());
1234 emails.remove( e ); 1234 emails.remove( e );
1235 // reset the string 1235 // reset the string
1236 emailsStr = emails.join( emailSeparator() ); // Sharp's brain dead separator 1236 emailsStr = emails.join( emailSeparator() ); // Sharp's brain dead separator
1237 replace( Qtopia::Emails, emailsStr ); 1237 replace( Qtopia::Emails, emailsStr );
1238 1238
1239 // if default, then replace the default email with the first one 1239 // if default, then replace the default email with the first one
1240 if ( def == e ) 1240 if ( def == e )
1241 { 1241 {
1242 //qDebug("removeEmail is default; setting new default"); 1242 //qDebug("removeEmail is default; setting new default");
1243 if ( !emails.count() ) 1243 if ( !emails.count() )
1244 clearEmails(); 1244 clearEmails();
1245 else // setDefaultEmail will remove e from the list 1245 else // setDefaultEmail will remove e from the list
1246 setDefaultEmail( emails.first() ); 1246 setDefaultEmail( emails.first() );
1247 } 1247 }
1248} 1248}
1249 1249
1250 1250
1251void OPimContact::clearEmails() 1251void OPimContact::clearEmails()
1252{ 1252{
1253 mMap.remove( Qtopia::DefaultEmail ); 1253 mMap.remove( Qtopia::DefaultEmail );
1254 mMap.remove( Qtopia::Emails ); 1254 mMap.remove( Qtopia::Emails );
1255} 1255}
1256 1256
1257 1257
1258void OPimContact::setDefaultEmail( const QString &v ) 1258void OPimContact::setDefaultEmail( const QString &v )
1259{ 1259{
1260 QString e = v.simplifyWhiteSpace(); 1260 QString e = v.simplifyWhiteSpace();
1261 1261
1262 //qDebug("OPimContact::setDefaultEmail %s", e.latin1()); 1262 //qDebug("OPimContact::setDefaultEmail %s", e.latin1());
1263 replace( Qtopia::DefaultEmail, e ); 1263 replace( Qtopia::DefaultEmail, e );
1264 1264
1265 if ( !e.isEmpty() ) 1265 if ( !e.isEmpty() )
1266 insertEmail( e ); 1266 insertEmail( e );
1267 1267
1268} 1268}
1269 1269
1270 1270
1271void OPimContact::insertEmails( const QStringList &v ) 1271void OPimContact::insertEmails( const QStringList &v )
1272{ 1272{
1273 for ( QStringList::ConstIterator it = v.begin(); it != v.end(); ++it ) 1273 for ( QStringList::ConstIterator it = v.begin(); it != v.end(); ++it )
1274 insertEmail( *it ); 1274 insertEmail( *it );
1275} 1275}
1276 1276
1277 1277
1278int OPimContact::rtti() 1278int OPimContact::rtti() const
1279{ 1279{
1280 return OPimResolver::AddressBook; 1280 return OPimResolver::AddressBook;
1281} 1281}
1282 1282
1283 1283
1284void OPimContact::setUid( int i ) 1284void OPimContact::setUid( int i )
1285{ 1285{
1286 OPimRecord::setUid( i ); 1286 OPimRecord::setUid( i );
1287 replace( Qtopia::AddressUid , QString::number( i ) ); 1287 replace( Qtopia::AddressUid , QString::number( i ) );
1288} 1288}
1289} 1289}
diff --git a/libopie2/opiepim/core/opimcontact.h b/libopie2/opiepim/core/opimcontact.h
index 9d3cacc..6891dd6 100644
--- a/libopie2/opiepim/core/opimcontact.h
+++ b/libopie2/opiepim/core/opimcontact.h
@@ -39,218 +39,218 @@
39#include <qstringlist.h> 39#include <qstringlist.h>
40 40
41#if defined(QPC_TEMPLATEDLL) 41#if defined(QPC_TEMPLATEDLL)
42// MOC_SKIP_BEGIN 42// MOC_SKIP_BEGIN
43QPC_TEMPLATEEXTERN template class QPC_EXPORT QMap<int, QString>; 43QPC_TEMPLATEEXTERN template class QPC_EXPORT QMap<int, QString>;
44// MOC_SKIP_END 44// MOC_SKIP_END
45#endif 45#endif
46 46
47namespace Opie 47namespace Opie
48{ 48{
49class OPimContactPrivate; 49class OPimContactPrivate;
50 50
51/** 51/**
52 * OPimContact class represents a specialised PIM Record for contacts. 52 * OPimContact class represents a specialised PIM Record for contacts.
53 * It does store all kind of persopn related information. 53 * It does store all kind of persopn related information.
54 * 54 *
55 * @short Contact Container 55 * @short Contact Container
56 * @author TT, Stefan Eiler, Holger Freyther 56 * @author TT, Stefan Eiler, Holger Freyther
57 */ 57 */
58class QPC_EXPORT OPimContact : public OPimRecord 58class QPC_EXPORT OPimContact : public OPimRecord
59{ 59{
60 friend class DataSet; 60 friend class DataSet;
61 61
62 public: 62 public:
63 OPimContact(); 63 OPimContact();
64 OPimContact( const QMap<int, QString> &fromMap ); 64 OPimContact( const QMap<int, QString> &fromMap );
65 virtual ~OPimContact(); 65 virtual ~OPimContact();
66 66
67 enum DateFormat{ 67 enum DateFormat{
68 Zip_City_State = 0, 68 Zip_City_State = 0,
69 City_State_Zip 69 City_State_Zip
70 }; 70 };
71 71
72 /* 72 /*
73 * do we need to inline them 73 * do we need to inline them
74 * if yes do we need to inline them this way? 74 * if yes do we need to inline them this way?
75 * -zecke 75 * -zecke
76 */ 76 */
77 void setTitle( const QString &v ) { replace( Qtopia::Title, v ); } 77 void setTitle( const QString &v ) { replace( Qtopia::Title, v ); }
78 void setFirstName( const QString &v ) { replace( Qtopia::FirstName, v ); } 78 void setFirstName( const QString &v ) { replace( Qtopia::FirstName, v ); }
79 void setMiddleName( const QString &v ) { replace( Qtopia::MiddleName, v ); } 79 void setMiddleName( const QString &v ) { replace( Qtopia::MiddleName, v ); }
80 void setLastName( const QString &v ) { replace( Qtopia::LastName, v ); } 80 void setLastName( const QString &v ) { replace( Qtopia::LastName, v ); }
81 void setSuffix( const QString &v ) { replace( Qtopia::Suffix, v ); } 81 void setSuffix( const QString &v ) { replace( Qtopia::Suffix, v ); }
82 void setFileAs( const QString &v ) { replace( Qtopia::FileAs, v ); } 82 void setFileAs( const QString &v ) { replace( Qtopia::FileAs, v ); }
83 void setFileAs(); 83 void setFileAs();
84 84
85 // default email address 85 // default email address
86 void setDefaultEmail( const QString &v ); 86 void setDefaultEmail( const QString &v );
87 // inserts email to list and ensure's doesn't already exist 87 // inserts email to list and ensure's doesn't already exist
88 void insertEmail( const QString &v ); 88 void insertEmail( const QString &v );
89 void removeEmail( const QString &v ); 89 void removeEmail( const QString &v );
90 void clearEmails(); 90 void clearEmails();
91 void insertEmails( const QStringList &v ); 91 void insertEmails( const QStringList &v );
92 92
93 // home 93 // home
94 void setHomeStreet( const QString &v ) { replace( Qtopia::HomeStreet, v ); } 94 void setHomeStreet( const QString &v ) { replace( Qtopia::HomeStreet, v ); }
95 void setHomeCity( const QString &v ) { replace( Qtopia::HomeCity, v ); } 95 void setHomeCity( const QString &v ) { replace( Qtopia::HomeCity, v ); }
96 void setHomeState( const QString &v ) { replace( Qtopia::HomeState, v ); } 96 void setHomeState( const QString &v ) { replace( Qtopia::HomeState, v ); }
97 void setHomeZip( const QString &v ) { replace( Qtopia::HomeZip, v ); } 97 void setHomeZip( const QString &v ) { replace( Qtopia::HomeZip, v ); }
98 void setHomeCountry( const QString &v ) { replace( Qtopia::HomeCountry, v ); } 98 void setHomeCountry( const QString &v ) { replace( Qtopia::HomeCountry, v ); }
99 void setHomePhone( const QString &v ) { replace( Qtopia::HomePhone, v ); } 99 void setHomePhone( const QString &v ) { replace( Qtopia::HomePhone, v ); }
100 void setHomeFax( const QString &v ) { replace( Qtopia::HomeFax, v ); } 100 void setHomeFax( const QString &v ) { replace( Qtopia::HomeFax, v ); }
101 void setHomeMobile( const QString &v ) { replace( Qtopia::HomeMobile, v ); } 101 void setHomeMobile( const QString &v ) { replace( Qtopia::HomeMobile, v ); }
102 void setHomeWebpage( const QString &v ) { replace( Qtopia::HomeWebPage, v ); } 102 void setHomeWebpage( const QString &v ) { replace( Qtopia::HomeWebPage, v ); }
103 103
104 // business 104 // business
105 void setCompany( const QString &v ) { replace( Qtopia::Company, v ); } 105 void setCompany( const QString &v ) { replace( Qtopia::Company, v ); }
106 void setBusinessStreet( const QString &v ) { replace( Qtopia::BusinessStreet, v ); } 106 void setBusinessStreet( const QString &v ) { replace( Qtopia::BusinessStreet, v ); }
107 void setBusinessCity( const QString &v ) { replace( Qtopia::BusinessCity, v ); } 107 void setBusinessCity( const QString &v ) { replace( Qtopia::BusinessCity, v ); }
108 void setBusinessState( const QString &v ) { replace( Qtopia::BusinessState, v ); } 108 void setBusinessState( const QString &v ) { replace( Qtopia::BusinessState, v ); }
109 void setBusinessZip( const QString &v ) { replace( Qtopia::BusinessZip, v ); } 109 void setBusinessZip( const QString &v ) { replace( Qtopia::BusinessZip, v ); }
110 void setBusinessCountry( const QString &v ) { replace( Qtopia::BusinessCountry, v ); } 110 void setBusinessCountry( const QString &v ) { replace( Qtopia::BusinessCountry, v ); }
111 void setBusinessWebpage( const QString &v ) { replace( Qtopia::BusinessWebPage, v ); } 111 void setBusinessWebpage( const QString &v ) { replace( Qtopia::BusinessWebPage, v ); }
112 void setJobTitle( const QString &v ) { replace( Qtopia::JobTitle, v ); } 112 void setJobTitle( const QString &v ) { replace( Qtopia::JobTitle, v ); }
113 void setDepartment( const QString &v ) { replace( Qtopia::Department, v ); } 113 void setDepartment( const QString &v ) { replace( Qtopia::Department, v ); }
114 void setOffice( const QString &v ) { replace( Qtopia::Office, v ); } 114 void setOffice( const QString &v ) { replace( Qtopia::Office, v ); }
115 void setBusinessPhone( const QString &v ) { replace( Qtopia::BusinessPhone, v ); } 115 void setBusinessPhone( const QString &v ) { replace( Qtopia::BusinessPhone, v ); }
116 void setBusinessFax( const QString &v ) { replace( Qtopia::BusinessFax, v ); } 116 void setBusinessFax( const QString &v ) { replace( Qtopia::BusinessFax, v ); }
117 void setBusinessMobile( const QString &v ) { replace( Qtopia::BusinessMobile, v ); } 117 void setBusinessMobile( const QString &v ) { replace( Qtopia::BusinessMobile, v ); }
118 void setBusinessPager( const QString &v ) { replace( Qtopia::BusinessPager, v ); } 118 void setBusinessPager( const QString &v ) { replace( Qtopia::BusinessPager, v ); }
119 void setProfession( const QString &v ) { replace( Qtopia::Profession, v ); } 119 void setProfession( const QString &v ) { replace( Qtopia::Profession, v ); }
120 void setAssistant( const QString &v ) { replace( Qtopia::Assistant, v ); } 120 void setAssistant( const QString &v ) { replace( Qtopia::Assistant, v ); }
121 void setManager( const QString &v ) { replace( Qtopia::Manager, v ); } 121 void setManager( const QString &v ) { replace( Qtopia::Manager, v ); }
122 122
123 // personal 123 // personal
124 void setSpouse( const QString &v ) { replace( Qtopia::Spouse, v ); } 124 void setSpouse( const QString &v ) { replace( Qtopia::Spouse, v ); }
125 void setGender( const QString &v ) { replace( Qtopia::Gender, v ); } 125 void setGender( const QString &v ) { replace( Qtopia::Gender, v ); }
126 void setBirthday( const QDate &v ); 126 void setBirthday( const QDate &v );
127 void setAnniversary( const QDate &v ); 127 void setAnniversary( const QDate &v );
128 void setNickname( const QString &v ) { replace( Qtopia::Nickname, v ); } 128 void setNickname( const QString &v ) { replace( Qtopia::Nickname, v ); }
129 void setChildren( const QString &v ); 129 void setChildren( const QString &v );
130 130
131 // other 131 // other
132 void setNotes( const QString &v ) { replace( Qtopia::Notes, v ); } 132 void setNotes( const QString &v ) { replace( Qtopia::Notes, v ); }
133 133
134 virtual bool match( const QRegExp &regexp ) const; 134 virtual bool match( const QRegExp &regexp ) const;
135 135
136 // // custom 136 // // custom
137 // void setCustomField( const QString &key, const QString &v ) 137 // void setCustomField( const QString &key, const QString &v )
138 // { replace(Custom- + key, v ); } 138 // { replace(Custom- + key, v ); }
139 139
140 // name 140 // name
141 QString fullName() const; 141 QString fullName() const;
142 QString title() const { return find( Qtopia::Title ); } 142 QString title() const { return find( Qtopia::Title ); }
143 QString firstName() const { return find( Qtopia::FirstName ); } 143 QString firstName() const { return find( Qtopia::FirstName ); }
144 QString middleName() const { return find( Qtopia::MiddleName ); } 144 QString middleName() const { return find( Qtopia::MiddleName ); }
145 QString lastName() const { return find( Qtopia::LastName ); } 145 QString lastName() const { return find( Qtopia::LastName ); }
146 QString suffix() const { return find( Qtopia::Suffix ); } 146 QString suffix() const { return find( Qtopia::Suffix ); }
147 QString fileAs() const { return find( Qtopia::FileAs ); } 147 QString fileAs() const { return find( Qtopia::FileAs ); }
148 148
149 // email 149 // email
150 QString defaultEmail() const { return find( Qtopia::DefaultEmail ); } 150 QString defaultEmail() const { return find( Qtopia::DefaultEmail ); }
151 QStringList emailList() const; 151 QStringList emailList() const;
152 152
153 // home 153 // home
154 /* 154 /*
155 * OPimAddress address(enum Location)const; 155 * OPimAddress address(enum Location)const;
156 * would be some how nicer... 156 * would be some how nicer...
157 * -zecke 157 * -zecke
158 */ 158 */
159 QString homeStreet() const { return find( Qtopia::HomeStreet ); } 159 QString homeStreet() const { return find( Qtopia::HomeStreet ); }
160 QString homeCity() const { return find( Qtopia::HomeCity ); } 160 QString homeCity() const { return find( Qtopia::HomeCity ); }
161 QString homeState() const { return find( Qtopia::HomeState ); } 161 QString homeState() const { return find( Qtopia::HomeState ); }
162 QString homeZip() const { return find( Qtopia::HomeZip ); } 162 QString homeZip() const { return find( Qtopia::HomeZip ); }
163 QString homeCountry() const { return find( Qtopia::HomeCountry ); } 163 QString homeCountry() const { return find( Qtopia::HomeCountry ); }
164 QString homePhone() const { return find( Qtopia::HomePhone ); } 164 QString homePhone() const { return find( Qtopia::HomePhone ); }
165 QString homeFax() const { return find( Qtopia::HomeFax ); } 165 QString homeFax() const { return find( Qtopia::HomeFax ); }
166 QString homeMobile() const { return find( Qtopia::HomeMobile ); } 166 QString homeMobile() const { return find( Qtopia::HomeMobile ); }
167 QString homeWebpage() const { return find( Qtopia::HomeWebPage ); } 167 QString homeWebpage() const { return find( Qtopia::HomeWebPage ); }
168 /** Multi line string containing all non-empty address info in the form 168 /** Multi line string containing all non-empty address info in the form
169 * Street 169 * Street
170 * City, State Zip 170 * City, State Zip
171 * Country 171 * Country
172 */ 172 */
173 QString displayHomeAddress() const; 173 QString displayHomeAddress() const;
174 174
175 // business 175 // business
176 QString company() const { return find( Qtopia::Company ); } 176 QString company() const { return find( Qtopia::Company ); }
177 QString businessStreet() const { return find( Qtopia::BusinessStreet ); } 177 QString businessStreet() const { return find( Qtopia::BusinessStreet ); }
178 QString businessCity() const { return find( Qtopia::BusinessCity ); } 178 QString businessCity() const { return find( Qtopia::BusinessCity ); }
179 QString businessState() const { return find( Qtopia::BusinessState ); } 179 QString businessState() const { return find( Qtopia::BusinessState ); }
180 QString businessZip() const { return find( Qtopia::BusinessZip ); } 180 QString businessZip() const { return find( Qtopia::BusinessZip ); }
181 QString businessCountry() const { return find( Qtopia::BusinessCountry ); } 181 QString businessCountry() const { return find( Qtopia::BusinessCountry ); }
182 QString businessWebpage() const { return find( Qtopia::BusinessWebPage ); } 182 QString businessWebpage() const { return find( Qtopia::BusinessWebPage ); }
183 QString jobTitle() const { return find( Qtopia::JobTitle ); } 183 QString jobTitle() const { return find( Qtopia::JobTitle ); }
184 QString department() const { return find( Qtopia::Department ); } 184 QString department() const { return find( Qtopia::Department ); }
185 QString office() const { return find( Qtopia::Office ); } 185 QString office() const { return find( Qtopia::Office ); }
186 QString businessPhone() const { return find( Qtopia::BusinessPhone ); } 186 QString businessPhone() const { return find( Qtopia::BusinessPhone ); }
187 QString businessFax() const { return find( Qtopia::BusinessFax ); } 187 QString businessFax() const { return find( Qtopia::BusinessFax ); }
188 QString businessMobile() const { return find( Qtopia::BusinessMobile ); } 188 QString businessMobile() const { return find( Qtopia::BusinessMobile ); }
189 QString businessPager() const { return find( Qtopia::BusinessPager ); } 189 QString businessPager() const { return find( Qtopia::BusinessPager ); }
190 QString profession() const { return find( Qtopia::Profession ); } 190 QString profession() const { return find( Qtopia::Profession ); }
191 QString assistant() const { return find( Qtopia::Assistant ); } 191 QString assistant() const { return find( Qtopia::Assistant ); }
192 QString manager() const { return find( Qtopia::Manager ); } 192 QString manager() const { return find( Qtopia::Manager ); }
193 /** 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
194 * Street 194 * Street
195 * City, State Zip 195 * City, State Zip
196 * Country 196 * Country
197 */ 197 */
198 QString displayBusinessAddress() const; 198 QString displayBusinessAddress() const;
199 199
200 //personal 200 //personal
201 QString spouse() const { return find( Qtopia::Spouse ); } 201 QString spouse() const { return find( Qtopia::Spouse ); }
202 QString gender() const { return find( Qtopia::Gender ); } 202 QString gender() const { return find( Qtopia::Gender ); }
203 QDate birthday() const; 203 QDate birthday() const;
204 QDate anniversary() const; 204 QDate anniversary() const;
205 QString nickname() const { return find( Qtopia::Nickname ); } 205 QString nickname() const { return find( Qtopia::Nickname ); }
206 QString children() const { return find( Qtopia::Children ); } 206 QString children() const { return find( Qtopia::Children ); }
207 QStringList childrenList() const; 207 QStringList childrenList() const;
208 208
209 // other 209 // other
210 QString notes() const { return find( Qtopia::Notes ); } 210 QString notes() const { return find( Qtopia::Notes ); }
211 QString groups() const { return find( Qtopia::Groups ); } 211 QString groups() const { return find( Qtopia::Groups ); }
212 QStringList groupList() const; 212 QStringList groupList() const;
213 213
214 QString toRichText() const; 214 QString toRichText() const;
215 QMap<int, QString> toMap() const; 215 QMap<int, QString> toMap() const;
216 QString field( int key ) const { return find( key ); } 216 QString field( int key ) const { return find( key ); }
217 217
218 218
219 void setUid( int i ); 219 void setUid( int i );
220 220
221 QString toShortText() const; 221 QString toShortText() const;
222 QString type() const; 222 QString type() const;
223 class QString recordField( int ) const; 223 class QString recordField( int ) const;
224 224
225 // Why private ? (eilers,se) 225 // Why private ? (eilers,se)
226 QString emailSeparator() const { return " "; } 226 QString emailSeparator() const { return " "; }
227 227
228 // the emails should be seperated by a comma 228 // the emails should be seperated by a comma
229 void setEmails( const QString &v ); 229 void setEmails( const QString &v );
230 QString emails() const { return find( Qtopia::Emails ); } 230 QString emails() const { return find( Qtopia::Emails ); }
231 static int rtti(); 231 int rtti() const;
232 232
233 private: 233 private:
234 // The XML Backend needs some access to the private functions 234 // The XML Backend needs some access to the private functions
235 friend class OPimContactAccessBackend_XML; 235 friend class OPimContactAccessBackend_XML;
236 236
237 void insert( int key, const QString &value ); 237 void insert( int key, const QString &value );
238 void replace( int key, const QString &value ); 238 void replace( int key, const QString &value );
239 QString find( int key ) const; 239 QString find( int key ) const;
240 static QStringList fields(); 240 static QStringList fields();
241 241
242 void save( QString &buf ) const; 242 void save( QString &buf ) const;
243 243
244 QString displayAddress( const QString &street, 244 QString displayAddress( const QString &street,
245 const QString &city, 245 const QString &city,
246 const QString &state, 246 const QString &state,
247 const QString &zip, 247 const QString &zip,
248 const QString &country ) const; 248 const QString &country ) const;
249 249
250 QMap<int, QString> mMap; 250 QMap<int, QString> mMap;
251 OPimContactPrivate *d; 251 OPimContactPrivate *d;
252}; 252};
253 253
254} 254}
255 255
256#endif 256#endif
diff --git a/libopie2/opiepim/core/opimevent.cpp b/libopie2/opiepim/core/opimevent.cpp
index 77730e9..8bf8b25 100644
--- a/libopie2/opiepim/core/opimevent.cpp
+++ b/libopie2/opiepim/core/opimevent.cpp
@@ -292,385 +292,385 @@ QDateTime OPimEvent::endDateTime() const
292{ 292{
293 /* 293 /*
294 * if all Day event the end time needs 294 * if all Day event the end time needs
295 * to be on the same day as the start 295 * to be on the same day as the start
296 */ 296 */
297 if ( data->isAllDay ) 297 if ( data->isAllDay )
298 return QDateTime( data->start.date(), QTime( 23, 59, 59 ) ); 298 return QDateTime( data->start.date(), QTime( 23, 59, 59 ) );
299 return data->end; 299 return data->end;
300} 300}
301 301
302 302
303QDateTime OPimEvent::endDateTimeInZone() const 303QDateTime OPimEvent::endDateTimeInZone() const
304{ 304{
305 /* if no timezone, or all day event or if the current and this timeZone match... */ 305 /* if no timezone, or all day event or if the current and this timeZone match... */
306 if ( data->timezone.isEmpty() || data->isAllDay || data->timezone == OPimTimeZone::current().timeZone() ) return endDateTime(); 306 if ( data->timezone.isEmpty() || data->isAllDay || data->timezone == OPimTimeZone::current().timeZone() ) return endDateTime();
307 307
308 OPimTimeZone zone( data->timezone ); 308 OPimTimeZone zone( data->timezone );
309 return zone.toDateTime( data->end, OPimTimeZone::current() ); 309 return zone.toDateTime( data->end, OPimTimeZone::current() );
310} 310}
311 311
312 312
313void OPimEvent::setEndDateTime( const QDateTime& dt ) 313void OPimEvent::setEndDateTime( const QDateTime& dt )
314{ 314{
315 changeOrModify(); 315 changeOrModify();
316 data->end = dt; 316 data->end = dt;
317} 317}
318 318
319 319
320bool OPimEvent::isMultipleDay() const 320bool OPimEvent::isMultipleDay() const
321{ 321{
322 return data->end.date().day() - data->start.date().day(); 322 return data->end.date().day() - data->start.date().day();
323} 323}
324 324
325 325
326bool OPimEvent::isAllDay() const 326bool OPimEvent::isAllDay() const
327{ 327{
328 return data->isAllDay; 328 return data->isAllDay;
329} 329}
330 330
331 331
332void OPimEvent::setAllDay( bool allDay ) 332void OPimEvent::setAllDay( bool allDay )
333{ 333{
334 changeOrModify(); 334 changeOrModify();
335 data->isAllDay = allDay; 335 data->isAllDay = allDay;
336 if ( allDay ) data->timezone = "UTC"; 336 if ( allDay ) data->timezone = "UTC";
337} 337}
338 338
339 339
340void OPimEvent::setTimeZone( const QString& tz ) 340void OPimEvent::setTimeZone( const QString& tz )
341{ 341{
342 changeOrModify(); 342 changeOrModify();
343 data->timezone = tz; 343 data->timezone = tz;
344} 344}
345 345
346 346
347QString OPimEvent::timeZone() const 347QString OPimEvent::timeZone() const
348{ 348{
349 if ( data->isAllDay ) return QString::fromLatin1( "UTC" ); 349 if ( data->isAllDay ) return QString::fromLatin1( "UTC" );
350 return data->timezone; 350 return data->timezone;
351} 351}
352 352
353 353
354bool OPimEvent::match( const QRegExp& re ) const 354bool OPimEvent::match( const QRegExp& re ) const
355{ 355{
356 if ( re.match( data->description ) != -1 ) 356 if ( re.match( data->description ) != -1 )
357 { 357 {
358 setLastHitField( Qtopia::DatebookDescription ); 358 setLastHitField( Qtopia::DatebookDescription );
359 return true; 359 return true;
360 } 360 }
361 if ( re.match( data->note ) != -1 ) 361 if ( re.match( data->note ) != -1 )
362 { 362 {
363 setLastHitField( Qtopia::Note ); 363 setLastHitField( Qtopia::Note );
364 return true; 364 return true;
365 } 365 }
366 if ( re.match( data->location ) != -1 ) 366 if ( re.match( data->location ) != -1 )
367 { 367 {
368 setLastHitField( Qtopia::Location ); 368 setLastHitField( Qtopia::Location );
369 return true; 369 return true;
370 } 370 }
371 if ( re.match( data->start.toString() ) != -1 ) 371 if ( re.match( data->start.toString() ) != -1 )
372 { 372 {
373 setLastHitField( Qtopia::StartDateTime ); 373 setLastHitField( Qtopia::StartDateTime );
374 return true; 374 return true;
375 } 375 }
376 if ( re.match( data->end.toString() ) != -1 ) 376 if ( re.match( data->end.toString() ) != -1 )
377 { 377 {
378 setLastHitField( Qtopia::EndDateTime ); 378 setLastHitField( Qtopia::EndDateTime );
379 return true; 379 return true;
380 } 380 }
381 return false; 381 return false;
382} 382}
383 383
384 384
385QString OPimEvent::toRichText() const 385QString OPimEvent::toRichText() const
386{ 386{
387 QString text, value; 387 QString text, value;
388 388
389 // description 389 // description
390 text += "<b><h3><img src=\"datebook/DateBook\">"; 390 text += "<b><h3><img src=\"datebook/DateBook\">";
391 if ( !description().isEmpty() ) 391 if ( !description().isEmpty() )
392 { 392 {
393 text += Qtopia::escapeString( description() ).replace( QRegExp( "[\n]" ), "" ); 393 text += Qtopia::escapeString( description() ).replace( QRegExp( "[\n]" ), "" );
394 } 394 }
395 text += "</h3></b><br><hr><br>"; 395 text += "</h3></b><br><hr><br>";
396 396
397 // location 397 // location
398 if ( !( value = location() ).isEmpty() ) 398 if ( !( value = location() ).isEmpty() )
399 { 399 {
400 text += "<b>" + QObject::tr( "Location:" ) + "</b> "; 400 text += "<b>" + QObject::tr( "Location:" ) + "</b> ";
401 text += Qtopia::escapeString( value ) + "<br>"; 401 text += Qtopia::escapeString( value ) + "<br>";
402 } 402 }
403 403
404 // all day event 404 // all day event
405 if ( isAllDay() ) 405 if ( isAllDay() )
406 { 406 {
407 text += "<b><i>" + QObject::tr( "This is an all day event" ) + "</i></b><br>"; 407 text += "<b><i>" + QObject::tr( "This is an all day event" ) + "</i></b><br>";
408 } 408 }
409 // multiple day event 409 // multiple day event
410 else if ( isMultipleDay () ) 410 else if ( isMultipleDay () )
411 { 411 {
412 text += "<b><i>" + QObject::tr( "This is a multiple day event" ) + "</i></b><br>"; 412 text += "<b><i>" + QObject::tr( "This is a multiple day event" ) + "</i></b><br>";
413 } 413 }
414 // start & end times 414 // start & end times
415 else 415 else
416 { 416 {
417 // start time 417 // start time
418 if ( startDateTime().isValid() ) 418 if ( startDateTime().isValid() )
419 { 419 {
420 text += "<b>" + QObject::tr( "Start:" ) + "</b> "; 420 text += "<b>" + QObject::tr( "Start:" ) + "</b> ";
421 text += Qtopia::escapeString( startDateTime().toString() ). 421 text += Qtopia::escapeString( startDateTime().toString() ).
422 replace( QRegExp( "[\n]" ), "<br>" ) + "<br>"; 422 replace( QRegExp( "[\n]" ), "<br>" ) + "<br>";
423 } 423 }
424 424
425 // end time 425 // end time
426 if ( endDateTime().isValid() ) 426 if ( endDateTime().isValid() )
427 { 427 {
428 text += "<b>" + QObject::tr( "End:" ) + "</b> "; 428 text += "<b>" + QObject::tr( "End:" ) + "</b> ";
429 text += Qtopia::escapeString( endDateTime().toString() ). 429 text += Qtopia::escapeString( endDateTime().toString() ).
430 replace( QRegExp( "[\n]" ), "<br>" ) + "<br>"; 430 replace( QRegExp( "[\n]" ), "<br>" ) + "<br>";
431 } 431 }
432 } 432 }
433 433
434 // categories 434 // categories
435 if ( categoryNames( "Calendar" ).count() ) 435 if ( categoryNames( "Calendar" ).count() )
436 { 436 {
437 text += "<b>" + QObject::tr( "Category:" ) + "</b> "; 437 text += "<b>" + QObject::tr( "Category:" ) + "</b> ";
438 text += categoryNames( "Calendar" ).join( ", " ); 438 text += categoryNames( "Calendar" ).join( ", " );
439 text += "<br>"; 439 text += "<br>";
440 } 440 }
441 441
442 //notes 442 //notes
443 if ( !note().isEmpty() ) 443 if ( !note().isEmpty() )
444 { 444 {
445 text += "<b>" + QObject::tr( "Note:" ) + "</b><br>"; 445 text += "<b>" + QObject::tr( "Note:" ) + "</b><br>";
446 text += note(); 446 text += note();
447 // text += Qtopia::escapeString(note() ). 447 // text += Qtopia::escapeString(note() ).
448 // replace(QRegExp( "[\n]"), "<br>" ) + "<br>"; 448 // replace(QRegExp( "[\n]"), "<br>" ) + "<br>";
449 } 449 }
450 return text; 450 return text;
451} 451}
452 452
453 453
454QString OPimEvent::toShortText() const 454QString OPimEvent::toShortText() const
455{ 455{
456 QString text; 456 QString text;
457 text += QString::number( startDateTime().date().day() ); 457 text += QString::number( startDateTime().date().day() );
458 text += "."; 458 text += ".";
459 text += QString::number( startDateTime().date().month() ); 459 text += QString::number( startDateTime().date().month() );
460 text += "."; 460 text += ".";
461 text += QString::number( startDateTime().date().year() ); 461 text += QString::number( startDateTime().date().year() );
462 text += " "; 462 text += " ";
463 text += QString::number( startDateTime().time().hour() ); 463 text += QString::number( startDateTime().time().hour() );
464 text += ":"; 464 text += ":";
465 text += QString::number( startDateTime().time().minute() ); 465 text += QString::number( startDateTime().time().minute() );
466 text += " - "; 466 text += " - ";
467 text += description(); 467 text += description();
468 return text; 468 return text;
469} 469}
470 470
471 471
472QString OPimEvent::type() const 472QString OPimEvent::type() const
473{ 473{
474 return QString::fromLatin1( "OPimEvent" ); 474 return QString::fromLatin1( "OPimEvent" );
475} 475}
476 476
477 477
478QString OPimEvent::recordField( int /*id */ ) const 478QString OPimEvent::recordField( int /*id */ ) const
479{ 479{
480 return QString::null; 480 return QString::null;
481} 481}
482 482
483 483
484int OPimEvent::rtti() 484int OPimEvent::rtti() const
485{ 485{
486 return OPimResolver::DateBook; 486 return OPimResolver::DateBook;
487} 487}
488 488
489 489
490bool OPimEvent::loadFromStream( QDataStream& ) 490bool OPimEvent::loadFromStream( QDataStream& )
491{ 491{
492 return true; 492 return true;
493} 493}
494 494
495 495
496bool OPimEvent::saveToStream( QDataStream& ) const 496bool OPimEvent::saveToStream( QDataStream& ) const
497{ 497{
498 return true; 498 return true;
499} 499}
500 500
501 501
502void OPimEvent::changeOrModify() 502void OPimEvent::changeOrModify()
503{ 503{
504 if ( data->count != 1 ) 504 if ( data->count != 1 )
505 { 505 {
506 data->deref(); 506 data->deref();
507 Data* d2 = new Data; 507 Data* d2 = new Data;
508 d2->description = data->description; 508 d2->description = data->description;
509 d2->location = data->location; 509 d2->location = data->location;
510 510
511 if ( data->manager ) 511 if ( data->manager )
512 d2->manager = new OPimNotifyManager( *data->manager ); 512 d2->manager = new OPimNotifyManager( *data->manager );
513 513
514 if ( data->recur ) 514 if ( data->recur )
515 d2->recur = new OPimRecurrence( *data->recur ); 515 d2->recur = new OPimRecurrence( *data->recur );
516 516
517 d2->note = data->note; 517 d2->note = data->note;
518 d2->created = data->created; 518 d2->created = data->created;
519 d2->start = data->start; 519 d2->start = data->start;
520 d2->end = data->end; 520 d2->end = data->end;
521 d2->isAllDay = data->isAllDay; 521 d2->isAllDay = data->isAllDay;
522 d2->timezone = data->timezone; 522 d2->timezone = data->timezone;
523 d2->parent = data->parent; 523 d2->parent = data->parent;
524 524
525 if ( data->child ) 525 if ( data->child )
526 { 526 {
527 d2->child = new QArray<int>( *data->child ); 527 d2->child = new QArray<int>( *data->child );
528 d2->child->detach(); 528 d2->child->detach();
529 } 529 }
530 530
531 data = d2; 531 data = d2;
532 } 532 }
533} 533}
534 534
535 535
536void OPimEvent::deref() 536void OPimEvent::deref()
537{ 537{
538 if ( data->deref() ) 538 if ( data->deref() )
539 { 539 {
540 delete data; 540 delete data;
541 data = 0; 541 data = 0;
542 } 542 }
543} 543}
544// Exporting Event data to map. Using the same 544// Exporting Event data to map. Using the same
545// encoding as ODateBookAccessBackend_xml does.. 545// encoding as ODateBookAccessBackend_xml does..
546// Thus, we could remove the stuff there and use this 546// Thus, we could remove the stuff there and use this
547// for it and for all other places.. 547// for it and for all other places..
548// Encoding should happen at one place, only ! (eilers) 548// Encoding should happen at one place, only ! (eilers)
549QMap<int, QString> OPimEvent::toMap() const 549QMap<int, QString> OPimEvent::toMap() const
550{ 550{
551 QMap<int, QString> retMap; 551 QMap<int, QString> retMap;
552 552
553 retMap.insert( OPimEvent::FUid, QString::number( uid() ) ); 553 retMap.insert( OPimEvent::FUid, QString::number( uid() ) );
554 retMap.insert( OPimEvent::FCategories, Qtopia::escapeString( Qtopia::Record::idsToString( categories() ) ) ); 554 retMap.insert( OPimEvent::FCategories, Qtopia::escapeString( Qtopia::Record::idsToString( categories() ) ) );
555 retMap.insert( OPimEvent::FDescription, Qtopia::escapeString( description() ) ); 555 retMap.insert( OPimEvent::FDescription, Qtopia::escapeString( description() ) );
556 retMap.insert( OPimEvent::FLocation, Qtopia::escapeString( location() ) ); 556 retMap.insert( OPimEvent::FLocation, Qtopia::escapeString( location() ) );
557 retMap.insert( OPimEvent::FType, isAllDay() ? "AllDay" : "" ); 557 retMap.insert( OPimEvent::FType, isAllDay() ? "AllDay" : "" );
558 OPimAlarm alarm = notifiers().alarms() [ 0 ]; 558 OPimAlarm alarm = notifiers().alarms() [ 0 ];
559 retMap.insert( OPimEvent::FAlarm, QString::number( alarm.dateTime().secsTo( startDateTime() ) / 60 ) ); 559 retMap.insert( OPimEvent::FAlarm, QString::number( alarm.dateTime().secsTo( startDateTime() ) / 60 ) );
560 retMap.insert( OPimEvent::FSound, ( alarm.sound() == OPimAlarm::Loud ) ? "loud" : "silent" ); 560 retMap.insert( OPimEvent::FSound, ( alarm.sound() == OPimAlarm::Loud ) ? "loud" : "silent" );
561 561
562 OPimTimeZone zone( timeZone().isEmpty() ? OPimTimeZone::current() : timeZone() ); 562 OPimTimeZone zone( timeZone().isEmpty() ? OPimTimeZone::current() : timeZone() );
563 retMap.insert( OPimEvent::FStart, QString::number( zone.fromUTCDateTime( zone.toDateTime( startDateTime(), OPimTimeZone::utc() ) ) ) ); 563 retMap.insert( OPimEvent::FStart, QString::number( zone.fromUTCDateTime( zone.toDateTime( startDateTime(), OPimTimeZone::utc() ) ) ) );
564 retMap.insert( OPimEvent::FEnd, QString::number( zone.fromUTCDateTime( zone.toDateTime( endDateTime(), OPimTimeZone::utc() ) ) ) ); 564 retMap.insert( OPimEvent::FEnd, QString::number( zone.fromUTCDateTime( zone.toDateTime( endDateTime(), OPimTimeZone::utc() ) ) ) );
565 retMap.insert( OPimEvent::FNote, Qtopia::escapeString( note() ) ); 565 retMap.insert( OPimEvent::FNote, Qtopia::escapeString( note() ) );
566 retMap.insert( OPimEvent::FTimeZone, timeZone().isEmpty() ? QString( "None" ) : timeZone() ); 566 retMap.insert( OPimEvent::FTimeZone, timeZone().isEmpty() ? QString( "None" ) : timeZone() );
567 if ( parent() ) 567 if ( parent() )
568 retMap.insert( OPimEvent::FRecParent, QString::number( parent() ) ); 568 retMap.insert( OPimEvent::FRecParent, QString::number( parent() ) );
569 if ( children().count() ) 569 if ( children().count() )
570 { 570 {
571 QArray<int> childr = children(); 571 QArray<int> childr = children();
572 QString buf; 572 QString buf;
573 for ( uint i = 0; i < childr.count(); i++ ) 573 for ( uint i = 0; i < childr.count(); i++ )
574 { 574 {
575 if ( i != 0 ) buf += " "; 575 if ( i != 0 ) buf += " ";
576 buf += QString::number( childr[ i ] ); 576 buf += QString::number( childr[ i ] );
577 } 577 }
578 retMap.insert( OPimEvent::FRecChildren, buf ); 578 retMap.insert( OPimEvent::FRecChildren, buf );
579 } 579 }
580 580
581 // Add recurrence stuff 581 // Add recurrence stuff
582 if ( hasRecurrence() ) 582 if ( hasRecurrence() )
583 { 583 {
584 OPimRecurrence recur = recurrence(); 584 OPimRecurrence recur = recurrence();
585 QMap<int, QString> recFields = recur.toMap(); 585 QMap<int, QString> recFields = recur.toMap();
586 retMap.insert( OPimEvent::FRType, recFields[ OPimRecurrence::RType ] ); 586 retMap.insert( OPimEvent::FRType, recFields[ OPimRecurrence::RType ] );
587 retMap.insert( OPimEvent::FRWeekdays, recFields[ OPimRecurrence::RWeekdays ] ); 587 retMap.insert( OPimEvent::FRWeekdays, recFields[ OPimRecurrence::RWeekdays ] );
588 retMap.insert( OPimEvent::FRPosition, recFields[ OPimRecurrence::RPosition ] ); 588 retMap.insert( OPimEvent::FRPosition, recFields[ OPimRecurrence::RPosition ] );
589 retMap.insert( OPimEvent::FRFreq, recFields[ OPimRecurrence::RFreq ] ); 589 retMap.insert( OPimEvent::FRFreq, recFields[ OPimRecurrence::RFreq ] );
590 retMap.insert( OPimEvent::FRHasEndDate, recFields[ OPimRecurrence::RHasEndDate ] ); 590 retMap.insert( OPimEvent::FRHasEndDate, recFields[ OPimRecurrence::RHasEndDate ] );
591 retMap.insert( OPimEvent::FREndDate, recFields[ OPimRecurrence::EndDate ] ); 591 retMap.insert( OPimEvent::FREndDate, recFields[ OPimRecurrence::EndDate ] );
592 retMap.insert( OPimEvent::FRCreated, recFields[ OPimRecurrence::Created ] ); 592 retMap.insert( OPimEvent::FRCreated, recFields[ OPimRecurrence::Created ] );
593 retMap.insert( OPimEvent::FRExceptions, recFields[ OPimRecurrence::Exceptions ] ); 593 retMap.insert( OPimEvent::FRExceptions, recFields[ OPimRecurrence::Exceptions ] );
594 } 594 }
595 else 595 else
596 { 596 {
597 OPimRecurrence recur = recurrence(); 597 OPimRecurrence recur = recurrence();
598 QMap<int, QString> recFields = recur.toMap(); 598 QMap<int, QString> recFields = recur.toMap();
599 retMap.insert( OPimEvent::FRType, recFields[ OPimRecurrence::RType ] ); 599 retMap.insert( OPimEvent::FRType, recFields[ OPimRecurrence::RType ] );
600 } 600 }
601 601
602 return retMap; 602 return retMap;
603} 603}
604 604
605 605
606void OPimEvent::fromMap( const QMap<int, QString>& map ) 606void OPimEvent::fromMap( const QMap<int, QString>& map )
607{ 607{
608 608
609 // We just want to set the UID if it is really stored. 609 // We just want to set the UID if it is really stored.
610 if ( !map[ OPimEvent::FUid ].isEmpty() ) 610 if ( !map[ OPimEvent::FUid ].isEmpty() )
611 setUid( map[ OPimEvent::FUid ].toInt() ); 611 setUid( map[ OPimEvent::FUid ].toInt() );
612 612
613 setCategories( idsFromString( map[ OPimEvent::FCategories ] ) ); 613 setCategories( idsFromString( map[ OPimEvent::FCategories ] ) );
614 setDescription( map[ OPimEvent::FDescription ] ); 614 setDescription( map[ OPimEvent::FDescription ] );
615 setLocation( map[ OPimEvent::FLocation ] ); 615 setLocation( map[ OPimEvent::FLocation ] );
616 616
617 if ( map[ OPimEvent::FType ] == "AllDay" ) 617 if ( map[ OPimEvent::FType ] == "AllDay" )
618 setAllDay( true ); 618 setAllDay( true );
619 else 619 else
620 setAllDay( false ); 620 setAllDay( false );
621 621
622 int alarmTime = -1; 622 int alarmTime = -1;
623 if ( !map[ OPimEvent::FAlarm ].isEmpty() ) 623 if ( !map[ OPimEvent::FAlarm ].isEmpty() )
624 alarmTime = map[ OPimEvent::FAlarm ].toInt(); 624 alarmTime = map[ OPimEvent::FAlarm ].toInt();
625 625
626 int sound = ( ( map[ OPimEvent::FSound ] == "loud" ) ? OPimAlarm::Loud : OPimAlarm::Silent ); 626 int sound = ( ( map[ OPimEvent::FSound ] == "loud" ) ? OPimAlarm::Loud : OPimAlarm::Silent );
627 if ( ( alarmTime != -1 ) ) 627 if ( ( alarmTime != -1 ) )
628 { 628 {
629 QDateTime dt = startDateTime().addSecs( -1 * alarmTime * 60 ); 629 QDateTime dt = startDateTime().addSecs( -1 * alarmTime * 60 );
630 OPimAlarm al( sound , dt ); 630 OPimAlarm al( sound , dt );
631 notifiers().add( al ); 631 notifiers().add( al );
632 } 632 }
633 if ( !map[ OPimEvent::FTimeZone ].isEmpty() && ( map[ OPimEvent::FTimeZone ] != "None" ) ) 633 if ( !map[ OPimEvent::FTimeZone ].isEmpty() && ( map[ OPimEvent::FTimeZone ] != "None" ) )
634 { 634 {
635 setTimeZone( map[ OPimEvent::FTimeZone ] ); 635 setTimeZone( map[ OPimEvent::FTimeZone ] );
636 } 636 }
637 637
638 time_t start = ( time_t ) map[ OPimEvent::FStart ].toLong(); 638 time_t start = ( time_t ) map[ OPimEvent::FStart ].toLong();
639 time_t end = ( time_t ) map[ OPimEvent::FEnd ].toLong(); 639 time_t end = ( time_t ) map[ OPimEvent::FEnd ].toLong();
640 640
641 /* AllDay is always in UTC */ 641 /* AllDay is always in UTC */
642 if ( isAllDay() ) 642 if ( isAllDay() )
643 { 643 {
644 OPimTimeZone utc = OPimTimeZone::utc(); 644 OPimTimeZone utc = OPimTimeZone::utc();
645 setStartDateTime( utc.fromUTCDateTime( start ) ); 645 setStartDateTime( utc.fromUTCDateTime( start ) );
646 setEndDateTime ( utc.fromUTCDateTime( end ) ); 646 setEndDateTime ( utc.fromUTCDateTime( end ) );
647 setTimeZone( "UTC" ); // make sure it is really utc 647 setTimeZone( "UTC" ); // make sure it is really utc
648 } 648 }
649 else 649 else
650 { 650 {
651 /* to current date time */ 651 /* to current date time */
652 // qWarning(" Start is %d", start ); 652 // qWarning(" Start is %d", start );
653 OPimTimeZone zone( timeZone().isEmpty() ? OPimTimeZone::current() : timeZone() ); 653 OPimTimeZone zone( timeZone().isEmpty() ? OPimTimeZone::current() : timeZone() );
654 QDateTime date = zone.toDateTime( start ); 654 QDateTime date = zone.toDateTime( start );
655 qWarning( " Start is %s", date.toString().latin1() ); 655 qWarning( " Start is %s", date.toString().latin1() );
656 setStartDateTime( zone.toDateTime( date, OPimTimeZone::current() ) ); 656 setStartDateTime( zone.toDateTime( date, OPimTimeZone::current() ) );
657 657
658 date = zone.toDateTime( end ); 658 date = zone.toDateTime( end );
659 setEndDateTime ( zone.toDateTime( date, OPimTimeZone::current() ) ); 659 setEndDateTime ( zone.toDateTime( date, OPimTimeZone::current() ) );
660 } 660 }
661 661
662 if ( !map[ OPimEvent::FRecParent ].isEmpty() ) 662 if ( !map[ OPimEvent::FRecParent ].isEmpty() )
663 setParent( map[ OPimEvent::FRecParent ].toInt() ); 663 setParent( map[ OPimEvent::FRecParent ].toInt() );
664 664
665 if ( !map[ OPimEvent::FRecChildren ].isEmpty() ) 665 if ( !map[ OPimEvent::FRecChildren ].isEmpty() )
666 { 666 {
667 QStringList list = QStringList::split( ' ', map[ OPimEvent::FRecChildren ] ); 667 QStringList list = QStringList::split( ' ', map[ OPimEvent::FRecChildren ] );
668 for ( QStringList::Iterator it = list.begin(); it != list.end(); ++it ) 668 for ( QStringList::Iterator it = list.begin(); it != list.end(); ++it )
669 { 669 {
670 addChild( ( *it ).toInt() ); 670 addChild( ( *it ).toInt() );
671 } 671 }
672 } 672 }
673 673
674 // Fill recurrence stuff and put it directly into the OPimRecurrence-Object using fromMap.. 674 // Fill recurrence stuff and put it directly into the OPimRecurrence-Object using fromMap..
675 if ( !map[ OPimEvent::FRType ].isEmpty() ) 675 if ( !map[ OPimEvent::FRType ].isEmpty() )
676 { 676 {
diff --git a/libopie2/opiepim/core/opimevent.h b/libopie2/opiepim/core/opimevent.h
index 949f263..56fe917 100644
--- a/libopie2/opiepim/core/opimevent.h
+++ b/libopie2/opiepim/core/opimevent.h
@@ -1,275 +1,275 @@
1/* 1/*
2 This file is part of the Opie Project 2 This file is part of the Opie Project
3 Copyright (C) Stefan Eilers <Eilers.Stefan@epost.de> 3 Copyright (C) Stefan Eilers <Eilers.Stefan@epost.de>
4 =. Copyright (C) The Opie Team <opie-devel@handhelds.org> 4 =. Copyright (C) The Opie Team <opie-devel@handhelds.org>
5 .=l. 5 .=l.
6 .>+-= 6 .>+-=
7 _;:, .> :=|. This program is free software; you can 7 _;:, .> :=|. This program is free software; you can
8.> <`_, > . <= redistribute it and/or modify it under 8.> <`_, > . <= redistribute it and/or modify it under
9:`=1 )Y*s>-.-- : the terms of the GNU Library General Public 9:`=1 )Y*s>-.-- : the terms of the GNU Library General Public
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// CONTAINS GPLed code of TT 29// CONTAINS GPLed code of TT
30 30
31#ifndef OEVENT_H 31#ifndef OEVENT_H
32#define OEVENT_H 32#define OEVENT_H
33 33
34/* OPIE */ 34/* OPIE */
35#include <opie2/opimtimezone.h> 35#include <opie2/opimtimezone.h>
36#include <opie2/opimrecord.h> 36#include <opie2/opimrecord.h>
37#include <qpe/recordfields.h> 37#include <qpe/recordfields.h>
38#include <qpe/palmtopuidgen.h> 38#include <qpe/palmtopuidgen.h>
39 39
40/* QT */ 40/* QT */
41#include <qstring.h> 41#include <qstring.h>
42#include <qdatetime.h> 42#include <qdatetime.h>
43#include <qvaluelist.h> 43#include <qvaluelist.h>
44 44
45namespace Opie 45namespace Opie
46{ 46{
47struct OCalendarHelper 47struct OCalendarHelper
48{ 48{
49 /** calculate the week number of the date */ 49 /** calculate the week number of the date */
50 static int week( const QDate& ); 50 static int week( const QDate& );
51 /** calculate the occurence of week days since the start of the month */ 51 /** calculate the occurence of week days since the start of the month */
52 static int ocurrence( const QDate& ); 52 static int ocurrence( const QDate& );
53 53
54 // returns the dayOfWeek for the *first* day it finds (ignores 54 // returns the dayOfWeek for the *first* day it finds (ignores
55 // any further days!). Returns 1 (Monday) if there isn't any day found 55 // any further days!). Returns 1 (Monday) if there isn't any day found
56 static int dayOfWeek( char day ); 56 static int dayOfWeek( char day );
57 57
58 /** returns the diff of month */ 58 /** returns the diff of month */
59 static int monthDiff( const QDate& first, const QDate& second ); 59 static int monthDiff( const QDate& first, const QDate& second );
60 60
61}; 61};
62 62
63class OPimNotifyManager; 63class OPimNotifyManager;
64class OPimRecurrence; 64class OPimRecurrence;
65 65
66/** 66/**
67 * This is the container for all Events. It encapsules all 67 * This is the container for all Events. It encapsules all
68 * available information for a single Event 68 * available information for a single Event
69 * @short container for events. 69 * @short container for events.
70 */ 70 */
71class OPimEvent : public OPimRecord 71class OPimEvent : public OPimRecord
72{ 72{
73 public: 73 public:
74 typedef QValueList<OPimEvent> ValueList; 74 typedef QValueList<OPimEvent> ValueList;
75 /** 75 /**
76 * RecordFields contain possible attributes 76 * RecordFields contain possible attributes
77 * used in the Results of toMap().. 77 * used in the Results of toMap()..
78 */ 78 */
79 enum RecordFields { 79 enum RecordFields {
80 FUid = Qtopia::UID_ID, 80 FUid = Qtopia::UID_ID,
81 FCategories = Qtopia::CATEGORY_ID, 81 FCategories = Qtopia::CATEGORY_ID,
82 FDescription = 0, 82 FDescription = 0,
83 FLocation, 83 FLocation,
84 FType, 84 FType,
85 FAlarm, 85 FAlarm,
86 FSound, 86 FSound,
87 FRType, 87 FRType,
88 FRWeekdays, 88 FRWeekdays,
89 FRPosition, 89 FRPosition,
90 FRFreq, 90 FRFreq,
91 FRHasEndDate, 91 FRHasEndDate,
92 FREndDate, 92 FREndDate,
93 FRCreated, 93 FRCreated,
94 FRExceptions, 94 FRExceptions,
95 FStart, 95 FStart,
96 FEnd, 96 FEnd,
97 FNote, 97 FNote,
98 FTimeZone, 98 FTimeZone,
99 FRecParent, 99 FRecParent,
100 FRecChildren, 100 FRecChildren,
101 }; 101 };
102 102
103 /** 103 /**
104 * Start with an Empty OPimEvent. UID == 0 means that it is empty 104 * Start with an Empty OPimEvent. UID == 0 means that it is empty
105 */ 105 */
106 OPimEvent( int uid = 0 ); 106 OPimEvent( int uid = 0 );
107 107
108 /** 108 /**
109 * copy c'tor 109 * copy c'tor
110 */ 110 */
111 OPimEvent( const OPimEvent& ); 111 OPimEvent( const OPimEvent& );
112 112
113 /** 113 /**
114 * Create OPimEvent, initialized by map 114 * Create OPimEvent, initialized by map
115 * @see enum RecordFields 115 * @see enum RecordFields
116 */ 116 */
117 OPimEvent( const QMap<int, QString> map ); 117 OPimEvent( const QMap<int, QString> map );
118 ~OPimEvent(); 118 ~OPimEvent();
119 OPimEvent &operator=( const OPimEvent& ); 119 OPimEvent &operator=( const OPimEvent& );
120 120
121 QString description() const; 121 QString description() const;
122 void setDescription( const QString& description ); 122 void setDescription( const QString& description );
123 123
124 QString location() const; 124 QString location() const;
125 void setLocation( const QString& loc ); 125 void setLocation( const QString& loc );
126 126
127 bool hasNotifiers() const; 127 bool hasNotifiers() const;
128 OPimNotifyManager &notifiers() const; 128 OPimNotifyManager &notifiers() const;
129 129
130 OPimRecurrence recurrence() const; 130 OPimRecurrence recurrence() const;
131 void setRecurrence( const OPimRecurrence& ); 131 void setRecurrence( const OPimRecurrence& );
132 bool hasRecurrence() const; 132 bool hasRecurrence() const;
133 133
134 QString note() const; 134 QString note() const;
135 void setNote( const QString& note ); 135 void setNote( const QString& note );
136 136
137 137
138 QDateTime createdDateTime() const; 138 QDateTime createdDateTime() const;
139 void setCreatedDateTime( const QDateTime& dt ); 139 void setCreatedDateTime( const QDateTime& dt );
140 140
141 /** set the date to dt. dt is the QDateTime in localtime */ 141 /** set the date to dt. dt is the QDateTime in localtime */
142 void setStartDateTime( const QDateTime& ); 142 void setStartDateTime( const QDateTime& );
143 /** returns the datetime in the local timeZone */ 143 /** returns the datetime in the local timeZone */
144 QDateTime startDateTime() const; 144 QDateTime startDateTime() const;
145 145
146 /** returns the start datetime in the current zone */ 146 /** returns the start datetime in the current zone */
147 QDateTime startDateTimeInZone() const; 147 QDateTime startDateTimeInZone() const;
148 148
149 /** in current timezone */ 149 /** in current timezone */
150 void setEndDateTime( const QDateTime& ); 150 void setEndDateTime( const QDateTime& );
151 /** in current timezone */ 151 /** in current timezone */
152 QDateTime endDateTime() const; 152 QDateTime endDateTime() const;
153 QDateTime endDateTimeInZone() const; 153 QDateTime endDateTimeInZone() const;
154 154
155 bool isMultipleDay() const; 155 bool isMultipleDay() const;
156 bool isAllDay() const; 156 bool isAllDay() const;
157 void setAllDay( bool isAllDay ); 157 void setAllDay( bool isAllDay );
158 158
159 /* pin this event to a timezone! FIXME */ 159 /* pin this event to a timezone! FIXME */
160 void setTimeZone( const QString& timeZone ); 160 void setTimeZone( const QString& timeZone );
161 QString timeZone() const; 161 QString timeZone() const;
162 162
163 163
164 virtual bool match( const QRegExp& ) const; 164 virtual bool match( const QRegExp& ) const;
165 165
166 /** For exception to recurrence here is a list of children... */ 166 /** For exception to recurrence here is a list of children... */
167 QArray<int> children() const; 167 QArray<int> children() const;
168 void setChildren( const QArray<int>& ); 168 void setChildren( const QArray<int>& );
169 void addChild( int uid ); 169 void addChild( int uid );
170 void removeChild( int uid ); 170 void removeChild( int uid );
171 171
172 /** return the parent OPimEvent */ 172 /** return the parent OPimEvent */
173 int parent() const; 173 int parent() const;
174 void setParent( int uid ); 174 void setParent( int uid );
175 175
176 176
177 /* needed reimp */ 177 /* needed reimp */
178 QString toRichText() const; 178 QString toRichText() const;
179 QString toShortText() const; 179 QString toShortText() const;
180 QString type() const; 180 QString type() const;
181 181
182 QMap<int, QString> toMap() const; 182 QMap<int, QString> toMap() const;
183 void fromMap( const QMap<int, QString>& map ); 183 void fromMap( const QMap<int, QString>& map );
184 QString recordField( int ) const; 184 QString recordField( int ) const;
185 185
186 static int rtti(); 186 int rtti() const;
187 187
188 bool loadFromStream( QDataStream& ); 188 bool loadFromStream( QDataStream& );
189 bool saveToStream( QDataStream& ) const; 189 bool saveToStream( QDataStream& ) const;
190 190
191 /* bool operator==( const OPimEvent& ); 191 /* bool operator==( const OPimEvent& );
192 bool operator!=( const OPimEvent& ); 192 bool operator!=( const OPimEvent& );
193 bool operator<( const OPimEvent& ); 193 bool operator<( const OPimEvent& );
194 bool operator<=( const OPimEvent& ); 194 bool operator<=( const OPimEvent& );
195 bool operator>( const OPimEvent& ); 195 bool operator>( const OPimEvent& );
196 bool operator>=(const OPimEvent& ); 196 bool operator>=(const OPimEvent& );
197 */ 197 */
198 198
199 private: 199 private:
200 inline void changeOrModify(); 200 inline void changeOrModify();
201 void deref(); 201 void deref();
202 struct Data; 202 struct Data;
203 Data* data; 203 Data* data;
204 class Private; 204 class Private;
205 Private* priv; 205 Private* priv;
206 206
207}; 207};
208 208
209/** 209/**
210 * AN Event can span through multiple days. We split up a multiday eve 210 * AN Event can span through multiple days. We split up a multiday eve
211 */ 211 */
212class OEffectiveEvent 212class OEffectiveEvent
213{ 213{
214 214
215 public: 215 public:
216 typedef QValueList<OEffectiveEvent> ValueList; 216 typedef QValueList<OEffectiveEvent> ValueList;
217 enum Position { MidWay, Start, End, StartEnd }; 217 enum Position { MidWay, Start, End, StartEnd };
218 // If we calculate the effective event of a multi-day event 218 // If we calculate the effective event of a multi-day event
219 // 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,
220 // at the end, or anywhere else ("middle"). This is important 220 // at the end, or anywhere else ("middle"). This is important
221 // for the start/end times (00:00/23:59) 221 // for the start/end times (00:00/23:59)
222 // MidWay: 00:00 -> 23:59, as we are "in the middle" of a multi- 222 // MidWay: 00:00 -> 23:59, as we are "in the middle" of a multi-
223 // day event 223 // day event
224 // Start: start time -> 23:59 224 // Start: start time -> 23:59
225 // End: 00:00 -> end time 225 // End: 00:00 -> end time
226 // Start | End == StartEnd: for single-day events (default) 226 // Start | End == StartEnd: for single-day events (default)
227 // here we draw start time -> end time 227 // here we draw start time -> end time
228 OEffectiveEvent(); 228 OEffectiveEvent();
229 OEffectiveEvent( const OPimEvent& event, const QDate& startDate, Position pos = StartEnd ); 229 OEffectiveEvent( const OPimEvent& event, const QDate& startDate, Position pos = StartEnd );
230 OEffectiveEvent( const OEffectiveEvent& ); 230 OEffectiveEvent( const OEffectiveEvent& );
231 OEffectiveEvent &operator=( const OEffectiveEvent& ); 231 OEffectiveEvent &operator=( const OEffectiveEvent& );
232 ~OEffectiveEvent(); 232 ~OEffectiveEvent();
233 233
234 void setStartTime( const QTime& ); 234 void setStartTime( const QTime& );
235 void setEndTime( const QTime& ); 235 void setEndTime( const QTime& );
236 void setEvent( const OPimEvent& ); 236 void setEvent( const OPimEvent& );
237 void setDate( const QDate& ); 237 void setDate( const QDate& );
238 238
239 void setEffectiveDates( const QDate& from, const QDate& to ); 239 void setEffectiveDates( const QDate& from, const QDate& to );
240 240
241 QString description() const; 241 QString description() const;
242 QString location() const; 242 QString location() const;
243 QString note() const; 243 QString note() const;
244 OPimEvent event() const; 244 OPimEvent event() const;
245 QTime startTime() const; 245 QTime startTime() const;
246 QTime endTime() const; 246 QTime endTime() const;
247 QDate date() const; 247 QDate date() const;
248 248
249 /* return the length in hours */ 249 /* return the length in hours */
250 int length() const; 250 int length() const;
251 int size() const; 251 int size() const;
252 252
253 QDate startDate() const; 253 QDate startDate() const;
254 QDate endDate() const; 254 QDate endDate() const;
255 255
256 bool operator<( const OEffectiveEvent &e ) const; 256 bool operator<( const OEffectiveEvent &e ) const;
257 bool operator<=( const OEffectiveEvent &e ) const; 257 bool operator<=( const OEffectiveEvent &e ) const;
258 bool operator==( const OEffectiveEvent &e ) const; 258 bool operator==( const OEffectiveEvent &e ) const;
259 bool operator!=( const OEffectiveEvent &e ) const; 259 bool operator!=( const OEffectiveEvent &e ) const;
260 bool operator>( const OEffectiveEvent &e ) const; 260 bool operator>( const OEffectiveEvent &e ) const;
261 bool operator>= ( const OEffectiveEvent &e ) const; 261 bool operator>= ( const OEffectiveEvent &e ) const;
262 262
263 private: 263 private:
264 void deref(); 264 void deref();
265 inline void changeOrModify(); 265 inline void changeOrModify();
266 class Private; 266 class Private;
267 Private* priv; 267 Private* priv;
268 struct Data; 268 struct Data;
269 Data* data; 269 Data* data;
270 270
271}; 271};
272 272
273} 273}
274 274
275#endif 275#endif
diff --git a/libopie2/opiepim/core/opimrecord.cpp b/libopie2/opiepim/core/opimrecord.cpp
index 67eed41..c783092 100644
--- a/libopie2/opiepim/core/opimrecord.cpp
+++ b/libopie2/opiepim/core/opimrecord.cpp
@@ -1,273 +1,273 @@
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
9:`=1 )Y*s>-.-- : the terms of the GNU Library General Public 9:`=1 )Y*s>-.-- : the terms of the GNU Library General Public
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 29
30#include "opimrecord.h" 30#include "opimrecord.h"
31 31
32/* OPIE */ 32/* OPIE */
33#include <qpe/categories.h> 33#include <qpe/categories.h>
34#include <qpe/categoryselect.h> 34#include <qpe/categoryselect.h>
35 35
36/* QT */ 36/* QT */
37 37
38namespace Opie 38namespace Opie
39{ 39{
40Qtopia::UidGen OPimRecord::m_uidGen( Qtopia::UidGen::Qtopia ); 40Qtopia::UidGen OPimRecord::m_uidGen( Qtopia::UidGen::Qtopia );
41 41
42 42
43OPimRecord::OPimRecord( int uid ) 43OPimRecord::OPimRecord( int uid )
44 : Qtopia::Record() 44 : Qtopia::Record()
45{ 45{
46 46
47 m_lastHit = -1; 47 m_lastHit = -1;
48 setUid( uid ); 48 setUid( uid );
49} 49}
50 50
51 51
52OPimRecord::~OPimRecord() 52OPimRecord::~OPimRecord()
53{} 53{}
54 54
55 55
56OPimRecord::OPimRecord( const OPimRecord& rec ) 56OPimRecord::OPimRecord( const OPimRecord& rec )
57 : Qtopia::Record( rec ) 57 : Qtopia::Record( rec )
58{ 58{
59 ( *this ) = rec; 59 ( *this ) = rec;
60} 60}
61 61
62 62
63OPimRecord &OPimRecord::operator=( const OPimRecord& rec ) 63OPimRecord &OPimRecord::operator=( const OPimRecord& rec )
64{ 64{
65 if ( this == &rec ) return * this; 65 if ( this == &rec ) return * this;
66 66
67 Qtopia::Record::operator=( rec ); 67 Qtopia::Record::operator=( rec );
68 m_xrefman = rec.m_xrefman; 68 m_xrefman = rec.m_xrefman;
69 m_lastHit = rec.m_lastHit; 69 m_lastHit = rec.m_lastHit;
70 70
71 return *this; 71 return *this;
72} 72}
73 73
74 74
75/* 75/*
76 * category names 76 * category names
77 */ 77 */
78QStringList OPimRecord::categoryNames( const QString& appname ) const 78QStringList OPimRecord::categoryNames( const QString& appname ) const
79{ 79{
80 QStringList list; 80 QStringList list;
81 QArray<int> cats = categories(); 81 QArray<int> cats = categories();
82 Categories catDB; 82 Categories catDB;
83 catDB.load( categoryFileName() ); 83 catDB.load( categoryFileName() );
84 84
85 for ( uint i = 0; i < cats.count(); i++ ) 85 for ( uint i = 0; i < cats.count(); i++ )
86 { 86 {
87 list << catDB.label( appname, cats[ i ] ); 87 list << catDB.label( appname, cats[ i ] );
88 } 88 }
89 89
90 return list; 90 return list;
91} 91}
92 92
93 93
94void OPimRecord::setCategoryNames( const QStringList& ) 94void OPimRecord::setCategoryNames( const QStringList& )
95{ 95{
96} 96}
97 97
98 98
99void OPimRecord::addCategoryName( const QString& ) 99void OPimRecord::addCategoryName( const QString& )
100{ 100{
101 Categories catDB; 101 Categories catDB;
102 catDB.load( categoryFileName() ); 102 catDB.load( categoryFileName() );
103 103
104 104
105} 105}
106 106
107 107
108bool OPimRecord::isEmpty() const 108bool OPimRecord::isEmpty() const
109{ 109{
110 return ( uid() == 0 ); 110 return ( uid() == 0 );
111} 111}
112 112
113 113
114/*QString OPimRecord::crossToString()const { 114/*QString OPimRecord::crossToString()const {
115 QString str; 115 QString str;
116 QMap<QString, QArray<int> >::ConstIterator it; 116 QMap<QString, QArray<int> >::ConstIterator it;
117 for (it = m_relations.begin(); it != m_relations.end(); ++it ) { 117 for (it = m_relations.begin(); it != m_relations.end(); ++it ) {
118 QArray<int> id = it.data(); 118 QArray<int> id = it.data();
119 for ( uint i = 0; i < id.size(); ++i ) { 119 for ( uint i = 0; i < id.size(); ++i ) {
120 str += it.key() + "," + QString::number( i ) + ";"; 120 str += it.key() + "," + QString::number( i ) + ";";
121 } 121 }
122 } 122 }
123 str = str.remove( str.length()-1, 1); // strip the ; 123 str = str.remove( str.length()-1, 1); // strip the ;
124 //qWarning("IDS " + str ); 124 //qWarning("IDS " + str );
125 125
126 return str; 126 return str;
127 }*/ 127 }*/
128/* if uid = 1 assign a new one */ 128/* if uid = 1 assign a new one */
129void OPimRecord::setUid( int uid ) 129void OPimRecord::setUid( int uid )
130{ 130{
131 if ( uid == 1 ) 131 if ( uid == 1 )
132 uid = uidGen().generate(); 132 uid = uidGen().generate();
133 133
134 Qtopia::Record::setUid( uid ); 134 Qtopia::Record::setUid( uid );
135}; 135};
136 136
137 137
138Qtopia::UidGen &OPimRecord::uidGen() 138Qtopia::UidGen &OPimRecord::uidGen()
139{ 139{
140 return m_uidGen; 140 return m_uidGen;
141} 141}
142 142
143 143
144OPimXRefManager &OPimRecord::xrefmanager() 144OPimXRefManager &OPimRecord::xrefmanager()
145{ 145{
146 return m_xrefman; 146 return m_xrefman;
147} 147}
148 148
149 149
150int OPimRecord::rtti() 150int OPimRecord::rtti() const
151{ 151{
152 return 0; 152 return 0;
153} 153}
154 154
155/** 155/**
156 * now let's put our data into the stream 156 * now let's put our data into the stream
157 */ 157 */
158/* 158/*
159 * First read UID 159 * First read UID
160 * Categories 160 * Categories
161 * XRef 161 * XRef
162 */ 162 */
163bool OPimRecord::loadFromStream( QDataStream& stream ) 163bool OPimRecord::loadFromStream( QDataStream& stream )
164{ 164{
165 int Int; 165 int Int;
166 uint UInt; 166 uint UInt;
167 stream >> Int; 167 stream >> Int;
168 setUid( Int ); 168 setUid( Int );
169 169
170 /** Categories */ 170 /** Categories */
171 stream >> UInt; 171 stream >> UInt;
172 QArray<int> array( UInt ); 172 QArray<int> array( UInt );
173 for ( uint i = 0; i < UInt; i++ ) 173 for ( uint i = 0; i < UInt; i++ )
174 { 174 {
175 stream >> array[ i ]; 175 stream >> array[ i ];
176 } 176 }
177 setCategories( array ); 177 setCategories( array );
178 178
179 /* 179 /*
180 * now we do the X-Ref stuff 180 * now we do the X-Ref stuff
181 */ 181 */
182 OPimXRef xref; 182 OPimXRef xref;
183 stream >> UInt; 183 stream >> UInt;
184 for ( uint i = 0; i < UInt; i++ ) 184 for ( uint i = 0; i < UInt; i++ )
185 { 185 {
186 xref.setPartner( OPimXRef::One, partner( stream ) ); 186 xref.setPartner( OPimXRef::One, partner( stream ) );
187 xref.setPartner( OPimXRef::Two, partner( stream ) ); 187 xref.setPartner( OPimXRef::Two, partner( stream ) );
188 m_xrefman.add( xref ); 188 m_xrefman.add( xref );
189 } 189 }
190 190
191 return true; 191 return true;
192} 192}
193 193
194 194
195bool OPimRecord::saveToStream( QDataStream& stream ) const 195bool OPimRecord::saveToStream( QDataStream& stream ) const
196{ 196{
197 /** UIDs */ 197 /** UIDs */
198 198
199 stream << uid(); 199 stream << uid();
200 200
201 /** Categories */ 201 /** Categories */
202 stream << categories().count(); 202 stream << categories().count();
203 for ( uint i = 0; i < categories().count(); i++ ) 203 for ( uint i = 0; i < categories().count(); i++ )
204 { 204 {
205 stream << categories() [ i ]; 205 stream << categories() [ i ];
206 } 206 }
207 207
208 /* 208 /*
209 * first the XRef count 209 * first the XRef count
210 * then the xrefs 210 * then the xrefs
211 */ 211 */
212 stream << m_xrefman.list().count(); 212 stream << m_xrefman.list().count();
213 for ( OPimXRef::ValueList::ConstIterator it = m_xrefman.list().begin(); 213 for ( OPimXRef::ValueList::ConstIterator it = m_xrefman.list().begin();
214 it != m_xrefman.list().end(); ++it ) 214 it != m_xrefman.list().end(); ++it )
215 { 215 {
216 flush( ( *it ).partner( OPimXRef::One ), stream ); 216 flush( ( *it ).partner( OPimXRef::One ), stream );
217 flush( ( *it ).partner( OPimXRef::Two ), stream ); 217 flush( ( *it ).partner( OPimXRef::Two ), stream );
218 } 218 }
219 return true; 219 return true;
220} 220}
221 221
222 222
223void OPimRecord::flush( const OPimXRefPartner& par, QDataStream& str ) const 223void OPimRecord::flush( const OPimXRefPartner& par, QDataStream& str ) const
224{ 224{
225 str << par.service(); 225 str << par.service();
226 str << par.uid(); 226 str << par.uid();
227 str << par.field(); 227 str << par.field();
228} 228}
229 229
230 230
231OPimXRefPartner OPimRecord::partner( QDataStream& stream ) 231OPimXRefPartner OPimRecord::partner( QDataStream& stream )
232{ 232{
233 OPimXRefPartner par; 233 OPimXRefPartner par;
234 QString str; 234 QString str;
235 int i; 235 int i;
236 236
237 stream >> str; 237 stream >> str;
238 par.setService( str ); 238 par.setService( str );
239 239
240 stream >> i; 240 stream >> i;
241 par.setUid( i ); 241 par.setUid( i );
242 242
243 stream >> i ; 243 stream >> i ;
244 par.setField( i ); 244 par.setField( i );
245 245
246 return par; 246 return par;
247} 247}
248 248
249 249
250void OPimRecord::setLastHitField( int lastHit ) const 250void OPimRecord::setLastHitField( int lastHit ) const
251{ 251{
252 m_lastHit = lastHit; 252 m_lastHit = lastHit;
253} 253}
254 254
255 255
256int OPimRecord::lastHitField() const 256int OPimRecord::lastHitField() const
257{ 257{
258 return m_lastHit; 258 return m_lastHit;
259} 259}
260 260
261 261
262QMap<QString, QString> OPimRecord::toExtraMap() const 262QMap<QString, QString> OPimRecord::toExtraMap() const
263{ 263{
264 return customMap; 264 return customMap;
265} 265}
266 266
267 267
268void OPimRecord::setExtraMap( const QMap<QString, QString>& map ) 268void OPimRecord::setExtraMap( const QMap<QString, QString>& map )
269{ 269{
270 customMap = map; 270 customMap = map;
271} 271}
272 272
273} 273}
diff --git a/libopie2/opiepim/core/opimrecord.h b/libopie2/opiepim/core/opimrecord.h
index 4981a41..127439a 100644
--- a/libopie2/opiepim/core/opimrecord.h
+++ b/libopie2/opiepim/core/opimrecord.h
@@ -1,193 +1,193 @@
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
9:`=1 )Y*s>-.-- : the terms of the GNU Library General Public 9:`=1 )Y*s>-.-- : the terms of the GNU Library General Public
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 29
30#ifndef OPIMRECORD_H 30#ifndef OPIMRECORD_H
31#define OPIMRECORD_H 31#define OPIMRECORD_H
32 32
33/* OPIE */ 33/* OPIE */
34#include <opie2/opimxrefmanager.h> 34#include <opie2/opimxrefmanager.h>
35/* 35/*
36 * we need to get customMap which is private... 36 * we need to get customMap which is private...
37 */ 37 */
38#define private protected 38#define private protected
39#include <qpe/palmtoprecord.h> 39#include <qpe/palmtoprecord.h>
40#undef private 40#undef private
41 41
42/* QT */ 42/* QT */
43#include <qdatastream.h> 43#include <qdatastream.h>
44#include <qmap.h> 44#include <qmap.h>
45#include <qstring.h> 45#include <qstring.h>
46#include <qstringlist.h> 46#include <qstringlist.h>
47 47
48namespace Opie 48namespace Opie
49{ 49{
50/** 50/**
51 * This is the base class for 51 * This is the base class for
52 * all PIM Records 52 * all PIM Records
53 * 53 *
54 */ 54 */
55class OPimRecord : public Qtopia::Record 55class OPimRecord : public Qtopia::Record
56{ 56{
57 public: 57 public:
58 /** 58 /**
59 * c'tor 59 * c'tor
60 * uid of 0 isEmpty 60 * uid of 0 isEmpty
61 * uid of 1 will be assigned a new one 61 * uid of 1 will be assigned a new one
62 */ 62 */
63 OPimRecord( int uid = 0 ); 63 OPimRecord( int uid = 0 );
64 ~OPimRecord(); 64 ~OPimRecord();
65 65
66 /** 66 /**
67 * copy c'tor 67 * copy c'tor
68 */ 68 */
69 OPimRecord( const OPimRecord& rec ); 69 OPimRecord( const OPimRecord& rec );
70 70
71 /** 71 /**
72 * copy operator 72 * copy operator
73 */ 73 */
74 OPimRecord &operator=( const OPimRecord& ); 74 OPimRecord &operator=( const OPimRecord& );
75 75
76 /** 76 /**
77 * category names resolved 77 * category names resolved
78 */ 78 */
79 QStringList categoryNames( const QString& appname ) const; 79 QStringList categoryNames( const QString& appname ) const;
80 80
81 /** 81 /**
82 * set category names they will be resolved 82 * set category names they will be resolved
83 */ 83 */
84 void setCategoryNames( const QStringList& ); 84 void setCategoryNames( const QStringList& );
85 85
86 /** 86 /**
87 * addCategoryName adds a name 87 * addCategoryName adds a name
88 * to the internal category list 88 * to the internal category list
89 */ 89 */
90 void addCategoryName( const QString& ); 90 void addCategoryName( const QString& );
91 91
92 /** 92 /**
93 * if a Record isEmpty 93 * if a Record isEmpty
94 * it's empty if it's 0 94 * it's empty if it's 0
95 */ 95 */
96 virtual bool isEmpty() const; 96 virtual bool isEmpty() const;
97 97
98 /** 98 /**
99 * toRichText summary 99 * toRichText summary
100 */ 100 */
101 virtual QString toRichText() const = 0; 101 virtual QString toRichText() const = 0;
102 102
103 /** 103 /**
104 * a small one line summary 104 * a small one line summary
105 */ 105 */
106 virtual QString toShortText() const = 0; 106 virtual QString toShortText() const = 0;
107 107
108 /** 108 /**
109 * the name of the Record 109 * the name of the Record
110 */ 110 */
111 virtual QString type() const = 0; 111 virtual QString type() const = 0;
112 112
113 /** 113 /**
114 * matches the Records the regular expression? 114 * matches the Records the regular expression?
115 */ 115 */
116 virtual bool match( const QString &regexp ) const 116 virtual bool match( const QString &regexp ) const
117 { 117 {
118 setLastHitField( -1 ); 118 setLastHitField( -1 );
119 return Qtopia::Record::match( QRegExp( regexp ) ); 119 return Qtopia::Record::match( QRegExp( regexp ) );
120 }; 120 };
121 121
122 /** 122 /**
123 * if implemented this function returns which item has been 123 * if implemented this function returns which item has been
124 * last hit by the match() function. 124 * last hit by the match() function.
125 * or -1 if not implemented or no hit has occured 125 * or -1 if not implemented or no hit has occured
126 */ 126 */
127 int lastHitField() const; 127 int lastHitField() const;
128 128
129 /** 129 /**
130 * converts the internal structure to a map 130 * converts the internal structure to a map
131 */ 131 */
132 virtual QMap<int, QString> toMap() const = 0; 132 virtual QMap<int, QString> toMap() const = 0;
133 // 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)
134 134
135 /** 135 /**
136 * key value representation of extra items 136 * key value representation of extra items
137 */ 137 */
138 QMap<QString, QString> toExtraMap() const; 138 QMap<QString, QString> toExtraMap() const;
139 void setExtraMap( const QMap<QString, QString>& ); 139 void setExtraMap( const QMap<QString, QString>& );
140 140
141 /** 141 /**
142 * the name for a recordField 142 * the name for a recordField
143 */ 143 */
144 virtual QString recordField( int ) const = 0; 144 virtual QString recordField( int ) const = 0;
145 145
146 /** 146 /**
147 * returns a reference of the 147 * returns a reference of the
148 * Cross Reference Manager 148 * Cross Reference Manager
149 * Partner 'One' is THIS PIM RECORD! 149 * Partner 'One' is THIS PIM RECORD!
150 * 'Two' is the Partner where we link to 150 * 'Two' is the Partner where we link to
151 */ 151 */
152 OPimXRefManager& xrefmanager(); 152 OPimXRefManager& xrefmanager();
153 153
154 /** 154 /**
155 * set the uid 155 * set the uid
156 */ 156 */
157 virtual void setUid( int uid ); 157 virtual void setUid( int uid );
158 158
159 /* 159 /*
160 * used inside the Templates for casting 160 * used inside the Templates for casting
161 * REIMPLEMENT in your .... 161 * REIMPLEMENT in your ....
162 */ 162 */
163 static int rtti(); 163 virtual int rtti() const;
164 164
165 /** 165 /**
166 * some marshalling and de marshalling code 166 * some marshalling and de marshalling code
167 * saves the OPimRecord 167 * saves the OPimRecord
168 * to and from a DataStream 168 * to and from a DataStream
169 */ 169 */
170 virtual bool loadFromStream( QDataStream& ); 170 virtual bool loadFromStream( QDataStream& );
171 virtual bool saveToStream( QDataStream& stream ) const; 171 virtual bool saveToStream( QDataStream& stream ) const;
172 172
173 protected: 173 protected:
174 // need to be const cause it is called from const methods 174 // need to be const cause it is called from const methods
175 mutable int m_lastHit; 175 mutable int m_lastHit;
176 void setLastHitField( int lastHit ) const; 176 void setLastHitField( int lastHit ) const;
177 Qtopia::UidGen &uidGen(); 177 Qtopia::UidGen &uidGen();
178 // QString crossToString()const; 178 // QString crossToString()const;
179 179
180 private: 180 private:
181 class OPimRecordPrivate; 181 class OPimRecordPrivate;
182 OPimRecordPrivate *d; 182 OPimRecordPrivate *d;
183 OPimXRefManager m_xrefman; 183 OPimXRefManager m_xrefman;
184 static Qtopia::UidGen m_uidGen; 184 static Qtopia::UidGen m_uidGen;
185 185
186 private: 186 private:
187 void flush( const OPimXRefPartner&, QDataStream& stream ) const; 187 void flush( const OPimXRefPartner&, QDataStream& stream ) const;
188 OPimXRefPartner partner( QDataStream& ); 188 OPimXRefPartner partner( QDataStream& );
189}; 189};
190 190
191} 191}
192 192
193#endif 193#endif
diff --git a/libopie2/opiepim/core/opimtodo.cpp b/libopie2/opiepim/core/opimtodo.cpp
index f246bfd..47433e0 100644
--- a/libopie2/opiepim/core/opimtodo.cpp
+++ b/libopie2/opiepim/core/opimtodo.cpp
@@ -514,198 +514,198 @@ bool OPimTodo::operator<( const OPimTodo &toDoEvent ) const
514 return false; 514 return false;
515} 515}
516 516
517 517
518bool OPimTodo::operator<=( const OPimTodo &toDoEvent ) const 518bool OPimTodo::operator<=( const OPimTodo &toDoEvent ) const
519{ 519{
520 if ( !hasDueDate() && !toDoEvent.hasDueDate() ) return true; 520 if ( !hasDueDate() && !toDoEvent.hasDueDate() ) return true;
521 if ( !hasDueDate() && toDoEvent.hasDueDate() ) return true; 521 if ( !hasDueDate() && toDoEvent.hasDueDate() ) return true;
522 if ( hasDueDate() && toDoEvent.hasDueDate() ) 522 if ( hasDueDate() && toDoEvent.hasDueDate() )
523 { 523 {
524 if ( dueDate() == toDoEvent.dueDate() ) 524 if ( dueDate() == toDoEvent.dueDate() )
525 { // let's the priority decide 525 { // let's the priority decide
526 return priority() <= toDoEvent.priority(); 526 return priority() <= toDoEvent.priority();
527 } 527 }
528 else 528 else
529 { 529 {
530 return dueDate() <= toDoEvent.dueDate(); 530 return dueDate() <= toDoEvent.dueDate();
531 } 531 }
532 } 532 }
533 return true; 533 return true;
534} 534}
535 535
536 536
537bool OPimTodo::operator>( const OPimTodo &toDoEvent ) const 537bool OPimTodo::operator>( const OPimTodo &toDoEvent ) const
538{ 538{
539 if ( !hasDueDate() && !toDoEvent.hasDueDate() ) return false; 539 if ( !hasDueDate() && !toDoEvent.hasDueDate() ) return false;
540 if ( !hasDueDate() && toDoEvent.hasDueDate() ) return false; 540 if ( !hasDueDate() && toDoEvent.hasDueDate() ) return false;
541 if ( hasDueDate() && toDoEvent.hasDueDate() ) 541 if ( hasDueDate() && toDoEvent.hasDueDate() )
542 { 542 {
543 if ( dueDate() == toDoEvent.dueDate() ) 543 if ( dueDate() == toDoEvent.dueDate() )
544 { // let's the priority decide 544 { // let's the priority decide
545 return priority() > toDoEvent.priority(); 545 return priority() > toDoEvent.priority();
546 } 546 }
547 else 547 else
548 { 548 {
549 return dueDate() > toDoEvent.dueDate(); 549 return dueDate() > toDoEvent.dueDate();
550 } 550 }
551 } 551 }
552 return false; 552 return false;
553} 553}
554 554
555 555
556bool OPimTodo::operator>=( const OPimTodo &toDoEvent ) const 556bool OPimTodo::operator>=( const OPimTodo &toDoEvent ) const
557{ 557{
558 if ( !hasDueDate() && !toDoEvent.hasDueDate() ) return true; 558 if ( !hasDueDate() && !toDoEvent.hasDueDate() ) return true;
559 if ( !hasDueDate() && toDoEvent.hasDueDate() ) return false; 559 if ( !hasDueDate() && toDoEvent.hasDueDate() ) return false;
560 if ( hasDueDate() && toDoEvent.hasDueDate() ) 560 if ( hasDueDate() && toDoEvent.hasDueDate() )
561 { 561 {
562 if ( dueDate() == toDoEvent.dueDate() ) 562 if ( dueDate() == toDoEvent.dueDate() )
563 { // let's the priority decide 563 { // let's the priority decide
564 return priority() > toDoEvent.priority(); 564 return priority() > toDoEvent.priority();
565 } 565 }
566 else 566 else
567 { 567 {
568 return dueDate() > toDoEvent.dueDate(); 568 return dueDate() > toDoEvent.dueDate();
569 } 569 }
570 } 570 }
571 return true; 571 return true;
572} 572}
573 573
574 574
575bool OPimTodo::operator==( const OPimTodo &toDoEvent ) const 575bool OPimTodo::operator==( const OPimTodo &toDoEvent ) const
576{ 576{
577 if ( data->priority != toDoEvent.data->priority ) return false; 577 if ( data->priority != toDoEvent.data->priority ) return false;
578 if ( data->priority != toDoEvent.data->prog ) return false; 578 if ( data->priority != toDoEvent.data->prog ) return false;
579 if ( data->isCompleted != toDoEvent.data->isCompleted ) return false; 579 if ( data->isCompleted != toDoEvent.data->isCompleted ) return false;
580 if ( data->hasDate != toDoEvent.data->hasDate ) return false; 580 if ( data->hasDate != toDoEvent.data->hasDate ) return false;
581 if ( data->date != toDoEvent.data->date ) return false; 581 if ( data->date != toDoEvent.data->date ) return false;
582 if ( data->sum != toDoEvent.data->sum ) return false; 582 if ( data->sum != toDoEvent.data->sum ) return false;
583 if ( data->desc != toDoEvent.data->desc ) return false; 583 if ( data->desc != toDoEvent.data->desc ) return false;
584 if ( data->maintainer != toDoEvent.data->maintainer ) 584 if ( data->maintainer != toDoEvent.data->maintainer )
585 return false; 585 return false;
586 586
587 return OPimRecord::operator==( toDoEvent ); 587 return OPimRecord::operator==( toDoEvent );
588} 588}
589 589
590 590
591void OPimTodo::deref() 591void OPimTodo::deref()
592{ 592{
593 593
594 // qWarning("deref in ToDoEvent"); 594 // qWarning("deref in ToDoEvent");
595 if ( data->deref() ) 595 if ( data->deref() )
596 { 596 {
597 // qWarning("deleting"); 597 // qWarning("deleting");
598 delete data; 598 delete data;
599 data = 0; 599 data = 0;
600 } 600 }
601} 601}
602 602
603 603
604OPimTodo &OPimTodo::operator=( const OPimTodo &item ) 604OPimTodo &OPimTodo::operator=( const OPimTodo &item )
605{ 605{
606 if ( this == &item ) return * this; 606 if ( this == &item ) return * this;
607 607
608 OPimRecord::operator=( item ); 608 OPimRecord::operator=( item );
609 //qWarning("operator= ref "); 609 //qWarning("operator= ref ");
610 item.data->ref(); 610 item.data->ref();
611 deref(); 611 deref();
612 data = item.data; 612 data = item.data;
613 613
614 return *this; 614 return *this;
615} 615}
616 616
617 617
618QMap<int, QString> OPimTodo::toMap() const 618QMap<int, QString> OPimTodo::toMap() const
619{ 619{
620 QMap<int, QString> map; 620 QMap<int, QString> map;
621 621
622 map.insert( Uid, QString::number( uid() ) ); 622 map.insert( Uid, QString::number( uid() ) );
623 map.insert( Category, idsToString( categories() ) ); 623 map.insert( Category, idsToString( categories() ) );
624 map.insert( HasDate, QString::number( data->hasDate ) ); 624 map.insert( HasDate, QString::number( data->hasDate ) );
625 map.insert( Completed, QString::number( data->isCompleted ) ); 625 map.insert( Completed, QString::number( data->isCompleted ) );
626 map.insert( Description, data->desc ); 626 map.insert( Description, data->desc );
627 map.insert( Summary, data->sum ); 627 map.insert( Summary, data->sum );
628 map.insert( Priority, QString::number( data->priority ) ); 628 map.insert( Priority, QString::number( data->priority ) );
629 map.insert( DateDay, QString::number( data->date.day() ) ); 629 map.insert( DateDay, QString::number( data->date.day() ) );
630 map.insert( DateMonth, QString::number( data->date.month() ) ); 630 map.insert( DateMonth, QString::number( data->date.month() ) );
631 map.insert( DateYear, QString::number( data->date.year() ) ); 631 map.insert( DateYear, QString::number( data->date.year() ) );
632 map.insert( Progress, QString::number( data->prog ) ); 632 map.insert( Progress, QString::number( data->prog ) );
633 // map.insert( CrossReference, crossToString() ); 633 // map.insert( CrossReference, crossToString() );
634 /* FIXME!!! map.insert( State, ); 634 /* FIXME!!! map.insert( State, );
635 map.insert( Recurrence, ); 635 map.insert( Recurrence, );
636 map.insert( Reminders, ); 636 map.insert( Reminders, );
637 map. 637 map.
638 */ 638 */
639 return map; 639 return map;
640} 640}
641 641
642 642
643/** 643/**
644 * change or modify looks at the ref count and either 644 * change or modify looks at the ref count and either
645 * creates a new QShared Object or it can modify it 645 * creates a new QShared Object or it can modify it
646 * right in place 646 * right in place
647 */ 647 */
648void OPimTodo::changeOrModify() 648void OPimTodo::changeOrModify()
649{ 649{
650 if ( data->count != 1 ) 650 if ( data->count != 1 )
651 { 651 {
652 qWarning( "changeOrModify" ); 652 qWarning( "changeOrModify" );
653 data->deref(); 653 data->deref();
654 OPimTodoData* d2 = new OPimTodoData(); 654 OPimTodoData* d2 = new OPimTodoData();
655 copy( data, d2 ); 655 copy( data, d2 );
656 data = d2; 656 data = d2;
657 } 657 }
658} 658}
659 659
660 660
661// WATCHOUT 661// WATCHOUT
662/* 662/*
663 * if you add something to the Data struct 663 * if you add something to the Data struct
664 * be sure to copy it here 664 * be sure to copy it here
665 */ 665 */
666void OPimTodo::copy( OPimTodoData* src, OPimTodoData* dest ) 666void OPimTodo::copy( OPimTodoData* src, OPimTodoData* dest )
667{ 667{
668 dest->date = src->date; 668 dest->date = src->date;
669 dest->isCompleted = src->isCompleted; 669 dest->isCompleted = src->isCompleted;
670 dest->hasDate = src->hasDate; 670 dest->hasDate = src->hasDate;
671 dest->priority = src->priority; 671 dest->priority = src->priority;
672 dest->desc = src->desc; 672 dest->desc = src->desc;
673 dest->sum = src->sum; 673 dest->sum = src->sum;
674 dest->extra = src->extra; 674 dest->extra = src->extra;
675 dest->prog = src->prog; 675 dest->prog = src->prog;
676 676
677 if ( src->state ) 677 if ( src->state )
678 dest->state = new OPimState( *src->state ); 678 dest->state = new OPimState( *src->state );
679 679
680 if ( src->recur ) 680 if ( src->recur )
681 dest->recur = new OPimRecurrence( *src->recur ); 681 dest->recur = new OPimRecurrence( *src->recur );
682 682
683 if ( src->maintainer ) 683 if ( src->maintainer )
684 dest->maintainer = new OPimMaintainer( *src->maintainer ) 684 dest->maintainer = new OPimMaintainer( *src->maintainer )
685 ; 685 ;
686 dest->start = src->start; 686 dest->start = src->start;
687 dest->completed = src->completed; 687 dest->completed = src->completed;
688 688
689 if ( src->notifiers ) 689 if ( src->notifiers )
690 dest->notifiers = new OPimNotifyManager( *src->notifiers ); 690 dest->notifiers = new OPimNotifyManager( *src->notifiers );
691} 691}
692 692
693 693
694QString OPimTodo::type() const 694QString OPimTodo::type() const
695{ 695{
696 return QString::fromLatin1( "OPimTodo" ); 696 return QString::fromLatin1( "OPimTodo" );
697} 697}
698 698
699 699
700QString OPimTodo::recordField( int /*id*/ ) const 700QString OPimTodo::recordField( int /*id*/ ) const
701{ 701{
702 return QString::null; 702 return QString::null;
703} 703}
704 704
705 705
706int OPimTodo::rtti() 706int OPimTodo::rtti() const
707{ 707{
708 return OPimResolver::TodoList; 708 return OPimResolver::TodoList;
709} 709}
710 710
711} 711}
diff --git a/libopie2/opiepim/core/opimtodo.h b/libopie2/opiepim/core/opimtodo.h
index 5304180..e17fe6a 100644
--- a/libopie2/opiepim/core/opimtodo.h
+++ b/libopie2/opiepim/core/opimtodo.h
@@ -106,215 +106,215 @@ class OPimTodo : public OPimRecord
106 bool hasDate = false, QDate date = QDate::currentDate(), 106 bool hasDate = false, QDate date = QDate::currentDate(),
107 int uid = 0 /* empty */ ); 107 int uid = 0 /* empty */ );
108 108
109 /** Copy c'tor 109 /** Copy c'tor
110 * 110 *
111 */ 111 */
112 OPimTodo( const OPimTodo & ); 112 OPimTodo( const OPimTodo & );
113 113
114 /** 114 /**
115 *destructor 115 *destructor
116 */ 116 */
117 ~OPimTodo(); 117 ~OPimTodo();
118 118
119 /** 119 /**
120 * Is this event completed? 120 * Is this event completed?
121 */ 121 */
122 bool isCompleted() const; 122 bool isCompleted() const;
123 123
124 /** 124 /**
125 * Does this Event have a deadline 125 * Does this Event have a deadline
126 */ 126 */
127 bool hasDueDate() const; 127 bool hasDueDate() const;
128 bool hasStartDate() const; 128 bool hasStartDate() const;
129 bool hasCompletedDate() const; 129 bool hasCompletedDate() const;
130 130
131 /** 131 /**
132 * What is the priority? 132 * What is the priority?
133 */ 133 */
134 int priority() const ; 134 int priority() const ;
135 135
136 /** 136 /**
137 * progress as ushort 0, 20, 40, 60, 80 or 100% 137 * progress as ushort 0, 20, 40, 60, 80 or 100%
138 */ 138 */
139 ushort progress() const; 139 ushort progress() const;
140 140
141 /** 141 /**
142 * The due Date 142 * The due Date
143 */ 143 */
144 QDate dueDate() const; 144 QDate dueDate() const;
145 145
146 /** 146 /**
147 * When did it start? 147 * When did it start?
148 */ 148 */
149 QDate startDate() const; 149 QDate startDate() const;
150 150
151 /** 151 /**
152 * When was it completed? 152 * When was it completed?
153 */ 153 */
154 QDate completedDate() const; 154 QDate completedDate() const;
155 155
156 /** 156 /**
157 * does it have a state? 157 * does it have a state?
158 */ 158 */
159 bool hasState() const; 159 bool hasState() const;
160 160
161 /** 161 /**
162 * What is the state of this OPimTodo? 162 * What is the state of this OPimTodo?
163 */ 163 */
164 OPimState state() const; 164 OPimState state() const;
165 165
166 /** 166 /**
167 * has recurrence? 167 * has recurrence?
168 */ 168 */
169 bool hasRecurrence() const; 169 bool hasRecurrence() const;
170 170
171 /** 171 /**
172 * the recurrance of this 172 * the recurrance of this
173 */ 173 */
174 OPimRecurrence recurrence() const; 174 OPimRecurrence recurrence() const;
175 175
176 /** 176 /**
177 * does this OPimTodo have a maintainer? 177 * does this OPimTodo have a maintainer?
178 */ 178 */
179 bool hasMaintainer() const; 179 bool hasMaintainer() const;
180 180
181 /** 181 /**
182 * the Maintainer of this OPimTodo 182 * the Maintainer of this OPimTodo
183 */ 183 */
184 OPimMaintainer maintainer() const; 184 OPimMaintainer maintainer() const;
185 185
186 /** 186 /**
187 * The description of the todo 187 * The description of the todo
188 */ 188 */
189 QString description() const; 189 QString description() const;
190 190
191 /** 191 /**
192 * A small summary of the todo 192 * A small summary of the todo
193 */ 193 */
194 QString summary() const; 194 QString summary() const;
195 195
196 /** 196 /**
197 * @reimplemented 197 * @reimplemented
198 * Return this todoevent in a RichText formatted QString 198 * Return this todoevent in a RichText formatted QString
199 */ 199 */
200 QString toRichText() const; 200 QString toRichText() const;
201 201
202 bool hasNotifiers() const; 202 bool hasNotifiers() const;
203 /* 203 /*
204 * FIXME check if the sharing is still fine!! -zecke 204 * FIXME check if the sharing is still fine!! -zecke
205 * ### CHECK If API is fine 205 * ### CHECK If API is fine
206 */ 206 */
207 /** 207 /**
208 * return a reference to our notifiers... 208 * return a reference to our notifiers...
209 */ 209 */
210 OPimNotifyManager &notifiers(); 210 OPimNotifyManager &notifiers();
211 211
212 /** 212 /**
213 * 213 *
214 */ 214 */
215 const OPimNotifyManager &notifiers() const; 215 const OPimNotifyManager &notifiers() const;
216 216
217 /** 217 /**
218 * reimplementations 218 * reimplementations
219 */ 219 */
220 QString type() const; 220 QString type() const;
221 QString toShortText() const; 221 QString toShortText() const;
222 QString recordField( int id ) const; 222 QString recordField( int id ) const;
223 223
224 /** 224 /**
225 * toMap puts all data into the map. int relates 225 * toMap puts all data into the map. int relates
226 * to ToDoEvent RecordFields enum 226 * to ToDoEvent RecordFields enum
227 */ 227 */
228 QMap<int, QString> toMap() const; 228 QMap<int, QString> toMap() const;
229 229
230 /** 230 /**
231 * Set if this Todo is completed 231 * Set if this Todo is completed
232 */ 232 */
233 void setCompleted( bool completed ); 233 void setCompleted( bool completed );
234 234
235 /** 235 /**
236 * set if this todo got an end data 236 * set if this todo got an end data
237 */ 237 */
238 void setHasDueDate( bool hasDate ); 238 void setHasDueDate( bool hasDate );
239 // FIXME we do not have these for start, completed 239 // FIXME we do not have these for start, completed
240 // cause we'll use the isNull() of QDate for figuring 240 // cause we'll use the isNull() of QDate for figuring
241 // out if it's has a date... 241 // out if it's has a date...
242 // decide what to do here? -zecke 242 // decide what to do here? -zecke
243 243
244 /** 244 /**
245 * Set the priority of the Todo 245 * Set the priority of the Todo
246 */ 246 */
247 void setPriority( int priority ); 247 void setPriority( int priority );
248 248
249 /** 249 /**
250 * Set the progress. 250 * Set the progress.
251 */ 251 */
252 void setProgress( ushort progress ); 252 void setProgress( ushort progress );
253 253
254 /** 254 /**
255 * set the end date 255 * set the end date
256 */ 256 */
257 void setDueDate( const QDate& date ); 257 void setDueDate( const QDate& date );
258 258
259 /** 259 /**
260 * set the start date 260 * set the start date
261 */ 261 */
262 void setStartDate( const QDate& date ); 262 void setStartDate( const QDate& date );
263 263
264 /** 264 /**
265 * set the completed date 265 * set the completed date
266 */ 266 */
267 void setCompletedDate( const QDate& date ); 267 void setCompletedDate( const QDate& date );
268 268
269 void setRecurrence( const OPimRecurrence& ); 269 void setRecurrence( const OPimRecurrence& );
270 270
271 void setDescription( const QString& ); 271 void setDescription( const QString& );
272 void setSummary( const QString& ); 272 void setSummary( const QString& );
273 273
274 /** 274 /**
275 * set the state of a Todo 275 * set the state of a Todo
276 * @param state State what the todo should take 276 * @param state State what the todo should take
277 */ 277 */
278 void setState( const OPimState& state ); 278 void setState( const OPimState& state );
279 279
280 /** 280 /**
281 * set the Maintainer Mode 281 * set the Maintainer Mode
282 */ 282 */
283 void setMaintainer( const OPimMaintainer& ); 283 void setMaintainer( const OPimMaintainer& );
284 284
285 bool isOverdue(); 285 bool isOverdue();
286 286
287 287
288 virtual bool match( const QRegExp &r ) const; 288 virtual bool match( const QRegExp &r ) const;
289 289
290 bool operator<( const OPimTodo &toDoEvent ) const; 290 bool operator<( const OPimTodo &toDoEvent ) const;
291 bool operator<=( const OPimTodo &toDoEvent ) const; 291 bool operator<=( const OPimTodo &toDoEvent ) const;
292 bool operator!=( const OPimTodo &toDoEvent ) const; 292 bool operator!=( const OPimTodo &toDoEvent ) const;
293 bool operator>( const OPimTodo &toDoEvent ) const; 293 bool operator>( const OPimTodo &toDoEvent ) const;
294 bool operator>=( const OPimTodo &toDoEvent ) const; 294 bool operator>=( const OPimTodo &toDoEvent ) const;
295 bool operator==( const OPimTodo &toDoEvent ) const; 295 bool operator==( const OPimTodo &toDoEvent ) const;
296 OPimTodo &operator=( const OPimTodo &toDoEvent ); 296 OPimTodo &operator=( const OPimTodo &toDoEvent );
297 297
298 static int rtti(); 298 int rtti() const;
299 299
300 private: 300 private:
301 class OPimTodoPrivate; 301 class OPimTodoPrivate;
302 struct OPimTodoData; 302 struct OPimTodoData;
303 303
304 void deref(); 304 void deref();
305 inline void changeOrModify(); 305 inline void changeOrModify();
306 void copy( OPimTodoData* src, OPimTodoData* dest ); 306 void copy( OPimTodoData* src, OPimTodoData* dest );
307 OPimTodoPrivate *d; 307 OPimTodoPrivate *d;
308 OPimTodoData *data; 308 OPimTodoData *data;
309 309
310}; 310};
311 311
312 312
313inline bool OPimTodo::operator!=( const OPimTodo &toDoEvent ) const 313inline bool OPimTodo::operator!=( const OPimTodo &toDoEvent ) const
314{ 314{
315 return !( *this == toDoEvent ); 315 return !( *this == toDoEvent );
316} 316}
317 317
318} 318}
319 319
320#endif 320#endif