elm_entry:
authorjihoon <jihoon@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Wed, 15 Feb 2012 08:42:46 +0000 (08:42 +0000)
committerjihoon <jihoon@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Wed, 15 Feb 2012 08:42:46 +0000 (08:42 +0000)
add elm_entry_input_panel_language_set/get
add elm_entry_input_panel_imdata_set/get
add elm_entry_input_panel_return_key_type_set/get
add elm_entry_input_panel_return_key_disabled_set/get

git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/elementary@67967 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/lib/elm_entry.c
src/lib/elm_entry.h

index a53a4c3..8aca46a 100644 (file)
@@ -49,6 +49,10 @@ struct _Widget_Data
    Elm_Wrap_Type linewrap;
    Elm_Input_Panel_Layout input_panel_layout;
    Elm_Autocapital_Type autocapital_type;
+   Elm_Input_Panel_Lang input_panel_lang;
+   Elm_Input_Panel_Return_Key_Type input_panel_return_key_type;
+   void *input_panel_imdata;
+   int input_panel_imdata_len;
    Eina_Bool changed : 1;
    Eina_Bool single_line : 1;
    Eina_Bool password : 1;
@@ -70,6 +74,7 @@ struct _Widget_Data
    Eina_Bool v_bounce : 1;
    Eina_Bool input_panel_enable : 1;
    Eina_Bool prediction_allow : 1;
+   Eina_Bool input_panel_return_key_disabled : 1;
 };
 
 struct _Elm_Entry_Context_Menu_Item
@@ -502,6 +507,7 @@ _del_hook(Evas_Object *obj)
         _filter_free(tf);
      }
    if (wd->delay_write) ecore_timer_del(wd->delay_write);
+   if (wd->input_panel_imdata) free(wd->input_panel_imdata);
    free(wd);
 
    evas_event_thaw(evas_object_evas_get(obj));
@@ -537,6 +543,9 @@ _theme_hook(Evas_Object *obj)
    edje_object_part_text_autocapital_type_set(wd->ent, "elm.text", wd->autocapital_type);
    edje_object_part_text_prediction_allow_set(wd->ent, "elm.text", wd->prediction_allow);
    edje_object_part_text_input_panel_enabled_set(wd->ent, "elm.text", wd->input_panel_enable);
+   edje_object_part_text_input_panel_imdata_set(wd->ent, "elm.text", wd->input_panel_imdata, wd->input_panel_imdata_len);
+   edje_object_part_text_input_panel_return_key_type_set(wd->ent, "elm.text", wd->input_panel_return_key_type);
+   edje_object_part_text_input_panel_return_key_disabled_set(wd->ent, "elm.text", wd->input_panel_return_key_disabled);
 
    if (wd->cursor_pos != 0)
      elm_entry_cursor_pos_set(obj, wd->cursor_pos);
@@ -2307,6 +2316,7 @@ elm_entry_add(Evas_Object *parent)
    wd->autosave     = EINA_TRUE;
    wd->textonly     = EINA_FALSE;
    wd->scroll       = EINA_FALSE;
+   wd->input_panel_imdata = NULL;
 
    wd->ent = edje_object_add(e);
    edje_object_item_provider_set(wd->ent, _get_item, obj);
@@ -3630,4 +3640,95 @@ elm_entry_input_panel_hide(Evas_Object *obj)
    edje_object_part_text_input_panel_hide(wd->ent, "elm.text");
 }
 
