e_magnifier: add stand_alone mode 55/201755/2 accepted/tizen/unified/20190320.082328 submit/tizen/20190319.081004
authorDoyoun Kang <doyoun.kang@samsung.com>
Tue, 19 Mar 2019 07:39:58 +0000 (16:39 +0900)
committerGwanglim Lee <gl77.lee@samsung.com>
Tue, 19 Mar 2019 08:04:52 +0000 (08:04 +0000)
Change-Id: I2c3a3f4f54acac0c2fb7643a87dd0e8d3bfcdd99

src/bin/e_info_client.c
src/bin/e_info_server.c
src/bin/e_magnifier.c
src/bin/e_magnifier.h

index b21ae8de68012b1111eeccb588b815221347ee87..d47758379e9fdcf6d535c8bc23d83c2de40d5a8a 100644 (file)
@@ -4794,6 +4794,35 @@ _e_info_client_memchecker(int argc, char **argv)
    printf("e20 dump log file under /tmp dir.\n");
 }
 
+static void
+_e_info_client_magnifier(int argc, char **argv)
+{
+   uint32_t op;
+
+   if (argc < 3)
+     {
+        printf("Error Check Args: enlightenment_info -magnifier [1: on, 0: off]\n");
+        return;
+     }
+
+   if (!strncmp(argv[2], "off", sizeof("off"))) op = 0;
+   else if (!strncmp(argv[2], "on", sizeof("on"))) op = 1;
+   else if (!strncmp(argv[2], "new", sizeof("new"))) op = 2;
+   else if (!strncmp(argv[2], "del", sizeof("del"))) op = 3;
+   else if (!strncmp(argv[2], "set_stand_alone", sizeof("set_stand_alone"))) op = 4;
+   else if (!strncmp(argv[2], "unset_stand_alone", sizeof("unset_stand_alone"))) op = 5;
+   else if (!strncmp(argv[2], "show", sizeof("show"))) op = 6;
+   else if (!strncmp(argv[2], "hide", sizeof("hide"))) op = 7;
+   else
+     {
+        printf("Error Check Args: enlightenment_info -magnifier [on/off]\n");
+        return;
+     }
+
+   if (!_e_info_client_eldbus_message_with_args("magnifier", NULL, "i", op))
+     printf("_e_info_client_eldbus_message_with_args error");
+}
+
 static void
 _cb_input_region_get(const Eldbus_Message *msg)
 {
@@ -5313,6 +5342,12 @@ static ProcInfo procs_to_execute[] =
       "Dump stack information by allocations",
       _e_info_client_memchecker
    },
+   {
+      "magnifier",
+      NULL,
+      "On/Off magnifier window",
+      _e_info_client_magnifier
+   },
 };
 
 static Eina_List *list_tracelogs = NULL;
index 6be763d89817be02e7cc7ff69da363cfab2d9cee..a28d887cd9585c830b633361226c0c2197218c24 100644 (file)
@@ -4631,6 +4631,63 @@ e_info_server_cb_effect_control(const Eldbus_Service_Interface *iface EINA_UNUSE
    return reply;
 }
 
