jihoon pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=44326f9ed8030647fca283e0f7fc00443f12102d

commit 44326f9ed8030647fca283e0f7fc00443f12102d
Author: Jihoon Kim <jihoon48....@samsung.com>
Date:   Sat Aug 30 12:45:38 2014 +0900

    ecore_imf: Add ecore_imf_context_input_hint_set API
---
 src/lib/ecore_imf/Ecore_IMF.h         | 34 ++++++++++++++++++++++++++++++++++
 src/lib/ecore_imf/ecore_imf_context.c | 35 +++++++++++++++++++++++++++++++++++
 src/lib/ecore_imf/ecore_imf_private.h |  1 +
 3 files changed, 70 insertions(+)

diff --git a/src/lib/ecore_imf/Ecore_IMF.h b/src/lib/ecore_imf/Ecore_IMF.h
index 0cfd9ba..c1a255c 100644
--- a/src/lib/ecore_imf/Ecore_IMF.h
+++ b/src/lib/ecore_imf/Ecore_IMF.h
@@ -312,6 +312,18 @@ typedef enum
    ECORE_IMF_INPUT_PANEL_RETURN_KEY_TYPE_SIGNIN   /**< Sign-in @since 1.8 */
 } Ecore_IMF_Input_Panel_Return_Key_Type;
 
+/**
+ * @typedef Ecore_IMF_Input_Hints
+ * @brief Enumeration that defines the types of Ecore_IMF Input Hints.
+ * @since 1.12
+ */
+typedef enum
+{
+   ECORE_IMF_INPUT_HINT_NONE                = 0,        /**< No active hints 
@since 1.12 */
+   ECORE_IMF_INPUT_HINT_AUTO_COMPLETE       = 1 << 0,   /**< Suggest word auto 
completion @since 1.12 */
+   ECORE_IMF_INPUT_HINT_SENSITIVE_DATA      = 1 << 1,   /**< Typed text should 
not be stored. @since 1.12 */
+} Ecore_IMF_Input_Hints;
+
 enum
 {
    ECORE_IMF_INPUT_PANEL_LAYOUT_NUMBERONLY_VARIATION_NORMAL,            /**< 
The plain normal number layout @since 1.8 */
@@ -522,6 +534,7 @@ struct _Ecore_IMF_Context_Class
    void (*input_panel_event_callback_del) (Ecore_IMF_Context *ctx, 
Ecore_IMF_Input_Panel_Event type, void (*func) (void *data, Ecore_IMF_Context 
*ctx, int value));
    void (*input_panel_language_locale_get) (Ecore_IMF_Context *ctx, char 
**lang);
    void (*candidate_panel_geometry_get)(Ecore_IMF_Context *ctx, int *x, int 
*y, int *w, int *h);
+   void (*input_hint_set) (Ecore_IMF_Context *ctx, Ecore_IMF_Input_Hints 
input_hints);
 };
 
 struct _Ecore_IMF_Context_Info
@@ -1272,6 +1285,27 @@ EAPI void                          
ecore_imf_context_autocapital_type_set(Ecore_
 EAPI Ecore_IMF_Autocapital_Type    
ecore_imf_context_autocapital_type_get(Ecore_IMF_Context *ctx);
 
 /**
+ * @brief Sets the input hint which allows input methods to fine-tune their 
behavior.
+ *
+ * @param ctx An #Ecore_IMF_Context
+ * @param hints input hint
+ * @note The default input hint is @c ECORE_IMF_INPUT_HINT_AUTO_COMPLETE.
+ * @ingroup Ecore_IMF_Context_Group
+ * @since 1.12
+ */
+EAPI void                          
ecore_imf_context_input_hint_set(Ecore_IMF_Context *ctx, Ecore_IMF_Input_Hints 
hints);
+
+/**
+ * @brief Gets the value of input hint.
+ *
+ * @param ctx An #Ecore_IMF_Context
+ * @return The value of input hint
+ * @ingroup Ecore_IMF_Context_Group
+ * @since 1.12
+ */
+EAPI Ecore_IMF_Input_Hints         
ecore_imf_context_input_hint_get(Ecore_IMF_Context *ctx);
+
+/**
  * Ask the Input Method Context to show the control panel of using Input 
Method.
  *
  * @param ctx An #Ecore_IMF_Context.
diff --git a/src/lib/ecore_imf/ecore_imf_context.c 
b/src/lib/ecore_imf/ecore_imf_context.c
index 65154bc..b301f34 100644
--- a/src/lib/ecore_imf/ecore_imf_context.c
+++ b/src/lib/ecore_imf/ecore_imf_context.c
@@ -153,6 +153,9 @@ ecore_imf_context_add(const char *id)
     * set on the immodule */
    ecore_imf_context_autocapital_type_set(ctx, 
ECORE_IMF_AUTOCAPITAL_TYPE_SENTENCE);
 
+   /* default input hint */
+   ecore_imf_context_input_hint_set(ctx, ECORE_IMF_INPUT_HINT_AUTO_COMPLETE);
+
    /* default input panel enabled status is EINA_TRUE, so let's make sure it's
     * set on the immodule */
    ecore_imf_context_input_panel_enabled_set(ctx, EINA_TRUE);
@@ -830,6 +833,38 @@ ecore_imf_context_control_panel_hide(Ecore_IMF_Context 
*ctx)
 }
 
 EAPI void
+ecore_imf_context_input_hint_set(Ecore_IMF_Context *ctx, Ecore_IMF_Input_Hints 
input_hints)
+{
+    if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT))
+      {
+         ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT,
+                          "ecore_imf_context_input_hint_set");
+         return;
+      }
+
+   if (ctx->input_hints != input_hints)
+     {
+        if (ctx->klass->input_hint_set)
+          ctx->klass->input_hint_set(ctx, input_hints);
+
+        ctx->input_hints = input_hints;
+     }
+}
+
+EAPI Ecore_IMF_Input_Hints
+ecore_imf_context_input_hint_get(Ecore_IMF_Context *ctx)
+{
+    if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT))
+      {
+         ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT,
+                          "ecore_imf_context_input_hint_get");
+         return ECORE_IMF_INPUT_HINT_NONE;
+      }
+
+    return ctx->input_hints;
+}
+
+EAPI void
 ecore_imf_context_input_panel_show(Ecore_IMF_Context *ctx)
 {
    if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT))
diff --git a/src/lib/ecore_imf/ecore_imf_private.h 
b/src/lib/ecore_imf/ecore_imf_private.h
index d6bf257..b61d6b7 100644
--- a/src/lib/ecore_imf/ecore_imf_private.h
+++ b/src/lib/ecore_imf/ecore_imf_private.h
@@ -55,6 +55,7 @@ struct _Ecore_IMF_Context
    Ecore_IMF_Input_Panel_Layout   input_panel_layout;
    Ecore_IMF_Input_Panel_Lang     input_panel_lang;
    Ecore_IMF_Input_Panel_Return_Key_Type input_panel_return_key_type;
+   Ecore_IMF_Input_Hints          input_hints;
    int                            input_panel_layout_variation;
    Eina_Bool                    (*retrieve_selection_func)(void *data, 
Ecore_IMF_Context *ctx, char **text);
    void                          *retrieve_selection_data;

-- 


Reply via email to