-rw-r--r-- | libopie2/opiepim/otodo.cpp | 81 | ||||
-rw-r--r-- | libopie2/opiepim/otodo.h | 16 |
2 files changed, 82 insertions, 15 deletions
diff --git a/libopie2/opiepim/otodo.cpp b/libopie2/opiepim/otodo.cpp index ea66d39..f3df119 100644 --- a/libopie2/opiepim/otodo.cpp +++ b/libopie2/opiepim/otodo.cpp @@ -22,8 +22,12 @@ struct OTodo::OTodoData : public QShared { OTodoData() : QShared() { + recur = 0; + state = 0; + maintainer = 0; + notifiers = 0; }; QDate date; bool isCompleted:1; @@ -32,14 +36,14 @@ struct OTodo::OTodoData : public QShared { QString desc; QString sum; QMap<QString, QString> extra; ushort prog; - OPimState state; - ORecur recur; - OPimMaintainer maintainer; + OPimState *state; + ORecur *recur; + OPimMaintainer *maintainer; QDate start; QDate completed; - OPimNotifyManager notifiers; + OPimNotifyManager *notifiers; }; OTodo::OTodo(const OTodo &event ) : OPimRecord( event ), data( event.data ) @@ -150,16 +154,38 @@ QDate OTodo::completedDate()const { QString OTodo::description()const { return data->desc; } +bool OTodo::hasState() const{ + if (!data->state ) return false; + return ( data->state->state() != OPimState::Undefined ); +} OPimState OTodo::state()const { - return data->state; + if (!data->state ) { + OPimState state; + return state; + } + + return (*data->state); +} +bool OTodo::hasRecurrence()const { + if (!data->recur) return false; + return data->recur->doesRecur(); } ORecur OTodo::recurrence()const { - return data->recur; + if (!data->recur) return ORecur(); + + return (*data->recur); +} +bool OTodo::hasMaintainer()const { + if (!data->maintainer) return false; + + return (data->maintainer->mode() != OPimMaintainer::Undefined ); } OPimMaintainer OTodo::maintainer()const { - return data->maintainer; + if (!data->maintainer) return OPimMaintainer(); + + return (*data->maintainer); } void OTodo::setCompleted( bool completed ) { changeOrModify(); @@ -200,17 +226,27 @@ void OTodo::setCompletedDate( const QDate& date ) { data->completed = date; } void OTodo::setState( const OPimState& state ) { changeOrModify(); - data->state = state; + if (data->state ) + (*data->state) = state; + else + data->state = new OPimState( state ); } void OTodo::setRecurrence( const ORecur& rec) { changeOrModify(); - data->recur = rec; + if (data->recur ) + (*data->recur) = rec; + else + data->recur = new ORecur( rec ); } void OTodo::setMaintainer( const OPimMaintainer& pim ) { changeOrModify(); - data->maintainer = pim; + + if (data->maintainer ) + (*data->maintainer) = pim; + else + data->maintainer = new OPimMaintainer( pim ); } bool OTodo::isOverdue( ) { if( data->hasDate && !data->isCompleted) @@ -259,10 +295,16 @@ QString OTodo::toRichText() const text += "<br>"; return text; } +bool OTodo::hasNotifiers()const { + if (!data->notifiers) return false; + return data->notifiers->isEmpty(); +} OPimNotifyManager& OTodo::notifiers() { - return data->notifiers; + if (!data->notifiers ) + data->notifiers = new OPimNotifyManager; + return (*data->notifiers); } bool OTodo::operator<( const OTodo &toDoEvent )const{ if( !hasDueDate() && !toDoEvent.hasDueDate() ) return true; @@ -404,14 +446,23 @@ void OTodo::copy( OTodoData* src, OTodoData* dest ) { dest->desc = src->desc; dest->sum = src->sum; dest->extra = src->extra; dest->prog = src->prog; - dest->state = src->state; - dest->recur = src->recur; - dest->maintainer = src->maintainer; + + if (src->state ) + dest->state = new OPimState( *src->state ); + + if (src->recur ) + dest->recur = new ORecur( *src->recur ); + + if (src->maintainer ) + dest->maintainer = new OPimMaintainer( *src->maintainer ) + ; dest->start = src->start; dest->completed = src->completed; - dest->notifiers = src->notifiers; + + if (src->notifiers ) + dest->notifiers = new OPimNotifyManager( *src->notifiers ); } QString OTodo::type() const { return QString::fromLatin1("OTodo"); } diff --git a/libopie2/opiepim/otodo.h b/libopie2/opiepim/otodo.h index 2f66f55..a58d9aa 100644 --- a/libopie2/opiepim/otodo.h +++ b/libopie2/opiepim/otodo.h @@ -127,18 +127,33 @@ public: */ QDate completedDate()const; /** + * does it have a state? + */ + bool hasState()const; + + /** * What is the state of this OTodo? */ OPimState state()const; /** + * has recurrence? + */ + bool hasRecurrence()const; + + /** * the recurrance of this */ ORecur recurrence()const; /** + * does this OTodo have a maintainer? + */ + bool hasMaintainer()const; + + /** * the Maintainer of this OTodo */ OPimMaintainer maintainer()const; @@ -157,8 +172,9 @@ public: * Return this todoevent in a RichText formatted QString */ QString toRichText() const; + bool hasNotifiers()const; /* * check if the sharing is still fine!! -zecke */ /** |