summaryrefslogtreecommitdiff
path: root/libopie/pim/orecordlist.h
Unidiff
Diffstat (limited to 'libopie/pim/orecordlist.h') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie/pim/orecordlist.h12
1 files changed, 9 insertions, 3 deletions
diff --git a/libopie/pim/orecordlist.h b/libopie/pim/orecordlist.h
index edcd729..5211f57 100644
--- a/libopie/pim/orecordlist.h
+++ b/libopie/pim/orecordlist.h
@@ -4,12 +4,13 @@
4 4
5#include <qarray.h> 5#include <qarray.h>
6 6
7#include "otemplatebase.h" 7#include "otemplatebase.h"
8#include "opimrecord.h" 8#include "opimrecord.h"
9 9
10class ORecordListIteratorPrivate;
10/** 11/**
11 * Our List Iterator 12 * Our List Iterator
12 * it behaves like STL or Qt 13 * it behaves like STL or Qt
13 * 14 *
14 * for(it = list.begin(); it != list.end(); ++it ) 15 * for(it = list.begin(); it != list.end(); ++it )
15 * doSomeCoolStuff( (*it) ); 16 * doSomeCoolStuff( (*it) );
@@ -68,15 +69,16 @@ private:
68 const Base* m_temp; 69 const Base* m_temp;
69 bool m_end : 1; 70 bool m_end : 1;
70 T m_record; 71 T m_record;
71 bool m_direction :1; 72 bool m_direction :1;
72 73
73 /* d pointer for future versions */ 74 /* d pointer for future versions */
74 class IteratorPrivate; 75 ORecordListIteratorPrivate *d;
75 IteratorPrivate *d;
76}; 76};
77
78class ORecordListPrivate;
77/** 79/**
78 * The recordlist used as a return type 80 * The recordlist used as a return type
79 * from OPimAccessTemplate 81 * from OPimAccessTemplate
80 */ 82 */
81template <class T = OPimRecord > 83template <class T = OPimRecord >
82class ORecordList { 84class ORecordList {
@@ -108,24 +110,25 @@ ORecordList( const QArray<int>& ids,
108 */ 110 */
109 uint count()const; 111 uint count()const;
110 112
111 T operator[]( uint i ); 113 T operator[]( uint i );
112 int uidAt(uint i ); 114 int uidAt(uint i );
113 115
114 /** 116 /**
115 * Remove the contact with given uid 117 * Remove the contact with given uid
116 */ 118 */
117 bool remove( int uid ); 119 bool remove( int uid );
118 120
119 /* 121 /*
120 ConstIterator begin()const; 122 ConstIterator begin()const;
121 ConstIterator end()const; 123 ConstIterator end()const;
122 */ 124 */
123private: 125private:
124 QArray<int> m_ids; 126 QArray<int> m_ids;
125 const Base* m_acc; 127 const Base* m_acc;
128 ORecordListPrivate *d;
126}; 129};
127 130
128/* ok now implement it */ 131/* ok now implement it */
129template <class T> 132template <class T>
130ORecordListIterator<T>::ORecordListIterator() { 133ORecordListIterator<T>::ORecordListIterator() {
131 m_current = 0; 134 m_current = 0;
@@ -217,12 +220,15 @@ bool ORecordListIterator<T>::operator!=( const ORecordListIterator<T>& it ) {
217template <class T> 220template <class T>
218ORecordListIterator<T>::ORecordListIterator( const QArray<int> uids, 221ORecordListIterator<T>::ORecordListIterator( const QArray<int> uids,
219 const Base* t ) 222 const Base* t )
220 : m_uids( uids ), m_current( 0 ), m_temp( t ), m_end( false ), 223 : m_uids( uids ), m_current( 0 ), m_temp( t ), m_end( false ),
221 m_direction( false ) 224 m_direction( false )
222{ 225{
226 /* if the list is empty we're already at the end of the list */
227 if (uids.count() == 0 )
228 m_end = true;
223} 229}
224template <class T> 230template <class T>
225uint ORecordListIterator<T>::current()const { 231uint ORecordListIterator<T>::current()const {
226 return m_current; 232 return m_current;
227} 233}
228template <class T> 234template <class T>