Thank you for your valuable comment.

I fixed the patch file and send again according to your advice.

Would you please review it again? :)

-----Original Message-----
From: Carsten Haitzler (The Rasterman) [mailto:ras...@rasterman.com] 
Sent: Monday, April 25, 2011 5:15 PM
To: Jihoon Kim
Cc: enlightenment-devel@lists.sourceforge.net; 박세환
Subject: Re: [E-devel] [PATCH] Add ecore_imf_context_autocapital_type_{set,
get}, ecore_imf_context_prediction_allow_{set, get}

On Wed, 20 Apr 2011 16:14:04 +0900 Jihoon Kim <jihoon48....@samsung.com>
said:

> Hello, EFL developers.
> 
> To support the autocapitalization feature, I'd like to add
> ecore_imf_context_autocapital_type_{set,get} API.
> I will implement the autocapital feature in immodule, so the immodule
> should know the autocapitalization type.
> This API is for letting immodule know the autocapitalization type.
> 
> In addition, ecore_imf_context_prediction_allow_set API is used to set
> whether the IM context should allow to use the text prediction.
> 
> Would you please review this patch?

one comment?

+   Eina_Bool                      allow_prediction;

any reason u dont make it a bitfield? ie allow_prediction : 1
also why not put it at struct end to keep struct smaller? avoid alignment
padding issues.

-- 
------------- Codito, ergo sum - "I code, therefore I am" --------------
The Rasterman (Carsten Haitzler)    ras...@rasterman.com
Index: ecore_imf_private.h
===================================================================
--- ecore_imf_private.h (revision 58891)
+++ ecore_imf_private.h (working copy)
@@ -47,6 +47,8 @@ struct _Ecore_IMF_Context
    void                          *client_canvas;
    Eina_Bool                    (*retrieve_surrounding_func)(void *data, 
Ecore_IMF_Context *ctx, char **text, int *cursor_pos);
    void                          *retrieve_surrounding_data;
+   Ecore_IMF_Autocapital_Type     autocapital_type;
+   Eina_Bool                      allow_prediction : 1;
 };
 
 struct _Ecore_IMF_Module
Index: ecore_imf_context.c
===================================================================
--- ecore_imf_context.c (revision 58891)
+++ ecore_imf_context.c (working copy)
@@ -175,6 +175,15 @@ ecore_imf_context_add(const char *id)
    /* default use_preedit is EINA_TRUE, so let's make sure it's
     * set on the immodule */
    ecore_imf_context_use_preedit_set(ctx, EINA_TRUE);
+
+   /* default prediction is EINA_TRUE, so let's make sure it's
+    * set on the immodule */
+   ecore_imf_context_prediction_allow_set(ctx, EINA_TRUE);
+
+   /* default autocapital type is SENTENCE type, so let's make sure it's
+    * set on the immodule */
+   ecore_imf_context_autocapital_type_set(ctx, 
ECORE_IMF_AUTOCAPITAL_TYPE_SENTENCE);
+
    /* default input_mode is ECORE_IMF_INPUT_MODE_FULL, so let's make sure it's
     * set on the immodule */
    ecore_imf_context_input_mode_set(ctx, ECORE_IMF_INPUT_MODE_FULL);