+static Eldbus_Message *
+e_info_server_cb_magnifier(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eldbus_Message *msg)
+{
+   Eldbus_Message *reply = eldbus_message_method_return_new(msg);
+   uint32_t opcode;
+
+   if (!eldbus_message_arguments_get(msg, "i", &opcode))
+     {
+        ERR("Error getting arguments.");
+        return reply;
+     }
+
+   switch (opcode)
+     {
+      case 0: // magnifier off test
+         e_magnifier_stand_alone_mode_set(EINA_FALSE);
+         e_magnifier_hide(NULL);
+         e_magnifier_del();
+         break;
+
+      case 1: // magnifier on test
+         e_magnifier_new();
+         e_magnifier_stand_alone_mode_set(EINA_TRUE);
+         e_magnifier_show(NULL);
+         break;
+
+      case 2: // magnifier new
+         e_magnifier_new();
+         break;
+
+      case 3: // magnifier del
+         e_magnifier_del();
+         break;
+
+      case 4: // set stand_alone
+         e_magnifier_stand_alone_mode_set(EINA_TRUE);
+         break;
+
+      case 5: // unset stand_alone
+         e_magnifier_stand_alone_mode_set(EINA_FALSE);
+         break;
+
+      case 6: // magnifier show
+         e_magnifier_show(NULL);
+         break;
+
+      case 7: // magnifier hide
+         e_magnifier_hide(NULL);
+         break;
+
+      default:
+         break;
+     }
+
+   return reply;
+}
+
 static Eldbus_Message *
 e_info_server_cb_aux_message(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eldbus_Message *msg)
 {
@@ -6022,6 +6079,7 @@ static const Eldbus_Method methods[] = {
    { "deiconify_approve", ELDBUS_ARGS({"it", "option"}), ELDBUS_ARGS({"s", "deiconify_approve status"}), _e_info_server_cb_deiconify_approve, 0},
    { "key_repeat", ELDBUS_ARGS({"sii", "option"}), NULL, _e_info_server_cb_key_repeat, 0},
    { "dump_memchecker", NULL, NULL, _e_info_server_cb_memchecker, 0},
+   { "magnifier", ELDBUS_ARGS({"i", "magnifier"}), NULL, e_info_server_cb_magnifier, 0},
    { "input_region", ELDBUS_ARGS({"siiii", "options"}), ELDBUS_ARGS({"a(iiii)", "path"}), _e_info_server_cb_input_region, 0},
    { "hwc_wins", ELDBUS_ARGS({"i", "option"}), ELDBUS_ARGS({"as", "hwc wins info"}), _e_info_server_cb_hwc_wins_info_get, 0 },
    { NULL, NULL, NULL, NULL, 0 }
index 990d97a167246a746499c4aadf48f94fc9b98049..a8c19ff3b31d95235845ac3ddf9ccea13245ef4a 100644 (file)
@@ -718,8 +718,6 @@ e_magnifier_del(void)
 E_API Eina_Bool
 e_magnifier_show(E_Client *ec)
 {
-   Evas_Object *target_obj;
-
    ELOGF("MAGNIFIER", "SHOW Magnifier", NULL);
 
    if (!_e_magnifier_mgr) return EINA_FALSE;
@@ -735,22 +733,12 @@ e_magnifier_show(E_Client *ec)
 
    _e_magnifier_apply_zoom(_e_magnifier_mgr);
 
-   if (sd->stand_alone_mode)
-     {
-        target_obj = _e_magnifier_mgr;
-
-        evas_object_event_callback_add(target_obj, EVAS_CALLBACK_MOUSE_DOWN, _e_magnifier_cb_mouse_down_proxy, NULL);
-        evas_object_event_callback_add(target_obj, EVAS_CALLBACK_MOUSE_UP, _e_magnifier_cb_mouse_up_proxy, NULL);
-     }
-
    return EINA_TRUE;
 }
 
 E_API void
 e_magnifier_hide(E_Client *ec)
 {
-   Evas_Object *target_obj;
-
    ELOGF("MAGNIFIER", "HIDE Magnifier", NULL);
 
    if (!_e_magnifier_mgr) return;
@@ -763,15 +751,6 @@ e_magnifier_hide(E_Client *ec)
      }
 
    evas_object_hide(_e_magnifier_mgr);
-
-   if (sd->stand_alone_mode)
-     {
-        target_obj = _e_magnifier_mgr;
-
-        evas_object_event_callback_del(target_obj, EVAS_CALLBACK_MOUSE_DOWN, _e_magnifier_cb_mouse_down_proxy);
-        evas_object_event_callback_del(target_obj, EVAS_CALLBACK_MOUSE_UP, _e_magnifier_cb_mouse_up_proxy);
-     }
-
 }
 
 E_API Eina_Bool
@@ -887,6 +866,30 @@ _e_magnifier_owner_unset(E_Client *ec)
    evas_object_event_callback_del(ec->frame, EVAS_CALLBACK_RESIZE, _e_magnifier_cb_owner_move_resize);
 }
 
