Diffstat (limited to 'libopie2/opiepim/orecordlist.h') (more/less context) (ignore whitespace changes)
-rw-r--r-- | libopie2/opiepim/orecordlist.h | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/libopie2/opiepim/orecordlist.h b/libopie2/opiepim/orecordlist.h index edcd729..5211f57 100644 --- a/libopie2/opiepim/orecordlist.h +++ b/libopie2/opiepim/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 | ||
10 | class 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 | |||
78 | class 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 | */ |
81 | template <class T = OPimRecord > | 83 | template <class T = OPimRecord > |
82 | class ORecordList { | 84 | class 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 | */ |
123 | private: | 125 | private: |
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 */ |
129 | template <class T> | 132 | template <class T> |
130 | ORecordListIterator<T>::ORecordListIterator() { | 133 | ORecordListIterator<T>::ORecordListIterator() { |
131 | m_current = 0; | 134 | m_current = 0; |
@@ -217,12 +220,15 @@ bool ORecordListIterator<T>::operator!=( const ORecordListIterator<T>& it ) { | |||
217 | template <class T> | 220 | template <class T> |
218 | ORecordListIterator<T>::ORecordListIterator( const QArray<int> uids, | 221 | ORecordListIterator<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 | } |
224 | template <class T> | 230 | template <class T> |
225 | uint ORecordListIterator<T>::current()const { | 231 | uint ORecordListIterator<T>::current()const { |
226 | return m_current; | 232 | return m_current; |
227 | } | 233 | } |
228 | template <class T> | 234 | template <class T> |