summaryrefslogtreecommitdiff
path: root/libopie/pim
Unidiff
Diffstat (limited to 'libopie/pim') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie/pim/orecordlist.h53
1 files changed, 49 insertions, 4 deletions
diff --git a/libopie/pim/orecordlist.h b/libopie/pim/orecordlist.h
index 1795938..c63d813 100644
--- a/libopie/pim/orecordlist.h
+++ b/libopie/pim/orecordlist.h
@@ -46,10 +46,25 @@ public:
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
50 /**
51 * the current item
52 */
53 uint current()const;
54
55 /**
56 * the number of items
57 */
58 uint count()const;
59
60 /**
61 * sets the current item
62 */
63 void setCurrent( uint cur );
49 64
50private: 65private:
51 QArray<int> m_uids; 66 QArray<int> m_uids;
52 int m_current; 67 uint m_current;
53 const Base* m_temp; 68 const Base* m_temp;
54 bool m_end : 1; 69 bool m_end : 1;
55 T m_record; 70 T m_record;
@@ -86,6 +101,13 @@ public:
86 * the end 101 * the end
87 */ 102 */
88 Iterator end(); 103 Iterator end();
104
105 /**
106 * the number of items in the list
107 */
108 uint count()const;
109
110 // FIXME implemenent remove
89 /* 111 /*
90 ConstIterator begin()const; 112 ConstIterator begin()const;
91 ConstIterator end()const; 113 ConstIterator end()const;
@@ -133,7 +155,12 @@ template <class T>
133T ORecordListIterator<T>::operator*() { 155T ORecordListIterator<T>::operator*() {
134// qWarning("operator* %d %d", m_current, m_uids[m_current] ); 156// qWarning("operator* %d %d", m_current, m_uids[m_current] );
135 if (!m_end ) 157 if (!m_end )
136 m_record = m_temp->find( m_uids[m_current] ); 158 /* FIXME
159 * until the cache is in place
160 * we do the uid match uid check
161 */
162 if(m_record.uid() != m_uids[m_current] )
163 m_record = m_temp->find( m_uids[m_current] );
137 else 164 else
138 m_record = T(); 165 m_record = T();
139 166
@@ -142,7 +169,7 @@ T ORecordListIterator<T>::operator*() {
142 169
143template <class T> 170template <class T>
144ORecordListIterator<T> &ORecordListIterator<T>::operator++() { 171ORecordListIterator<T> &ORecordListIterator<T>::operator++() {
145 if (m_current < (int)m_uids.count() ) { 172 if (m_current < m_uids.count() ) {
146 m_end = false; 173 m_end = false;
147 ++m_current; 174 ++m_current;
148 }else 175 }else
@@ -183,7 +210,21 @@ ORecordListIterator<T>::ORecordListIterator( const QArray<int> uids,
183 : m_uids( uids ), m_current( 0 ), m_temp( t ), m_end( false ) 210 : m_uids( uids ), m_current( 0 ), m_temp( t ), m_end( false )
184{ 211{
185} 212}
186 213template <class T>
214uint ORecordListIterator<T>::current()const {
215 return m_current;
216}
217template <class T>
218void ORecordListIterator<T>::setCurrent( uint cur ) {
219 if( cur < m_uids.count() ) {
220 m_end = false;
221 m_current= cur;
222 }
223}
224template <class T>
225uint ORecordListIterator<T>::count()const {
226 return m_uids.count();
227}
187template <class T> 228template <class T>
188ORecordList<T>::ORecordList( const QArray<int>& ids, 229ORecordList<T>::ORecordList( const QArray<int>& ids,
189 const Base* acc ) 230 const Base* acc )
@@ -207,4 +248,8 @@ ORecordList<T>::Iterator ORecordList<T>::end() {
207 248
208 return it; 249 return it;
209} 250}
251template <class T>
252uint ORecordList<T>::count()const {
253return m_ids.count();
254}
210#endif 255#endif