-rw-r--r-- | libopie2/opiepim/core/opimrecord.cpp | 11 | ||||
-rw-r--r-- | libopie2/opiepim/core/opimrecord.h | 1 | ||||
-rw-r--r-- | libopie2/opiepim/orecordlist.h | 139 | ||||
-rw-r--r-- | libopie2/opiepim/otodo.cpp | 52 | ||||
-rw-r--r-- | libopie2/opiepim/otodo.h | 10 |
5 files changed, 183 insertions, 30 deletions
diff --git a/libopie2/opiepim/core/opimrecord.cpp b/libopie2/opiepim/core/opimrecord.cpp index d8f73c7..e510f4e 100644 --- a/libopie2/opiepim/core/opimrecord.cpp +++ b/libopie2/opiepim/core/opimrecord.cpp @@ -5,7 +5,4 @@ OPimRecord::OPimRecord( int uid ) setUid( uid ); - /* assign a new UID */ - if ( uid == 1 ) - assignUid(); } OPimRecord::~OPimRecord() { @@ -105,2 +102,10 @@ QString OPimRecord::crossToString()const { return str; } +/* if uid = 1 assign a new one */ +void OPimRecord::setUid( int uid ) { + + if ( uid == 1) + uid = uidGen().generate(); + + Qtopia::Record::setUid( uid ); +}; diff --git a/libopie2/opiepim/core/opimrecord.h b/libopie2/opiepim/core/opimrecord.h index 18112d4..297ff12 100644 --- a/libopie2/opiepim/core/opimrecord.h +++ b/libopie2/opiepim/core/opimrecord.h @@ -102,4 +102,5 @@ public: */ void setRelations( const QString&, QArray<int> ids ); + virtual void setUid( int uid ); protected: diff --git a/libopie2/opiepim/orecordlist.h b/libopie2/opiepim/orecordlist.h index c17186f..65c2169 100644 --- a/libopie2/opiepim/orecordlist.h +++ b/libopie2/opiepim/orecordlist.h @@ -12,23 +12,32 @@ public: friend class ORecordList; public: - Iterator() {} - ~Iterator() {} - Iterator(const Iterator& ) {} + Iterator(); + ~Iterator(); + Iterator(const Iterator& ); Iterator &operator=(const Iterator& ); - T &operator*() {} + T &operator*(); Iterator &operator++(); + Iterator &operator--(); bool operator==( const Iterator& it ); bool operator!=( const Iterator& it ); - } - ORecordList( const QArray<int>& ids, - OPimAccessTemplate<T>* acc ) - : m_ids(ids ), m_acc( acc ) { + private: + Iterator( const QArray<int>, + OPimAccessTemplate<T>* ); - } - ~ORecordList() { + QArray<int> m_uids; + int m_current; + OPimAccessTemplate* m_temp; + bool m_end : 1; + T m_record; - } + /* d pointer for future versions */ + class IteratorPrivate; + IteratorPrivate *d; + }; + ORecordList( const QArray<int>& ids, + OPimAccessTemplate<T>* acc ); + ~ORecordList(); Iterator begin(); Iterator end(); @@ -38,7 +47,113 @@ public: */ private: - QArray<int> ids; + QArray<int> m_ids; OPimAccessTemplate<T>* m_acc; }; +/* ok now implement it */ +template <class T= OPimRecord> +ORecordList<T>::Iterator::Iterator() { + m_current = 0; + m_temp = 0l; + m_end = true; +} +template <class T= OPimRecord> +ORecordList<T>::Iterator::~Iterator() { +/* nothing to delete */ +} + +template <class T = OPimRecord> +ORecordList<T>::Iterator::Iterator( const ORecordList<T>::Iterator& it) { + m_uids = it.m_uids; + m_current = it.m_current; + m_temp = it.m_temp; + m_end = it.m_end; + m_record = it.m_record; +} + +template <class T = OPimRecord> +ORecordList<T>::Iterator &ORecordList::Iterator::operator=( const ORecordList<T>::Iterator& it) { + m_uids = it.m_uids; + m_current = it.m_current; + m_temp = it.m_temp; + m_end = it.m_end; + m_record = it.m_record; + + return *this; +} + +template <class T = OPimRecord> +T &ORecordList<T>::Iterator::operator*() { + if (!m_end ) + m_record = m_temp->find( m_uids[m_current] ); + else + m_record = T; + + return m_record; +} + +template <class T = OPimRecord> +ORecordList<T>::Iterator &ORecordList<T>::Iterator::operator++() { + if (m_current < m_uids.count() ) { + m_end = false; + ++m_current; + }else + m_end = true; + + return *this; +} +template <class T = OPimRecord> +ORecordList<T>::Iterator &ORecordList<T>::Iterator::operator--() { + if ( m_current > 0 ) { + --m_current; + m_end = false; + } else + m_end = true; + + return *this; +} + +template <class T = OPimRecord> +bool ORecordList<T>::Iterator::operator==( const ORecordList<T>::Iterator& it ) { + + /* if both are at we're the same.... */ + if ( m_end == it.m_end ) return true; + + if ( m_uids != it.m_uids ) return false; + if ( m_current != it.m_current ) return false; + if ( m_temp != it.m_temp ) return false; + + return true; +} +template <class T = ORecordList> +bool ORecordList<T>::Iterator::operator!=( const ORecordList<T>::Iterator it ) { + return !(*this == it ); +} +template <class T = ORecordList> +ORecordList<T>::Iterator::Iterator( const QArray<int> uids, + OPimAccessTemplate<T>* t ) + : m_uids( uids ), m_current( 0 ), m_temp( t ), m_end( false ) +{ +} +template <class T = ORecordList> +ORecordList<T>::ORecordList( const QArray<int>& ids, + OPimAccessTemplate<T>* acc ) + : m_ids( ids ), m_acc( acc ) +{ +} +template <class T = ORecordList> +ORecordList<T>::~ORecordList() { +/* nothing to do here */ +} +template <class T = ORecordList> +ORecordList<T>::Iterator ORecordList<T>::begin() { + Iterator it( m_ids, m_acc ); + return it; +} +template <class T = ORecordList> +ORecordList<T>::Iterator ORecordList<T>::end() { + Iterator it( m_ids, m_acc ); + it.m_end = true; + it.m_current = m_ids.count(); +} #endif diff --git a/libopie2/opiepim/otodo.cpp b/libopie2/opiepim/otodo.cpp index 3c93838..8239ba6 100644 --- a/libopie2/opiepim/otodo.cpp +++ b/libopie2/opiepim/otodo.cpp @@ -25,5 +25,4 @@ struct OTodo::OTodoData : public QShared { bool hasDate:1; int priority; - QStringList category; QString desc; QString sum; @@ -47,5 +46,25 @@ OTodo::~OTodo() { } } +OTodo::OTodo(bool completed, int priority, + const QArray<int> &category, + const QString& summary, + const QString &description, + ushort progress, + bool hasDate, QDate date, int uid ) + : OPimRecord( uid ) +{ + //qWarning("OTodoData"); + setCategories( category ); + data = new OTodoData; + data->date = date; + data->isCompleted = completed; + data->hasDate = hasDate; + data->priority = priority; + data->sum = summary; + data->prog = progress; + data->desc = Qtopia::simplifyMultiLineSpace(description ); + data->hasAlarmDateTime = false; +} OTodo::OTodo(bool completed, int priority, const QStringList &category, @@ -268,17 +287,17 @@ bool OTodo::operator>=(const OTodo &toDoEvent )const bool OTodo::operator==(const OTodo &toDoEvent )const { - if( data->priority == toDoEvent.data->priority && - data->priority == toDoEvent.data->prog && - data->isCompleted == toDoEvent.data->isCompleted && - data->hasDate == toDoEvent.data->hasDate && - data->date == toDoEvent.data->date && - data->category == toDoEvent.data->category && - data->sum == toDoEvent.data->sum && - data->desc == toDoEvent.data->desc && - data->hasAlarmDateTime == toDoEvent.data->hasAlarmDateTime && - data->alarmDateTime == toDoEvent.data->alarmDateTime ) - return true; + if ( data->priority != toDoEvent.data->priority ) return false; + if ( data->priority != toDoEvent.data->prog ) return false; + if ( data->isCompleted != toDoEvent.data->isCompleted ) return false; + if ( data->hasDate != toDoEvent.data->hasDate ) return false; + if ( data->date != toDoEvent.data->date ) return false; + if ( data->sum != toDoEvent.data->sum ) return false; + if ( data->desc != toDoEvent.data->desc ) return false; + if ( data->hasAlarmDateTime != toDoEvent.data->hasAlarmDateTime ) + return false; + if ( data->alarmDateTime != toDoEvent.data->alarmDateTime ) + return false; - return false; + return OPimRecord::operator==( toDoEvent ); } void OTodo::deref() { @@ -351,4 +370,9 @@ void OTodo::copy( OTodoData* src, OTodoData* dest ) { dest->alarmDateTime = src->alarmDateTime; } - +QString OTodo::type() const { + return QString::fromLatin1("OTodo"); +} +QString OTodo::recordField(int id )const { + return QString::null; +} diff --git a/libopie2/opiepim/otodo.h b/libopie2/opiepim/otodo.h index e1729db..75af44c 100644 --- a/libopie2/opiepim/otodo.h +++ b/libopie2/opiepim/otodo.h @@ -56,5 +56,13 @@ public: ushort progress = 0, bool hasDate = false, QDate date = QDate::currentDate(), - int uid = -1 ); + int uid = 0 /*empty*/ ); + + OTodo( bool completed, int priority, + const QArray<int>& category, + const QString& summary = QString::null, + const QString& description = QString::null, + ushort progress = 0, + bool hasDate = false, QDate date = QDate::currentDate(), + int uid = 0 /* empty */ ); /* Copy c'tor |