+static Eina_Bool
+_e_magnifier_stand_alone_mode_set(Evas_Object *magnifier_mgr, Eina_Bool set)
+{
+   if (!magnifier_mgr) return EINA_FALSE;
+   E_MAGNIFIER_SMART_DATA_GET_OR_RETURN(magnifier_mgr, sd) EINA_FALSE;
+
+   if (sd->stand_alone_mode == set)
+     return EINA_TRUE;
+
+   sd->stand_alone_mode = set;
+   if (sd->stand_alone_mode)
+     {
+        evas_object_event_callback_add(magnifier_mgr, EVAS_CALLBACK_MOUSE_DOWN, _e_magnifier_cb_mouse_down_proxy, NULL);
+        evas_object_event_callback_add(magnifier_mgr, EVAS_CALLBACK_MOUSE_UP, _e_magnifier_cb_mouse_up_proxy, NULL);
+     }
+   else
+     {
+        evas_object_event_callback_del(magnifier_mgr, EVAS_CALLBACK_MOUSE_DOWN, _e_magnifier_cb_mouse_down_proxy);
+        evas_object_event_callback_del(magnifier_mgr, EVAS_CALLBACK_MOUSE_UP, _e_magnifier_cb_mouse_up_proxy);
+     }
+
+   return EINA_TRUE;
+}
+
 E_API Eina_Bool
 e_magnifier_owner_set(E_Client *ec)
 {
@@ -908,6 +911,11 @@ e_magnifier_owner_set(E_Client *ec)
    sd->owner = ec;
    _e_magnifier_owner_set(ec);
 
+   if (ec && sd->stand_alone_mode)
+     {
+        _e_magnifier_stand_alone_mode_set(_e_magnifier_mgr, EINA_FALSE);
+     }
+
    return EINA_TRUE;
 }
 
@@ -955,3 +963,33 @@ e_magnifier_owner_get(void)
 
    return ec;
 }
+
+EINTERN Eina_Bool
+e_magnifier_stand_alone_mode_set(Eina_Bool stand_alone)
+{
+   Eina_Bool ret = EINA_FALSE;
+
+   ELOGF("MAGNIFIER", "Stand Alone mode set:%d", NULL, stand_alone);
+   if (!_e_magnifier_mgr)
+     {
+        if (stand_alone)
+          {
+             e_magnifier_new();
+             ret = _e_magnifier_stand_alone_mode_set(_e_magnifier_mgr, stand_alone);
+          }
+     }
+   else
+     {
+        E_MAGNIFIER_SMART_DATA_GET_OR_RETURN(_e_magnifier_mgr, sd) EINA_FALSE;
+
+        if (sd->owner)
+          {
+             ELOGF("MAGNIFIER", "Failed to Stand_Alone mode. Magnifier window exists...", sd->owner);
+             return EINA_FALSE;
+          }
+
+        ret = _e_magnifier_stand_alone_mode_set(_e_magnifier_mgr, stand_alone);
+     }
+
+   return ret;
+}
index 621f9ce5169dbb44eb4d3ec75a1ffb85a686861e..c8396c761c8ef50c7da2e9ff5264c6b8a059eb8f 100644 (file)
@@ -38,6 +38,8 @@ EINTERN Eina_Bool e_magnifier_smart_member_del(Evas_Object *obj);
 E_API Eina_Bool   e_magnifier_owner_set(E_Client *ec);
 E_API void        e_magnifier_owner_unset(E_Client *ec);
 E_API E_Client   *e_magnifier_owner_get(void);
+
+EINTERN Eina_Bool e_magnifier_stand_alone_mode_set(Eina_Bool stand_alone);
 #endif
 #endif