www.pudn.com > fanccMSNr.src.rar > MessengerListener.hpp


#pragma once 
#include "User.hpp" 
 
namespace poral { 
	class MessengerModel; 
 
	/** 
	* An interface for object that wish to be informed when MessengerModel 
	* changed. 
	*/ 
	class MessengerListener { 
	public: 
		typedef enum { 
			/** Switches to connecting mode. */ 
			CONNECTING, 
			/** Failed attempting to connect or keeping the connection up. */ 
			CONNECTION_FAILED, 
			/** Connection reset by local host */ 
			CONNECTION_CLOSED, 
			/** Connection reset because another client logged in */ 
			CONNECTION_CLOSED_BY_OTHERS, 
			/** Connection reset because of server down */ 
			CONNECTION_CLOSED_BY_SERVER, 
			/** Authentication failed */ 
			AUTH_FAILED, 
			/** Connection newly established */ 
			CONNECTED, 
			/** My status changed */ 
			MY_STATUS_CHANGED, 
			/** My screenName changed */ 
			MY_SCREEN_NAME_CHANGED, 
		} Event; 
 
		/** 
		* Notifies update event to listener. possible event enumerated in 
		* MessengerListener::Event. 
		*/ 
		virtual void messengerUpdate(MessengerModel &model, Event event)=0; 
 
		typedef enum { 
			/** Another user adds you */ 
			ADDS_YOU, 
			/** New user added in FL list */ 
			ADDED, 
			/** User status changed */ 
			STATUS_CHANGED, 
			BLOCKED, 
			UNBLOCKED, 
			LOGIN, 
			LOGOUT, 
			/** User removed from FL list */ 
			REMOVED, 
		} UserEvent; 
		/** 
		* Notifies that new user income or status of user has been changed. 
		*/ 
		virtual void userUpdate(const User &user, UserEvent event)=0; 
 
		/** 
		* Requests new chatter view, which should listen to given ChatterModel. 
		*/ 
		virtual void chatterViewRequested(ChatterModel &model)=0; 
	}; 
}