diff --git a/legacy/elementary/src/bin/test_task_switcher.c b/legacy/elementary/src/bin/test_task_switcher.c index 6f110fb543..f1911cebff 100644 --- a/legacy/elementary/src/bin/test_task_switcher.c +++ b/legacy/elementary/src/bin/test_task_switcher.c @@ -307,11 +307,11 @@ _app_open(const char *package) app = eo_add_custom(ELM_APP_CLIENT_CLASS, NULL, elm_app_client_constructor(package)); eo_do(app, - eo_event_callback_add(ELM_APP_CLIENT_EV_VIEW_LIST_LOADED, + eo_event_callback_add(ELM_APP_CLIENT_EVENT_VIEW_LIST_LOADED, _view_list_update_cb, table), - eo_event_callback_add(ELM_APP_CLIENT_EV_VIEW_CREATED, + eo_event_callback_add(ELM_APP_CLIENT_EVENT_VIEW_CREATED, _view_list_update_cb, table), - eo_event_callback_add(ELM_APP_CLIENT_EV_VIEW_DELETED, + eo_event_callback_add(ELM_APP_CLIENT_EVENT_VIEW_DELETED, _view_list_update_cb, table)); apps_list = eina_list_append(apps_list, app); } diff --git a/legacy/elementary/src/lib/Makefile.am b/legacy/elementary/src/lib/Makefile.am index 2e83e12c6b..2fa04ce2c5 100644 --- a/legacy/elementary/src/lib/Makefile.am +++ b/legacy/elementary/src/lib/Makefile.am @@ -541,7 +541,9 @@ BUILT_SOURCES = \ elm_access.eo.c \ elm_access.eo.h \ elm_actionslider.eo.c \ - elm_actionslider.eo.h + elm_actionslider.eo.h \ + elm_app_client.eo.c \ + elm_app_client.eo.h EXTRA_DIST += \ elm_widget.eo \ @@ -552,7 +554,8 @@ EXTRA_DIST += \ elm_frame.eo \ elm_hover.eo \ elm_access.eo \ - elm_actionslider.eo + elm_actionslider.eo \ + elm_app_client.eo nodist_includesunstable_HEADERS = \ elm_widget.eo.h \ @@ -563,5 +566,6 @@ nodist_includesunstable_HEADERS = \ elm_frame.eo.h \ elm_access.eo.h \ elm_hover.eo.h \ - elm_actionslider.eo.h + elm_actionslider.eo.h \ + elm_app_client.eo.h diff --git a/legacy/elementary/src/lib/elm_app_client.c b/legacy/elementary/src/lib/elm_app_client.c index ae102866fd..64eb9d5b2b 100644 --- a/legacy/elementary/src/lib/elm_app_client.c +++ b/legacy/elementary/src/lib/elm_app_client.c @@ -5,28 +5,10 @@ #include #include "elm_priv.h" -EAPI Eo_Op ELM_APP_CLIENT_BASE_ID = EO_NOOP; - #define MY_CLASS ELM_APP_CLIENT_CLASS #define MY_CLASS_NAME "Elm_App_Client" -EAPI const Eo_Event_Description _ELM_APP_CLIENT_EV_VIEW_CREATED = - EO_EVENT_DESCRIPTION("view,created", - "Called when a view of this application is created."); - -EAPI const Eo_Event_Description _ELM_APP_CLIENT_EV_VIEW_DELETED = - EO_EVENT_DESCRIPTION("view,deleted", - "Called when a view of this application is deleted."); - -EAPI const Eo_Event_Description _ELM_APP_CLIENT_EV_VIEW_LIST_LOADED = - EO_EVENT_DESCRIPTION("view_list,loaded", - "Called when list of view is loaded."); - -EAPI const Eo_Event_Description _ELM_APP_CLIENT_EV_TERMINATED = - EO_EVENT_DESCRIPTION("application,terminated", - "Called when application is terminated."); - typedef struct { Eldbus_Proxy *app_proxy; @@ -59,7 +41,7 @@ _sub_path_process(Elm_App_Client *eo, Eldbus_Message_Iter *obj_iter, Elm_App_Cli elm_app_client_view_constructor(obj_path)); eina_hash_add(data->views, obj_path, view); if (!loading_list) - eo_do(eo, eo_event_callback_call(ELM_APP_CLIENT_EV_VIEW_CREATED, view, NULL)); + eo_do(eo, eo_event_callback_call(ELM_APP_CLIENT_EVENT_VIEW_CREATED, view, NULL)); } } @@ -78,7 +60,7 @@ _objects_get(void *data, const Eldbus_Message *msg, Eldbus_Pending *pending EINA while (eldbus_message_iter_get_and_next(array_path, '{', &path)) _sub_path_process(eo, path, cdata, EINA_TRUE); - eo_do(eo, eo_event_callback_call(ELM_APP_CLIENT_EV_VIEW_LIST_LOADED, + eo_do(eo, eo_event_callback_call(ELM_APP_CLIENT_EVENT_VIEW_LIST_LOADED, NULL, NULL)); } @@ -123,7 +105,7 @@ _iface_del(void *data, const Eldbus_Message *msg) } eina_hash_del(cdata->views, path, NULL); - eo_do(eo, eo_event_callback_call(ELM_APP_CLIENT_EV_VIEW_DELETED, + eo_do(eo, eo_event_callback_call(ELM_APP_CLIENT_EVENT_VIEW_DELETED, view, NULL)); eo_del(view); } @@ -165,17 +147,15 @@ _pkg_name_owner_changed_cb(void *data, const char *bus EINA_UNUSED, const char * } eina_hash_del(cdata->views, path, NULL); - eo_do(eo, eo_event_callback_call(ELM_APP_CLIENT_EV_VIEW_DELETED, + eo_do(eo, eo_event_callback_call(ELM_APP_CLIENT_EVENT_VIEW_DELETED, view, NULL)); eo_del(view); } } -static void -_app_client_constructor(Eo *eo, void *_pd, va_list *list) +EOLIAN static void +_elm_app_client_constructor(Eo *eo, Elm_App_Client_Data *data, const char *pkg) { - Elm_App_Client_Data *data = _pd; - const char *pkg = va_arg(*list, const char *); Eldbus_Connection *conn; Eldbus_Object *obj; char *path; @@ -244,7 +224,7 @@ _create_view_cb(void *data, const Eldbus_Message *msg, Eldbus_Pending *pending) view = eo_add_custom(ELM_APP_CLIENT_VIEW_CLASS, eo, elm_app_client_view_constructor(view_path)); eina_hash_add(cdata->views, view_path, view); - eo_do(eo, eo_event_callback_call(ELM_APP_CLIENT_EV_VIEW_CREATED, + eo_do(eo, eo_event_callback_call(ELM_APP_CLIENT_EVENT_VIEW_CREATED, view, NULL)); } @@ -258,14 +238,9 @@ _create_view_cb(void *data, const Eldbus_Message *msg, Eldbus_Pending *pending) cb(user_data, view, NULL, NULL); } -static void -_view_open(Eo *eo, void *_pd, va_list *list) +EOLIAN static Elm_App_Client_Pending * +_elm_app_client_view_open(Eo *eo, Elm_App_Client_Data *data, Eina_Value *args, Elm_App_Client_Open_View_Cb cb, const void *user_data) { - Elm_App_Client_Data *data = _pd; - Eina_Value *args = va_arg(*list, Eina_Value *); - Elm_App_Client_Open_View_Cb cb = va_arg(*list, Elm_App_Client_Open_View_Cb); - const void *user_data = va_arg(*list, const void *); - Elm_App_Client_Pending **view_open_pending = va_arg(*list, Elm_App_Client_Pending**); Eldbus_Message *msg; Eldbus_Pending *pending; @@ -278,7 +253,7 @@ _view_open(Eo *eo, void *_pd, va_list *list) eldbus_message_unref(msg); //TODO test to find out what type eina_value must be ERR("Eina_Value of args don't have a structure of a{sv}"); - return; + return NULL; } } else @@ -296,62 +271,52 @@ _view_open(Eo *eo, void *_pd, va_list *list) if (cb) eldbus_pending_data_set(pending, "user_cb", cb); - if (view_open_pending) - *view_open_pending = pending; + return pending; +} + +EOLIAN static Eina_Iterator* +_elm_app_client_views_get(Eo *eo EINA_UNUSED, Elm_App_Client_Data *data) +{ + return eina_hash_iterator_data_new(data->views); } static void -_views_get(Eo *eo EINA_UNUSED, void *_pd, va_list *list) +_elm_app_client_view_all_close(Eo *obj EINA_UNUSED, Elm_App_Client_Data *data) { - Elm_App_Client_Data *data = _pd; - Eina_Iterator **view_iter = va_arg(*list, Eina_Iterator **); - - *view_iter = eina_hash_iterator_data_new(data->views); -} - -static void -_all_close(Eo *eo EINA_UNUSED, void *_pd, va_list *list EINA_UNUSED) -{ - Elm_App_Client_Data *data = _pd; eldbus_proxy_call(data->app_proxy, "CloseAllViews", NULL, NULL, -1, ""); } -static void -_terminate(Eo *eo EINA_UNUSED, void *_pd, va_list *list EINA_UNUSED) +EOLIAN static void +_elm_app_client_terminate(Eo *eo EINA_UNUSED, Elm_App_Client_Data *data) { - Elm_App_Client_Data *data = _pd; eldbus_proxy_call(data->app_proxy, "Terminate", NULL, NULL, -1, ""); } -static void -_package_get(Eo *eo EINA_UNUSED, void *_pd, va_list *list) +EOLIAN static const char* +_elm_app_client_package_get(Eo *eo EINA_UNUSED, Elm_App_Client_Data *data) { - Elm_App_Client_Data *data = _pd; Eldbus_Object *obj; - const char **package = va_arg(*list, const char **); obj = eldbus_proxy_object_get(data->app_proxy); - *package = eldbus_object_bus_name_get(obj); + return eldbus_object_bus_name_get(obj); } -static void -_view_open_cancel(Eo *eo EINA_UNUSED, void *_pd EINA_UNUSED, va_list *list) +EOLIAN static void +_elm_app_client_view_open_cancel(Eo *eo EINA_UNUSED, Elm_App_Client_Data *_pd EINA_UNUSED, Elm_App_Client_Pending *pending) { - Elm_App_Client_Pending *pending = va_arg(*list, Elm_App_Client_Pending *); eldbus_pending_cancel(pending); } -static void -_constructor(Eo *obj, void *_pd EINA_UNUSED, va_list *list EINA_UNUSED) +EOLIAN static void +_elm_app_client_eo_base_constructor(Eo *obj, Elm_App_Client_Data *_pd EINA_UNUSED) { eo_error_set(obj); ERR("Only custom constructor can be used with '%s' class", MY_CLASS_NAME); } -static void -_destructor(Eo *eo, void *_pd, va_list *list EINA_UNUSED) +EOLIAN static void +_elm_app_client_eo_base_destructor(Eo *eo, Elm_App_Client_Data *data) { - Elm_App_Client_Data *data = _pd; Eldbus_Object *obj; Eldbus_Connection *conn; Eina_Iterator *iter; @@ -375,58 +340,4 @@ _destructor(Eo *eo, void *_pd, va_list *list EINA_UNUSED) eo_do_super(eo, MY_CLASS, eo_destructor()); } -static void -_class_constructor(Eo_Class *klass) -{ - const Eo_Op_Func_Description func_desc[] = { - EO_OP_FUNC(EO_BASE_ID(EO_BASE_SUB_ID_CONSTRUCTOR), _constructor), - EO_OP_FUNC(EO_BASE_ID(EO_BASE_SUB_ID_DESTRUCTOR), _destructor), - EO_OP_FUNC(ELM_APP_CLIENT_ID(ELM_APP_CLIENT_SUB_ID_CONSTRUCTOR), _app_client_constructor), - EO_OP_FUNC(ELM_APP_CLIENT_ID(ELM_APP_CLIENT_SUB_ID_VIEW_OPEN), _view_open), - EO_OP_FUNC(ELM_APP_CLIENT_ID(ELM_APP_CLIENT_SUB_ID_VIEWS_GET), _views_get), - EO_OP_FUNC(ELM_APP_CLIENT_ID(ELM_APP_CLIENT_SUB_ID_VIEWS_ALL_CLOSE), _all_close), - EO_OP_FUNC(ELM_APP_CLIENT_ID(ELM_APP_CLIENT_SUB_ID_TERMINATE), _terminate), - EO_OP_FUNC(ELM_APP_CLIENT_ID(ELM_APP_CLIENT_SUB_ID_PACKAGE_GET), _package_get), - EO_OP_FUNC(ELM_APP_CLIENT_ID(ELM_APP_CLIENT_SUB_ID_VIEW_OPEN_CANCEL), _view_open_cancel), - EO_OP_FUNC_SENTINEL - }; - eo_class_funcs_set(klass, func_desc); -} - -static const Eo_Op_Description op_desc[] = { - EO_OP_DESCRIPTION(ELM_APP_CLIENT_SUB_ID_CONSTRUCTOR, - "Constructor of elm_app_client."), - EO_OP_DESCRIPTION(ELM_APP_CLIENT_SUB_ID_VIEW_OPEN, "Open a view."), - EO_OP_DESCRIPTION(ELM_APP_CLIENT_SUB_ID_VIEWS_GET, - "Return a iterator with all views of application."), - EO_OP_DESCRIPTION(ELM_APP_CLIENT_SUB_ID_VIEWS_ALL_CLOSE, - "Close all views of application."), - EO_OP_DESCRIPTION(ELM_APP_CLIENT_SUB_ID_TERMINATE, - "Terminate applicaiton"), - EO_OP_DESCRIPTION(ELM_APP_CLIENT_SUB_ID_PACKAGE_GET, - "Return the package name of application"), - EO_OP_DESCRIPTION(ELM_APP_CLIENT_SUB_ID_VIEW_OPEN_CANCEL, - "Cancel view opening."), - EO_OP_DESCRIPTION_SENTINEL -}; - -static const Eo_Event_Description *event_desc[] = { - ELM_APP_CLIENT_EV_VIEW_CREATED, - ELM_APP_CLIENT_EV_VIEW_DELETED, - ELM_APP_CLIENT_EV_VIEW_LIST_LOADED, - ELM_APP_CLIENT_EV_TERMINATED, - NULL -}; - -static const Eo_Class_Description class_desc = { - EO_VERSION, - MY_CLASS_NAME, - EO_CLASS_TYPE_REGULAR, - EO_CLASS_DESCRIPTION_OPS(&ELM_APP_CLIENT_BASE_ID, op_desc, ELM_APP_CLIENT_SUB_ID_LAST), - event_desc, - sizeof(Elm_App_Client_Data), - _class_constructor, - NULL -}; - -EO_DEFINE_CLASS(elm_app_client_class_get, &class_desc, EO_BASE_CLASS, NULL); +#include "elm_app_client.eo.c" diff --git a/legacy/elementary/src/lib/elm_app_client.eo b/legacy/elementary/src/lib/elm_app_client.eo new file mode 100644 index 0000000000..5237ddf544 --- /dev/null +++ b/legacy/elementary/src/lib/elm_app_client.eo @@ -0,0 +1,70 @@ +class Elm_App_Client (Eo_Base) +{ + eo_prefix: elm_app_client; + constructors { + constructor { + /*@ Class constructor of elm_app_client. */ + params { + @in const char *package; /*@ Package of application */ + } + } + } + properties { + views { + get { + /*@ Return a iterator with all views of application. */ + legacy null; + } + values { + Eina_Iterator *ret; /*@ the iterator with all views, must be freed after use */ + } + } + package { + get { + /*@ Return the application package. */ + legacy null; + } + values { + const char *ret; /*@ application package */ + } + } + } + methods { + view_all_close { + /*@ Close all views of application. */ + legacy null; + } + terminate { + /*@ Terminate application. */ + legacy null; + } + view_open { + /*@ Open a application view. */ + params { + @in Eina_Value *args; /*@ an array of */ + @in Elm_App_Client_Open_View_Cb view_open_cb; /*@ callback to be called when view open */ + @in const void *data; /*@ calback user data */ + } + return Elm_App_Client_Pending *; /* handler to cancel the view opening if it takes to long */ + legacy null; + } + view_open_cancel { + /*@ Cancel a pending elm_app_client_view_open(). */ + params { + @in Elm_App_Client_Pending *pending; /*@ the view open handler */ + } + legacy null; + } + } + implements { + Eo_Base::constructor; + Eo_Base::destructor; + } + events { + view,created; /*@ Called when a view of this application is created. */ + view,deleted; /*@ Called when a view of this application is deleted. */ + view_list,loaded; /*@ Called when list of view is loaded. */ + application,terminated; /*@ Called when application is terminated. */ + } + +} diff --git a/legacy/elementary/src/lib/elm_app_client_eo.h b/legacy/elementary/src/lib/elm_app_client_eo.h index 5337196d9c..02e7006faa 100644 --- a/legacy/elementary/src/lib/elm_app_client_eo.h +++ b/legacy/elementary/src/lib/elm_app_client_eo.h @@ -1,3 +1,13 @@ +typedef Eo Elm_App_Client; +typedef Eo Elm_App_Client_View; + +typedef Eldbus_Pending Elm_App_Client_Pending; + +typedef void (*Elm_App_Client_Open_View_Cb)(void *data, Elm_App_Client_View *view, const char *error, const char *error_message); + +#include "elm_app_client.eo.h" + +#if 0 #define ELM_APP_CLIENT_CLASS elm_app_client_class_get() const Eo_Class *elm_app_client_class_get(void) EINA_CONST; @@ -16,13 +26,6 @@ enum ELM_APP_CLIENT_SUB_ID_LAST }; -typedef Eo Elm_App_Client; -typedef Eo Elm_App_Client_View; - -typedef Eldbus_Pending Elm_App_Client_Pending; - -typedef void (*Elm_App_Client_Open_View_Cb)(void *data, Elm_App_Client_View *view, const char *error, const char *error_message); - #define ELM_APP_CLIENT_ID(sub_id) (ELM_APP_CLIENT_BASE_ID + sub_id) /** @@ -109,3 +112,4 @@ extern EAPI const Eo_Event_Description _ELM_APP_CLIENT_EV_VIEW_LIST_LOADED; extern EAPI const Eo_Event_Description _ELM_APP_CLIENT_EV_TERMINATED; #define ELM_APP_CLIENT_EV_TERMINATED (&(_ELM_APP_CLIENT_EV_TERMINATED)) +#endif