Add isf_control_show_ise_selector API 22/31522/1
authorJihoon Kim <jihoon48.kim@samsung.com>
Sun, 16 Mar 2014 00:38:02 +0000 (09:38 +0900)
committerJihoon Kim <jihoon48.kim@samsung.com>
Fri, 5 Dec 2014 12:41:53 +0000 (21:41 +0900)
Change-Id: Iab04a6281af0b2fb89389f64d56810194c72da15

ism/demos/isf_imcontrol_efl.cpp
ism/extras/efl_panel/isf_panel_efl.cpp
ism/src/isf_control.cpp
ism/src/isf_control.h
ism/src/isf_imcontrol_client.cpp
ism/src/isf_imcontrol_client.h
ism/src/scim_panel_agent.cpp

index 3887190a90ab74ae09b2bdafec4341097725d913..3bbbf9a09c5f2f8dc5f76a12c0ad76740b025ab4 100644 (file)
@@ -40,7 +40,8 @@ enum {
     GET_ACTIVE_ISE,
     GET_ISE_INFO,
     GET_ISE_LIST,
-    RESET_DEFAULT_ISE
+    RESET_DEFAULT_ISE,
+    SHOW_ISE_SELECTOR
 };
 
 const char *api_list[]={
@@ -55,7 +56,8 @@ const char *api_list[]={
     "GET ACTIVE ISE",
     "GET ACTIVE ISE INFO",
     "GET ISE LIST",
-    "RESET DEFAULT ISE"
+    "RESET DEFAULT ISE",
+    "SHOW_ISE_SELECTOR"
 };
 
 static void test_input_panel_geometry_get (void *data, Evas_Object *obj, void *event_info)
@@ -190,6 +192,15 @@ void test_reset_default_ise (void *data, Evas_Object *obj, void *event_info)
         printf (" Reset default ISE is failed!!!\n");
 }
 
+void test_show_ise_selector (void *data, Evas_Object *obj, void *event_info)
+{
+    int ret = isf_control_show_ise_selector ();
+    if (ret == 0)
+        printf (" Show ISE selector is successful!\n");
+    else
+        printf (" Show ISE selector is failed!!!\n");
+}
+
 char *gli_label_get (void *data, Evas_Object *obj, const char *part)
 {
     int j = (int)data;
@@ -236,6 +247,9 @@ static void test_api (void *data, Evas_Object *obj, void *event_info)
     case RESET_DEFAULT_ISE:
         test_reset_default_ise (NULL, obj, event_info);
         break;
+    case SHOW_ISE_SELECTOR:
+        test_show_ise_selector (NULL, obj, event_info);
+        break;
     default:
         break;
     }
index 128b754aab2f54c54523014f3e3f93fa37e67fdd..3ebb763bc4534bdd6c48e696a4e21d16279758c5 100644 (file)
@@ -227,6 +227,7 @@ static void       slot_set_hardware_keyboard_mode      (void);
 static void       slot_get_ise_state                   (int &state);
 static void       slot_start_default_ise               (void);
 static void       slot_stop_default_ise                (void);
+static void       slot_show_ise_selector               (void);
 
 static Eina_Bool  panel_agent_handler                  (void *data, Ecore_Fd_Handler *fd_handler);
 
@@ -241,6 +242,13 @@ static void       minictrl_clicked_cb                  (void *data, Evas_Object
 #ifdef HAVE_MINICONTROL
 static void       ise_selector_minictrl_clicked_cb     (void *data, Evas_Object *o, const char *emission, const char *source);
 #endif
+static void       ise_selector_popup_del_cb (void *data, Evas *evas, Evas_Object *obj, void *event_info);
+static void       ise_selector_block_clicked_cb (void *data, Evas_Object *obj, void *event_info);
+static void       isf_setting_cb (void *data, Evas_Object *obj, void *event_info);
+static char      *gl_ise_name_get (void *data, Evas_Object *obj, const char *part);
+static Evas_Object *gl_icon_get (void *data, Evas_Object *obj, const char *part);
+static void       gl_ise_selected_cb (void *data, Evas_Object *obj, void *event_info);
+static void       ise_selector_focus_out_cb (void *data, Evas *e, void *event_info);
 
 /////////////////////////////////////////////////////////////////////////////
 // Declaration of internal variables.
@@ -557,6 +565,73 @@ static void destroy_ise_selector ()
     }
 }
 
