| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 | 
							- /*
 
-  *  ctkEventDispatcher.h
 
-  *  ctkEventBus
 
-  *
 
-  *  Created by Paolo Quadrani on 27/03/09.
 
-  *  Copyright 2009 B3C. All rights reserved.
 
-  *
 
-  *  See Licence at: http://tiny.cc/QXJ4D
 
-  *
 
-  */
 
- #ifndef CTKEVENTDISPATCHER_H
 
- #define CTKEVENTDISPATCHER_H
 
- #include "ctkEventDefinitions.h"
 
- namespace ctkEventBus {
 
- /**
 
-  Class name: ctkEventDispatcher
 
-  This allows dispatching events coming from local application to attached observers.
 
-  */
 
- class org_commontk_eventbus_EXPORT ctkEventDispatcher : public QObject {
 
-     Q_OBJECT
 
- public:
 
-     /// object constructor.
 
-     ctkEventDispatcher();
 
-     /// object destructor.
 
-     virtual ~ctkEventDispatcher();
 
-     /// Add the observer to the events.
 
-     /** Return true if observer has beed added correctly, false otherwise.
 
-     This method check before adding a new observer that it has not already been inserted into the events' Hash with the same id and callback signature.*/
 
-     bool addObserver(ctkBusEvent &props);
 
-     /// remove the callback from the observer's hash.
 
-     bool removeObserver(ctkBusEvent &props);
 
-     /// remove the callback from the observer's hash.
 
-     bool removeObserver(const QObject *obj, const QString topic, bool qt_disconnect = true);
 
-     /// Remove the signal from the signal's hash.
 
-     bool removeSignal(const QObject *obj, const QString topic = "", bool qt_disconnect = true);
 
-     /// register custom signals use by objects to raise them events.
 
-     /** Return true if signal has beed added correctly, false otherwise.
 
-     This method check before adding a new signal that it has not already been inserted into the events' Hash with the same id and signal signature.
 
-     WARNING: due to Qt limitation you cannot use the same signal in different Topics.*/
 
-     bool registerSignal(ctkBusEvent &props);
 
-     /// Remove the signal from the signal's hash.
 
-     bool removeSignal(ctkBusEvent &props);
 
-     /// method used to check if the given signal has been already registered for the given id.
 
-     bool isLocalSignalPresent(const QString topic) const;
 
-     /// Emit event corresponding to the given id (present into the event_dictionary) locally to the application.
 
-     virtual void notifyEvent(ctkBusEvent &event_dictionary, ctkEventArgumentsList *argList = NULL, ctkGenericReturnArgument *returnArg = NULL) const;
 
-     /// clean the signal and callback hashes.
 
-     /** This method is used when the destructor is called. The destructor of the dispatcher is called by the ctkEventBusManager destructor.*/
 
-     void resetHashes();
 
- Q_SIGNALS:
 
-     /// Default notification signals for default events.
 
-     void notifyDefaultEvent();
 
-     /// Signal used to notify to observers that the remote communication has been terminated with success.
 
-     void remoteCommunicationDone();
 
-     /// Signal used to notify to observers that the remote communication failed.
 
-     void remoteCommunicationFailed();
 
- protected:
 
-     /// Register MAF global events
 
-     virtual void initializeGlobalEvents();
 
-     /// Interanl method used to remove the given event property.
 
-     bool removeEventItem(ctkBusEvent &props);
 
-     /// Return the signal item property associated to the given ID.
 
-     ctkEventItemListType signalItemProperty(const QString topic) const;
 
- private:
 
-     /// method used to check if the given object has been already registered for the given id and signature.
 
-     bool isSignaturePresent(ctkBusEvent &props) const;
 
-     /// disconnection signal/observer.
 
-     /** This function disconnects the signal and all the observers. */
 
-     bool disconnectSignal(ctkBusEvent &props);
 
-     /// This function disconnects observer from signal.
 
-     bool disconnectCallback(ctkBusEvent &props);
 
-     /// Remove the given object from the has passed as argument
 
-     bool removeFromHash(ctkEventsHashType *hash, const QObject *obj, const QString topic, bool qt_disconnect = true);
 
-     ctkEventsHashType m_CallbacksHash; ///< Callbacks' hash for receiving events like updates or refreshes.
 
-     ctkEventsHashType m_SignalsHash; ///< Signals' hash for sending events.
 
- };
 
- /////////////////////////////////////////////////////////////
 
- // Inline methods
 
- /////////////////////////////////////////////////////////////
 
- inline ctkEventItemListType ctkEventDispatcher::signalItemProperty(const QString topic) const {
 
-     return m_SignalsHash.values(topic);
 
- }
 
- } // namespace ctkEventBus
 
- #endif // CTKEVENTDISPATCHER_H
 
 
  |