e_tizen_wl_shell: make e_tizen_wl_shell_quickpanel.c file 99/325599/1
authorSooChan Lim <sc1.lim@samsung.com>
Thu, 29 May 2025 11:36:39 +0000 (20:36 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Thu, 12 Jun 2025 10:40:32 +0000 (19:40 +0900)
Move the quickpanel impelementation to this e_tizen_ws_shell_quickpanel.c file.

Change-Id: I14956c6068602ae6d8bd72379e5093f4dc88a7a5

src/bin/Makefile.mk
src/bin/meson.build
src/bin/server/e_tizen_ws_shell_manager.c
src/bin/server/e_tizen_ws_shell_srv_quickpanel.c [new file with mode: 0644]
src/bin/server/e_tizen_ws_shell_srv_quickpanel_intern.h [new file with mode: 0644]

index 85d047ac5a2dd276f02f9c43cf3bb176924a3e5f..ff7621bc95b7df236c0a61e76b2a15e22edfb0a1 100644 (file)
@@ -208,6 +208,7 @@ src/bin/server/e_tizen_display_policy.c \
 src/bin/server/e_tizen_ws_shell_manager.c \
 src/bin/server/e_tizen_ws_shell_srv_cbhm.c \
 src/bin/server/e_tizen_ws_shell_srv_indicator.c \
+src/bin/server/e_tizen_ws_shell_srv_quickpanel.c \
 src/bin/server/e_tizen_indicator.c \
 src/bin/server/e_tizen_clipboard.c \
 src/bin/server/e_surface_view.c \
index 2592acb194a260cc8b485eb3fbf5aadd0fb98edb..b1cd19ced5650b203cf7fe1b5b5a6fab6d67c853 100644 (file)
@@ -212,6 +212,7 @@ e_sources = [
   'server/e_tizen_ws_shell_manager.c',
   'server/e_tizen_ws_shell_srv_cbhm.c',
   'server/e_tizen_ws_shell_srv_indicator.c',
+  'server/e_tizen_ws_shell_srv_quickpanel.c',
   'server/e_tizen_indicator.c',
   'server/e_tizen_clipboard.c',
   'server/e_surface_view.c',
index 966056bb80a04d6f6b24d434543ce12d7afc3c04..60cd327a036d1f80f2ade68a464e953c97323130 100644 (file)
@@ -18,6 +18,7 @@
 #include "e_config_intern.h"
 #include "e_tizen_ws_shell_srv_cbhm_intern.h"
 #include "e_tizen_ws_shell_srv_indicator_intern.h"
+#include "e_tizen_ws_shell_srv_quickpanel_intern.h"
 
 #include <tzsh_server.h>
 
@@ -617,85 +618,10 @@ _tzsh_srv_iface_cb_indicator_get(struct wl_client *client, struct wl_resource *r
      }
 }
 
-static void
-_tzsh_srv_qp_cb_destroy(struct wl_client *client EINA_UNUSED, struct wl_resource *resource)
-{
-   wl_resource_destroy(resource);
-}
-
-static void
-_tzsh_srv_qp_cb_msg(struct wl_client *client EINA_UNUSED, struct wl_resource *resource, uint32_t msg)
-{
-   E_Tizen_Ws_Shell_Srv *tzsh_srv;
-
-   tzsh_srv = wl_resource_get_user_data(resource);
-
-   EINA_SAFETY_ON_NULL_RETURN(tzsh_srv);
-   EINA_SAFETY_ON_NULL_RETURN(tzsh_srv->tzsh);
-
-#define EC  tzsh_srv->ec
-   EINA_SAFETY_ON_NULL_RETURN(EC);
-
-   switch (msg)
-     {
-      case TWS_SERVICE_QUICKPANEL_MSG_SHOW:
-         e_service_quickpanel_show(EC);
-         break;
-      case TWS_SERVICE_QUICKPANEL_MSG_HIDE:
-         e_service_quickpanel_hide(EC);
-         break;
-      default:
-         ERR("Unknown message!! msg %d", msg);
-         break;
-     }
-#undef EC
-}
-
-static void
-_tzsh_srv_qp_cb_effect_type_set(struct wl_client *client EINA_UNUSED, struct wl_resource *resource, uint32_t type)
-{
-   E_Tizen_Ws_Shell_Srv *tzsh_srv;
-
-   tzsh_srv = wl_resource_get_user_data(resource);
-
-   EINA_SAFETY_ON_NULL_RETURN(tzsh_srv);
-   EINA_SAFETY_ON_NULL_RETURN(tzsh_srv->tzsh);
-
-#define EC  tzsh_srv->ec
-   EINA_SAFETY_ON_NULL_RETURN(EC);
-   e_service_quickpanel_effect_type_set(EC, type);
-#undef EC
-}
-
-static void
-_tzsh_srv_qp_cb_scroll_lock_set(struct wl_client *client EINA_UNUSED, struct wl_resource *resource, uint32_t lock)
-{
-   E_Tizen_Ws_Shell_Srv *tzsh_srv;
-
-   tzsh_srv = wl_resource_get_user_data(resource);
-
-   EINA_SAFETY_ON_NULL_RETURN(tzsh_srv);
-   EINA_SAFETY_ON_NULL_RETURN(tzsh_srv->tzsh);
-
-#define EC  tzsh_srv->ec
-   EINA_SAFETY_ON_NULL_RETURN(EC);
-   e_service_quickpanel_scroll_lock_set(EC, lock);
-#undef EC
-}
-
-static const struct tws_service_quickpanel_interface _tzsh_srv_qp_iface =
-{
-   _tzsh_srv_qp_cb_destroy,
-   _tzsh_srv_qp_cb_msg,
-   _tzsh_srv_qp_cb_effect_type_set,
-   _tzsh_srv_qp_cb_scroll_lock_set,
-};
-
 static void
 _tzsh_srv_iface_cb_quickpanel_get(struct wl_client *client, struct wl_resource *res_tzsh_srv, uint32_t id)
 {
    E_Tizen_Ws_Shell_Srv *tzsh_srv;
-   struct wl_resource *res;
 
    tzsh_srv = wl_resource_get_user_data(res_tzsh_srv);
    EINA_SAFETY_ON_NULL_RETURN(tzsh_srv);
@@ -703,20 +629,27 @@ _tzsh_srv_iface_cb_quickpanel_get(struct wl_client *client, struct wl_resource *
    if (!eina_list_data_find(g_tizen_ws_shell_mgr->tzsh_srvs, tzsh_srv))
      return;
 
-   res = wl_resource_create(client,
-                            &tws_service_quickpanel_interface,
-                            wl_resource_get_version(res_tzsh_srv),
-                            id);
-   if (!res)
+   if (tzsh_srv->role != TZSH_SRV_ROLE_QUICKPANEL_SYSTEM_DEFAULT &&
+       tzsh_srv->role != TZSH_SRV_ROLE_QUICKPANEL_CONTEXT_MENU &&
+       tzsh_srv->role != TZSH_SRV_ROLE_QUICKPANEL_APPS_MENU)
      {
-        wl_client_post_no_memory(client);
+        ERR("Could not find quickpanel service");
+        tizen_ws_shell_send_error(res_tzsh_srv,
+                                  TIZEN_WS_SHELL_ERROR_NO_SERVICE);
         return;
      }
 
-   wl_resource_set_implementation(res, &_tzsh_srv_qp_iface, tzsh_srv, NULL);
-}
-
+   tzsh_srv->client = client;
+   tzsh_srv->id = id;
 
+   if (!e_tizen_ws_shell_srv_quickpanel_init(tzsh_srv))
+     {
+        ERR("e_tizen_ws_shell_srv_quickpanel_init() failed.");
+        tizen_ws_shell_send_error(res_tzsh_srv,
+                                  TIZEN_WS_SHELL_ERROR_NOT_SUPPORTED);
+        return;
+     }
+}
 
 static void
 _tzsh_srv_softkey_cb_destroy(struct wl_client *client EINA_UNUSED, struct wl_resource *resource)
diff --git a/src/bin/server/e_tizen_ws_shell_srv_quickpanel.c b/src/bin/server/e_tizen_ws_shell_srv_quickpanel.c
new file mode 100644 (file)
index 0000000..6e4fa0a
--- /dev/null
@@ -0,0 +1,103 @@
+#include "e_tizen_ws_shell_srv_quickpanel_intern.h"
+#include "services/e_service_quickpanel_intern.h"
+
+#include <tzsh_server.h>
+
+static void
+_tzsh_srv_qp_cb_destroy(struct wl_client *client EINA_UNUSED, struct wl_resource *resource)
+{
+   wl_resource_destroy(resource);
+}
+
+static void
+_tzsh_srv_qp_cb_msg(struct wl_client *client EINA_UNUSED, struct wl_resource *resource, uint32_t msg)
+{
+   E_Tizen_Ws_Shell_Srv *tzsh_srv;
+
+   tzsh_srv = wl_resource_get_user_data(resource);
+
+   EINA_SAFETY_ON_NULL_RETURN(tzsh_srv);
+   EINA_SAFETY_ON_NULL_RETURN(tzsh_srv->tzsh);
+
+#define EC  tzsh_srv->ec
+   EINA_SAFETY_ON_NULL_RETURN(EC);
+
+   switch (msg)
+     {
+      case TWS_SERVICE_QUICKPANEL_MSG_SHOW:
+         e_service_quickpanel_show(EC);
+         break;
+      case TWS_SERVICE_QUICKPANEL_MSG_HIDE:
+         e_service_quickpanel_hide(EC);
+         break;
+      default:
+         ERR("Unknown message!! msg %d", msg);
+         break;
+     }
+#undef EC
+}
+
+static void
+_tzsh_srv_qp_cb_effect_type_set(struct wl_client *client EINA_UNUSED, struct wl_resource *resource, uint32_t type)
+{
+   E_Tizen_Ws_Shell_Srv *tzsh_srv;
+
+   tzsh_srv = wl_resource_get_user_data(resource);
+
+   EINA_SAFETY_ON_NULL_RETURN(tzsh_srv);
+   EINA_SAFETY_ON_NULL_RETURN(tzsh_srv->tzsh);
+
+#define EC  tzsh_srv->ec
+   EINA_SAFETY_ON_NULL_RETURN(EC);
+   e_service_quickpanel_effect_type_set(EC, type);
+#undef EC
+}
+
+static void
+_tzsh_srv_qp_cb_scroll_lock_set(struct wl_client *client EINA_UNUSED, struct wl_resource *resource, uint32_t lock)
+{
+   E_Tizen_Ws_Shell_Srv *tzsh_srv;
+
+   tzsh_srv = wl_resource_get_user_data(resource);
+
+   EINA_SAFETY_ON_NULL_RETURN(tzsh_srv);
+   EINA_SAFETY_ON_NULL_RETURN(tzsh_srv->tzsh);
+
+#define EC  tzsh_srv->ec
+   EINA_SAFETY_ON_NULL_RETURN(EC);
+   e_service_quickpanel_scroll_lock_set(EC, lock);
+#undef EC
+}
+
+static const struct tws_service_quickpanel_interface _tzsh_srv_qp_iface =
+{
+   _tzsh_srv_qp_cb_destroy,
+   _tzsh_srv_qp_cb_msg,
+   _tzsh_srv_qp_cb_effect_type_set,
+   _tzsh_srv_qp_cb_scroll_lock_set,
+};
+
+EINTERN Eina_Bool
+e_tizen_ws_shell_srv_quickpanel_init(E_Tizen_Ws_Shell_Srv *tzsh_srv)
+{
+   struct wl_client *client;
+   struct wl_resource *res;
+   uint32_t id;
+
+   EINA_SAFETY_ON_NULL_RETURN_VAL(tzsh_srv, EINA_FALSE);
+
+   client = tzsh_srv->client;
+   id = tzsh_srv->id;
+
+   res = wl_resource_create(client, &tws_service_quickpanel_interface,
+           wl_resource_get_version(tzsh_srv->res_tzsh_srv), id);
+   if (!res)
+     {
+        wl_client_post_no_memory(client);
+        return EINA_FALSE;
+     }
+
+   wl_resource_set_implementation(res, &_tzsh_srv_qp_iface, tzsh_srv, NULL);
+
+   return EINA_TRUE;
+}
diff --git a/src/bin/server/e_tizen_ws_shell_srv_quickpanel_intern.h b/src/bin/server/e_tizen_ws_shell_srv_quickpanel_intern.h
new file mode 100644 (file)
index 0000000..1de0d35
--- /dev/null
@@ -0,0 +1,9 @@
+#ifndef E_TIZEN_WS_SHELL_SRV_QUICKPANEL_INTERN_H
+#define E_TIZEN_WS_SHELL_SRV_QUICKPANEL_INTERN_H
+
+#include "e_intern.h"
+#include "e_tizen_ws_shell_manager_intern.h"
+
+EINTERN Eina_Bool e_tizen_ws_shell_srv_quickpanel_init(E_Tizen_Ws_Shell_Srv *tzsh_srv);
+
+#endif