Added show ISE option window command 29/34129/1
authorJi-hoon Lee <dalton.lee@samsung.com>
Wed, 3 Dec 2014 05:52:37 +0000 (14:52 +0900)
committerLi Zhang <li2012.zhang@samsung.com>
Wed, 21 Jan 2015 10:11:20 +0000 (18:11 +0800)
Change-Id: I03bc857fb7771256ae82ce26b3961679ee6ad03e

ism/demos/isf_imcontrol_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_helper.cpp
ism/src/scim_helper.h
ism/src/scim_panel_agent.cpp
ism/src/scim_trans_commands.h

index 8fb217b..f51cdf6 100644 (file)
@@ -43,6 +43,7 @@ static void test_get_initial_ise (void *data, Evas_Object *obj, void *event_info
 static void test_get_ise_count (void *data, Evas_Object *obj, void *event_info);
 static void test_reset_default_ise (void *data, Evas_Object *obj, void *event_info);
 static void test_show_ise_selector (void *data, Evas_Object *obj, void *event_info);
+static void test_show_ise_option (void *data, Evas_Object *obj, void *event_info);
 
 static struct _menu_item imcontrol_menu_its[] = {
     { "PANEL GEOMETRY GET", test_input_panel_geometry_get },
@@ -60,6 +61,7 @@ static struct _menu_item imcontrol_menu_its[] = {
     { "GET ISE COUNT", test_get_ise_count },
     { "RESET DEFAULT ISE", test_reset_default_ise },
     { "SHOW ISE SELECTOR", test_show_ise_selector },
+    { "SHOW ISE OPTION", test_show_ise_option },
 
     /* do not delete below */
     { NULL, NULL}
@@ -211,6 +213,15 @@ static void test_show_ise_selector (void *data, Evas_Object *obj, void *event_in
         LOGD ("Show ISE selector is failed!!!\n");
 }
 
+static void test_show_ise_option (void *data, Evas_Object *obj, void *event_info)
+{
+    int ret = isf_control_show_ise_option_window ();
+    if (ret == 0)
+        LOGD ("Show ISE option window is successful!\n");
+    else
+        LOGW ("Show ISE option window is failed!!!\n");
+}
+
 static void test_get_initial_ise (void *data, Evas_Object *obj, void *event_info)
 {
     char *uuid = NULL;
index ca460e4..47f17d7 100644 (file)
@@ -205,6 +205,17 @@ EAPI int isf_control_get_ise_count (ISE_TYPE_T type)
     return ise_count;
 }
 
+EAPI int isf_control_show_ise_option_window (void)
+{
+    IMControlClient imcontrol_client;
+    imcontrol_client.open_connection ();
+    imcontrol_client.prepare ();
+    imcontrol_client.show_ise_option_window ();
+    imcontrol_client.send ();
+    imcontrol_client.close_connection ();
+    return 0;
+}
+
 /*
 vi:ts=4:nowrap:ai:expandtab
 */
index 5796f7e..a6f1b66 100644 (file)
@@ -148,6 +148,13 @@ EAPI int isf_control_show_ise_selector ();
  */
 EAPI int isf_control_get_ise_count (ISE_TYPE_T type);
 
+/**
+ * @brief Show ISE's option window.
+ *
+ * @return 0 if successfully, otherwise return -1;
+ */
+EAPI int isf_control_show_ise_option_window ();
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */
index 5c880d0..cca9174 100644 (file)
@@ -275,6 +275,10 @@ public:
     void show_ise_selector (void) {
         m_trans.put_command (ISM_TRANS_CMD_SHOW_ISF_CONTROL);
     }
+
+    void show_ise_option_window (void) {
+        m_trans.put_command (ISM_TRANS_CMD_SHOW_ISE_OPTION_WINDOW);
+    }
 };
 
 IMControlClient::IMControlClient ()
@@ -360,6 +364,12 @@ void IMControlClient::show_ise_selector (void)
 {
     m_impl->show_ise_selector ();
 }
+
+void IMControlClient::show_ise_option_window (void)
+{
+    m_impl->show_ise_option_window ();
+}
+
 };
 
 /*
index c0ab4eb..fc3d972 100644 (file)
@@ -58,6 +58,7 @@ public:
     void set_active_ise_to_default (void);
     void set_initial_ise_by_uuid (const char* uuid);
     void show_ise_selector ();
+    void show_ise_option_window ();
 };
 
 }
index fd9efff..c47c30b 100644 (file)
@@ -176,6 +176,7 @@ public:
     HelperAgentSignalUintVoid           signal_set_input_mode;
     HelperAgentSignalUintVoid           signal_set_input_hint;
     HelperAgentSignalUintVoid           signal_update_bidi_direction;
+    HelperAgentSignalVoid               signal_show_option_window;
 
 public:
     HelperAgentImpl () : magic (0), magic_active (0), timeout (-1), focused_ic ((uint32) -1) { }
@@ -845,6 +846,11 @@ HelperAgent::filter_event ()
                     m_impl->signal_update_bidi_direction (this, bidi_direction);
                 break;
             }
+            case ISM_TRANS_CMD_SHOW_ISE_OPTION_WINDOW:
+            {
+                m_impl->signal_show_option_window (this, ic, ic_uuid);
+                break;
+            }
             default:
                 break;
         }
@@ -2474,6 +2480,20 @@ HelperAgent::signal_connect_longpress_candidate (HelperAgentSlotInt *slot)
     return m_impl->signal_longpress_candidate.connect (slot);
 }
 
+/**
+ * @brief Connect a slot to Helper show option window.
+ *
+ * This signal is used to do request the ISE to show option window.
+ *
+ * The prototype of the slot is:
+ * void show_option_window (const HelperAgent *agent, int ic, const String &uuid);
+ */
+Connection
+HelperAgent::signal_connect_show_option_window (HelperAgentSlotVoid *slot)
+{
+    return m_impl->signal_show_option_window.connect (slot);
+}
+
 } /* namespace scim */
 
 /*
index fb59401..d2d6d27 100644 (file)
@@ -1239,6 +1239,16 @@ public:
      * void update_bidi_direction (const HelperAgent *agent, uint32 &bidi_direction);
      */
     Connection signal_connect_update_bidi_direction                 (HelperAgentSlotUintVoid            *slot);
