summaryrefslogtreecommitdiff
path: root/libopie
authoreilers <eilers>2002-11-01 15:09:04 (UTC)
committer eilers <eilers>2002-11-01 15:09:04 (UTC)
commita098735b8749ead08c658792cc31f95e73045107 (patch) (side-by-side diff)
tree28bd5ee97878ff3dfc7aa0e6b0c0dcd511acd3f7 /libopie
parent3fbba334274ca53bd26cd79ccd4662e529c61f40 (diff)
downloadopie-a098735b8749ead08c658792cc31f95e73045107.zip
opie-a098735b8749ead08c658792cc31f95e73045107.tar.gz
opie-a098735b8749ead08c658792cc31f95e73045107.tar.bz2
Added remove
Diffstat (limited to 'libopie') (more/less context) (show whitespace changes)
-rw-r--r--libopie/pim/orecordlist.h32
1 files changed, 30 insertions, 2 deletions
diff --git a/libopie/pim/orecordlist.h b/libopie/pim/orecordlist.h
index e377447..2f4a5d3 100644
--- a/libopie/pim/orecordlist.h
+++ b/libopie/pim/orecordlist.h
@@ -110,7 +110,12 @@ public:
T operator[]( uint i );
int uidAt(uint i );
- // FIXME implemenent remove
+
+ /**
+ * Remove the contact with given uid
+ */
+ bool remove( int uid );
+
/*
ConstIterator begin()const;
ConstIterator end()const;
@@ -159,7 +164,7 @@ ORecordListIterator<T> &ORecordListIterator<T>::operator=( const ORecordListIter
template <class T>
T ORecordListIterator<T>::operator*() {
- qWarning("operator* %d %d", m_current, m_uids[m_current] );
+ //qWarning("operator* %d %d", m_current, m_uids[m_current] );
if (!m_end )
m_record = m_temp->find( m_uids[m_current], m_uids, m_current,
m_direction ? Base::Forward :
@@ -269,4 +274,27 @@ template <class T>
int ORecordList<T>::uidAt( uint i ) {
return m_ids[i];
}
+
+template <class T>
+bool ORecordList<T>::remove( int uid ) {
+ QArray<int> copy( m_ids.count() );
+ int counter = 0;
+ bool ret_val = false;
+
+ for (uint i = 0; i < m_ids.count(); i++){
+ if ( m_ids[i] != uid ){
+ copy[counter++] = m_ids[i];
+
+ }else
+ ret_val = true;
+ }
+
+ copy.resize( counter );
+ m_ids = copy;
+
+
+ return ret_val;
+}
+
+
#endif