diff options
Diffstat (limited to 'kmail/isubject.cpp')
-rw-r--r-- | kmail/isubject.cpp | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/kmail/isubject.cpp b/kmail/isubject.cpp new file mode 100644 index 00000000..13f8e890 --- /dev/null +++ b/kmail/isubject.cpp @@ -0,0 +1,39 @@ +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#include "isubject.h" +#include "interfaces/observer.h" + +#include <qtl.h> + +#include <kdebug.h> + +namespace KMail { + + ISubject::~ISubject() + { + mObserverList.clear(); + } + + void ISubject::attach( Interface::Observer * pObserver ) + { + if ( qFind( mObserverList.begin(), mObserverList.end(), pObserver ) == mObserverList.end() ) + mObserverList.push_back( pObserver ); + } + + void ISubject::detach( Interface::Observer * pObserver ) { + QValueVector<Interface::Observer*>::iterator it = qFind( mObserverList.begin(), mObserverList.end(), pObserver ); + if ( it != mObserverList.end() ) + mObserverList.erase( it ); + } + + void ISubject::notify() + { + kdDebug(5006) << "ISubject::notify " << mObserverList.size() << endl; + for ( QValueVector<Interface::Observer*>::iterator it = mObserverList.begin() ; it != mObserverList.end() ; ++it ) + (*it)->update( this ); + } + +} + |