CVS commit by steffen: support multiple Observers per IncidenceBase M +13 -5 incidencebase.cpp 1.15 M +2 -2 incidencebase.h 1.10 --- kdepim/libkcal/incidencebase.h #1.9:1.10 @@ -128,5 +128,5 @@ class IncidenceBase : public CustomPrope void registerObserver( Observer * ); - + void unRegisterObserver( Observer * ); void updated(); @@ -151,5 +151,5 @@ class IncidenceBase : public CustomPrope int mSyncStatus; // status (for sync) - Observer *mObserver; + QPtrList mObservers; }; --- kdepim/libkcal/incidencebase.cpp #1.14:1.15 @@ -31,5 +31,5 @@ using namespace KCal; IncidenceBase::IncidenceBase() : mReadOnly(false), mFloats(true), mDuration(0), mHasDuration(false), - mPilotId(0), mSyncStatus(SYNCMOD), mObserver(0) + mPilotId(0), mSyncStatus(SYNCMOD) { setUid(CalFormat::createUniqueId()); @@ -58,5 +58,5 @@ IncidenceBase::IncidenceBase(const Incid // The copied object is a new one, so it isn't observed by the observer // of the original object. - mObserver = 0; + mObservers.clear(); mAttendees.setAutoDelete( true ); @@ -317,11 +317,19 @@ int IncidenceBase::pilotId() const void IncidenceBase::registerObserver( IncidenceBase::Observer *observer ) { - mObserver = observer; + if( !mObservers.contains(observer) ) mObservers.append( observer ); +} + +void IncidenceBase::unRegisterObserver( IncidenceBase::Observer *observer ) +{ + mObservers.remove( observer ); } void IncidenceBase::updated() { - if ( mObserver ) { - mObserver->incidenceUpdated( this ); + QPtrListIterator it(mObservers); + while( it.current() ) { + Observer *o = it.current(); + ++it; + o->incidenceUpdated( this ); } }