@@ -513,6 +522,96 @@ ecore_imf_context_use_preedit_set(Ecore_IMF_Contex
 }
 
 /**
+ * Set whether the IM context should allow to use the text prediction.
+ * If @prediction is EINA_FALSE (default is EINA_TRUE), then the IM context 
will not display the text prediction window.
+ *
+ * @param ctx An #Ecore_IMF_Context.
+ * @param prediction Whether the IM context should allow to use the text 
prediction.
+ * @ingroup Ecore_IMF_Context_Group
+ * @since 1.1.0
+ */
+EAPI void
+ecore_imf_context_prediction_allow_set(Ecore_IMF_Context *ctx, Eina_Bool 
prediction)
+{
+   if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT))
+     {
+        ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT,
+                         "ecore_imf_context_prediction_allow_set");
+        return;
+     }
+
+   ctx->allow_prediction = prediction;
+
+   if (ctx->klass->prediction_allow_set)
+     ctx->klass->prediction_allow_set(ctx, prediction);
+}
+
+/**
+ * Get whether the IM context should allow to use the text prediction.
+ *
+ * @param ctx An #Ecore_IMF_Context.
+ * @return EINA_TRUE if it allows to use the text prediction, otherwise 
EINA_FALSE.
+ * @ingroup Ecore_IMF_Context_Group
+ * @since 1.1.0
+ */
+EAPI Eina_Bool
+ecore_imf_context_prediction_allow_get(Ecore_IMF_Context *ctx)
+{
+   if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT))
+     {
+        ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT,
+                         "ecore_imf_context_prediction_allow_get");
+        return EINA_FALSE;
+     }
+
+   return ctx->allow_prediction;
+}
+
+/**
+ * Set the autocapitalization type on the immodule. 
+ *
+ * @param ctx An #Ecore_IMF_Context.
+ * @param autocapital_type the autocapitalization type.
+ * @ingroup Ecore_IMF_Context_Group
+ * @since 1.1.0
+ */
+EAPI void
+ecore_imf_context_autocapital_type_set(Ecore_IMF_Context *ctx, 
Ecore_IMF_Autocapital_Type autocapital_type)
+{
+   if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT))
+     {
+        ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT,
+                         "ecore_imf_context_autocapital_type_set");
+        return;
+     }
+
+   ctx->autocapital_type = autocapital_type;
+
+   if (ctx->klass->autocapital_type_set) ctx->klass->autocapital_type_set(ctx, 
autocapital_type);
+}
+
+/**
+ * Get the autocapitalization type.
+ *
+ * @param ctx An #Ecore_IMF_Context.
+ * @return The autocapital type being used by @p ctx.
+ * @ingroup Ecore_IMF_Context_Group
+ * @since 1.1.0
+ */
+EAPI Ecore_IMF_Autocapital_Type
+ecore_imf_context_autocapital_type_get(Ecore_IMF_Context *ctx)
+{
+   if (!ECORE_MAGIC_CHECK(ctx, ECORE_MAGIC_CONTEXT))
+     {
+        ECORE_MAGIC_FAIL(ctx, ECORE_MAGIC_CONTEXT,
+                         "ecore_imf_context_autocapital_allow_get");
+        return ECORE_IMF_AUTOCAPITAL_TYPE_NONE;
+     }
+
+   return ctx->autocapital_type;
+}
+
+/**
  * Set the callback to be used on get_surrounding request.
  *
  * This callback will be called when the Input Method Context
Index: Ecore_IMF.h
===================================================================
--- Ecore_IMF.h (revision 58891)
+++ Ecore_IMF.h (working copy)
@@ -120,6 +120,14 @@ typedef enum
    ECORE_IMF_PREEDIT_TYPE_SUB3
 } Ecore_IMF_Preedit_Type;
 
+typedef enum
+{
+   ECORE_IMF_AUTOCAPITAL_TYPE_NONE,
+   ECORE_IMF_AUTOCAPITAL_TYPE_WORD,
+   ECORE_IMF_AUTOCAPITAL_TYPE_SENTENCE,
+   ECORE_IMF_AUTOCAPITAL_TYPE_ALLCHARACTER
+} Ecore_IMF_Autocapital_Type;
+
 struct _Ecore_IMF_Event_Preedit_Start
 {
    Ecore_IMF_Context *ctx;
@@ -295,6 +303,8 @@ struct _Ecore_IMF_Context_Class
    void (*input_mode_set)      (Ecore_IMF_Context *ctx, Ecore_IMF_Input_Mode 
input_mode);
    Eina_Bool (*filter_event)   (Ecore_IMF_Context *ctx, Ecore_IMF_Event_Type 
type, Ecore_IMF_Event *event);
    void (*preedit_string_with_attributes_get) (Ecore_IMF_Context *ctx, char 
**str, Eina_List **attrs, int *cursor_pos);
+   void (*prediction_allow_set)(Ecore_IMF_Context *ctx, Eina_Bool prediction);
+   void (*autocapital_type_set)(Ecore_IMF_Context *ctx, 
Ecore_IMF_Autocapital_Type autocapital_type);
 };
 
 struct _Ecore_IMF_Context_Info
@@ -348,6 +358,10 @@ EAPI void                          ecore_imf_conte
 EAPI void                          
ecore_imf_context_preedit_changed_event_add(Ecore_IMF_Context *ctx);
 EAPI void                          
ecore_imf_context_commit_event_add(Ecore_IMF_Context *ctx, const char *str);
 EAPI void                          
ecore_imf_context_delete_surrounding_event_add(Ecore_IMF_Context *ctx, int 
offset, int n_chars);
+EAPI void                          
ecore_imf_context_prediction_allow_set(Ecore_IMF_Context *ctx, Eina_Bool 
prediction);
+EAPI Eina_Bool                     
ecore_imf_context_prediction_allow_get(Ecore_IMF_Context *ctx);
+EAPI void                          
ecore_imf_context_autocapital_type_set(Ecore_IMF_Context *ctx, 
Ecore_IMF_Autocapital_Type autocapital_type);
+EAPI Ecore_IMF_Autocapital_Type    
ecore_imf_context_autocapital_type_get(Ecore_IMF_Context *ctx);
 
 /* The following entry points must be exported by each input method module
  */

------------------------------------------------------------------------------
Fulfilling the Lean Software Promise
Lean software platforms are now widely adopted and the benefits have been 
demonstrated beyond question. Learn why your peers are replacing JEE 
containers with lightweight application servers - and what you can gain 
from the move. http://p.sf.net/sfu/vmware-sfemails
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to