Diffstat (limited to 'libopie2/opiepim/orecordlist.h') (more/less context) (show whitespace changes)
-rw-r--r-- | libopie2/opiepim/orecordlist.h | 142 |
1 files changed, 104 insertions, 38 deletions
diff --git a/libopie2/opiepim/orecordlist.h b/libopie2/opiepim/orecordlist.h index 8f0011b..1742dcc 100644 --- a/libopie2/opiepim/orecordlist.h +++ b/libopie2/opiepim/orecordlist.h | |||
@@ -28,13 +28,16 @@ | |||
28 | */ | 28 | */ |
29 | 29 | ||
30 | #ifndef OPIE_RECORD_LIST_H | 30 | #ifndef ORECORDLIST_H |
31 | #define OPIE_RECORD_LIST_H | 31 | #define ORECORDLIST_H |
32 | |||
33 | #include <qarray.h> | ||
34 | 32 | ||
33 | /* OPIE */ | ||
35 | #include <opie2/otemplatebase.h> | 34 | #include <opie2/otemplatebase.h> |
36 | #include <opie2/opimrecord.h> | 35 | #include <opie2/opimrecord.h> |
37 | 36 | ||
38 | namespace Opie { | 37 | /* QT */ |
38 | #include <qarray.h> | ||
39 | |||
40 | namespace Opie | ||
41 | { | ||
39 | 42 | ||
40 | class ORecordListIteratorPrivate; | 43 | class ORecordListIteratorPrivate; |
@@ -48,6 +51,8 @@ class ORecordListIteratorPrivate; | |||
48 | template <class T> class ORecordList; | 51 | template <class T> class ORecordList; |
49 | template <class T = OPimRecord> | 52 | template <class T = OPimRecord> |
50 | class ORecordListIterator { | 53 | class ORecordListIterator |
54 | { | ||
51 | friend class ORecordList<T>; | 55 | friend class ORecordList<T>; |
56 | |||
52 | public: | 57 | public: |
53 | typedef OTemplateBase<T> Base; | 58 | typedef OTemplateBase<T> Base; |
@@ -106,4 +111,5 @@ private: | |||
106 | }; | 111 | }; |
107 | 112 | ||
113 | |||
108 | class ORecordListPrivate; | 114 | class ORecordListPrivate; |
109 | /** | 115 | /** |
@@ -112,5 +118,6 @@ class ORecordListPrivate; | |||
112 | */ | 118 | */ |
113 | template <class T = OPimRecord > | 119 | template <class T = OPimRecord > |
114 | class ORecordList { | 120 | class ORecordList |
121 | { | ||
115 | public: | 122 | public: |
116 | typedef OTemplateBase<T> Base; | 123 | typedef OTemplateBase<T> Base; |
@@ -120,6 +127,6 @@ public: | |||
120 | * c'tor | 127 | * c'tor |
121 | */ | 128 | */ |
122 | ORecordList () { | 129 | ORecordList () |
123 | } | 130 | {} |
124 | ORecordList( const QArray<int>& ids, | 131 | ORecordList( const QArray<int>& ids, |
125 | const Base* ); | 132 | const Base* ); |
@@ -159,7 +166,9 @@ private: | |||
159 | }; | 166 | }; |
160 | 167 | ||
168 | |||
161 | /* ok now implement it */ | 169 | /* ok now implement it */ |
162 | template <class T> | 170 | template <class T> |
163 | ORecordListIterator<T>::ORecordListIterator() { | 171 | ORecordListIterator<T>::ORecordListIterator() |
172 | { | ||
164 | m_current = 0; | 173 | m_current = 0; |
165 | m_temp = 0l; | 174 | m_temp = 0l; |
@@ -169,11 +178,16 @@ ORecordListIterator<T>::ORecordListIterator() { | |||
169 | m_direction = TRUE; | 178 | m_direction = TRUE; |
170 | } | 179 | } |
180 | |||
181 | |||
171 | template <class T> | 182 | template <class T> |
172 | ORecordListIterator<T>::~ORecordListIterator() { | 183 | ORecordListIterator<T>::~ORecordListIterator() |
184 | { | ||
173 | /* nothing to delete */ | 185 | /* nothing to delete */ |
174 | } | 186 | } |
175 | 187 | ||
188 | |||
176 | template <class T> | 189 | template <class T> |
177 | ORecordListIterator<T>::ORecordListIterator( const ORecordListIterator<T>& it) { | 190 | ORecordListIterator<T>::ORecordListIterator( const ORecordListIterator<T>& it ) |
191 | { | ||
178 | // qWarning("ORecordListIterator copy c'tor"); | 192 | // qWarning("ORecordListIterator copy c'tor"); |
179 | m_uids = it.m_uids; | 193 | m_uids = it.m_uids; |
@@ -185,6 +199,8 @@ ORecordListIterator<T>::ORecordListIterator( const ORecordListIterator<T>& it) { | |||
185 | } | 199 | } |
186 | 200 | ||
201 | |||
187 | template <class T> | 202 | template <class T> |
188 | ORecordListIterator<T> &ORecordListIterator<T>::operator=( const ORecordListIterator<T>& it) { | 203 | ORecordListIterator<T> &ORecordListIterator<T>::operator=( const ORecordListIterator<T>& it ) |
204 | { | ||
189 | m_uids = it.m_uids; | 205 | m_uids = it.m_uids; |
190 | m_current = it.m_current; | 206 | m_current = it.m_current; |
@@ -196,6 +212,8 @@ ORecordListIterator<T> &ORecordListIterator<T>::operator=( const ORecordListIter | |||
196 | } | 212 | } |
197 | 213 | ||
214 | |||
198 | template <class T> | 215 | template <class T> |
199 | T ORecordListIterator<T>::operator*() { | 216 | T ORecordListIterator<T>::operator*() |
217 | { | ||
200 | //qWarning("operator* %d %d", m_current, m_uids[m_current] ); | 218 | //qWarning("operator* %d %d", m_current, m_uids[m_current] ); |
201 | if (!m_end ) | 219 | if (!m_end ) |
@@ -209,22 +227,31 @@ T ORecordListIterator<T>::operator*() { | |||
209 | } | 227 | } |
210 | 228 | ||
229 | |||
211 | template <class T> | 230 | template <class T> |
212 | ORecordListIterator<T> &ORecordListIterator<T>::operator++() { | 231 | ORecordListIterator<T> &ORecordListIterator<T>::operator++() |
232 | { | ||
213 | m_direction = true; | 233 | m_direction = true; |
214 | if (m_current < m_uids.count() ) { | 234 | if ( m_current < m_uids.count() ) |
235 | { | ||
215 | m_end = false; | 236 | m_end = false; |
216 | ++m_current; | 237 | ++m_current; |
217 | }else | 238 | } |
239 | else | ||
218 | m_end = true; | 240 | m_end = true; |
219 | 241 | ||
220 | return *this; | 242 | return *this; |
221 | } | 243 | } |
244 | |||
245 | |||
222 | template <class T> | 246 | template <class T> |
223 | ORecordListIterator<T> &ORecordListIterator<T>::operator--() { | 247 | ORecordListIterator<T> &ORecordListIterator<T>::operator--() |
248 | { | ||
224 | m_direction = false; | 249 | m_direction = false; |
225 | if ( m_current > 0 ) { | 250 | if ( m_current > 0 ) |
251 | { | ||
226 | --m_current; | 252 | --m_current; |
227 | m_end = false; | 253 | m_end = false; |
228 | } else | 254 | } |
255 | else | ||
229 | m_end = true; | 256 | m_end = true; |
230 | 257 | ||
@@ -232,6 +259,8 @@ ORecordListIterator<T> &ORecordListIterator<T>::operator--() { | |||
232 | } | 259 | } |
233 | 260 | ||
261 | |||
234 | template <class T> | 262 | template <class T> |
235 | bool ORecordListIterator<T>::operator==( const ORecordListIterator<T>& it ) { | 263 | bool ORecordListIterator<T>::operator==( const ORecordListIterator<T>& it ) |
264 | { | ||
236 | 265 | ||
237 | /* if both are at we're the same.... */ | 266 | /* if both are at we're the same.... */ |
@@ -244,8 +273,13 @@ bool ORecordListIterator<T>::operator==( const ORecordListIterator<T>& it ) { | |||
244 | return true; | 273 | return true; |
245 | } | 274 | } |
275 | |||
276 | |||
246 | template <class T> | 277 | template <class T> |
247 | bool ORecordListIterator<T>::operator!=( const ORecordListIterator<T>& it ) { | 278 | bool ORecordListIterator<T>::operator!=( const ORecordListIterator<T>& it ) |
279 | { | ||
248 | return !(*this == it ); | 280 | return !(*this == it ); |
249 | } | 281 | } |
282 | |||
283 | |||
250 | template <class T> | 284 | template <class T> |
251 | ORecordListIterator<T>::ORecordListIterator( const QArray<int> uids, | 285 | ORecordListIterator<T>::ORecordListIterator( const QArray<int> uids, |
@@ -258,11 +292,18 @@ ORecordListIterator<T>::ORecordListIterator( const QArray<int> uids, | |||
258 | m_end = true; | 292 | m_end = true; |
259 | } | 293 | } |
294 | |||
295 | |||
260 | template <class T> | 296 | template <class T> |
261 | uint ORecordListIterator<T>::current()const { | 297 | uint ORecordListIterator<T>::current() const |
298 | { | ||
262 | return m_current; | 299 | return m_current; |
263 | } | 300 | } |
301 | |||
302 | |||
264 | template <class T> | 303 | template <class T> |
265 | void ORecordListIterator<T>::setCurrent( uint cur ) { | 304 | void ORecordListIterator<T>::setCurrent( uint cur ) |
266 | if( cur < m_uids.count() ) { | 305 | { |
306 | if ( cur < m_uids.count() ) | ||
307 | { | ||
267 | m_end = false; | 308 | m_end = false; |
268 | m_current= cur; | 309 | m_current= cur; |
@@ -270,24 +311,35 @@ void ORecordListIterator<T>::setCurrent( uint cur ) { | |||
270 | } | 311 | } |
271 | template <class T> | 312 | template <class T> |
272 | uint ORecordListIterator<T>::count()const { | 313 | uint ORecordListIterator<T>::count() const |
314 | { | ||
273 | return m_uids.count(); | 315 | return m_uids.count(); |
274 | } | 316 | } |
317 | |||
318 | |||
275 | template <class T> | 319 | template <class T> |
276 | ORecordList<T>::ORecordList( const QArray<int>& ids, | 320 | ORecordList<T>::ORecordList( const QArray<int>& ids, |
277 | const Base* acc ) | 321 | const Base* acc ) |
278 | : m_ids( ids ), m_acc( acc ) | 322 | : m_ids( ids ), m_acc( acc ) |
279 | { | 323 | {} |
280 | } | 324 | |
325 | |||
281 | template <class T> | 326 | template <class T> |
282 | ORecordList<T>::~ORecordList() { | 327 | ORecordList<T>::~ORecordList() |
328 | { | ||
283 | /* nothing to do here */ | 329 | /* nothing to do here */ |
284 | } | 330 | } |
331 | |||
332 | |||
285 | template <class T> | 333 | template <class T> |
286 | typename ORecordList<T>::Iterator ORecordList<T>::begin() { | 334 | typename ORecordList<T>::Iterator ORecordList<T>::begin() |
335 | { | ||
287 | Iterator it( m_ids, m_acc ); | 336 | Iterator it( m_ids, m_acc ); |
288 | return it; | 337 | return it; |
289 | } | 338 | } |
339 | |||
340 | |||
290 | template <class T> | 341 | template <class T> |
291 | typename ORecordList<T>::Iterator ORecordList<T>::end() { | 342 | typename ORecordList<T>::Iterator ORecordList<T>::end() |
343 | { | ||
292 | Iterator it( m_ids, m_acc ); | 344 | Iterator it( m_ids, m_acc ); |
293 | it.m_end = true; | 345 | it.m_end = true; |
@@ -296,10 +348,16 @@ typename ORecordList<T>::Iterator ORecordList<T>::end() { | |||
296 | return it; | 348 | return it; |
297 | } | 349 | } |
350 | |||
351 | |||
298 | template <class T> | 352 | template <class T> |
299 | uint ORecordList<T>::count()const { | 353 | uint ORecordList<T>::count() const |
354 | { | ||
300 | return m_ids.count(); | 355 | return m_ids.count(); |
301 | } | 356 | } |
357 | |||
358 | |||
302 | template <class T> | 359 | template <class T> |
303 | T ORecordList<T>::operator[]( uint i ) { | 360 | T ORecordList<T>::operator[] ( uint i ) |
361 | { | ||
304 | if ( i >= m_ids.count() ) | 362 | if ( i >= m_ids.count() ) |
305 | return T(); | 363 | return T(); |
@@ -307,20 +365,28 @@ T ORecordList<T>::operator[]( uint i ) { | |||
307 | return m_acc->find( m_ids[i], m_ids, i ); | 365 | return m_acc->find( m_ids[i], m_ids, i ); |
308 | } | 366 | } |
367 | |||
368 | |||
309 | template <class T> | 369 | template <class T> |
310 | int ORecordList<T>::uidAt( uint i ) { | 370 | int ORecordList<T>::uidAt( uint i ) |
371 | { | ||
311 | return m_ids[i]; | 372 | return m_ids[i]; |
312 | } | 373 | } |
313 | 374 | ||
375 | |||
314 | template <class T> | 376 | template <class T> |
315 | bool ORecordList<T>::remove( int uid ) { | 377 | bool ORecordList<T>::remove( int uid ) |
378 | { | ||
316 | QArray<int> copy( m_ids.count() ); | 379 | QArray<int> copy( m_ids.count() ); |
317 | int counter = 0; | 380 | int counter = 0; |
318 | bool ret_val = false; | 381 | bool ret_val = false; |
319 | 382 | ||
320 | for (uint i = 0; i < m_ids.count(); i++){ | 383 | for ( uint i = 0; i < m_ids.count(); i++ ) |
321 | if ( m_ids[i] != uid ){ | 384 | { |
385 | if ( m_ids[ i ] != uid ) | ||
386 | { | ||
322 | copy[counter++] = m_ids[i]; | 387 | copy[counter++] = m_ids[i]; |
323 | 388 | ||
324 | }else | 389 | } |
390 | else | ||
325 | ret_val = true; | 391 | ret_val = true; |
326 | } | 392 | } |