+EAPI void
+elm_entry_input_panel_language_set(Evas_Object *obj, Elm_Input_Panel_Lang lang)
+{
+   ELM_CHECK_WIDTYPE(obj, widtype);
+   Widget_Data *wd = elm_widget_data_get(obj);
+   if (!wd) return;
+
+   wd->input_panel_lang = lang;
+   edje_object_part_text_input_panel_language_set(wd->ent, "elm.text", lang);
+}
+
+EAPI Elm_Input_Panel_Lang
+elm_entry_input_panel_language_get(const Evas_Object *obj)
+{
+   ELM_CHECK_WIDTYPE(obj, widtype) ELM_INPUT_PANEL_LANG_AUTOMATIC;
+   Widget_Data *wd = elm_widget_data_get(obj);
+   if (!wd) return ELM_INPUT_PANEL_LANG_AUTOMATIC;
+
+   return wd->input_panel_lang;
+}
+
+EAPI void
+elm_entry_input_panel_imdata_set(Evas_Object *obj, const void *data, int len)
+{
+   ELM_CHECK_WIDTYPE(obj, widtype);
+   Widget_Data *wd = elm_widget_data_get(obj);
+   if (!wd) return;
+
+   if (wd->input_panel_imdata)
+     free(wd->input_panel_imdata);
+
+   wd->input_panel_imdata = calloc(1, len);
+   wd->input_panel_imdata_len = len;
+   memcpy(wd->input_panel_imdata, data, len);
+
+   edje_object_part_text_input_panel_imdata_set(wd->ent, "elm.text", wd->input_panel_imdata, wd->input_panel_imdata_len);
+}
+
+EAPI void
+elm_entry_input_panel_imdata_get(const Evas_Object *obj, void *data, int *len)
+{
+   ELM_CHECK_WIDTYPE(obj, widtype);
+   Widget_Data *wd = elm_widget_data_get(obj);
+   if (!wd) return;
+
+   edje_object_part_text_input_panel_imdata_get(wd->ent, "elm.text", data, len);
+}
+
+EAPI void
+elm_text_input_panel_return_key_type_set(Evas_Object *obj, Elm_Input_Panel_Return_Key_Type return_key_type)
+{
+   ELM_CHECK_WIDTYPE(obj, widtype);
+   Widget_Data *wd = elm_widget_data_get(obj);
+   if (!wd) return;
+
+   wd->input_panel_return_key_type = return_key_type;
+
+   edje_object_part_text_input_panel_return_key_type_set(wd->ent, "elm.text", return_key_type);
+}
+
+EAPI Elm_Input_Panel_Return_Key_Type
+elm_entry_input_panel_return_key_type_get(const Evas_Object *obj)
+{
+   ELM_CHECK_WIDTYPE(obj, widtype) ELM_INPUT_PANEL_RETURN_KEY_TYPE_DEFAULT;
+   Widget_Data *wd = elm_widget_data_get(obj);
+   if (!wd) return ELM_INPUT_PANEL_RETURN_KEY_TYPE_DEFAULT;
+
+   return wd->input_panel_return_key_type;
+}
+
+EAPI void
+elm_entry_input_panel_return_key_disabled_set(Evas_Object *obj, Eina_Bool disabled)
+{
+   ELM_CHECK_WIDTYPE(obj, widtype);
+   Widget_Data *wd = elm_widget_data_get(obj);
+   if (!wd) return;
+
+   wd->input_panel_return_key_disabled = disabled;
+
+   edje_object_part_text_input_panel_return_key_disabled_set(wd->ent, "elm.text", disabled);
+}
+
+EAPI Eina_Bool
+elm_entry_input_panel_return_key_disabled_get(const Evas_Object *obj)
+{
+   ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
+   Widget_Data *wd = elm_widget_data_get(obj);
+   if (!wd) return EINA_FALSE;
+
+   return wd->input_panel_return_key_disabled;
+}
 
index e7c0f38..ff5f933 100644 (file)
@@ -34,12 +34,30 @@ typedef enum
 
 typedef enum
 {
+   ELM_INPUT_PANEL_LANG_AUTOMATIC,    /**< Automatic */
+   ELM_INPUT_PANEL_LANG_ALPHABET      /**< Alphabet */
+} Elm_Input_Panel_Lang;
+
+typedef enum
+{
    ELM_AUTOCAPITAL_TYPE_NONE, /**< No auto-capitalization when typing */
    ELM_AUTOCAPITAL_TYPE_WORD, /**< Autocapitalize each word typed */
    ELM_AUTOCAPITAL_TYPE_SENTENCE, /**< Autocapitalize the start of each sentence */
    ELM_AUTOCAPITAL_TYPE_ALLCHARACTER, /**< Autocapitalize all letters */
 } Elm_Autocapital_Type; /**< Choose method of auto-capitalization */
 
