summaryrefslogtreecommitdiff
authorzecke <zecke>2002-09-22 23:32:49 (UTC)
committer zecke <zecke>2002-09-22 23:32:49 (UTC)
commitd7098ef25f7f4ebe5678061aa3a3c0bd1f077f7f (patch) (unidiff)
tree5ff52b48fd514c6f24da6d3204bc98b66c48a652
parent4f142e98ee63e88fa0df61161b93228ee719d551 (diff)
downloadopie-d7098ef25f7f4ebe5678061aa3a3c0bd1f077f7f.zip
opie-d7098ef25f7f4ebe5678061aa3a3c0bd1f077f7f.tar.gz
opie-d7098ef25f7f4ebe5678061aa3a3c0bd1f077f7f.tar.bz2
Two brown paper bags later OTodo is ok again... pointers can be so fscking awesome
I had problems with QShared because I forgot to copy it in &operator= And the other one was d = 0
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--libopie/pim/orecordlist.h12
-rw-r--r--libopie/pim/otodo.cpp25
-rw-r--r--libopie/pim/otodoaccessxml.cpp2
-rw-r--r--libopie2/opiepim/backend/otodoaccessxml.cpp2
-rw-r--r--libopie2/opiepim/orecordlist.h12
-rw-r--r--libopie2/opiepim/otodo.cpp25
6 files changed, 42 insertions, 36 deletions
diff --git a/libopie/pim/orecordlist.h b/libopie/pim/orecordlist.h
index 75bb33c..36728b8 100644
--- a/libopie/pim/orecordlist.h
+++ b/libopie/pim/orecordlist.h
@@ -31,25 +31,25 @@ public:
31 * The standard c'tor 31 * The standard c'tor
32 */ 32 */
33 ORecordListIterator(); 33 ORecordListIterator();
34 ~ORecordListIterator(); 34 ~ORecordListIterator();
35 35
36 ORecordListIterator( const ORecordListIterator& ); 36 ORecordListIterator( const ORecordListIterator& );
37 ORecordListIterator &operator=(const ORecordListIterator& ); 37 ORecordListIterator &operator=(const ORecordListIterator& );
38 38
39 /** 39 /**
40 * a * operator ;) 40 * a * operator ;)
41 * use it like this T = (*it); 41 * use it like this T = (*it);
42 */ 42 */
43 T &operator*(); 43 T operator*();
44 ORecordListIterator &operator++(); 44 ORecordListIterator &operator++();
45 ORecordListIterator &operator--(); 45 ORecordListIterator &operator--();
46 46
47 bool operator==( const ORecordListIterator& it ); 47 bool operator==( const ORecordListIterator& it );
48 bool operator!=( const ORecordListIterator& it ); 48 bool operator!=( const ORecordListIterator& it );
49 49
50private: 50private:
51 QArray<int> m_uids; 51 QArray<int> m_uids;
52 int m_current; 52 int m_current;
53 const Base* m_temp; 53 const Base* m_temp;
54 bool m_end : 1; 54 bool m_end : 1;
55 T m_record; 55 T m_record;
@@ -90,54 +90,55 @@ public:
90 */ 90 */
91private: 91private:
92 QArray<int> m_ids; 92 QArray<int> m_ids;
93 const Base* m_acc; 93 const Base* m_acc;
94}; 94};
95 95
96/* ok now implement it */ 96/* ok now implement it */
97template <class T> 97template <class T>
98ORecordListIterator<T>::ORecordListIterator() { 98ORecordListIterator<T>::ORecordListIterator() {
99 m_current = 0; 99 m_current = 0;
100 m_temp = 0l; 100 m_temp = 0l;
101 m_end = true; 101 m_end = true;
102 m_record = T();
102} 103}
103template <class T> 104template <class T>
104ORecordListIterator<T>::~ORecordListIterator() { 105ORecordListIterator<T>::~ORecordListIterator() {
105/* nothing to delete */ 106/* nothing to delete */
106} 107}
107 108
108template <class T> 109template <class T>
109ORecordListIterator<T>::ORecordListIterator( const ORecordListIterator<T>& it) { 110ORecordListIterator<T>::ORecordListIterator( const ORecordListIterator<T>& it) {
110 qWarning("ORecordListIterator"); 111// qWarning("ORecordListIterator copy c'tor");
111 m_uids = it.m_uids; 112 m_uids = it.m_uids;
112 m_current = it.m_current; 113 m_current = it.m_current;
113 m_temp = it.m_temp; 114 m_temp = it.m_temp;
114 m_end = it.m_end; 115 m_end = it.m_end;
115 m_record = it.m_record; 116 m_record = it.m_record;
116} 117}
117 118
118template <class T> 119template <class T>
119ORecordListIterator<T> &ORecordListIterator<T>::operator=( const ORecordListIterator<T>& it) { 120ORecordListIterator<T> &ORecordListIterator<T>::operator=( const ORecordListIterator<T>& it) {
120 m_uids = it.m_uids; 121 m_uids = it.m_uids;
121 m_current = it.m_current; 122 m_current = it.m_current;
122 m_temp = it.m_temp; 123 m_temp = it.m_temp;
123 m_end = it.m_end; 124 m_end = it.m_end;
124 m_record = it.m_record; 125// m_record = it.m_record;
125 126
126 return *this; 127 return *this;
127} 128}
128 129
129template <class T> 130template <class T>
130T &ORecordListIterator<T>::operator*() { 131T ORecordListIterator<T>::operator*() {
131 qWarning("operator* %d %d", m_current, m_uids[m_current] ); 132// qWarning("operator* %d %d", m_current, m_uids[m_current] );
132 if (!m_end ) 133 if (!m_end )
133 m_record = m_temp->find( m_uids[m_current] ); 134 m_record = m_temp->find( m_uids[m_current] );
134 else 135 else
135 m_record = T(); 136 m_record = T();
136 137
137 return m_record; 138 return m_record;
138} 139}
139 140
140template <class T> 141template <class T>
141ORecordListIterator<T> &ORecordListIterator<T>::operator++() { 142ORecordListIterator<T> &ORecordListIterator<T>::operator++() {
142 if (m_current < (int)m_uids.count() ) { 143 if (m_current < (int)m_uids.count() ) {
143 m_end = false; 144 m_end = false;
@@ -184,25 +185,24 @@ ORecordListIterator<T>::ORecordListIterator( const QArray<int> uids,
184template <class T> 185template <class T>
185ORecordList<T>::ORecordList( const QArray<int>& ids, 186ORecordList<T>::ORecordList( const QArray<int>& ids,
186 const Base* acc ) 187 const Base* acc )
187 : m_ids( ids ), m_acc( acc ) 188 : m_ids( ids ), m_acc( acc )
188{ 189{
189} 190}
190template <class T> 191template <class T>
191ORecordList<T>::~ORecordList() { 192ORecordList<T>::~ORecordList() {
192/* nothing to do here */ 193/* nothing to do here */
193} 194}
194template <class T> 195template <class T>
195ORecordList<T>::Iterator ORecordList<T>::begin() { 196ORecordList<T>::Iterator ORecordList<T>::begin() {
196 qWarning("ORecordList::begin");
197 Iterator it( m_ids, m_acc ); 197 Iterator it( m_ids, m_acc );
198 return it; 198 return it;
199} 199}
200template <class T> 200template <class T>
201ORecordList<T>::Iterator ORecordList<T>::end() { 201ORecordList<T>::Iterator ORecordList<T>::end() {
202 Iterator it( m_ids, m_acc ); 202 Iterator it( m_ids, m_acc );
203 it.m_end = true; 203 it.m_end = true;
204 it.m_current = m_ids.count(); 204 it.m_current = m_ids.count();
205 205
206 return it; 206 return it;
207} 207}
208#endif 208#endif
diff --git a/libopie/pim/otodo.cpp b/libopie/pim/otodo.cpp
index b3c14e6..cc46b21 100644
--- a/libopie/pim/otodo.cpp
+++ b/libopie/pim/otodo.cpp
@@ -27,71 +27,72 @@ struct OTodo::OTodoData : public QShared {
27 QString desc; 27 QString desc;
28 QString sum; 28 QString sum;
29 QMap<QString, QString> extra; 29 QMap<QString, QString> extra;
30 ushort prog; 30 ushort prog;
31 bool hasAlarmDateTime :1; 31 bool hasAlarmDateTime :1;
32 QDateTime alarmDateTime; 32 QDateTime alarmDateTime;
33}; 33};
34 34
35OTodo::OTodo(const OTodo &event ) 35OTodo::OTodo(const OTodo &event )
36 : OPimRecord( event ), data( event.data ) 36 : OPimRecord( event ), data( event.data )
37{ 37{
38 data->ref(); 38 data->ref();
39 qWarning("ref up"); 39// qWarning("ref up");
40} 40}
41OTodo::~OTodo() { 41OTodo::~OTodo() {
42 qWarning("~OTodo " + data->sum ); 42
43// qWarning("~OTodo " );
43 if ( data->deref() ) { 44 if ( data->deref() ) {
44 qWarning("OTodo::dereffing"); 45// qWarning("OTodo::dereffing");
45 delete data; 46 delete data;
46 data = 0l; 47 data = 0l;
47 } 48 }
48} 49}
49OTodo::OTodo(bool completed, int priority, 50OTodo::OTodo(bool completed, int priority,
50 const QArray<int> &category, 51 const QArray<int> &category,
51 const QString& summary, 52 const QString& summary,
52 const QString &description, 53 const QString &description,
53 ushort progress, 54 ushort progress,
54 bool hasDate, QDate date, int uid ) 55 bool hasDate, QDate date, int uid )
55 : OPimRecord( uid ) 56 : OPimRecord( uid )
56{ 57{
57 qWarning("OTodoData " + summary); 58// qWarning("OTodoData " + summary);
58 setCategories( category ); 59 setCategories( category );
59 60
60 data = new OTodoData; 61 data = new OTodoData;
61 62
62 data->date = date; 63 data->date = date;
63 data->isCompleted = completed; 64 data->isCompleted = completed;
64 data->hasDate = hasDate; 65 data->hasDate = hasDate;
65 data->priority = priority; 66 data->priority = priority;
66 data->sum = summary; 67 data->sum = summary;
67 data->prog = progress; 68 data->prog = progress;
68 data->desc = Qtopia::simplifyMultiLineSpace(description ); 69 data->desc = Qtopia::simplifyMultiLineSpace(description );
69 data->hasAlarmDateTime = false; 70 data->hasAlarmDateTime = false;
70 71
71} 72}
72OTodo::OTodo(bool completed, int priority, 73OTodo::OTodo(bool completed, int priority,
73 const QStringList &category, 74 const QStringList &category,
74 const QString& summary, 75 const QString& summary,
75 const QString &description, 76 const QString &description,
76 ushort progress, 77 ushort progress,
77 bool hasDate, QDate date, int uid ) 78 bool hasDate, QDate date, int uid )
78 : OPimRecord( uid ) 79 : OPimRecord( uid )
79{ 80{
80 qWarning("OTodoData" + summary); 81// qWarning("OTodoData" + summary);
81 setCategories( idsFromString( category.join(";") ) ); 82 setCategories( idsFromString( category.join(";") ) );
82 83
83 data = new OTodoData; 84 data = new OTodoData;
84 data->date = date;
85 85
86 data->date = date;
86 data->isCompleted = completed; 87 data->isCompleted = completed;
87 data->hasDate = hasDate; 88 data->hasDate = hasDate;
88 data->priority = priority; 89 data->priority = priority;
89 data->sum = summary; 90 data->sum = summary;
90 data->prog = progress; 91 data->prog = progress;
91 data->desc = Qtopia::simplifyMultiLineSpace(description ); 92 data->desc = Qtopia::simplifyMultiLineSpace(description );
92 data->hasAlarmDateTime = false; 93 data->hasAlarmDateTime = false;
93 94
94} 95}
95bool OTodo::match( const QRegExp &regExp )const 96bool OTodo::match( const QRegExp &regExp )const
96{ 97{
97 if( QString::number( data->priority ).find( regExp ) != -1 ){ 98 if( QString::number( data->priority ).find( regExp ) != -1 ){
@@ -151,24 +152,25 @@ void OTodo::setCompleted( bool completed )
151void OTodo::setHasDueDate( bool hasDate ) 152void OTodo::setHasDueDate( bool hasDate )
152{ 153{
153 changeOrModify(); 154 changeOrModify();
154 data->hasDate = hasDate; 155 data->hasDate = hasDate;
155} 156}
156void OTodo::setHasAlarmDateTime( bool hasAlarmDateTime ) 157void OTodo::setHasAlarmDateTime( bool hasAlarmDateTime )
157{ 158{
158 changeOrModify(); 159 changeOrModify();
159 data->hasAlarmDateTime = hasAlarmDateTime; 160 data->hasAlarmDateTime = hasAlarmDateTime;
160} 161}
161void OTodo::setDescription(const QString &desc ) 162void OTodo::setDescription(const QString &desc )
162{ 163{
164 qWarning( "desc " + desc );
163 changeOrModify(); 165 changeOrModify();
164 data->desc = Qtopia::simplifyMultiLineSpace(desc ); 166 data->desc = Qtopia::simplifyMultiLineSpace(desc );
165} 167}
166void OTodo::setSummary( const QString& sum ) 168void OTodo::setSummary( const QString& sum )
167{ 169{
168 changeOrModify(); 170 changeOrModify();
169 data->sum = sum; 171 data->sum = sum;
170} 172}
171void OTodo::setPriority(int prio ) 173void OTodo::setPriority(int prio )
172{ 174{
173 changeOrModify(); 175 changeOrModify();
174 data->priority = prio; 176 data->priority = prio;
@@ -298,37 +300,38 @@ bool OTodo::operator==(const OTodo &toDoEvent )const
298 if ( data->date != toDoEvent.data->date ) return false; 300 if ( data->date != toDoEvent.data->date ) return false;
299 if ( data->sum != toDoEvent.data->sum ) return false; 301 if ( data->sum != toDoEvent.data->sum ) return false;
300 if ( data->desc != toDoEvent.data->desc ) return false; 302 if ( data->desc != toDoEvent.data->desc ) return false;
301 if ( data->hasAlarmDateTime != toDoEvent.data->hasAlarmDateTime ) 303 if ( data->hasAlarmDateTime != toDoEvent.data->hasAlarmDateTime )
302 return false; 304 return false;
303 if ( data->alarmDateTime != toDoEvent.data->alarmDateTime ) 305 if ( data->alarmDateTime != toDoEvent.data->alarmDateTime )
304 return false; 306 return false;
305 307
306 return OPimRecord::operator==( toDoEvent ); 308 return OPimRecord::operator==( toDoEvent );
307} 309}
308void OTodo::deref() { 310void OTodo::deref() {
309 311
310 //qWarning("deref in ToDoEvent"); 312// qWarning("deref in ToDoEvent");
311 if ( data->deref() ) { 313 if ( data->deref() ) {
312 //qWarning("deleting"); 314// qWarning("deleting");
313 delete data; 315 delete data;
314 d= 0; 316 data= 0;
315 } 317 }
316} 318}
317OTodo &OTodo::operator=(const OTodo &item ) 319OTodo &OTodo::operator=(const OTodo &item )
318{ 320{
319 OPimRecord::operator=( item ); 321// OPimRecord::operator=( item );
320 //qWarning("operator= ref "); 322 //qWarning("operator= ref ");
321 item.data->ref(); 323 item.data->ref();
322 deref(); 324 deref();
325 data = item.data;
323 326
324 return *this; 327 return *this;
325} 328}
326 329
327QMap<int, QString> OTodo::toMap() const { 330QMap<int, QString> OTodo::toMap() const {
328 QMap<int, QString> map; 331 QMap<int, QString> map;
329 332
330 map.insert( Uid, QString::number( uid() ) ); 333 map.insert( Uid, QString::number( uid() ) );
331 map.insert( Category, idsToString( categories() ) ); 334 map.insert( Category, idsToString( categories() ) );
332 map.insert( HasDate, QString::number( data->hasDate ) ); 335 map.insert( HasDate, QString::number( data->hasDate ) );
333 map.insert( Completed, QString::number( data->isCompleted ) ); 336 map.insert( Completed, QString::number( data->isCompleted ) );
334 map.insert( Description, data->desc ); 337 map.insert( Description, data->desc );
@@ -346,25 +349,25 @@ QMap<int, QString> OTodo::toMap() const {
346} 349}
347 350
348QMap<QString, QString> OTodo::toExtraMap()const { 351QMap<QString, QString> OTodo::toExtraMap()const {
349 return data->extra; 352 return data->extra;
350} 353}
351/** 354/**
352 * change or modify looks at the ref count and either 355 * change or modify looks at the ref count and either
353 * creates a new QShared Object or it can modify it 356 * creates a new QShared Object or it can modify it
354 * right in place 357 * right in place
355 */ 358 */
356void OTodo::changeOrModify() { 359void OTodo::changeOrModify() {
357 if ( data->count != 1 ) { 360 if ( data->count != 1 ) {
358 qWarning("changeOrModify"); 361// qWarning("changeOrModify");
359 data->deref(); 362 data->deref();
360 OTodoData* d2 = new OTodoData(); 363 OTodoData* d2 = new OTodoData();
361 copy(data, d2 ); 364 copy(data, d2 );
362 data = d2; 365 data = d2;
363 } 366 }
364} 367}
365void OTodo::copy( OTodoData* src, OTodoData* dest ) { 368void OTodo::copy( OTodoData* src, OTodoData* dest ) {
366 dest->date = src->date; 369 dest->date = src->date;
367 dest->isCompleted = src->isCompleted; 370 dest->isCompleted = src->isCompleted;
368 dest->hasDate = src->hasDate; 371 dest->hasDate = src->hasDate;
369 dest->priority = src->priority; 372 dest->priority = src->priority;
370 dest->desc = src->desc; 373 dest->desc = src->desc;
diff --git a/libopie/pim/otodoaccessxml.cpp b/libopie/pim/otodoaccessxml.cpp
index 21756c9..3a72881 100644
--- a/libopie/pim/otodoaccessxml.cpp
+++ b/libopie/pim/otodoaccessxml.cpp
@@ -59,32 +59,32 @@ bool OTodoAccessXML::load() {
59 59
60 while ( element ) { 60 while ( element ) {
61 if ( element->tagName() != QString::fromLatin1("Task") ) { 61 if ( element->tagName() != QString::fromLatin1("Task") ) {
62 element = element->nextChild(); 62 element = element->nextChild();
63 continue; 63 continue;
64 } 64 }
65 /* here is the right element for a task */ 65 /* here is the right element for a task */
66 OTodo ev = todo( &dict, element ); 66 OTodo ev = todo( &dict, element );
67 m_events.insert( ev.uid(), ev ); 67 m_events.insert( ev.uid(), ev );
68 68
69 element = element->nextChild(); 69 element = element->nextChild();
70 } 70 }
71 return true;
72 }else { 71 }else {
73 qWarning("could not parse"); 72 qWarning("could not parse");
74 return false;; 73 return false;;
75 } 74 }
76 delete root; 75 delete root;
77 76
78 m_opened = true; 77 m_opened = true;
78 qWarning("Access %d" + m_events.count() );
79 return true; 79 return true;
80} 80}
81bool OTodoAccessXML::reload() { 81bool OTodoAccessXML::reload() {
82 return load(); 82 return load();
83} 83}
84bool OTodoAccessXML::save() { 84bool OTodoAccessXML::save() {
85 if (!m_opened || !m_changed ) 85 if (!m_opened || !m_changed )
86 return true; 86 return true;
87 QString strNewFile = m_file + ".new"; 87 QString strNewFile = m_file + ".new";
88 QFile f( strNewFile ); 88 QFile f( strNewFile );
89 if (!f.open( IO_WriteOnly|IO_Raw ) ) 89 if (!f.open( IO_WriteOnly|IO_Raw ) )
90 return false; 90 return false;
diff --git a/libopie2/opiepim/backend/otodoaccessxml.cpp b/libopie2/opiepim/backend/otodoaccessxml.cpp
index 21756c9..3a72881 100644
--- a/libopie2/opiepim/backend/otodoaccessxml.cpp
+++ b/libopie2/opiepim/backend/otodoaccessxml.cpp
@@ -59,32 +59,32 @@ bool OTodoAccessXML::load() {
59 59
60 while ( element ) { 60 while ( element ) {
61 if ( element->tagName() != QString::fromLatin1("Task") ) { 61 if ( element->tagName() != QString::fromLatin1("Task") ) {
62 element = element->nextChild(); 62 element = element->nextChild();
63 continue; 63 continue;
64 } 64 }
65 /* here is the right element for a task */ 65 /* here is the right element for a task */
66 OTodo ev = todo( &dict, element ); 66 OTodo ev = todo( &dict, element );
67 m_events.insert( ev.uid(), ev ); 67 m_events.insert( ev.uid(), ev );
68 68
69 element = element->nextChild(); 69 element = element->nextChild();
70 } 70 }
71 return true;
72 }else { 71 }else {
73 qWarning("could not parse"); 72 qWarning("could not parse");
74 return false;; 73 return false;;
75 } 74 }
76 delete root; 75 delete root;
77 76
78 m_opened = true; 77 m_opened = true;
78 qWarning("Access %d" + m_events.count() );
79 return true; 79 return true;
80} 80}
81bool OTodoAccessXML::reload() { 81bool OTodoAccessXML::reload() {
82 return load(); 82 return load();
83} 83}
84bool OTodoAccessXML::save() { 84bool OTodoAccessXML::save() {
85 if (!m_opened || !m_changed ) 85 if (!m_opened || !m_changed )
86 return true; 86 return true;
87 QString strNewFile = m_file + ".new"; 87 QString strNewFile = m_file + ".new";
88 QFile f( strNewFile ); 88 QFile f( strNewFile );
89 if (!f.open( IO_WriteOnly|IO_Raw ) ) 89 if (!f.open( IO_WriteOnly|IO_Raw ) )
90 return false; 90 return false;
diff --git a/libopie2/opiepim/orecordlist.h b/libopie2/opiepim/orecordlist.h
index 75bb33c..36728b8 100644
--- a/libopie2/opiepim/orecordlist.h
+++ b/libopie2/opiepim/orecordlist.h
@@ -31,25 +31,25 @@ public:
31 * The standard c'tor 31 * The standard c'tor
32 */ 32 */
33 ORecordListIterator(); 33 ORecordListIterator();
34 ~ORecordListIterator(); 34 ~ORecordListIterator();
35 35
36 ORecordListIterator( const ORecordListIterator& ); 36 ORecordListIterator( const ORecordListIterator& );
37 ORecordListIterator &operator=(const ORecordListIterator& ); 37 ORecordListIterator &operator=(const ORecordListIterator& );
38 38
39 /** 39 /**
40 * a * operator ;) 40 * a * operator ;)
41 * use it like this T = (*it); 41 * use it like this T = (*it);
42 */ 42 */
43 T &operator*(); 43 T operator*();
44 ORecordListIterator &operator++(); 44 ORecordListIterator &operator++();
45 ORecordListIterator &operator--(); 45 ORecordListIterator &operator--();
46 46
47 bool operator==( const ORecordListIterator& it ); 47 bool operator==( const ORecordListIterator& it );
48 bool operator!=( const ORecordListIterator& it ); 48 bool operator!=( const ORecordListIterator& it );
49 49
50private: 50private:
51 QArray<int> m_uids; 51 QArray<int> m_uids;
52 int m_current; 52 int m_current;
53 const Base* m_temp; 53 const Base* m_temp;
54 bool m_end : 1; 54 bool m_end : 1;
55 T m_record; 55 T m_record;
@@ -90,54 +90,55 @@ public:
90 */ 90 */
91private: 91private:
92 QArray<int> m_ids; 92 QArray<int> m_ids;
93 const Base* m_acc; 93 const Base* m_acc;
94}; 94};
95 95
96/* ok now implement it */ 96/* ok now implement it */
97template <class T> 97template <class T>
98ORecordListIterator<T>::ORecordListIterator() { 98ORecordListIterator<T>::ORecordListIterator() {
99 m_current = 0; 99 m_current = 0;
100 m_temp = 0l; 100 m_temp = 0l;
101 m_end = true; 101 m_end = true;
102 m_record = T();
102} 103}
103template <class T> 104template <class T>
104ORecordListIterator<T>::~ORecordListIterator() { 105ORecordListIterator<T>::~ORecordListIterator() {
105/* nothing to delete */ 106/* nothing to delete */
106} 107}
107 108
108template <class T> 109template <class T>
109ORecordListIterator<T>::ORecordListIterator( const ORecordListIterator<T>& it) { 110ORecordListIterator<T>::ORecordListIterator( const ORecordListIterator<T>& it) {
110 qWarning("ORecordListIterator"); 111// qWarning("ORecordListIterator copy c'tor");
111 m_uids = it.m_uids; 112 m_uids = it.m_uids;
112 m_current = it.m_current; 113 m_current = it.m_current;
113 m_temp = it.m_temp; 114 m_temp = it.m_temp;
114 m_end = it.m_end; 115 m_end = it.m_end;
115 m_record = it.m_record; 116 m_record = it.m_record;
116} 117}
117 118
118template <class T> 119template <class T>
119ORecordListIterator<T> &ORecordListIterator<T>::operator=( const ORecordListIterator<T>& it) { 120ORecordListIterator<T> &ORecordListIterator<T>::operator=( const ORecordListIterator<T>& it) {
120 m_uids = it.m_uids; 121 m_uids = it.m_uids;
121 m_current = it.m_current; 122 m_current = it.m_current;
122 m_temp = it.m_temp; 123 m_temp = it.m_temp;
123 m_end = it.m_end; 124 m_end = it.m_end;
124 m_record = it.m_record; 125// m_record = it.m_record;
125 126
126 return *this; 127 return *this;
127} 128}
128 129
129template <class T> 130template <class T>
130T &ORecordListIterator<T>::operator*() { 131T ORecordListIterator<T>::operator*() {
131 qWarning("operator* %d %d", m_current, m_uids[m_current] ); 132// qWarning("operator* %d %d", m_current, m_uids[m_current] );
132 if (!m_end ) 133 if (!m_end )
133 m_record = m_temp->find( m_uids[m_current] ); 134 m_record = m_temp->find( m_uids[m_current] );
134 else 135 else
135 m_record = T(); 136 m_record = T();
136 137
137 return m_record; 138 return m_record;
138} 139}
139 140
140template <class T> 141template <class T>
141ORecordListIterator<T> &ORecordListIterator<T>::operator++() { 142ORecordListIterator<T> &ORecordListIterator<T>::operator++() {
142 if (m_current < (int)m_uids.count() ) { 143 if (m_current < (int)m_uids.count() ) {
143 m_end = false; 144 m_end = false;
@@ -184,25 +185,24 @@ ORecordListIterator<T>::ORecordListIterator( const QArray<int> uids,
184template <class T> 185template <class T>
185ORecordList<T>::ORecordList( const QArray<int>& ids, 186ORecordList<T>::ORecordList( const QArray<int>& ids,
186 const Base* acc ) 187 const Base* acc )
187 : m_ids( ids ), m_acc( acc ) 188 : m_ids( ids ), m_acc( acc )
188{ 189{
189} 190}
190template <class T> 191template <class T>
191ORecordList<T>::~ORecordList() { 192ORecordList<T>::~ORecordList() {
192/* nothing to do here */ 193/* nothing to do here */
193} 194}
194template <class T> 195template <class T>
195ORecordList<T>::Iterator ORecordList<T>::begin() { 196ORecordList<T>::Iterator ORecordList<T>::begin() {
196 qWarning("ORecordList::begin");
197 Iterator it( m_ids, m_acc ); 197 Iterator it( m_ids, m_acc );
198 return it; 198 return it;
199} 199}
200template <class T> 200template <class T>
201ORecordList<T>::Iterator ORecordList<T>::end() { 201ORecordList<T>::Iterator ORecordList<T>::end() {
202 Iterator it( m_ids, m_acc ); 202 Iterator it( m_ids, m_acc );
203 it.m_end = true; 203 it.m_end = true;
204 it.m_current = m_ids.count(); 204 it.m_current = m_ids.count();
205 205
206 return it; 206 return it;
207} 207}
208#endif 208#endif
diff --git a/libopie2/opiepim/otodo.cpp b/libopie2/opiepim/otodo.cpp
index b3c14e6..cc46b21 100644
--- a/libopie2/opiepim/otodo.cpp
+++ b/libopie2/opiepim/otodo.cpp
@@ -27,71 +27,72 @@ struct OTodo::OTodoData : public QShared {
27 QString desc; 27 QString desc;
28 QString sum; 28 QString sum;
29 QMap<QString, QString> extra; 29 QMap<QString, QString> extra;
30 ushort prog; 30 ushort prog;
31 bool hasAlarmDateTime :1; 31 bool hasAlarmDateTime :1;
32 QDateTime alarmDateTime; 32 QDateTime alarmDateTime;
33}; 33};
34 34
35OTodo::OTodo(const OTodo &event ) 35OTodo::OTodo(const OTodo &event )
36 : OPimRecord( event ), data( event.data ) 36 : OPimRecord( event ), data( event.data )
37{ 37{
38 data->ref(); 38 data->ref();
39 qWarning("ref up"); 39// qWarning("ref up");
40} 40}
41OTodo::~OTodo() { 41OTodo::~OTodo() {
42 qWarning("~OTodo " + data->sum ); 42
43// qWarning("~OTodo " );
43 if ( data->deref() ) { 44 if ( data->deref() ) {
44 qWarning("OTodo::dereffing"); 45// qWarning("OTodo::dereffing");
45 delete data; 46 delete data;
46 data = 0l; 47 data = 0l;
47 } 48 }
48} 49}
49OTodo::OTodo(bool completed, int priority, 50OTodo::OTodo(bool completed, int priority,
50 const QArray<int> &category, 51 const QArray<int> &category,
51 const QString& summary, 52 const QString& summary,
52 const QString &description, 53 const QString &description,
53 ushort progress, 54 ushort progress,
54 bool hasDate, QDate date, int uid ) 55 bool hasDate, QDate date, int uid )
55 : OPimRecord( uid ) 56 : OPimRecord( uid )
56{ 57{
57 qWarning("OTodoData " + summary); 58// qWarning("OTodoData " + summary);
58 setCategories( category ); 59 setCategories( category );
59 60
60 data = new OTodoData; 61 data = new OTodoData;
61 62
62 data->date = date; 63 data->date = date;
63 data->isCompleted = completed; 64 data->isCompleted = completed;
64 data->hasDate = hasDate; 65 data->hasDate = hasDate;
65 data->priority = priority; 66 data->priority = priority;
66 data->sum = summary; 67 data->sum = summary;
67 data->prog = progress; 68 data->prog = progress;
68 data->desc = Qtopia::simplifyMultiLineSpace(description ); 69 data->desc = Qtopia::simplifyMultiLineSpace(description );
69 data->hasAlarmDateTime = false; 70 data->hasAlarmDateTime = false;
70 71
71} 72}
72OTodo::OTodo(bool completed, int priority, 73OTodo::OTodo(bool completed, int priority,
73 const QStringList &category, 74 const QStringList &category,
74 const QString& summary, 75 const QString& summary,
75 const QString &description, 76 const QString &description,
76 ushort progress, 77 ushort progress,
77 bool hasDate, QDate date, int uid ) 78 bool hasDate, QDate date, int uid )
78 : OPimRecord( uid ) 79 : OPimRecord( uid )
79{ 80{
80 qWarning("OTodoData" + summary); 81// qWarning("OTodoData" + summary);
81 setCategories( idsFromString( category.join(";") ) ); 82 setCategories( idsFromString( category.join(";") ) );
82 83
83 data = new OTodoData; 84 data = new OTodoData;
84 data->date = date;
85 85
86 data->date = date;
86 data->isCompleted = completed; 87 data->isCompleted = completed;
87 data->hasDate = hasDate; 88 data->hasDate = hasDate;
88 data->priority = priority; 89 data->priority = priority;
89 data->sum = summary; 90 data->sum = summary;
90 data->prog = progress; 91 data->prog = progress;
91 data->desc = Qtopia::simplifyMultiLineSpace(description ); 92 data->desc = Qtopia::simplifyMultiLineSpace(description );
92 data->hasAlarmDateTime = false; 93 data->hasAlarmDateTime = false;
93 94
94} 95}
95bool OTodo::match( const QRegExp &regExp )const 96bool OTodo::match( const QRegExp &regExp )const
96{ 97{
97 if( QString::number( data->priority ).find( regExp ) != -1 ){ 98 if( QString::number( data->priority ).find( regExp ) != -1 ){
@@ -151,24 +152,25 @@ void OTodo::setCompleted( bool completed )
151void OTodo::setHasDueDate( bool hasDate ) 152void OTodo::setHasDueDate( bool hasDate )
152{ 153{
153 changeOrModify(); 154 changeOrModify();
154 data->hasDate = hasDate; 155 data->hasDate = hasDate;
155} 156}
156void OTodo::setHasAlarmDateTime( bool hasAlarmDateTime ) 157void OTodo::setHasAlarmDateTime( bool hasAlarmDateTime )
157{ 158{
158 changeOrModify(); 159 changeOrModify();
159 data->hasAlarmDateTime = hasAlarmDateTime; 160 data->hasAlarmDateTime = hasAlarmDateTime;
160} 161}
161void OTodo::setDescription(const QString &desc ) 162void OTodo::setDescription(const QString &desc )
162{ 163{
164 qWarning( "desc " + desc );
163 changeOrModify(); 165 changeOrModify();
164 data->desc = Qtopia::simplifyMultiLineSpace(desc ); 166 data->desc = Qtopia::simplifyMultiLineSpace(desc );
165} 167}
166void OTodo::setSummary( const QString& sum ) 168void OTodo::setSummary( const QString& sum )
167{ 169{
168 changeOrModify(); 170 changeOrModify();
169 data->sum = sum; 171 data->sum = sum;
170} 172}
171void OTodo::setPriority(int prio ) 173void OTodo::setPriority(int prio )
172{ 174{
173 changeOrModify(); 175 changeOrModify();
174 data->priority = prio; 176 data->priority = prio;
@@ -298,37 +300,38 @@ bool OTodo::operator==(const OTodo &toDoEvent )const
298 if ( data->date != toDoEvent.data->date ) return false; 300 if ( data->date != toDoEvent.data->date ) return false;
299 if ( data->sum != toDoEvent.data->sum ) return false; 301 if ( data->sum != toDoEvent.data->sum ) return false;
300 if ( data->desc != toDoEvent.data->desc ) return false; 302 if ( data->desc != toDoEvent.data->desc ) return false;
301 if ( data->hasAlarmDateTime != toDoEvent.data->hasAlarmDateTime ) 303 if ( data->hasAlarmDateTime != toDoEvent.data->hasAlarmDateTime )
302 return false; 304 return false;
303 if ( data->alarmDateTime != toDoEvent.data->alarmDateTime ) 305 if ( data->alarmDateTime != toDoEvent.data->alarmDateTime )
304 return false; 306 return false;
305 307
306 return OPimRecord::operator==( toDoEvent ); 308 return OPimRecord::operator==( toDoEvent );
307} 309}
308void OTodo::deref() { 310void OTodo::deref() {
309 311
310 //qWarning("deref in ToDoEvent"); 312// qWarning("deref in ToDoEvent");
311 if ( data->deref() ) { 313 if ( data->deref() ) {
312 //qWarning("deleting"); 314// qWarning("deleting");
313 delete data; 315 delete data;
314 d= 0; 316 data= 0;
315 } 317 }
316} 318}
317OTodo &OTodo::operator=(const OTodo &item ) 319OTodo &OTodo::operator=(const OTodo &item )
318{ 320{
319 OPimRecord::operator=( item ); 321// OPimRecord::operator=( item );
320 //qWarning("operator= ref "); 322 //qWarning("operator= ref ");
321 item.data->ref(); 323 item.data->ref();
322 deref(); 324 deref();
325 data = item.data;
323 326
324 return *this; 327 return *this;
325} 328}
326 329
327QMap<int, QString> OTodo::toMap() const { 330QMap<int, QString> OTodo::toMap() const {
328 QMap<int, QString> map; 331 QMap<int, QString> map;
329 332
330 map.insert( Uid, QString::number( uid() ) ); 333 map.insert( Uid, QString::number( uid() ) );
331 map.insert( Category, idsToString( categories() ) ); 334 map.insert( Category, idsToString( categories() ) );
332 map.insert( HasDate, QString::number( data->hasDate ) ); 335 map.insert( HasDate, QString::number( data->hasDate ) );
333 map.insert( Completed, QString::number( data->isCompleted ) ); 336 map.insert( Completed, QString::number( data->isCompleted ) );
334 map.insert( Description, data->desc ); 337 map.insert( Description, data->desc );
@@ -346,25 +349,25 @@ QMap<int, QString> OTodo::toMap() const {
346} 349}
347 350
348QMap<QString, QString> OTodo::toExtraMap()const { 351QMap<QString, QString> OTodo::toExtraMap()const {
349 return data->extra; 352 return data->extra;
350} 353}
351/** 354/**
352 * change or modify looks at the ref count and either 355 * change or modify looks at the ref count and either
353 * creates a new QShared Object or it can modify it 356 * creates a new QShared Object or it can modify it
354 * right in place 357 * right in place
355 */ 358 */
356void OTodo::changeOrModify() { 359void OTodo::changeOrModify() {
357 if ( data->count != 1 ) { 360 if ( data->count != 1 ) {
358 qWarning("changeOrModify"); 361// qWarning("changeOrModify");
359 data->deref(); 362 data->deref();
360 OTodoData* d2 = new OTodoData(); 363 OTodoData* d2 = new OTodoData();
361 copy(data, d2 ); 364 copy(data, d2 );
362 data = d2; 365 data = d2;
363 } 366 }
364} 367}
365void OTodo::copy( OTodoData* src, OTodoData* dest ) { 368void OTodo::copy( OTodoData* src, OTodoData* dest ) {
366 dest->date = src->date; 369 dest->date = src->date;
367 dest->isCompleted = src->isCompleted; 370 dest->isCompleted = src->isCompleted;
368 dest->hasDate = src->hasDate; 371 dest->hasDate = src->hasDate;
369 dest->priority = src->priority; 372 dest->priority = src->priority;
370 dest->desc = src->desc; 373 dest->desc = src->desc;