Add input panel layout option 22/315922/1
authorJihoon Kim <jihoon48.kim@samsung.com>
Fri, 6 Dec 2024 07:59:07 +0000 (16:59 +0900)
committerJihoon Kim <jihoon48.kim@samsung.com>
Fri, 6 Dec 2024 07:59:07 +0000 (16:59 +0900)
Change-Id: If393bba121b3f0d048d2f3d5ac80c1c79ad6e178
Signed-off-by: Jihoon Kim <jihoon48.kim@samsung.com>
inc/w-input-selector.h
src/w-input-keyboard.cpp

index 7d730a71e2fd56f2ffd5503fbb2484ae82c02332..1c5e79e1b0106ff15b58a3c7dca4086b458dc942 100644 (file)
@@ -122,6 +122,7 @@ struct _InputKeyboardData
        string return_key_type;
        int max_text_length;
        int cursor_position_set;
+       Elm_Input_Panel_Layout input_panel_layout;
 };
 typedef struct _InputKeyboardData InputKeyboardData;
 
index 52a07516d0543d99119f1f1f6cb741bad8820644..d050cbc8854fa76a346e0f8b83adf8e49827559b 100644 (file)
 extern InputKeyboardData g_input_keyboard_data;
 extern App_Data* app_data;
 
-Evas_Object *entry;
+static Evas_Object *entry;
+
+struct _input_panel_layout_item {
+       const char *layout_string;
+       Elm_Input_Panel_Layout input_panel_layout;
+};
+
+static struct _input_panel_layout_item _input_panel_layout_items[] = {
+       { "Normal", ELM_INPUT_PANEL_LAYOUT_NORMAL },
+       { "Number", ELM_INPUT_PANEL_LAYOUT_NUMBER },
+       { "Email", ELM_INPUT_PANEL_LAYOUT_EMAIL },
+       { "Url", ELM_INPUT_PANEL_LAYOUT_URL },
+       { "Phonenumber", ELM_INPUT_PANEL_LAYOUT_PHONENUMBER },
+       { "Ip", ELM_INPUT_PANEL_LAYOUT_IP },
+       { "Month", ELM_INPUT_PANEL_LAYOUT_MONTH },
+       { "Numberonly", ELM_INPUT_PANEL_LAYOUT_NUMBERONLY },
+       { "Datetime", ELM_INPUT_PANEL_LAYOUT_NUMBERONLY },
+       { "Emoticon", ELM_INPUT_PANEL_LAYOUT_EMOTICON },
+       { NULL, ELM_INPUT_PANEL_LAYOUT_NORMAL }
+};
+
+static Elm_Input_Panel_Layout convert_string_to_input_panel_layout(const char *input_panel_layout)
+{
+       Elm_Input_Panel_Layout layout = ELM_INPUT_PANEL_LAYOUT_NORMAL;
+
+       unsigned int idx = 0;
+
+       while (_input_panel_layout_items[idx].layout_string != NULL) {
+               if (strcasecmp(_input_panel_layout_items[idx].layout_string, input_panel_layout) == 0) {
+                       layout = _input_panel_layout_items[idx].input_panel_layout;
+                       break;
+               }
+               idx++;
+       }
+
+    return layout;
+}
 
 bool input_keyboard_init(app_control_h app_control)
 {
@@ -37,6 +73,7 @@ bool input_keyboard_init(app_control_h app_control)
        char *return_key_type = NULL;
        char *max_text_length = NULL;
        char *cursor_position_set = NULL;
+       char *input_panel_layout = NULL;
 
        input_keyboard_deinit();
 
@@ -96,6 +133,17 @@ bool input_keyboard_init(app_control_h app_control)
        free(cursor_position_set);
        cursor_position_set = NULL;
 
+       // input panel layout
+       ret = app_control_get_extra_data(app_control, "http://tizen.org/appcontrol/data/input_panel_layout", &input_panel_layout);
+       if (ret == APP_CONTROL_ERROR_NONE) {
+               if (input_panel_layout) {
+                       g_input_keyboard_data.input_panel_layout = convert_string_to_input_panel_layout(input_panel_layout);
+               }
+       }
+
+       free(input_panel_layout);
+       input_panel_layout = NULL;
+
        return true;
 }
 
@@ -203,6 +251,9 @@ void create_fullscreen_editor(void *data)
        if (g_input_keyboard_data.cursor_position_set != 0) {
                elm_entry_cursor_pos_set(entry, g_input_keyboard_data.cursor_position_set);
        }
+
+       elm_entry_input_panel_layout_set(entry, g_input_keyboard_data.input_panel_layout);
+
        evas_object_show(entry);
        elm_box_pack_end(box, entry);
 
@@ -270,6 +321,8 @@ static Evas_Object *create_multiline_editfield_layout(Evas_Object *parent, void
                elm_entry_cursor_pos_set(entry, g_input_keyboard_data.cursor_position_set);
        }
 
+       elm_entry_input_panel_layout_set(entry, g_input_keyboard_data.input_panel_layout);
+
        evas_object_show(entry);
        elm_object_part_content_set(editfield, "elm.swallow.content", entry);