summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--libopie/pim/orecordlist.h51
-rw-r--r--libopie2/opiepim/orecordlist.h51
2 files changed, 96 insertions, 6 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
@@ -44,15 +44,30 @@ public:
ORecordListIterator &operator++();
ORecordListIterator &operator--();
bool operator==( const ORecordListIterator& it );
bool operator!=( const ORecordListIterator& it );
+ /**
+ * the current item
+ */
+ uint current()const;
+
+ /**
+ * the number of items
+ */
+ uint count()const;
+
+ /**
+ * sets the current item
+ */
+ void setCurrent( uint cur );
+
private:
QArray<int> m_uids;
- int m_current;
+ uint m_current;
const Base* m_temp;
bool m_end : 1;
T m_record;
/* d pointer for future versions */
class IteratorPrivate;
@@ -83,12 +98,19 @@ public:
Iterator begin();
/**
* the end
*/
Iterator end();
+
+ /**
+ * the number of items in the list
+ */
+ uint count()const;
+
+ // FIXME implemenent remove
/*
ConstIterator begin()const;
ConstIterator end()const;
*/
private:
QArray<int> m_ids;
@@ -130,22 +152,27 @@ ORecordListIterator<T> &ORecordListIterator<T>::operator=( const ORecordListIter
}
template <class T>
T ORecordListIterator<T>::operator*() {
// qWarning("operator* %d %d", m_current, m_uids[m_current] );
if (!m_end )
+ /* FIXME
+ * until the cache is in place
+ * we do the uid match uid check
+ */
+ if(m_record.uid() != m_uids[m_current] )
m_record = m_temp->find( m_uids[m_current] );
else
m_record = T();
return m_record;
}
template <class T>
ORecordListIterator<T> &ORecordListIterator<T>::operator++() {
- if (m_current < (int)m_uids.count() ) {
+ if (m_current < m_uids.count() ) {
m_end = false;
++m_current;
}else
m_end = true;
return *this;
@@ -180,13 +207,27 @@ bool ORecordListIterator<T>::operator!=( const ORecordListIterator<T>& it ) {
template <class T>
ORecordListIterator<T>::ORecordListIterator( const QArray<int> uids,
const Base* t )
: m_uids( uids ), m_current( 0 ), m_temp( t ), m_end( false )
{
}
-
+template <class T>
+uint ORecordListIterator<T>::current()const {
+ return m_current;
+}
+template <class T>
+void ORecordListIterator<T>::setCurrent( uint cur ) {
+ if( cur < m_uids.count() ) {
+ m_end = false;
+ m_current= cur;
+ }
+}
+template <class T>
+uint ORecordListIterator<T>::count()const {
+ return m_uids.count();
+}
template <class T>
ORecordList<T>::ORecordList( const QArray<int>& ids,
const Base* acc )
: m_ids( ids ), m_acc( acc )
{
}
@@ -204,7 +245,11 @@ ORecordList<T>::Iterator ORecordList<T>::end() {
Iterator it( m_ids, m_acc );
it.m_end = true;
it.m_current = m_ids.count();
return it;
}
+template <class T>
+uint ORecordList<T>::count()const {
+return m_ids.count();
+}
#endif
diff --git a/libopie2/opiepim/orecordlist.h b/libopie2/opiepim/orecordlist.h
index 1795938..c63d813 100644
--- a/libopie2/opiepim/orecordlist.h
+++ b/libopie2/opiepim/orecordlist.h
@@ -44,15 +44,30 @@ public:
ORecordListIterator &operator++();
ORecordListIterator &operator--();
bool operator==( const ORecordListIterator& it );
bool operator!=( const ORecordListIterator& it );
+ /**
+ * the current item
+ */
+ uint current()const;
+
+ /**
+ * the number of items
+ */
+ uint count()const;
+
+ /**
+ * sets the current item
+ */
+ void setCurrent( uint cur );
+
private:
QArray<int> m_uids;
- int m_current;
+ uint m_current;
const Base* m_temp;
bool m_end : 1;
T m_record;
/* d pointer for future versions */
class IteratorPrivate;
@@ -83,12 +98,19 @@ public:
Iterator begin();
/**
* the end
*/
Iterator end();
+
+ /**
+ * the number of items in the list
+ */
+ uint count()const;
+
+ // FIXME implemenent remove
/*
ConstIterator begin()const;
ConstIterator end()const;
*/
private:
QArray<int> m_ids;
@@ -130,22 +152,27 @@ ORecordListIterator<T> &ORecordListIterator<T>::operator=( const ORecordListIter
}
template <class T>
T ORecordListIterator<T>::operator*() {
// qWarning("operator* %d %d", m_current, m_uids[m_current] );
if (!m_end )
+ /* FIXME
+ * until the cache is in place
+ * we do the uid match uid check
+ */
+ if(m_record.uid() != m_uids[m_current] )
m_record = m_temp->find( m_uids[m_current] );
else
m_record = T();
return m_record;
}
template <class T>
ORecordListIterator<T> &ORecordListIterator<T>::operator++() {
- if (m_current < (int)m_uids.count() ) {
+ if (m_current < m_uids.count() ) {
m_end = false;
++m_current;
}else
m_end = true;
return *this;
@@ -180,13 +207,27 @@ bool ORecordListIterator<T>::operator!=( const ORecordListIterator<T>& it ) {
template <class T>
ORecordListIterator<T>::ORecordListIterator( const QArray<int> uids,
const Base* t )
: m_uids( uids ), m_current( 0 ), m_temp( t ), m_end( false )
{
}
-
+template <class T>
+uint ORecordListIterator<T>::current()const {
+ return m_current;
+}
+template <class T>
+void ORecordListIterator<T>::setCurrent( uint cur ) {
+ if( cur < m_uids.count() ) {
+ m_end = false;
+ m_current= cur;
+ }
+}
+template <class T>
+uint ORecordListIterator<T>::count()const {
+ return m_uids.count();
+}
template <class T>
ORecordList<T>::ORecordList( const QArray<int>& ids,
const Base* acc )
: m_ids( ids ), m_acc( acc )
{
}
@@ -204,7 +245,11 @@ ORecordList<T>::Iterator ORecordList<T>::end() {
Iterator it( m_ids, m_acc );
it.m_end = true;
it.m_current = m_ids.count();
return it;
}
+template <class T>
+uint ORecordList<T>::count()const {
+return m_ids.count();
+}
#endif