E_CONFIG_VAL(D, T, use_buffer_flush, UCHAR);
E_CONFIG_LIST(D, T, sock_accesses, _e_config_socket_access_edd);
E_CONFIG_LIST(D, T, aux_hint_supported, _e_config_aux_hint_supported_edd);
+ E_CONFIG_VAL(D, T, use_module_srv.qp, UCHAR);
}
/* externally accessible functions */
E_CONFIG_LIMIT(e_config->comp_canvas_bg.opmode, 0, 11);
E_CONFIG_LIMIT(e_config->delayed_load_idle_count, 0, 100);
E_CONFIG_LIMIT(e_config->use_buffer_flush, 0, 1);
+ E_CONFIG_LIMIT(e_config->use_module_srv.qp, 0, 1);
}
E_API int
static E_Policy_Quickpanel *_pol_quickpanel = NULL;
static Evas_Smart *_mover_smart = NULL;
static Eina_Bool _changed = EINA_FALSE;
+static E_QP_Mgr_Funcs *qp_mgr_funcs = NULL;
static void _e_qp_srv_effect_update(E_Policy_Quickpanel *qp, int x, int y);
static E_QP_Client * _e_qp_client_ec_get(E_Client *ec);
EINTERN void
e_service_quickpanel_client_set(E_Client *ec)
{
+ if (qp_mgr_funcs && qp_mgr_funcs->quickpanel_client_set)
+ {
+ qp_mgr_funcs->quickpanel_client_set(ec);
+ return;
+ }
+
E_Policy_Quickpanel *qp;
if (EINA_UNLIKELY(!ec))
EINTERN void
e_service_quickpanel_effect_type_set(E_Client *ec, E_Service_Quickpanel_Effect_Type type)
{
+ if (qp_mgr_funcs && qp_mgr_funcs->quickpanel_effect_type_set)
+ {
+ qp_mgr_funcs->quickpanel_effect_type_set(ec, type);
+ return;
+ }
+
E_Policy_Quickpanel *qp;
qp = _quickpanel_get();
EINTERN E_Client *
e_service_quickpanel_client_get(void)
{
+ if (qp_mgr_funcs && qp_mgr_funcs->quickpanel_client_get)
+ return qp_mgr_funcs->quickpanel_client_get();
+
EINA_SAFETY_ON_NULL_RETURN_VAL(_pol_quickpanel, NULL);
return _pol_quickpanel->ec;
EINTERN Eina_Bool
e_service_quickpanel_region_set(int type, int angle, Eina_Tiler *tiler)
{
+ if (qp_mgr_funcs && qp_mgr_funcs->quickpanel_region_set)
+ return qp_mgr_funcs->quickpanel_region_set(type, angle, tiler);
+
E_Policy_Quickpanel *qp;
E_Policy_Angle_Map ridx;
EINTERN void
e_service_quickpanel_show(void)
{
+ if (qp_mgr_funcs && qp_mgr_funcs->quickpanel_show)
+ {
+ qp_mgr_funcs->quickpanel_show();
+ return;
+ }
+
E_Policy_Quickpanel *qp;
qp = _quickpanel_get();
EINTERN void
e_service_quickpanel_hide(void)
{
+ if (qp_mgr_funcs && qp_mgr_funcs->quickpanel_hide)
+ {
+ qp_mgr_funcs->quickpanel_hide();
+ return;
+ }
+
E_Policy_Quickpanel *qp;
qp = _quickpanel_get();
EINTERN Eina_Bool
e_qp_visible_get(void)
{
+ if (qp_mgr_funcs && qp_mgr_funcs->qp_visible_get)
+ return qp_mgr_funcs->qp_visible_get();
+
E_Policy_Quickpanel *qp;
E_Client *ec;
Eina_Bool vis = EINA_FALSE;
EINTERN int
e_qp_orientation_get(void)
{
+ if (qp_mgr_funcs && qp_mgr_funcs->qp_orientation_get)
+ return qp_mgr_funcs->qp_orientation_get();
+
E_Policy_Quickpanel *qp;
qp = _quickpanel_get();
EINTERN void
e_qp_client_add(E_Client *ec)
{
+ if (qp_mgr_funcs && qp_mgr_funcs->qp_client_add)
+ {
+ qp_mgr_funcs->qp_client_add(ec);
+ return;
+ }
+
E_Policy_Quickpanel *qp;
E_QP_Client *qp_client;
EINTERN void
e_qp_client_del(E_Client *ec)
{
+ if (qp_mgr_funcs && qp_mgr_funcs->qp_client_del)
+ {
+ qp_mgr_funcs->qp_client_del(ec);
+ return;
+ }
+
E_Policy_Quickpanel *qp;
E_QP_Client *qp_client;
EINTERN void
e_qp_client_show(E_Client *ec)
{
+ if (qp_mgr_funcs && qp_mgr_funcs->qp_client_show)
+ {
+ qp_mgr_funcs->qp_client_show(ec);
+ return;
+ }
+
E_Policy_Quickpanel *qp;
E_QP_Client *qp_client;
EINTERN void
e_qp_client_hide(E_Client *ec)
{
+ if (qp_mgr_funcs && qp_mgr_funcs->qp_client_hide)
+ {
+ qp_mgr_funcs->qp_client_hide(ec);
+ return;
+ }
+
E_Policy_Quickpanel *qp;
E_QP_Client *qp_client;
EINTERN Eina_Bool
e_qp_client_scrollable_set(E_Client *ec, Eina_Bool set)
{
+ if (qp_mgr_funcs && qp_mgr_funcs->qp_client_scrollable_set)
+ return qp_mgr_funcs->qp_client_scrollable_set(ec, set);
+
E_Policy_Quickpanel *qp;
E_QP_Client *qp_client;
EINTERN Eina_Bool
e_qp_client_scrollable_get(E_Client *ec)
{
+ if (qp_mgr_funcs && qp_mgr_funcs->qp_client_scrollable_get)
+ return qp_mgr_funcs->qp_client_scrollable_get(ec);
+
E_Policy_Quickpanel *qp;
E_QP_Client *qp_client;
return qp_client->hint.scrollable;
}
+
+E_API Eina_Bool
+e_service_quickpanel_module_func_set(void *qp_fp)
+{
+ E_QP_Mgr_Funcs* qp_mgr_fp = qp_fp;
+
+ EINA_SAFETY_ON_NULL_RETURN_VAL(!e_config->use_module_srv.qp, EINA_FALSE);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(!qp_mgr_funcs, EINA_FALSE);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(qp_mgr_fp, EINA_FALSE);
+
+ qp_mgr_funcs = E_NEW(E_QP_Mgr_Funcs, 1);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(qp_mgr_funcs, EINA_FALSE);
+
+ qp_mgr_funcs->quickpanel_client_set = qp_mgr_fp->quickpanel_client_set;
+ qp_mgr_funcs->quickpanel_client_get = qp_mgr_fp->quickpanel_client_get;
+ qp_mgr_funcs->quickpanel_show = qp_mgr_fp->quickpanel_show;
+ qp_mgr_funcs->quickpanel_hide = qp_mgr_fp->quickpanel_hide;
+ qp_mgr_funcs->quickpanel_region_set = qp_mgr_fp->quickpanel_region_set;
+ qp_mgr_funcs->quickpanel_handler_object_add = qp_mgr_fp->quickpanel_handler_object_add;
+ qp_mgr_funcs->quickpanel_handler_object_del = qp_mgr_fp->quickpanel_handler_object_del;
+ qp_mgr_funcs->quickpanel_effect_type_set = qp_mgr_fp->quickpanel_effect_type_set;
+
+ qp_mgr_funcs->qp_visible_get = qp_mgr_fp->qp_visible_get;
+ qp_mgr_funcs->qp_orientation_get = qp_mgr_fp->qp_orientation_get;
+
+ qp_mgr_funcs->qp_client_add = qp_mgr_fp->qp_client_add;
+ qp_mgr_funcs->qp_client_del = qp_mgr_fp->qp_client_del;
+ qp_mgr_funcs->qp_client_show = qp_mgr_fp->qp_client_show;
+ qp_mgr_funcs->qp_client_hide = qp_mgr_fp->qp_client_hide;
+ qp_mgr_funcs->qp_client_scrollable_set = qp_mgr_fp->qp_client_scrollable_set;
+ qp_mgr_funcs->qp_client_scrollable_get = qp_mgr_fp->qp_client_scrollable_get;
+
+ return EINA_TRUE;
+}
+
+E_API Eina_Bool
+e_service_quickpanel_module_func_unset(void *qp_fp)
+{
+ E_QP_Mgr_Funcs* qp_mgr_fp = qp_fp;
+
+ EINA_SAFETY_ON_NULL_RETURN_VAL(!e_config->use_module_srv.qp, EINA_FALSE);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(!qp_mgr_fp, EINA_FALSE);
+
+ if (qp_mgr_fp != qp_mgr_funcs) return EINA_FALSE;
+ free (qp_mgr_funcs);
+ qp_mgr_funcs = NULL;
+}
+
#include "e_policy_private_data.h"
#include <tzsh_server.h>
+typedef struct _E_QP_Mgr_Funcs E_QP_Mgr_Funcs;
+
typedef enum
{
E_SERVICE_QUICKPANEL_EFFECT_TYPE_SWIPE = TZSH_QUICKPANEL_SERVICE_EFFECT_TYPE_SWIPE,
E_SERVICE_QUICKPANEL_EFFECT_TYPE_APP_CUSTOM = TZSH_QUICKPANEL_SERVICE_EFFECT_TYPE_APP_CUSTOM,
} E_Service_Quickpanel_Effect_Type;
+struct _E_QP_Mgr_Funcs
+{
+ void (*quickpanel_client_set)(E_Client *ec);
+ E_Client* (*quickpanel_client_get)(void);
+ void (*quickpanel_show)(void);
+ void (*quickpanel_hide)(void);
+ Eina_Bool (*quickpanel_region_set)(int type, int angle, Eina_Tiler *tiler);
+ Evas_Object* (*quickpanel_handler_object_add)(E_Client *ec, int x, int y, int w, int h);
+ void (*quickpanel_handler_object_del)(Evas_Object *handler);
+ void (*quickpanel_effect_type_set)(E_Client *ec, E_Service_Quickpanel_Effect_Type type);
+
+ Eina_Bool (*qp_visible_get)(void);
+ int (*qp_orientation_get)(void);
+
+ void (*qp_client_add)(E_Client *ec);
+ void (*qp_client_del)(E_Client *ec);
+ void (*qp_client_show)(E_Client *ec);
+ void (*qp_client_hide)(E_Client *ec);
+ Eina_Bool (*qp_client_scrollable_set)(E_Client *ec, Eina_Bool set);
+ Eina_Bool (*qp_client_scrollable_get)(E_Client *ec);
+};
+
+E_API Eina_Bool e_service_quickpanel_module_func_set(void *qp_fp);
+E_API Eina_Bool e_service_quickpanel_module_func_unset(void *qp_fp);
+
EINTERN void e_service_quickpanel_client_set(E_Client *ec);
EINTERN E_Client *e_service_quickpanel_client_get(void);
EINTERN void e_service_quickpanel_show(void);