+typedef enum
+{
+   ELM_INPUT_PANEL_RETURN_KEY_TYPE_DEFAULT,
+   ELM_INPUT_PANEL_RETURN_KEY_TYPE_DONE,
+   ELM_INPUT_PANEL_RETURN_KEY_TYPE_GO,
+   ELM_INPUT_PANEL_RETURN_KEY_TYPE_JOIN,
+   ELM_INPUT_PANEL_RETURN_KEY_TYPE_LOGIN,
+   ELM_INPUT_PANEL_RETURN_KEY_TYPE_NEXT,
+   ELM_INPUT_PANEL_RETURN_KEY_TYPE_SEARCH,
+   ELM_INPUT_PANEL_RETURN_KEY_TYPE_SEND
+} Elm_Input_Panel_Return_Key_Type;
+
 /**
  * @defgroup Entry Entry
  *
@@ -1133,6 +1151,87 @@ EAPI void                   elm_entry_input_panel_show(Evas_Object *obj);
 EAPI void                   elm_entry_input_panel_hide(Evas_Object *obj);
 
 /**
+ * Set the language mode of the input panel.
+ *
+ * This API can be used if you want to show the alphabet keyboard mode. 
+ *
+ * @param obj The entry object
+ * @param lang language to be set to the input panel.
+ */
+EAPI void                   elm_entry_input_panel_language_set(Evas_Object *obj, Elm_Input_Panel_Lang lang);
+
+/**
+ * Get the language mode of the input panel.
+ *
+ * See @ref elm_entry_input_panel_language_set for more details.
+ *
+ * @param obj The entry object
+ * @return input panel language type
+ */
+EAPI Elm_Input_Panel_Lang   elm_entry_input_panel_language_get(const Evas_Object *obj);
+
+/**
+ * Set the input panel-specific data to deliver to the input panel.
+ *
+ * This API is used by applications to deliver specific data to the input panel.
+ * The data format MUST be negotiated by both application and the input panel.
+ * The size and format of data are defined by the input panel.
+ *
+ * @param obj The entry object
+ * @param data The specific data to be set to the input panel.
+ * @param len the length of data, in bytes, to send to the input panel
+ */
+EAPI void                   elm_entry_input_panel_imdata_set(Evas_Object *obj, const void *data, int len);
+
+/**
+ * Get the specific data of the current input panel.
+ *
+ * See @ref elm_entry_input_panel_imdata_set for more details. 
+ *
+ * @param obj The entry object
+ * @param data The specific data to be got from the input panel
+ * @param len The length of data
+ */
+EAPI void                   elm_entry_input_panel_imdata_get(const Evas_Object *obj, void *data, int *len);
+
+/**
+ * Set the "return" key type. This type is used to set string or icon on the "return" key of the input panel.
+ *
+ * An input panel displays the string or icon associated with this type
+ *
+ * @param obj The entry object
+ * @param return_key_type The type of "return" key on the input panel
+ */
+EAPI void                   elm_text_input_panel_return_key_type_set(Evas_Object *obj, Elm_Input_Panel_Return_Key_Type return_key_type);
+
+/**
+ * Get the "return" key type.
+ *
+ * @see elm_entry_input_panel_return_key_type_set() for more details
+ *
+ * @param obj The entry object
+ * @return The type of "return" key on the input panel
+ */
+EAPI Elm_Input_Panel_Return_Key_Type elm_entry_input_panel_return_key_type_get(const Evas_Object *obj);
+
+/**
+ * Set the return key on the input panel to be disabled.
+ *
+ * @param obj The entry object
+ * @param disabled The state to put in in: @c EINA_TRUE for
+ *        disabled, @c EINA_FALSE for enabled 
+ */
+EAPI void                   elm_entry_input_panel_return_key_disabled_set(Evas_Object *obj, Eina_Bool disabled);
+
+/**
+ * Get whether the return key on the input panel should be disabled or not.
+ *
+ * @param obj The entry object
+ * @return EINA_TRUE if it should be disabled
+ */
+EAPI Eina_Bool              elm_entry_input_panel_return_key_disabled_get(const Evas_Object *obj);
+
+/**
  * Reset the input method context of the entry if needed. 
  *
  * This can be necessary in the case where modifying the buffer would confuse on-going input method behavior