#ifndef __CC_IME_DISPATCHER_H__
#define __CC_IME_DISPATCHER_H__
#include "CCIMEDelegate.h"
NS_CC_BEGIN
/**
* @addtogroup input
* @{
*/
/**
@brief Input Method Edit Message Dispatcher.
*/
class CC_DLL CCIMEDispatcher
{
public:
~CCIMEDispatcher();
/**
@brief Returns the shared CCIMEDispatcher object for the system.
*/
static CCIMEDispatcher* sharedDispatcher();
// /**
// @brief Releases all CCIMEDelegates from the shared dispatcher.
// */
// static void purgeSharedDispatcher();
/**
@brief Dispatches the input text from IME.
*/
void dispatchInsertText(const char * pText, int nLen);
/**
@brief Dispatches the delete-backward operation.
*/
void dispatchDeleteBackward();
/**
@brief Get the content text from CCIMEDelegate, retrieved previously from IME.
*/
const char * getContentText();
//
// dispatch keyboard notification
//
void dispatchKeyboardWillShow(CCIMEKeyboardNotificationInfo& info);
void dispatchKeyboardDidShow(CCIMEKeyboardNotificationInfo& info);
void dispatchKeyboardWillHide(CCIMEKeyboardNotificationInfo& info);
void dispatchKeyboardDidHide(CCIMEKeyboardNotificationInfo& info);
protected:
friend class CCIMEDelegate;
/**
@brief Add delegate to receive IME messages.
*/
void addDelegate(CCIMEDelegate * pDelegate);
/**
@brief Attach the pDelegate to the IME.
@return If the old delegate can detach from the IME, and the new delegate
can attach to the IME, return true, otherwise false.
*/
bool attachDelegateWithIME(CCIMEDelegate * pDelegate);
bool detachDelegateWithIME(CCIMEDelegate * pDelegate);
/**
@brief Remove the delegate from the delegates which receive IME messages.
*/
void removeDelegate(CCIMEDelegate * pDelegate);
private:
CCIMEDispatcher();
class Impl;
Impl * m_pImpl;
};
// end of input group
/// @}
NS_CC_END
#endif // __CC_IME_DISPATCHER_H__