summaryrefslogtreecommitdiff
path: root/libopie/pim
Side-by-side diff
Diffstat (limited to 'libopie/pim') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie/pim/opimrecord.cpp11
-rw-r--r--libopie/pim/opimrecord.h1
-rw-r--r--libopie/pim/orecordlist.h139
-rw-r--r--libopie/pim/otodo.cpp52
-rw-r--r--libopie/pim/otodo.h10
5 files changed, 183 insertions, 30 deletions
diff --git a/libopie/pim/opimrecord.cpp b/libopie/pim/opimrecord.cpp
index d8f73c7..e510f4e 100644
--- a/libopie/pim/opimrecord.cpp
+++ b/libopie/pim/opimrecord.cpp
@@ -1,15 +1,12 @@
#include "opimrecord.h"
OPimRecord::OPimRecord( int uid )
: Qtopia::Record() {
setUid( uid );
- /* assign a new UID */
- if ( uid == 1 )
- assignUid();
}
OPimRecord::~OPimRecord() {
}
OPimRecord::OPimRecord( const OPimRecord& rec )
: Qtopia::Record( rec )
{
@@ -101,6 +98,14 @@ QString OPimRecord::crossToString()const {
}
str = str.remove( str.length()-1, 1); // strip the ;
//qWarning("IDS " + str );
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/libopie/pim/opimrecord.h b/libopie/pim/opimrecord.h
index 18112d4..297ff12 100644
--- a/libopie/pim/opimrecord.h
+++ b/libopie/pim/opimrecord.h
@@ -98,12 +98,13 @@ public:
void addRelation( const QString& app, int id );
/**
*
*/
void setRelations( const QString&, QArray<int> ids );
+ virtual void setUid( int uid );
protected:
QString crossToString()const;
private:
class OPimRecordPrivate;
diff --git a/libopie/pim/orecordlist.h b/libopie/pim/orecordlist.h
index c17186f..65c2169 100644
--- a/libopie/pim/orecordlist.h
+++ b/libopie/pim/orecordlist.h
@@ -8,37 +8,152 @@
template <class T = OPimRecord >
class ORecordList {
public:
class Iterator {
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();
/*
ConstIterator begin()const;
ConstIterator end()const;
*/
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/libopie/pim/otodo.cpp b/libopie/pim/otodo.cpp
index 3c93838..8239ba6 100644
--- a/libopie/pim/otodo.cpp
+++ b/libopie/pim/otodo.cpp
@@ -21,13 +21,12 @@ struct OTodo::OTodoData : public QShared {
};
QDate date;
bool isCompleted:1;
bool hasDate:1;
int priority;
- QStringList category;
QString desc;
QString sum;
QMap<QString, QString> extra;
ushort prog;
bool hasAlarmDateTime :1;
QDateTime alarmDateTime;
@@ -43,13 +42,33 @@ OTodo::~OTodo() {
if ( data->deref() ) {
//qWarning("OTodo::dereffing");
delete data;
data = 0l;
}
}
+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,
const QString& summary,
const QString &description,
ushort progress,
bool hasDate, QDate date, int uid )
@@ -264,25 +283,25 @@ bool OTodo::operator>=(const OTodo &toDoEvent )const
}
}
return true;
}
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() {
//qWarning("deref in ToDoEvent");
if ( data->deref() ) {
//qWarning("deleting");
@@ -347,8 +366,13 @@ void OTodo::copy( OTodoData* src, OTodoData* dest ) {
dest->sum = src->sum;
dest->extra = src->extra;
dest->prog = src->prog;
dest->hasAlarmDateTime = src->hasAlarmDateTime;
dest->alarmDateTime = src->alarmDateTime;
}
-
+QString OTodo::type() const {
+ return QString::fromLatin1("OTodo");
+}
+QString OTodo::recordField(int id )const {
+ return QString::null;
+}
diff --git a/libopie/pim/otodo.h b/libopie/pim/otodo.h
index e1729db..75af44c 100644
--- a/libopie/pim/otodo.h
+++ b/libopie/pim/otodo.h
@@ -52,13 +52,21 @@ public:
OTodo( bool completed = false, int priority = Normal,
const QStringList &category = QStringList(),
const QString &summary = QString::null ,
const QString &description = QString::null,
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
**/
OTodo(const OTodo & );