// EXTERNAL INCLUDES
#define DALI_INPUT_METHOD_CONTEXT_H
+#include <dali/public-api/actors/actor.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>
public:
/**
- * @brief Events that are generated by the input method context.
+ * @brief The direction of text.
+ */
+ enum TextDirection
+ {
+ LeftToRight,
+ RightToLeft,
+ };
+
+ /**
+ * @brief Events that are generated by the InputMethodContext.
*/
enum EventType
{
- VOID, ///< No event
- PRE_EDIT, ///< Pre-Edit changed
- COMMIT, ///< Commit recieved
- 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
+ VOID, ///< No event
+ PRE_EDIT, ///< Pre-Edit changed
+ COMMIT, ///< Commit recieved
+ 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
+ SELECTION_SET ///< input method needs to set the selection
+ };
+
+ /**
+ * @brief Enumeration for state of the input panel.
+ */
+ enum State
+ {
+ DEFAULT = 0, ///< Unknown state
+ SHOW, ///< Input panel is shown
+ HIDE, ///< Input panel is hidden
+ WILL_SHOW ///< Input panel in process of being shown
+ };
+
+ /**
+ * @brief Enumeration for the type of Keyboard.
+ */
+ enum KeyboardType
+ {
+ SOFTWARE_KEYBOARD, ///< Software keyboard (Virtual keyboard) is default
+ HARDWARE_KEYBOARD ///< Hardware keyboard
+ };
+
+ /**
+ * @brief Enumeration for the language mode of the input panel.
+ */
+ enum class InputPanelLanguage
+ {
+ AUTOMATIC, ///< IME Language automatically set depending on the system display
+ ALPHABET ///< Latin alphabet at all times
+ };
+
+ /**
+ * @brief Enumeration for the preedit style types.
+ */
+ enum class PreeditStyle
+ {
+ NONE, ///< None style
+ UNDERLINE, ///< Underline substring style
+ REVERSE, ///< Reverse substring style
+ HIGHLIGHT, ///< Highlight substring style
+ CUSTOM_PLATFORM_STYLE_1, ///< Custom style for platform
+ CUSTOM_PLATFORM_STYLE_2, ///< Custom style for platform
+ CUSTOM_PLATFORM_STYLE_3, ///< Custom style for platform
+ CUSTOM_PLATFORM_STYLE_4 ///< Custom style for platform
+ };
+
+ /**
+ * @brief This structure is for the preedit style types and indices.
+ */
+ struct PreeditAttributeData
+ {
+ PreeditAttributeData()
+ : preeditType( PreeditStyle::NONE ),
+ startIndex( 0 ),
+ endIndex( 0 )
+ {
+ }
+
+ PreeditStyle preeditType; /// The preedit style type
+ unsigned int startIndex; /// The start index of preedit
+ unsigned int endIndex; /// The end index of preedit
};
/**
- * @brief This structure is used to pass on data from the input method cotext regarding predictive text.
+ * @brief This structure is used to pass on data from the InputMethodContext regarding predictive text.
*/
struct EventData
{
: predictiveString(),
eventName( VOID ),
cursorOffset( 0 ),
- numberOfChars ( 0 )
+ numberOfChars ( 0 ),
+ startIndex ( 0 ),
+ endIndex ( 0 )
{
};
: predictiveString( aPredictiveString ),
eventName( aEventName ),
cursorOffset( aCursorOffset ),
- numberOfChars( aNumberOfChars )
+ numberOfChars( aNumberOfChars ),
+ startIndex ( 0 ),
+ endIndex ( 0 )
+ {
+ }
+
+ /**
+ * @brief Constructor
+ *
+ * @param[in] aEventName The name of the event from the InputMethodContext.
+ * @param[in] aStartIndex The start index of selection.
+ * @param[in] aEndIndex The end index of selection.
+ */
+ EventData(EventType aEventName, int aStartIndex, int aEndIndex)
+ : predictiveString(),
+ eventName(aEventName),
+ cursorOffset(0),
+ numberOfChars(0),
+ startIndex(aStartIndex),
+ endIndex(aEndIndex)
{
}
// Data
std::string predictiveString; ///< The pre-edit or commit string.
- EventType eventName; ///< The name of the event from the input method context.
+ 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.
+ int startIndex; ///< The start index of selection.
+ int endIndex; ///< The end index of selection.
};
/**
typedef Signal< void () > VoidSignalType;
typedef Signal< void (bool) > StatusSignalType;
+ using PreEditAttributeDataContainer = Vector< Dali::InputMethodContext::PreeditAttributeData >;
+
public:
/**
static InputMethodContext New();
/**
+ * @brief Create a handle to the instance of InputMethodContext.
+ *
+ * @param[in] actor The actor that uses the new InputMethodContext instance.
+ * @return A handle to the InputMethodContext.
+ */
+ static InputMethodContext New( Actor actor );
+
+ /**
* @brief Finalize the InputMethodContext.
*
* It means that the context will be deleted.
*/
bool FilterEventKey( const Dali::KeyEvent& keyEvent );
+ /**
+ * @brief Sets the preedit type.
+ *
+ * @param[in] type The preedit style type
+ */
+ void SetPreeditStyle( PreeditStyle type );
+
+ /**
+ * @brief Gets the preedit attributes data.
+ *
+ * @param[out] attrs The preedit attributes data.
+ */
+ void GetPreeditStyle( Dali::InputMethodContext::PreEditAttributeDataContainer& attrs ) const;
+
public:
// Signals