+static void create_ise_selector ()
+{
+    unsigned int index;
+    Evas_Object *genlist;
+    Evas_Object *btn;
+    Evas_Object *box;
+    int height;
+    unsigned int item_count;
+
+    destroy_ise_selector ();
+
+    /* Create center popup */
+    _ise_selector = center_popup_add (NULL, "IMESelector", "IMESelector");
+    evas_object_event_callback_add (_ise_selector, EVAS_CALLBACK_DEL, ise_selector_popup_del_cb, NULL);
+    ea_object_event_callback_add (_ise_selector, EA_CALLBACK_BACK, ea_popup_back_cb, NULL);
+    evas_object_smart_callback_add (_ise_selector, "block,clicked", ise_selector_block_clicked_cb, NULL);
+    elm_object_part_text_set (_ise_selector, "title,text", _("Select input method"));
+
+    /* Create "Set up input methods" button */
+    btn = elm_button_add (_ise_selector);
+    elm_object_style_set (btn, "popup");
+    elm_object_text_set (btn, _("Set up input methods"));
+    elm_object_part_content_set (_ise_selector, "button1", btn);
+    evas_object_smart_callback_add (btn, "clicked", isf_setting_cb, _ise_selector);
+
+    /* Create box for adjusting the height of list */
+    box = elm_box_add (_ise_selector);
+    evas_object_size_hint_weight_set (box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+    itc.item_style = "1text.1icon/popup";
+    itc.func.text_get = gl_ise_name_get;
+    itc.func.content_get = gl_icon_get;
+    itc.func.state_get = NULL;
+    itc.func.del = NULL;
+
+    genlist = elm_genlist_add (box);
+    evas_object_size_hint_weight_set (genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+    evas_object_size_hint_align_set (genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+    for (index = 0; index < _uuids.size (); index++) {
+        if (_modes[index] ==  _panel_agent->get_current_toolbar_mode ())
+            elm_genlist_item_append (genlist, &itc, (void *) index, NULL, ELM_GENLIST_ITEM_NONE, gl_ise_selected_cb, (void *)index);
+    }
+
+    elm_box_pack_end (box, genlist);
+    evas_object_show (genlist);
+
+    /* The height of popup being adjusted by application here based on app requirement */
+    item_count = elm_genlist_items_count (genlist);
+
+    if (item_count > MAX_SELECT_IME_ITEM)
+        height = SELECT_IME_ITEM_HEIGHT * MAX_SELECT_IME_ITEM;
+    else
+        height = SELECT_IME_ITEM_HEIGHT*item_count;
+
+    evas_object_size_hint_min_set (box, 618, height);
+    evas_object_show (box);
+
+    elm_object_content_set (_ise_selector, box);
+    evas_object_show (_ise_selector);
+
+    Evas_Object *center_popup_win = center_popup_win_get (_ise_selector);
+    evas_event_callback_add (evas_object_evas_get (center_popup_win), EVAS_CALLBACK_CANVAS_FOCUS_OUT, ise_selector_focus_out_cb, NULL);
+
+    efl_set_transient_for_app_window (elm_win_xwindow_get (center_popup_win));
+}
+
 static Eina_Bool delete_ise_launch_timer ()
 {
     if (_ise_launch_timer) {
@@ -659,61 +734,7 @@ static void ise_selector_minictrl_clicked_cb (void *data, Evas_Object *o, const
 {
     SCIM_DEBUG_MAIN (3) << __FUNCTION__ << "...\n";
 
-    unsigned int index;
-    Evas_Object *genlist;
-    Evas_Object *box;
-    int height;
-    unsigned int item_count;
-
-    destroy_ise_selector ();
-
-    /* Create center popup */
-    _ise_selector = center_popup_add (NULL, "IMESelector", "IMESelector");
-    evas_object_event_callback_add (_ise_selector, EVAS_CALLBACK_DEL, ise_selector_popup_del_cb, NULL);
-    ea_object_event_callback_add (_ise_selector, EA_CALLBACK_BACK, ea_popup_back_cb, NULL);
-    evas_object_smart_callback_add (_ise_selector, "block,clicked", ise_selector_block_clicked_cb, NULL);
-    elm_object_part_text_set (_ise_selector, "title,text", _("Select input method"));
-
-    /* Create box for adjusting the height of list */
-    box = elm_box_add (_ise_selector);
-    evas_object_size_hint_weight_set (box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-
-    itc.item_style = "1text.1icon/popup";
-    itc.func.text_get = gl_ise_name_get;
-    itc.func.content_get = gl_icon_get;
-    itc.func.state_get = NULL;
-    itc.func.del = NULL;
-
-    genlist = elm_genlist_add (box);
-    evas_object_size_hint_weight_set (genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-    evas_object_size_hint_align_set (genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
-
-    for (index = 0; index < _uuids.size (); index++) {
-        if (_modes[index] ==  _panel_agent->get_current_toolbar_mode ())
-            elm_genlist_item_append (genlist, &itc, (void *) index, NULL, ELM_GENLIST_ITEM_NONE, gl_ise_selected_cb, (void *)index);
-    }
-
-    elm_box_pack_end (box, genlist);
-    evas_object_show (genlist);
-
-    /* The height of popup being adjusted by application here based on app requirement */
-    item_count = elm_genlist_items_count (genlist);
-
-    if (item_count > MAX_SELECT_IME_ITEM)
-        height = SELECT_IME_ITEM_HEIGHT * MAX_SELECT_IME_ITEM;
-    else
-        height = SELECT_IME_ITEM_HEIGHT*item_count;
-
-    evas_object_size_hint_min_set (box, 618, height);
-    evas_object_show (box);
-
-    elm_object_content_set (_ise_selector, box);
-    evas_object_show (_ise_selector);
-
-    Evas_Object *center_popup_win = center_popup_win_get (_ise_selector);
-    evas_event_callback_add (evas_object_evas_get (center_popup_win), EVAS_CALLBACK_CANVAS_FOCUS_OUT, ise_selector_focus_out_cb, NULL);
-
-    efl_set_transient_for_app_window (elm_win_xwindow_get (center_popup_win));
+    create_ise_selector ();
 }
 #endif
 
@@ -3593,6 +3614,7 @@ static bool initialize_panel_agent (const String &config, const String &display,
     _panel_agent->signal_connect_get_ise_state              (slot (slot_get_ise_state));
     _panel_agent->signal_connect_start_default_ise          (slot (slot_start_default_ise));
     _panel_agent->signal_connect_stop_default_ise           (slot (slot_stop_default_ise));
+    _panel_agent->signal_connect_show_panel                 (slot (slot_show_ise_selector));
 
     std::vector<String> load_ise_list;
     _panel_agent->get_active_ise_list (load_ise_list);
@@ -4944,6 +4966,13 @@ static void slot_register_helper_properties (int id, const PropertyList &props)
     }
 }
 
+static void slot_show_ise_selector (void)
+{
+    SCIM_DEBUG_MAIN (3) << __FUNCTION__ << "...\n";
+
+    create_ise_selector ();
+}
+
 static void slot_show_ise (void)
 {
     SCIM_DEBUG_MAIN (3) << __FUNCTION__ << "...\n";
index 183ead9341f98f8f12879ac2a17c4392429a2de6..1897ebd147d78a4f8b635a4a01edaebb092704fe 100644 (file)
@@ -152,6 +152,17 @@ EAPI int isf_control_set_initial_ise_by_uuid (const char *uuid)
     return 0;
 }
 
+EAPI int isf_control_show_ise_selector (void)
+{
+    IMControlClient imcontrol_client;
+    imcontrol_client.open_connection ();
+    imcontrol_client.prepare ();
+    imcontrol_client.show_ise_selector ();
+    imcontrol_client.send ();
+    imcontrol_client.close_connection ();
+    return 0;
+}
+
 /*
 vi:ts=4:nowrap:ai:expandtab
 */
index 8a63f74d9b51a8d3d7a5b1f54dbb2489a38247e7..e7fd378e4fcdec2c3b1c6187c3d5b02bd0f5d385 100644 (file)
@@ -122,6 +122,13 @@ EAPI int isf_control_reset_ise_option (void);
  */
 EAPI int isf_control_set_initial_ise_by_uuid (const char *uuid);
 
+/**
+ * @brief Show ISE selector.
+ *
+ * @return 0 if successfully, otherwise return -1;
+ */
+EAPI int isf_control_show_ise_selector ();
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */
index fa82fe620d9a389f7c3ccc21ab77d44b166b61fc..970310de61dc70bff2fa79fa057a8b7329b072c9 100644 (file)
@@ -258,6 +258,10 @@ public:
     void set_active_ise_to_default (void) {
         m_trans.put_command (ISM_TRANS_CMD_RESET_DEFAULT_ISE);
     }
+
+    void show_ise_selector (void) {
+        m_trans.put_command (ISM_TRANS_CMD_SHOW_ISF_CONTROL);
+    }
 };
 
 IMControlClient::IMControlClient ()
@@ -338,6 +342,11 @@ void IMControlClient::set_active_ise_to_default (void)
 {
     m_impl->set_active_ise_to_default ();
 }
+
+void IMControlClient::show_ise_selector (void)
+{
+    m_impl->show_ise_selector ();
+}
 };
 
 /*
index 6a0fd9b45c09065f005185715bc8946b72259595..b11168026d13681567d4a6a698a082e96c5b7085 100644 (file)
@@ -57,6 +57,7 @@ public:
     void reset_ise_option (void);
     void set_active_ise_to_default (void);
     void set_initial_ise_by_uuid (const char* uuid);
+    void show_ise_selector ();
 };
 
 }
index c14f0b6d9925e59f08e2f2efbe6d226d820a644a..a9825e8a01e90408c16445c21b85e49b73b38fa5 100644 (file)
@@ -3696,6 +3696,8 @@ private:
                     reset_ise_option (client_id);
                 else if (cmd == ISM_TRANS_CMD_RESET_DEFAULT_ISE)
                     reset_default_ise (client_id);
+                else if (cmd == ISM_TRANS_CMD_SHOW_ISF_CONTROL)
+                    show_isf_panel (client_id);
             }
 
             socket_transaction_end ();