-#ifndef __DALI_TOOLKIT_TOOLKIT_IMF_MANAGER_H__
-#define __DALI_TOOLKIT_TOOLKIT_IMF_MANAGER_H__
+#ifndef __DALI_TOOLKIT_TOOLKIT_INPUT_METHOD_CONTEXT_H__
+#define __DALI_TOOLKIT_TOOLKIT_INPUT_METHOD_CONTEXT_H__
/*
- * Copyright (c) 2014 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2018 Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
*/
// EXTERNAL INCLUDES
-#define __DALI_IMF_MANAGER_H__
+#define __DALI_INPUT_METHOD_CONTEXT_H__
#include <dali/public-api/object/base-handle.h>
#include <dali/public-api/signals/dali-signal.h>
#include <dali/devel-api/adaptor-framework/input-method-options.h>
+#include <dali/public-api/events/key-event.h>
namespace Dali DALI_IMPORT_API
{
{
namespace Adaptor
{
-class ImfManager;
+class InputMethodContext;
}
}
/**
- * @brief The ImfManager class
+ * @brief The InputMethodContext class
*
* Specifically manages the ecore input method framework which enables the virtual or hardware keyboards.
*/
-class ImfManager : public BaseHandle
+class InputMethodContext : public BaseHandle
{
public:
/**
- * @brief Events that are generated by the IMF.
+ * @brief Events that are generated by the input method context.
*/
- enum ImfEvent
+ enum EventType
{
VOID, ///< No event
- PREEDIT, ///< Pre-Edit changed
+ PRE_EDIT, ///< Pre-Edit changed
COMMIT, ///< Commit recieved
- DELETESURROUNDING, ///< Event to delete a range of characters from the string
- GETSURROUNDING, ///< Event to query string and cursor position
- PRIVATECOMMAND ///< Private command sent from the input panel
+ DELETE_SURROUNDING, ///< Event to delete a range of characters from the string
+ GET_SURROUNDING, ///< Event to query string and cursor position
+ PRIVATE_COMMAND ///< Private command sent from the input panel
};
/**
- * @brief This structure is used to pass on data from the IMF regarding predictive text.
+ * @brief This structure is used to pass on data from the input method cotext regarding predictive text.
*/
- struct ImfEventData
+ struct EventData
{
/**
* @brief Default Constructor.
*/
- ImfEventData()
+ EventData()
: predictiveString(),
eventName( VOID ),
cursorOffset( 0 ),
/**
* @brief Constructor
*
- * @param[in] aEventName The name of the event from the IMF.
+ * @param[in] aEventName The name of the event from the input method context.
* @param[in] aPredictiveString The pre-edit or commit string.
* @param[in] aCursorOffset Start position from the current cursor position to start deleting characters.
* @param[in] aNumberOfChars The number of characters to delete from the cursorOffset.
*/
- ImfEventData( ImfEvent aEventName, const std::string& aPredictiveString, int aCursorOffset, int aNumberOfChars )
+ EventData( EventType aEventName, const std::string& aPredictiveString, int aCursorOffset, int aNumberOfChars )
: predictiveString( aPredictiveString ),
eventName( aEventName ),
cursorOffset( aCursorOffset ),
// Data
std::string predictiveString; ///< The pre-edit or commit string.
- ImfEvent eventName; ///< The name of the event from the IMF.
+ EventType eventName; ///< The name of the event from the input method context.
int cursorOffset; ///< Start position from the current cursor position to start deleting characters.
int numberOfChars; ///< number of characters to delete from the cursorOffset.
};
/**
- * @brief Data required by IMF from the callback
+ * @brief Data required by input method context from the callback
*/
- struct ImfCallbackData
+ struct CallbackData
{
/**
* @brief Constructor
*/
- ImfCallbackData()
+ CallbackData()
: currentText(),
cursorPosition( 0 ),
update( false ),
* @param[in] aCurrentText current text string
* @param[in] aPreeditResetRequired flag if preedit reset is required.
*/
- ImfCallbackData( bool aUpdate, int aCursorPosition, const std::string& aCurrentText, bool aPreeditResetRequired )
+ CallbackData( bool aUpdate, int aCursorPosition, const std::string& aCurrentText, bool aPreeditResetRequired )
: currentText( aCurrentText ),
cursorPosition( aCursorPosition ),
update( aUpdate ),
bool preeditResetRequired :1; ///< flag if preedit reset is required.
};
- typedef Signal< void (ImfManager&) > ImfManagerSignalType; ///< Keyboard actived signal
- typedef Signal< ImfCallbackData ( ImfManager&, const ImfEventData& ) > ImfEventSignalType; ///< keyboard events
+ typedef Signal< void (InputMethodContext&) > ActivatedSignalType; ///< Keyboard actived signal
+ typedef Signal< CallbackData ( InputMethodContext&, const EventData& ) > KeyboardEventSignalType; ///< keyboard events
typedef Signal< void () > VoidSignalType;
typedef Signal< void (bool) > StatusSignalType;
public:
/**
- * @brief Retrieve a handle to the instance of ImfManager.
- * @return A handle to the ImfManager.
+ * @brief Create a handle to the instance of InputMethodContext.
+ * @return A handle to the InputMethodContext.
*/
- static ImfManager Get();
+ static InputMethodContext New();
/**
- * @brief Activate the IMF.
+ * @brief Finalize the InputMethodContext.
+ *
+ * It means that the context will be deleted.
+ */
+ void Finalize();
+
+ /**
+ * @brief Activate the input method context.
*
* It means that the text editing is started at somewhere.
* If the H/W keyboard isn't connected then it will show the virtual keyboard.
void Activate();
/**
- * @brief Deactivate the IMF.
+ * @brief Deactivate the input method context.
*
* It means that the text editing is finished at somewhere.
*/
bool RestoreAfterFocusLost() const;
/**
- * @brief Set status whether the IMF has to restore the keyboard after losing focus.
+ * @brief Set status whether the input method context has to restore the keyboard after losing focus.
*
* @param[in] toggle True means that keyboard should be restored after focus lost and regained.
*/
void SetRestoreAfterFocusLost( bool toggle );
/**
- * @brief Send message reset the pred-edit state / imf module.
+ * @brief Send message reset the pred-edit state / input method context module.
*
* Used to interupt pre-edit state maybe due to a touch input.
*/
void Reset();
/**
- * @brief Notifies IMF context that the cursor position has changed, required for features like auto-capitalisation.
+ * @brief Notifies ImfContext that the cursor position has changed, required for features like auto-capitalisation.
*/
void NotifyCursorPosition();
/**
- * @brief Sets cursor position stored in VirtualKeyboard, this is required by the IMF context.
+ * @brief Sets cursor position stored in VirtualKeyboard, this is required by the ImfContext.
*
* @param[in] cursorPosition position of cursor
*/
void SetCursorPosition( unsigned int cursorPosition );
/**
- * @brief Gets cursor position stored in VirtualKeyboard, this is required by the IMF context.
+ * @brief Gets cursor position stored in VirtualKeyboard, this is required by the ImfContext.
*
* @return current position of cursor
*/
unsigned int GetCursorPosition() const;
/**
- * @brief Method to store the string required by the IMF, this is used to provide predictive word suggestions.
+ * @brief Method to store the string required by the input method context, this is used to provide predictive word suggestions.
*
* @param[in] text The text string surrounding the current cursor point.
*/
void SetSurroundingText( const std::string& text );
/**
- * @brief Gets current text string set within the IMF manager, this is used to offer predictive suggestions.
+ * @brief Gets current text string set within the input method context, this is used to offer predictive suggestions.
*
* @return current position of cursor
*/
const std::string& GetSurroundingText() const;
/**
- * @brief Notifies IMF context that text input is set to multi line or not
+ * @brief Notifies ImfContext that text input is set to multi line or not
*/
void NotifyTextInputMultiLine( bool multiLine );
*/
void ApplyOptions( const InputMethodOptions& options );
+ /**
+ * @brief Process event key down or up, whether filter a key to isf.
+ *
+ * @param[in] keyEvent The event key to be handled.
+ * @return Whether the event key is handled.
+ */
+ bool FilterEventKey( const Dali::KeyEvent& keyEvent );
+
public:
// Signals
/**
* @brief This is emitted when the virtual keyboard is connected to or the hardware keyboard is activated.
*
- * @return The IMF Activated signal.
+ * @return The input method context Activated signal.
*/
- ImfManagerSignalType& ActivatedSignal();
+ ActivatedSignalType& ActivatedSignal();
/**
- * @brief This is emitted when the IMF manager receives an event from the IMF.
+ * @brief This is emitted when the input method context receives an event.
*
* @return The Event signal containing the event data.
*/
- ImfEventSignalType& EventReceivedSignal();
+ KeyboardEventSignalType& EventReceivedSignal();
/**
* @brief Connect to this signal to be notified when the virtual keyboard is shown or hidden.
/**
* @brief Constructor.
*/
- ImfManager();
+ InputMethodContext();
/**
* @brief Destructor
*
* This is non-virtual since derived Handle types must not contain data or virtual methods.
*/
- ~ImfManager();
+ ~InputMethodContext();
/**
- * @brief This constructor is used by ImfManager::Get().
+ * @brief This constructor is used by InputMethodContext::Get().
*
- * @param[in] imfManager A pointer to the imf Manager.
+ * @param[in] inputMethodContext A pointer to the input method context.
*/
- explicit ImfManager( Internal::Adaptor::ImfManager* imfManager );
+ explicit InputMethodContext( Internal::Adaptor::InputMethodContext* inputMethodContext );
};
} // namespace Dali
-#endif // __DALI_TOOLKIT_TOOLKIT_IMF_MANAGER_H__
+#endif // __DALI_TOOLKIT_TOOLKIT_INPUT_METHOD_CONTEXT_H__