+
+    /**
+     * @brief Connect a slot to Helper show option window.
+     *
+     * This signal is used to do request the ISE to show option window.
+     *
+     * The prototype of the slot is:
+     * void show_option_window (const HelperAgent *agent, int ic, const String &uuid);
+     */
+    Connection signal_connect_show_option_window                    (HelperAgentSlotVoid                *slot);
 };
 
 /**  @} */
index f18e51f..3286d46 100644 (file)
@@ -1774,6 +1774,33 @@ public:
         return false;
     }
 
+    bool show_helper_option_window (const String &uuid)
+    {
+        HelperClientIndex::iterator it = m_helper_client_index.find (m_current_helper_uuid);
+
+        if (it != m_helper_client_index.end ()) {
+            int client;
+            uint32 context;
+            Socket client_socket (it->second.id);
+            uint32 ctx;
+
+            get_focused_context (client, context);
+            ctx = get_helper_ic (client, context);
+
+            m_send_trans.clear ();
+            m_send_trans.put_command (SCIM_TRANS_CMD_REPLY);
+            m_send_trans.put_data (ctx);
+            m_send_trans.put_data (uuid);
+            m_send_trans.put_command (ISM_TRANS_CMD_SHOW_ISE_OPTION_WINDOW);
+            m_send_trans.write_to_socket (client_socket);
+
+            ISF_SAVE_LOG ("Send ISM_TRANS_CMD_SHOW_ISE_OPTION_WINDOW message\n");
+
+            return true;
+        }
+        return false;
+    }
+
     void show_isf_panel (int client_id)
     {
         SCIM_DEBUG_MAIN(4) << "PanelAgent::show_isf_panel ()\n";
@@ -2899,6 +2926,20 @@ public:
         trans.write_to_socket (client_socket);
     }
 
+    void show_ise_option_window (int client_id)
+    {
+        SCIM_DEBUG_MAIN(4) << "PanelAgent::show_ise_panel ()\n";
+
+        String initial_uuid = scim_global_config_read (String (SCIM_GLOBAL_CONFIG_INITIAL_ISE_UUID), String (""));
+        String default_uuid = scim_global_config_read (String (SCIM_GLOBAL_CONFIG_DEFAULT_ISE_UUID), String (""));
+
+        ISF_SAVE_LOG ("prepare to show ISE option window %d [%s] [%s]\n", client_id, initial_uuid.c_str(), default_uuid.c_str());
+
+        if (TOOLBAR_HELPER_MODE == m_current_toolbar_mode) {
+            show_helper_option_window (m_current_helper_uuid);
+        }
+    }
+
     Connection signal_connect_reload_config              (PanelAgentSlotVoid                *slot)
     {
         return m_signal_reload_config.connect (slot);
@@ -3480,6 +3521,9 @@ private:
                     } else if (cmd == ISM_TRANS_CMD_UPDATE_BIDI_DIRECTION) {
                         update_ise_bidi_direction (client_id);
                         continue;
+                    } else if (cmd == ISM_TRANS_CMD_SHOW_ISE_OPTION_WINDOW) {
+                        show_ise_option_window (client_id);
+                        continue;
                     }
 
                     current = last = false;
@@ -3794,6 +3838,8 @@ private:
                     reset_default_ise (client_id);
                 else if (cmd == ISM_TRANS_CMD_SHOW_ISF_CONTROL)
                     show_isf_panel (client_id);
+                else if (cmd == ISM_TRANS_CMD_SHOW_ISE_OPTION_WINDOW)
+                    show_ise_option_window (client_id);
             }
 
             socket_transaction_end ();
index 5523e65..37df902 100644 (file)
@@ -650,6 +650,7 @@ const int ISM_TRANS_CMD_GET_RETURN_KEY_DISABLE            = 1121;
 const int ISM_TRANS_CMD_SET_INPUT_MODE                    = 1122;
 const int ISM_TRANS_CMD_SET_INPUT_HINT                    = 1123;
 const int ISM_TRANS_CMD_UPDATE_BIDI_DIRECTION             = 1124;
+const int ISM_TRANS_CMD_SHOW_ISE_OPTION_WINDOW            = 1125;
 
 /* ISE/Panel to IMControl */
 const int ISM_TRANS_CMD_UPDATE_ISE_INPUT_CONTEXT          = 1151;