From 7c2259adc8cf788d53f40c263e8b76104331954c Mon Sep 17 00:00:00 2001 From: Jean-Philippe Andre Date: Tue, 18 Oct 2016 11:32:05 +0900 Subject: [PATCH] elm: Remove elm app client/server implementation & APIs This removes EO APIs related to an unmaintained client/server model for applications. The reasons for this removal are the following: - unused - no support in E - relies on dbus as the sole transport layer - unmaintained since the original patches - only EO API (iow: beta, never released API) I've also never seen the test cases (in elementary_test) actually work. According to Gustavo (k-s), the original author of this feature is not involved in EFL at the moment, and unlikely to be in the near future. Note that terminology has in the past used those APIs when it was still using some beta EO APIs. This code is now long gone, removed in terminology commit 3ffcbadd6f9881472db6 (2014/12/13, for version 0.8.0) If someone wants to step in and maintain the implementation, protocol and (EO) API, then feel free to revert this patch and revive the feature. But it will need to be more solid than this implementation. --- src/Makefile_Elementary.am | 22 - src/bin/elementary/test.c | 6 - src/bin/elementary/test_application_server.c | 200 -------- src/bin/elementary/test_task_switcher.c | 397 ---------------- src/bindings/js/efl_js/efl_js.cc | 8 - src/lib/elementary/Elementary.h.in | 5 - src/lib/elementary/elementary_js.cc | 8 - src/lib/elementary/elm_app_client.c | 334 -------------- src/lib/elementary/elm_app_client.eo | 68 --- src/lib/elementary/elm_app_client.h | 3 - src/lib/elementary/elm_app_client_eo.h | 11 - src/lib/elementary/elm_app_client_view.c | 315 ------------- src/lib/elementary/elm_app_client_view.eo | 129 ------ src/lib/elementary/elm_app_client_view.h | 3 - src/lib/elementary/elm_app_client_view_eo.h | 3 - src/lib/elementary/elm_app_common.c | 56 --- src/lib/elementary/elm_app_common.h | 9 - src/lib/elementary/elm_app_server.c | 452 ------------------- src/lib/elementary/elm_app_server.eo | 107 ----- src/lib/elementary/elm_app_server.h | 3 - src/lib/elementary/elm_app_server_eet.c | 310 ------------- src/lib/elementary/elm_app_server_eet.h | 46 -- src/lib/elementary/elm_app_server_eo.h | 15 - src/lib/elementary/elm_app_server_view.c | 388 ---------------- src/lib/elementary/elm_app_server_view.eo | 108 ----- src/lib/elementary/elm_app_server_view.h | 3 - src/lib/elementary/elm_app_server_view_eo.h | 1 - 27 files changed, 3010 deletions(-) delete mode 100644 src/bin/elementary/test_application_server.c delete mode 100644 src/bin/elementary/test_task_switcher.c delete mode 100644 src/lib/elementary/elm_app_client.c delete mode 100644 src/lib/elementary/elm_app_client.eo delete mode 100644 src/lib/elementary/elm_app_client.h delete mode 100644 src/lib/elementary/elm_app_client_eo.h delete mode 100644 src/lib/elementary/elm_app_client_view.c delete mode 100644 src/lib/elementary/elm_app_client_view.eo delete mode 100644 src/lib/elementary/elm_app_client_view.h delete mode 100644 src/lib/elementary/elm_app_client_view_eo.h delete mode 100644 src/lib/elementary/elm_app_common.c delete mode 100644 src/lib/elementary/elm_app_common.h delete mode 100644 src/lib/elementary/elm_app_server.c delete mode 100644 src/lib/elementary/elm_app_server.eo delete mode 100644 src/lib/elementary/elm_app_server.h delete mode 100644 src/lib/elementary/elm_app_server_eet.c delete mode 100644 src/lib/elementary/elm_app_server_eet.h delete mode 100644 src/lib/elementary/elm_app_server_eo.h delete mode 100644 src/lib/elementary/elm_app_server_view.c delete mode 100644 src/lib/elementary/elm_app_server_view.eo delete mode 100644 src/lib/elementary/elm_app_server_view.h delete mode 100644 src/lib/elementary/elm_app_server_view_eo.h diff --git a/src/Makefile_Elementary.am b/src/Makefile_Elementary.am index 8b29e70965..54239b5f95 100644 --- a/src/Makefile_Elementary.am +++ b/src/Makefile_Elementary.am @@ -5,10 +5,6 @@ elm_public_eolian_files = \ lib/elementary/elm_access.eo \ lib/elementary/elm_actionslider.eo \ lib/elementary/elm_atspi_bridge.eo \ - lib/elementary/elm_app_client.eo \ - lib/elementary/elm_app_client_view.eo \ - lib/elementary/elm_app_server.eo \ - lib/elementary/elm_app_server_view.eo \ lib/elementary/elm_atspi_app_object.eo \ lib/elementary/elm_bg.eo \ lib/elementary/elm_bubble.eo \ @@ -319,16 +315,6 @@ includesub_HEADERS = \ lib/elementary/elm_actionslider.h \ lib/elementary/elm_actionslider_eo.h \ lib/elementary/elm_actionslider_legacy.h \ - lib/elementary/elm_app_common.h \ - lib/elementary/elm_app_server_eo.h \ - lib/elementary/elm_app_server_view_eo.h \ - lib/elementary/elm_app_server_view.h \ - lib/elementary/elm_app_server_eet.h \ - lib/elementary/elm_app_server.h \ - lib/elementary/elm_app_client_eo.h \ - lib/elementary/elm_app_client.h \ - lib/elementary/elm_app_client_view_eo.h \ - lib/elementary/elm_app_client_view.h \ lib/elementary/elm_app.h \ lib/elementary/elm_atspi_app_object.h \ lib/elementary/elm_authors.h \ @@ -571,12 +557,6 @@ lib_elementary_libelementary_la_SOURCES = \ lib/elementary/elc_scrolled_entry.c \ lib/elementary/elm_access.c \ lib/elementary/elm_actionslider.c \ - lib/elementary/elm_app_common.c \ - lib/elementary/elm_app_server_eet.c \ - lib/elementary/elm_app_server.c \ - lib/elementary/elm_app_server_view.c \ - lib/elementary/elm_app_client.c \ - lib/elementary/elm_app_client_view.c \ lib/elementary/elm_atspi_app_object.c \ lib/elementary/elm_atspi_bridge.c \ lib/elementary/elm_bg.c \ @@ -763,7 +743,6 @@ bin/elementary/test_3d.c \ bin/elementary/test_access.c \ bin/elementary/test_actionslider.c \ bin/elementary/test_anim.c \ -bin/elementary/test_application_server.c \ bin/elementary/test_bg.c \ bin/elementary/test_box.c \ bin/elementary/test_bubble.c \ @@ -852,7 +831,6 @@ bin/elementary/test_spinner.c \ bin/elementary/test_store.c \ bin/elementary/test_sys_notify.c \ bin/elementary/test_systray.c \ -bin/elementary/test_task_switcher.c \ bin/elementary/test_table.c \ bin/elementary/test_thumb.c \ bin/elementary/test_toolbar.c \ diff --git a/src/bin/elementary/test.c b/src/bin/elementary/test.c index a4ca08bee0..3a9d630d40 100644 --- a/src/bin/elementary/test.c +++ b/src/bin/elementary/test.c @@ -279,8 +279,6 @@ void test_dnd_genlist_gengrid(void *data, Evas_Object *obj, void *event_info); void test_dnd_multi_features(void *data, Evas_Object *obj, void *event_info); void test_dnd_types(void *data, Evas_Object *obj, void *event_info); void test_task_switcher(void *data, Evas_Object *obj, void *event_info); -void test_application_server_message(void *data, Evas_Object *obj, void *event_info); -void test_application_server_phone(void *data, Evas_Object *obj, void *event_info); void test_win_dialog(void *data, Evas_Object *obj, void *event_info); void test_box_disable(void *data, Evas_Object *obj, void *event_info); void test_layout_disable(void *data, Evas_Object *obj, void *event_info); @@ -969,10 +967,6 @@ add_tests: ADD_TEST(NULL, "Miscellaneous", "Font overlay", test_config_font_overlay); //------------------------------// - ADD_TEST(NULL, "Application client/server", "Task switcher", test_task_switcher); - ADD_TEST(NULL, "Application client/server", "Phone", test_application_server_phone); - ADD_TEST(NULL, "Application client/server", "Message", test_application_server_message); - ADD_TEST(NULL, "Widgets Disable/Enable", "Box", test_box_disable); ADD_TEST(NULL, "Widgets Disable/Enable", "Layout", test_layout_disable); #undef ADD_TEST diff --git a/src/bin/elementary/test_application_server.c b/src/bin/elementary/test_application_server.c deleted file mode 100644 index 704613525d..0000000000 --- a/src/bin/elementary/test_application_server.c +++ /dev/null @@ -1,200 +0,0 @@ -#ifdef HAVE_CONFIG_H -# include "elementary_config.h" -#endif -#include - -typedef struct { - Evas_Object *win, *label; - Eina_Stringshare *view_name; -} App_View_Context; - -static Elm_App_Server *phone_server = NULL, *msg_server = NULL; - -static void _text_update(App_View_Context *ctx, const char *state) -{ - char buffer[1024]; - - if (!ctx->label) - return; - snprintf(buffer, sizeof(buffer), "%s - state=%s", ctx->view_name, state); - elm_object_text_set(ctx->label, buffer); -} - -static void -_window_create(App_View_Context *ctx) -{ - ctx->win = elm_win_util_standard_add("app_view", ctx->view_name); - - ctx->label = elm_label_add(ctx->win); - evas_object_size_hint_weight_set(ctx->label, EVAS_HINT_EXPAND, - EVAS_HINT_EXPAND); - evas_object_data_set(ctx->win, "label", ctx->label); - - _text_update(ctx, "alive"); - - elm_win_resize_object_add(ctx->win, ctx->label); - evas_object_show(ctx->label); - - evas_object_resize(ctx->win, 400, 300); - evas_object_show(ctx->win); -} - -static void -_close_cb(void *data, const Efl_Event *event) -{ - App_View_Context *ctx = data; - if (ctx->win) - evas_object_del(ctx->win); - efl_del(event->object); -} - -static void -_pause_cb(void *data, const Efl_Event *event EINA_UNUSED) -{ - App_View_Context *ctx = data; - _text_update(ctx, "paused"); -} - -static void -_resume_cb(void *data, const Efl_Event *event) -{ - App_View_Context *ctx = data; - - //shallow state - if (!ctx->win) - { - _window_create(ctx); - elm_app_server_view_window_set(event->object, ctx->win); - } - - _text_update(ctx, "alive"); -} - -static void -_view_del_cb(void *data, const Efl_Event *event) -{ - App_View_Context *ctx = data; - - if (ctx->win) - evas_object_del(ctx->win); - elm_app_server_view_window_set(event->object, NULL); - eina_stringshare_del(ctx->view_name); - free(ctx); -} - -static Elm_App_Server_View * -_create_view_cb(Elm_App_Server *app_server, const Eina_Value *args EINA_UNUSED, Eina_Stringshare **error_name, Eina_Stringshare **error_message EINA_UNUSED) -{ - Elm_App_Server_View *view; - const char *id = NULL, *pkg = NULL; - App_View_Context *ctx; - - ctx = calloc(1, sizeof(App_View_Context)); - if (!ctx) - { - *error_name = eina_stringshare_add("No memory available"); - return NULL; - } - - view = efl_add(ELM_APP_SERVER_VIEW_CLASS, app_server, elm_app_server_view_id_set(efl_added, NULL)); - - id = elm_app_server_view_id_get(view); - pkg = elm_app_server_package_get(app_server); - ctx->view_name = eina_stringshare_printf("%s %s", pkg, id); - - _window_create(ctx); - - elm_app_server_view_title_set(view, ctx->view_name); - elm_app_server_view_new_events_set(view, 5); - elm_app_server_view_window_set(view, ctx->win); - elm_app_server_view_resume(view); - efl_event_callback_add(view, ELM_APP_SERVER_VIEW_EVENT_CLOSED, _close_cb, ctx); - efl_event_callback_add(view, ELM_APP_SERVER_VIEW_EVENT_PAUSED, _pause_cb, ctx); - efl_event_callback_add(view, ELM_APP_SERVER_VIEW_EVENT_RESUMED, _resume_cb, ctx); - efl_event_callback_add(view, EFL_EVENT_DEL, _view_del_cb, ctx); - - return view; -} - -static void -_terminate_cb(void *data EINA_UNUSED, const Efl_Event *event) -{ - const char *title = NULL; - - printf("terminate cb\n"); - elm_app_server_save(event->object); - title = elm_app_server_title_get(event->object); - - printf("Closing: %s\n", title); - efl_unref(event->object); -} - -Elm_App_Server * -test_application_server_common(const char *pkg) -{ - Eina_Iterator *views_iter = NULL; - Elm_App_Server_View *view; - Elm_App_Server *server; - - server = efl_add(ELM_APP_SERVER_CLASS, NULL, elm_app_server_constructor(efl_added, pkg, _create_view_cb)); - elm_app_server_title_set(server, pkg); - views_iter = elm_app_server_views_get(server); - efl_event_callback_add(server, ELM_APP_SERVER_EVENT_TERMINATE, _terminate_cb, NULL); - - //views create in shallow state - EINA_ITERATOR_FOREACH(views_iter, view) - { - App_View_Context *ctx; - const char *id = NULL; - - ctx = calloc(1, sizeof(App_View_Context)); - - id = elm_app_server_view_id_get(view); - ctx->view_name = eina_stringshare_printf("%s %s", pkg, id); - - efl_event_callback_add(view, ELM_APP_SERVER_VIEW_EVENT_CLOSED, _close_cb, ctx); - efl_event_callback_add(view, ELM_APP_SERVER_VIEW_EVENT_PAUSED, _pause_cb, ctx); - efl_event_callback_add(view, ELM_APP_SERVER_VIEW_EVENT_RESUMED, _resume_cb, ctx); - efl_event_callback_add(view, EFL_EVENT_DEL, _view_del_cb, ctx); - } - eina_iterator_free(views_iter); - - return server; -} - -static void -_server_del_cb(void *data, const Efl_Event *event EINA_UNUSED) -{ - Elm_App_Server **server = data; - *server = NULL; -} - -void -test_application_server_phone(void *data EINA_UNUSED, - Evas_Object *obj EINA_UNUSED, - void *event_info EINA_UNUSED) -{ - if (phone_server) - { - printf("Phone already running\n"); - return; - } - printf("Starting phone\n"); - phone_server = test_application_server_common("org.enlightenment.phone"); - efl_event_callback_add(phone_server, EFL_EVENT_DEL, _server_del_cb, &phone_server); -} - -void -test_application_server_message(void *data EINA_UNUSED, - Evas_Object *obj EINA_UNUSED, - void *event_info EINA_UNUSED) -{ - if (msg_server) - { - printf("Message already running\n"); - return; - } - printf("Starting message\n"); - msg_server = test_application_server_common( "org.enlightenment.message"); - efl_event_callback_add(msg_server, EFL_EVENT_DEL, _server_del_cb, &msg_server); -} diff --git a/src/bin/elementary/test_task_switcher.c b/src/bin/elementary/test_task_switcher.c deleted file mode 100644 index 3a6f7805d5..0000000000 --- a/src/bin/elementary/test_task_switcher.c +++ /dev/null @@ -1,397 +0,0 @@ -#ifdef HAVE_CONFIG_H -# include "elementary_config.h" -#endif -#include -#include - -#define APPS_COL 0 -#define VIEWS_COL 1 -#define PROPS_VIEW_COL 2 - -static Evas_Object *table = NULL; -static Elm_App_Client *app_selected = NULL; -static Eina_List *apps_list = NULL; - -static void _app_view_clicked(void *data, Evas_Object *obj, void *event_info); -static void _apps_list_update(void); - -static void _btn_close_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) -{ - Elm_App_Client_View *view = data; - elm_app_client_view_close(view, NULL, NULL); -} - -static void _btn_pause_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) -{ - Elm_App_Client_View *view = data; - elm_app_client_view_pause(view, NULL, NULL); -} - -static void _btn_resume_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) -{ - Elm_App_Client_View *view = data; - elm_app_client_view_resume(view, NULL, NULL); -} - -static void -_app_view_prop_changed_cb(void *data EINA_UNUSED, const Efl_Event *event) -{ - Elm_App_View_State state = ELM_APP_VIEW_STATE_UNKNOWN; - - state = elm_app_client_view_state_get(event->object); - - if (state == ELM_APP_VIEW_STATE_CLOSED) - { - Evas_Object *props = elm_table_child_get(table, PROPS_VIEW_COL, 0); - elm_table_unpack(table, props); - evas_object_del(props); - } - else - _app_view_clicked(event->object, NULL, NULL); -} - -static void -_app_view_clicked(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) -{ - Elm_App_Client_View *view = data; - Evas_Object *view_props, *close_btn, *resume_btn, *pause_btn; - const char *title = NULL, *icon = NULL; - int new_events = 0, window = 0; - unsigned short progress = 0; - Elm_App_View_State state = ELM_APP_VIEW_STATE_UNKNOWN; - char buffer[1024]; - - view_props = elm_table_child_get(table, PROPS_VIEW_COL, 0); - if (view_props) - { - Elm_App_Client_View *old_view; - - old_view = evas_object_data_del(view_props, "view"); - efl_event_callback_del(old_view, ELM_APP_CLIENT_VIEW_EVENT_PROPERTY_CHANGED, _app_view_prop_changed_cb, table); - elm_list_clear(view_props); - } - else - { - view_props = elm_list_add(table); - evas_object_size_hint_align_set(view_props, EVAS_HINT_FILL, - EVAS_HINT_FILL); - evas_object_show(view_props); - elm_table_pack(table, view_props, PROPS_VIEW_COL, 0, 1, 1); - } - - evas_object_data_set(view_props, "view", view); - - title = elm_app_client_view_title_get(view); - icon = elm_app_client_view_icon_get(view); - progress = elm_app_client_view_progress_get(view); - new_events = elm_app_client_view_new_events_get(view); - window = elm_app_client_view_window_get(view); - efl_event_callback_add(view, ELM_APP_CLIENT_VIEW_EVENT_PROPERTY_CHANGED, _app_view_prop_changed_cb, table); - - snprintf(buffer, sizeof(buffer), "Title=%s", title); - elm_list_item_append(view_props, buffer, NULL, NULL, NULL, NULL); - - snprintf(buffer, sizeof(buffer), "Icon=%s", icon); - elm_list_item_append(view_props, buffer, NULL, NULL, NULL, NULL); - - snprintf(buffer, sizeof(buffer), "Progress=%d", progress); - elm_list_item_append(view_props, buffer, NULL, NULL, NULL, NULL); - - snprintf(buffer, sizeof(buffer), "New events=%d", new_events); - elm_list_item_append(view_props, buffer, NULL, NULL, NULL, NULL); - - snprintf(buffer, sizeof(buffer), "WindowID=%d", window); - elm_list_item_append(view_props, buffer, NULL, NULL, NULL, NULL); - - state = elm_app_client_view_state_get(view); - if (state == ELM_APP_VIEW_STATE_LIVE) - snprintf(buffer, sizeof(buffer), "State=alive"); - else if (state == ELM_APP_VIEW_STATE_PAUSED) - snprintf(buffer, sizeof(buffer), "State=paused"); - else if (state == ELM_APP_VIEW_STATE_CLOSED) - snprintf(buffer, sizeof(buffer), "State=closed"); - else if (state == ELM_APP_VIEW_STATE_SHALLOW) - snprintf(buffer, sizeof(buffer), "State=shallow"); - else - snprintf(buffer, sizeof(buffer), "State=unknown"); - elm_list_item_append(view_props, buffer, NULL, NULL, NULL, NULL); - - close_btn = elm_button_add(view_props); - elm_object_text_set(close_btn, "Close view"); - evas_object_smart_callback_add(close_btn, "clicked", _btn_close_cb, view); - elm_list_item_append(view_props, NULL, close_btn, NULL, NULL, NULL); - - pause_btn = elm_button_add(view_props); - elm_object_text_set(pause_btn, "Pause view"); - evas_object_smart_callback_add(pause_btn, "clicked", _btn_pause_cb, view); - elm_list_item_append(view_props, NULL, pause_btn, NULL, NULL, NULL ); - - resume_btn = elm_button_add(view_props); - elm_object_text_set(resume_btn, "Resume view"); - evas_object_smart_callback_add(resume_btn, "clicked", _btn_resume_cb, view); - elm_list_item_append(view_props, NULL, resume_btn, NULL, NULL, NULL ); - - elm_list_go(view_props); -} - -static void -_popup_close_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) -{ - evas_object_del(data); -} - -static void app_client_view_open_cb(void *data EINA_UNUSED, Elm_App_Client_View *view, const char *error, const char *error_message) -{ - Evas_Object *popup, *btn_ok; - char buf[1024]; - - popup = elm_popup_add(table); - - if (view) - { - _app_view_clicked(view, NULL, NULL); - return; - } - - snprintf(buf, sizeof(buf), "Some error happen opening view: %s %s", error, error_message); - elm_object_part_text_set(popup, "default", buf); - - btn_ok = elm_button_add(popup); - elm_object_text_set(btn_ok, "Ok"); - elm_object_part_content_set(popup, "button1", btn_ok); - evas_object_smart_callback_add(btn_ok, "clicked", _popup_close_cb, popup); - - elm_popup_orient_set(popup, ELM_POPUP_ORIENT_TOP); - evas_object_show(popup); -} - -static void _popup_btn_open_view_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) -{ - Evas_Object *popup = data; - Eina_Value *args = NULL;//TODO fill with args of popup - Elm_App_Client *app = evas_object_data_get(popup, "app"); - - elm_app_client_view_open(app, args, app_client_view_open_cb, NULL); - - evas_object_del(popup); -} - -static void -_app_view_open(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) -{ - Elm_App_Client *app = data; - Evas_Object *popup, *btn_open, *btn_cancel, *args_box; - - popup = elm_popup_add(table); - elm_object_part_text_set(popup, "title,text", "Open a view"); - - btn_open = elm_button_add(popup); - elm_object_text_set(btn_open, "Open"); - elm_object_part_content_set(popup, "button1", btn_open); - evas_object_smart_callback_add(btn_open, "clicked", _popup_btn_open_view_cb, popup); - evas_object_show(btn_open); - - btn_cancel = elm_button_add(popup); - elm_object_text_set(btn_cancel, "Cancel"); - elm_object_part_content_set(popup, "button2", btn_cancel); - evas_object_smart_callback_add(btn_cancel, "clicked", _popup_close_cb, popup); - evas_object_show(btn_cancel); - - args_box = elm_box_add(popup); - elm_object_part_content_set(popup, "default", args_box); - elm_object_part_text_set(popup, "default", "TODO: add some entrys to add some parameters to view."); - - evas_object_data_set(popup, "app", app); - elm_popup_orient_set(popup, ELM_POPUP_ORIENT_TOP); - evas_object_show(popup); -} - -static void _app_close_all_views_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) -{ - Elm_App_Client *app = data; - elm_app_client_view_all_close(app); -} - -static void -_app_terminate_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) -{ - Elm_App_Client *app = data; - elm_app_client_terminate(app); -} - -static void -_app_clicked(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) -{ - Evas_Object *views, *btn_close_all, *btn_terminate, *btn_open_view; - Eina_Iterator *views_iter = NULL; - Elm_App_Client_View *client_view; - Elm_App_Client *app = data; - - app_selected = app; - - views = elm_table_child_get(table, VIEWS_COL, 0); - if (!views) - { - views = elm_list_add(table); - evas_object_size_hint_align_set(views, EVAS_HINT_FILL, EVAS_HINT_FILL); - evas_object_show(views); - elm_table_pack(table, views, VIEWS_COL, 0, 1, 1); - } - else - elm_list_clear(views); - - btn_open_view = elm_button_add(views); - elm_object_text_set(btn_open_view, "Open a view"); - evas_object_smart_callback_add(btn_open_view, "clicked", _app_view_open, app); - elm_list_item_append(views, NULL, btn_open_view, NULL, NULL, NULL); - - views_iter = elm_app_client_views_get(app); - EINA_ITERATOR_FOREACH(views_iter, client_view) - { - const char *path = NULL; - - path = elm_app_client_view_path_get(client_view); - elm_list_item_append(views, path, NULL, NULL, _app_view_clicked, client_view); - } - eina_iterator_free(views_iter); - - btn_close_all = elm_button_add(views); - elm_object_text_set(btn_close_all, "Close all views"); - evas_object_smart_callback_add(btn_close_all, "clicked", _app_close_all_views_cb, app); - elm_list_item_append(views, NULL, btn_close_all, NULL, NULL, NULL); - - btn_terminate = elm_button_add(views); - elm_object_text_set(btn_terminate, "Terminate application"); - evas_object_smart_callback_add(btn_terminate, "clicked", _app_terminate_cb, app); - elm_list_item_append(views, NULL, btn_terminate, NULL, NULL, NULL); - - elm_list_go(views); -} - -static void -_view_list_update_cb(void *data EINA_UNUSED, const Efl_Event *event) -{ - if (app_selected == event->object) - _app_clicked(event->object, NULL, NULL); -} - -static void -_win_del(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED) -{ - Elm_App_Client *app; - EINA_LIST_FREE(apps_list, app) - efl_del(app); -} - -static void -_app_open(const char *package) -{ - Elm_App_Client *app; - Eina_List *l; - - EINA_LIST_FOREACH(apps_list, l, app) - { - const char *app_package = NULL; - - app_package = elm_app_client_package_get(app); - if (!app_package) - return; - if (!strcmp(package, app_package)) - return; - } - - app = efl_add(ELM_APP_CLIENT_CLASS, NULL, elm_app_client_constructor(efl_added, package)); - efl_event_callback_add(app, ELM_APP_CLIENT_EVENT_VIEW_LIST_LOADED, _view_list_update_cb, table); - efl_event_callback_add(app, ELM_APP_CLIENT_EVENT_VIEW_CREATED, _view_list_update_cb, table); - efl_event_callback_add(app, ELM_APP_CLIENT_EVENT_VIEW_DELETED, _view_list_update_cb, table); - apps_list = eina_list_append(apps_list, app); -} - -static void -_btn_app_open_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) -{ - Evas_Object *entry = data; - const char *pkg = elm_object_text_get(entry); - - if (!pkg || !pkg[0]) - return; - - _app_open(pkg); - _apps_list_update(); -} - -static void -_open_custom_app_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info) -{ - elm_list_item_selected_set(event_info, EINA_FALSE); - elm_object_focus_set(data, EINA_TRUE); -} - -static void -_apps_list_update(void) -{ - Evas_Object *entry, *btn_open, *apps; - Elm_App_Client *app; - Eina_List *l; - - apps = elm_table_child_get(table, APPS_COL, 0); - elm_list_clear(apps); - - EINA_LIST_FOREACH(apps_list, l, app) - { - const char *app_package = NULL; - app_package = elm_app_client_package_get(app); - elm_list_item_append(apps, app_package, NULL, NULL, _app_clicked, app); - } - - entry = elm_entry_add(apps); - elm_entry_single_line_set(entry, EINA_TRUE); - evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, 0.0); - evas_object_size_hint_align_set(entry, EVAS_HINT_FILL, 0.5); - - btn_open = elm_button_add(apps); - elm_object_text_set(btn_open, "Open"); - evas_object_smart_callback_add(btn_open, "clicked", _btn_app_open_cb, entry); - elm_list_item_append(apps, NULL, entry, btn_open, _open_custom_app_cb, entry); - - elm_list_go(apps); -} - -void -test_task_switcher(void *data EINA_UNUSED, - Evas_Object *obj EINA_UNUSED, - void *event_info EINA_UNUSED) -{ - Evas_Object *win, *apps; - - if (apps_list) - { - printf("Task switcher already open.\n"); - return; - } - - win = elm_win_util_standard_add("task switcher", "Task switcher"); - elm_win_autodel_set(win, EINA_TRUE); - - evas_object_smart_callback_add(win, "delete,request", _win_del, NULL); - - table = elm_table_add(win); - elm_win_resize_object_add(win, table); - elm_table_padding_set(table, 0, 0); - elm_table_homogeneous_set(table, EINA_TRUE); - evas_object_size_hint_weight_set(table, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(table, EVAS_HINT_FILL, EVAS_HINT_FILL); - - _app_open("org.enlightenment.message"); - _app_open("org.enlightenment.phone"); - - apps = elm_list_add(table); - evas_object_size_hint_align_set(apps, EVAS_HINT_FILL, EVAS_HINT_FILL); - evas_object_show(apps); - elm_table_pack(table, apps, APPS_COL, 0, 1, 1); - _apps_list_update(); - - evas_object_show(table); - evas_object_resize(win, 1024, 768); - evas_object_show(win); -} diff --git a/src/bindings/js/efl_js/efl_js.cc b/src/bindings/js/efl_js/efl_js.cc index ec64ee4c7b..09c011b8df 100644 --- a/src/bindings/js/efl_js/efl_js.cc +++ b/src/bindings/js/efl_js/efl_js.cc @@ -132,10 +132,6 @@ EAPI void register_object(v8::Handle global, v8::Isolate* isolate); namespace emotion { EAPI void register_object(v8::Handle global, v8::Isolate* isolate); } -EAPI void register_elm_app_client(v8::Handle global, v8::Isolate* isolate); -EAPI void register_elm_app_client_view(v8::Handle global, v8::Isolate* isolate); -EAPI void register_elm_app_server(v8::Handle global, v8::Isolate* isolate); -EAPI void register_elm_app_server_view(v8::Handle global, v8::Isolate* isolate); EAPI void register_elm_atspi_app_object(v8::Handle global, v8::Isolate* isolate); EAPI void register_elm_interface_atspi_accessible(v8::Handle global, v8::Isolate* isolate); EAPI void register_elm_interface_atspi_action(v8::Handle global, v8::Isolate* isolate); @@ -352,10 +348,6 @@ EAPI void init(v8::Handle exports) // elm::register_access(exports, v8::Isolate::GetCurrent()); // elm::register_actionslider(exports, v8::Isolate::GetCurrent()); - // ::register_elm_app_client(exports, v8::Isolate::GetCurrent()); - // ::register_elm_app_client_view(exports, v8::Isolate::GetCurrent()); - // ::register_elm_app_server(exports, v8::Isolate::GetCurrent()); - // ::register_elm_app_server_view(exports, v8::Isolate::GetCurrent()); // ::register_elm_atspi_app_object(exports, v8::Isolate::GetCurrent()); // elm::register_box(exports, v8::Isolate::GetCurrent()); diff --git a/src/lib/elementary/Elementary.h.in b/src/lib/elementary/Elementary.h.in index 0257805a6c..943864196f 100644 --- a/src/lib/elementary/Elementary.h.in +++ b/src/lib/elementary/Elementary.h.in @@ -184,11 +184,6 @@ EAPI extern Elm_Version *elm_version; #include #include #include -#include -#include -#include -#include -#include #include #include #include diff --git a/src/lib/elementary/elementary_js.cc b/src/lib/elementary/elementary_js.cc index 268555afef..560d466e69 100644 --- a/src/lib/elementary/elementary_js.cc +++ b/src/lib/elementary/elementary_js.cc @@ -34,10 +34,6 @@ # endif #endif /* ! _WIN32 */ -EAPI void register_elm_app_client(v8::Handle global, v8::Isolate* isolate); -EAPI void register_elm_app_client_view(v8::Handle global, v8::Isolate* isolate); -EAPI void register_elm_app_server(v8::Handle global, v8::Isolate* isolate); -EAPI void register_elm_app_server_view(v8::Handle global, v8::Isolate* isolate); EAPI void register_elm_atspi_app_object(v8::Handle global, v8::Isolate* isolate); EAPI void register_elm_interface_atspi_accessible(v8::Handle global, v8::Isolate* isolate); EAPI void register_elm_interface_atspi_action(v8::Handle global, v8::Isolate* isolate); @@ -169,10 +165,6 @@ void init(v8::Handle exports) { elm::register_access(exports, v8::Isolate::GetCurrent()); elm::register_actionslider(exports, v8::Isolate::GetCurrent()); - ::register_elm_app_client(exports, v8::Isolate::GetCurrent()); - ::register_elm_app_client_view(exports, v8::Isolate::GetCurrent()); - ::register_elm_app_server(exports, v8::Isolate::GetCurrent()); - ::register_elm_app_server_view(exports, v8::Isolate::GetCurrent()); ::register_elm_atspi_app_object(exports, v8::Isolate::GetCurrent()); elm::register_bg(exports, v8::Isolate::GetCurrent()); elm::register_box(exports, v8::Isolate::GetCurrent()); diff --git a/src/lib/elementary/elm_app_client.c b/src/lib/elementary/elm_app_client.c deleted file mode 100644 index ab4df1b407..0000000000 --- a/src/lib/elementary/elm_app_client.c +++ /dev/null @@ -1,334 +0,0 @@ -#ifdef HAVE_CONFIG_H -# include "elementary_config.h" -#endif - -#include -#include "elm_priv.h" - -#define MY_CLASS ELM_APP_CLIENT_CLASS - -#define MY_CLASS_NAME "Elm_App_Client" - -typedef struct -{ - Eldbus_Proxy *app_proxy; - Eina_Hash *views; -} Elm_App_Client_Data; - -static void -_sub_path_process(Elm_App_Client *eo, Eldbus_Message_Iter *obj_iter, Elm_App_Client_Data *data, Eina_Bool loading_list) -{ - const char *obj_path; - Eldbus_Message_Iter *array_iface, *iface; - - if (!eldbus_message_iter_arguments_get(obj_iter, "oa{sa{sv}}", &obj_path, &array_iface)) - return; - while (eldbus_message_iter_get_and_next(array_iface, '{', &iface)) - { - const char *iface_name; - Eldbus_Message_Iter *array_props; - Elm_App_Client_View *view; - - if (!eldbus_message_iter_arguments_get(iface, "sa{sv}", &iface_name, - &array_props)) - continue; - if (strcmp(iface_name, "org.enlightenment.ApplicationView1")) - continue; - - view = eina_hash_find(data->views, obj_path); - if (view) - continue; - - view = efl_add(ELM_APP_CLIENT_VIEW_CLASS, eo, elm_app_client_view_path_set(efl_added, obj_path)); - eina_hash_add(data->views, obj_path, view); - if (!loading_list) - efl_event_callback_legacy_call(eo, ELM_APP_CLIENT_EVENT_VIEW_CREATED, view); - } -} - -static void -_objects_get(void *data, const Eldbus_Message *msg, Eldbus_Pending *pending EINA_UNUSED) -{ - Eo *eo = data; - Elm_App_Client_Data *cdata = efl_data_scope_get(eo, MY_CLASS); - Eldbus_Message_Iter *array_path, *path; - - if (eldbus_message_error_get(msg, NULL, NULL)) - return; - - if (!eldbus_message_arguments_get(msg, "a{oa{sa{sv}}}", &array_path)) - return; - while (eldbus_message_iter_get_and_next(array_path, '{', &path)) - _sub_path_process(eo, path, cdata, EINA_TRUE); - - efl_event_callback_legacy_call(eo, ELM_APP_CLIENT_EVENT_VIEW_LIST_LOADED, NULL); -} - -static void _iface_add(void *data, const Eldbus_Message *msg) -{ - Eo *eo = data; - Elm_App_Client_Data *cdata = efl_data_scope_get(eo, MY_CLASS); - Eldbus_Message_Iter *main_iter; - - main_iter = eldbus_message_iter_get(msg); - _sub_path_process(eo, main_iter, cdata, EINA_FALSE); -} - -static void -_iface_del(void *data, const Eldbus_Message *msg) -{ - Eo *eo = data; - Elm_App_Client_Data *cdata = efl_data_scope_get(eo, MY_CLASS); - const char *path, *iface; - Eldbus_Message_Iter *array_iface; - - if (!eldbus_message_arguments_get(msg, "oas", &path, &array_iface)) - return; - while (eldbus_message_iter_get_and_next(array_iface, 's', &iface)) - { - Elm_App_Client_View *view; - Elm_App_View_State view_state = ELM_APP_VIEW_STATE_UNKNOWN; - - if (strcmp(iface, "org.enlightenment.ApplicationView1")) - continue; - - view = eina_hash_find(cdata->views, path); - if (!view) - continue; - - view_state = elm_app_client_view_state_get(view); - if (view_state != ELM_APP_VIEW_STATE_CLOSED) - { - elm_app_client_view_internal_state_set(view, - ELM_APP_VIEW_STATE_SHALLOW); - continue; - } - - eina_hash_del(cdata->views, path, NULL); - efl_event_callback_legacy_call(eo, ELM_APP_CLIENT_EVENT_VIEW_DELETED, view); - efl_del(view); - } -} - -static void -_pkg_name_owner_changed_cb(void *data, const char *bus EINA_UNUSED, const char *old_id EINA_UNUSED, const char *new_id) -{ - Elm_App_Client *eo = data; - Elm_App_Client_Data *cdata = efl_data_scope_get(eo, MY_CLASS); - Eina_Iterator *iter; - Elm_App_Client_View *view; - Eina_List *views_list = NULL; - - if (!new_id || (new_id[0] == '\0')) - return; - - iter = eina_hash_iterator_data_new(cdata->views); - EINA_ITERATOR_FOREACH(iter, view) - views_list = eina_list_append(views_list, view); - eina_iterator_free(iter); - - /* - * remove all views that are closed of the views hash - * views not closed, only set they to SHALLOW - */ - EINA_LIST_FREE(views_list, view) - { - Elm_App_View_State view_state = ELM_APP_VIEW_STATE_UNKNOWN; - const char *path = NULL; - - view_state = elm_app_client_view_state_get(view); - path = elm_app_client_view_path_get(view); - if (view_state != ELM_APP_VIEW_STATE_CLOSED) - { - elm_app_client_view_internal_state_set(view, - ELM_APP_VIEW_STATE_SHALLOW); - continue; - } - - eina_hash_del(cdata->views, path, NULL); - efl_event_callback_legacy_call(eo, ELM_APP_CLIENT_EVENT_VIEW_DELETED, view); - efl_del(view); - } -} - -EOLIAN static void -_elm_app_client_constructor(Eo *eo, Elm_App_Client_Data *data, const char *pkg) -{ - Eldbus_Connection *conn; - Eldbus_Object *obj; - char *path; - - EINA_SAFETY_ON_NULL_RETURN(pkg); - - data->views = eina_hash_string_small_new(NULL); - - path = _dbus_package_to_path(pkg); - - eldbus_init(); - conn = eldbus_connection_get(ELDBUS_CONNECTION_TYPE_SESSION); - obj = eldbus_object_get(conn, pkg, path); - data->app_proxy = eldbus_proxy_get(obj, "org.enlightenment.Application1"); - eldbus_object_managed_objects_get(obj, _objects_get, eo); - eldbus_object_manager_interfaces_added(obj, _iface_add, eo); - eldbus_object_manager_interfaces_removed(obj, _iface_del, eo); - eldbus_name_owner_changed_callback_add(conn, pkg, _pkg_name_owner_changed_cb, - eo, EINA_FALSE); - - free(path); -} - -static void -_create_view_cb(void *data, const Eldbus_Message *msg, Eldbus_Pending *pending) -{ - Elm_App_Client_Open_View_Cb cb = eldbus_pending_data_del(pending, "user_cb"); - void *user_data = eldbus_pending_data_del(pending, "user_data"); - const char *error_name, *error_message, *view_path; - Elm_App_Client *eo = data; - Elm_App_Client_View *view; - Elm_App_Client_Data *cdata = efl_data_scope_get(eo, MY_CLASS); - - if (eldbus_message_error_get(msg, &error_name, &error_message)) - { - if (!cb) - return; - if (error_name && !strcmp(error_name, ELDBUS_ERROR_PENDING_CANCELED)) - cb(user_data, NULL, ELM_APP_CLIENT_VIEW_OPEN_CANCELED, NULL); - else if (error_name && !strcmp(error_name, ELDBUS_ERROR_PENDING_TIMEOUT)) - cb(user_data, NULL, ELM_APP_CLIENT_VIEW_OPEN_TIMEOUT, error_message); - else - cb(user_data, NULL, error_name, error_message); - return; - } - - if (!eldbus_message_arguments_get(msg, "o", &view_path)) - { - if (cb) - cb(user_data, NULL, "Unknow error", NULL); - return; - } - - /** - * Because a IntefaceAdd signal could arrive first - */ - view = eina_hash_find(cdata->views, view_path); - if (!view) - { - view = efl_add(ELM_APP_CLIENT_VIEW_CLASS, eo, elm_app_client_view_path_set(efl_added, view_path)); - eina_hash_add(cdata->views, view_path, view); - efl_event_callback_legacy_call(eo, ELM_APP_CLIENT_EVENT_VIEW_CREATED, view); - } - - if (!view) - { - if (cb) - cb(user_data, NULL, ELM_APP_CLEINT_VIEW_OPEN_ERROR, NULL); - return; - } - if (cb) - cb(user_data, view, NULL, NULL); -} - -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) -{ - Eldbus_Message *msg; - Eldbus_Pending *pending; - - msg = eldbus_proxy_method_call_new(data->app_proxy, "CreateView"); - - if (args) - { - if (!eldbus_message_from_eina_value("a{sv}", msg, args)) - { - 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 NULL; - } - } - else - { - Eldbus_Message_Iter *main_iter = eldbus_message_iter_get(msg); - Eldbus_Message_Iter *array; - - eldbus_message_iter_arguments_append(main_iter, "a{sv}", &array); - eldbus_message_iter_container_close(main_iter, array); - } - - pending = eldbus_proxy_send(data->app_proxy, msg, _create_view_cb, eo, -1); - if (user_data) - eldbus_pending_data_set(pending, "user_data", user_data); - if (cb) - eldbus_pending_data_set(pending, "user_cb", cb); - - 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 -_elm_app_client_view_all_close(Eo *obj EINA_UNUSED, Elm_App_Client_Data *data) -{ - eldbus_proxy_call(data->app_proxy, "CloseAllViews", NULL, NULL, -1, ""); -} - -EOLIAN static void -_elm_app_client_terminate(Eo *eo EINA_UNUSED, Elm_App_Client_Data *data) -{ - eldbus_proxy_call(data->app_proxy, "Terminate", NULL, NULL, -1, ""); -} - -EOLIAN static const char* -_elm_app_client_package_get(Eo *eo EINA_UNUSED, Elm_App_Client_Data *data) -{ - Eldbus_Object *obj; - - obj = eldbus_proxy_object_get(data->app_proxy); - return eldbus_object_bus_name_get(obj); -} - -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) -{ - eldbus_pending_cancel(pending); -} - -EOLIAN static Eo * -_elm_app_client_efl_object_finalize(Eo *obj, Elm_App_Client_Data *data) -{ - EINA_SAFETY_ON_NULL_RETURN_VAL(data->views, NULL); - - return efl_finalize(efl_super(obj, MY_CLASS)); -} - -EOLIAN static void -_elm_app_client_efl_object_destructor(Eo *eo, Elm_App_Client_Data *data) -{ - Eldbus_Object *obj; - Eldbus_Connection *conn; - Eina_Iterator *iter; - Elm_App_Client_View *view; - - iter = eina_hash_iterator_data_new(data->views); - EINA_ITERATOR_FOREACH(iter, view) - efl_del(view); - eina_iterator_free(iter); - eina_hash_free(data->views); - - obj = eldbus_proxy_object_get(data->app_proxy); - conn = eldbus_object_connection_get(obj); - eldbus_name_owner_changed_callback_del(conn, eldbus_object_bus_name_get(obj), - _pkg_name_owner_changed_cb, eo); - eldbus_proxy_unref(data->app_proxy); - eldbus_object_unref(obj); - eldbus_connection_unref(conn); - eldbus_shutdown(); - - efl_destructor(efl_super(eo, MY_CLASS)); -} - -#include "elm_app_client.eo.c" diff --git a/src/lib/elementary/elm_app_client.eo b/src/lib/elementary/elm_app_client.eo deleted file mode 100644 index d682c25808..0000000000 --- a/src/lib/elementary/elm_app_client.eo +++ /dev/null @@ -1,68 +0,0 @@ -import eina_types; - -type Elm_App_Client_Open_View_Cb: __undefined_type; -type Elm_App_Client_Pending: __undefined_type; - -class Elm.App.Client (Efl.Object) -{ - methods { - @property views { - get { - [[Return a iterator with all views of application.]] - } - values { - ret: free(own(iterator), eina_iterator_free); [[The iterator with all views, must be freed after use.]] - } - } - @property package { - get { - [[Return the application package.]] - } - values { - ret: string; [[application package]] - } - } - constructor { - [[Class constructor of elm_app_client.]] - legacy: null; - params { - @in package: string; [[Package of application]] - } - } - view_all_close { - [[Close all views of application.]] - } - terminate { - [[Terminate application.]] - } - view_open { - [[Open an application view.]] - params { - @in args: generic_value * @optional; [[an array of.]] - @in view_open_cb: Elm_App_Client_Open_View_Cb @optional; [[callback to be called when view open]] - @in data: const(void_ptr) @optional; [[callback user data]] - } - return: Elm_App_Client_Pending *; [[handler to cancel the view opening if it takes to long ]] - } - view_open_cancel { - [[Cancel a pending elm_app_client_view_open().]] - params { - @in pending: Elm_App_Client_Pending *; [[the view open handler]] - } - } - } - implements { - Efl.Object.destructor; - Efl.Object.finalize; - } - constructors { - .constructor; - } - 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/src/lib/elementary/elm_app_client.h b/src/lib/elementary/elm_app_client.h deleted file mode 100644 index 8669332296..0000000000 --- a/src/lib/elementary/elm_app_client.h +++ /dev/null @@ -1,3 +0,0 @@ -#ifdef EFL_EO_API_SUPPORT -#include "elm_app_client_eo.h" -#endif diff --git a/src/lib/elementary/elm_app_client_eo.h b/src/lib/elementary/elm_app_client_eo.h deleted file mode 100644 index dac06cdacb..0000000000 --- a/src/lib/elementary/elm_app_client_eo.h +++ /dev/null @@ -1,11 +0,0 @@ -typedef Eo Elm_App_Client; -#define _ELM_APP_CLIENT_EO_CLASS_TYPE - -typedef Eo Elm_App_Client_View; -#define _ELM_APP_CLIENT_VIEW_EO_CLASS_TYPE - -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" \ No newline at end of file diff --git a/src/lib/elementary/elm_app_client_view.c b/src/lib/elementary/elm_app_client_view.c deleted file mode 100644 index a662edb530..0000000000 --- a/src/lib/elementary/elm_app_client_view.c +++ /dev/null @@ -1,315 +0,0 @@ -#ifdef HAVE_CONFIG_H -# include "elementary_config.h" -#endif - -#include -#include "elm_priv.h" - -#define MY_CLASS ELM_APP_CLIENT_VIEW_CLASS - -#define MY_CLASS_NAME "Elm_App_Client_View" - -typedef struct -{ - Eldbus_Proxy *view_proxy; - Elm_App_View_State state; - Eina_Stringshare *path; -} Elm_App_Client_View_Data; - -static const char *_string_prop_get(const Eina_Value *v) -{ - const char *str; - - if (!v) - return ""; - - eina_value_get(v, &str); - return str; -} - -static int _int_prop_get(const Eina_Value *v) -{ - int num; - - if (!v) - return 0; - - eina_value_get(v, &num); - return num; -} - -static short _short_prop_get(const Eina_Value *v) -{ - short num; - - if (!v) - return 0; - - eina_value_get(v, &num); - return num; -} - -static void -_prop_changed(void *user_data, Eldbus_Proxy *proxy EINA_UNUSED, void *event_info) -{ - Eldbus_Proxy_Event_Property_Changed *prop_event = event_info; - Elm_App_Client_View *eo = user_data; - const Eina_Value *v = prop_event->value; - Elm_App_Client_View_Data *cdata = efl_data_scope_get(eo, MY_CLASS); - - if (!strcmp(prop_event->name, "Title")) - efl_event_callback_legacy_call(eo, ELM_APP_CLIENT_VIEW_EVENT_TITLE_CHANGED, (void *) _string_prop_get(v)); - else if (!strcmp(prop_event->name, "IconName")) - efl_event_callback_legacy_call(eo, ELM_APP_CLIENT_VIEW_EVENT_ICON_CHANGED, (void *) _string_prop_get(v)); - else if (!strcmp(prop_event->name, "IconPixels")) - efl_event_callback_legacy_call(eo, ELM_APP_CLIENT_VIEW_EVENT_ICON_PIXELS_CHANGED, NULL); - else if (!strcmp(prop_event->name, "NewEvents")) - efl_event_callback_legacy_call(eo, ELM_APP_CLIENT_VIEW_EVENT_NEW_EVENTS_CHANGED, (void *)(uintptr_t)_int_prop_get(v)); - else if (!strcmp(prop_event->name, "Progress")) - efl_event_callback_legacy_call(eo, ELM_APP_CLIENT_VIEW_EVENT_PROGRESS_CHANGED, (void *)(uintptr_t)_short_prop_get(v)); - else if (!strcmp(prop_event->name, "State")) - { - cdata->state = _string_state_to_id(_string_prop_get(v)); - efl_event_callback_legacy_call(eo, ELM_APP_CLIENT_VIEW_EVENT_STATE_CHANGED, (void *)(uintptr_t)cdata->state); - } - else if (!strcmp(prop_event->name, "WindowId")) - efl_event_callback_legacy_call(eo, ELM_APP_CLIENT_VIEW_EVENT_WINDOW_CHANGED, (void *)(uintptr_t)_int_prop_get(v)); - else - return; - - efl_event_callback_legacy_call(eo, ELM_APP_CLIENT_VIEW_EVENT_PROPERTY_CHANGED, (void *) prop_event->name); -} - -static void -_props_loaded(void *user_data, Eldbus_Proxy *proxy EINA_UNUSED, void *event_info EINA_UNUSED) -{ - const Eina_Hash *props = eldbus_proxy_property_local_get_all(proxy); - Eina_Iterator *iter; - Eina_Hash_Tuple *t; - - iter = eina_hash_iterator_tuple_new(props); - EINA_ITERATOR_FOREACH(iter, t) - { - Eldbus_Proxy_Event_Property_Changed event; - - event.name = t->key; - event.proxy = proxy; - event.value = t->data; - - _prop_changed(user_data, proxy, &event); - } - eina_iterator_free(iter); -} - -void -elm_app_client_view_internal_state_set(Eo *eo, Elm_App_View_State state) -{ - Elm_App_Client_View_Data *cdata; - Eina_Bool changed = EINA_FALSE; - - EINA_SAFETY_ON_NULL_RETURN(eo); - EINA_SAFETY_ON_FALSE_RETURN(efl_isa(eo, ELM_APP_CLIENT_VIEW_CLASS)); - - cdata = efl_data_scope_get(eo, MY_CLASS); - changed = cdata->state != state; - cdata->state = state; - if (!changed) - return; - efl_event_callback_legacy_call(eo, ELM_APP_CLIENT_VIEW_EVENT_STATE_CHANGED, (void *)(uintptr_t)cdata->state); -} - -EOLIAN static Eo * -_elm_app_client_view_efl_object_finalize(Eo *eo, Elm_App_Client_View_Data *data) -{ - Elm_App_Client *parent = NULL; - const char *package = data->path; - Eldbus_Connection *conn; - Eldbus_Object *obj; - - parent = efl_parent_get(eo); - EINA_SAFETY_ON_TRUE_RETURN_VAL((!parent) || - (!efl_isa(parent, ELM_APP_CLIENT_CLASS)), NULL); - - EINA_SAFETY_ON_NULL_RETURN_VAL(data->path, NULL); - - package = elm_app_client_package_get(parent); - - eldbus_init(); - conn = eldbus_connection_get(ELDBUS_CONNECTION_TYPE_SESSION); - obj = eldbus_object_get(conn, package, data->path); - data->view_proxy = eldbus_proxy_get(obj, - "org.enlightenment.ApplicationView1"); - eldbus_proxy_properties_monitor(data->view_proxy, EINA_TRUE); - eldbus_proxy_event_callback_add(data->view_proxy, - ELDBUS_PROXY_EVENT_PROPERTY_CHANGED, - _prop_changed, eo); - eldbus_proxy_event_callback_add(data->view_proxy, - ELDBUS_PROXY_EVENT_PROPERTY_LOADED, - _props_loaded, eo); - - return efl_finalize(efl_super(eo, MY_CLASS)); -} - -static void -_dbus_state_set_cb(void *data, const Eldbus_Message *msg, Eldbus_Pending *pending) -{ - Elm_App_Client_View *eo = data; - Elm_App_Client_View_Cb cb = eldbus_pending_data_del(pending, "cb"); - void *user_data = eldbus_pending_data_del(pending, "user_data"); - const char *error = NULL, *error_message = NULL; - - if (!cb) return; - - if (!eldbus_message_error_get(msg, &error, &error_message)) - error_message = NULL; - - cb(user_data, eo, error, error_message); -} - -static void -_dbus_action_do(Eo *eo, Eldbus_Proxy *proxy, const char *action, Elm_App_Client_View_Cb cb, const void *data) -{ - Eldbus_Pending *pending; - - if (!cb) - { - eldbus_proxy_call(proxy, action, NULL, NULL, -1, ""); - return; - } - - pending = eldbus_proxy_call(proxy, action, _dbus_state_set_cb, eo, -1, ""); - eldbus_pending_data_set(pending, "cb", cb); - eldbus_pending_data_set(pending, "user_data", data); -} - -EOLIAN static void -_elm_app_client_view_resume(Eo *eo, Elm_App_Client_View_Data *data, Elm_App_Client_View_Cb cb, const void *user_data) -{ - - _dbus_action_do(eo, data->view_proxy, "Resume", cb, user_data); -} - -EOLIAN static void -_elm_app_client_view_pause(Eo *eo, Elm_App_Client_View_Data *data, Elm_App_Client_View_Cb cb, const void *user_data) -{ - - _dbus_action_do(eo, data->view_proxy, "Pause", cb, user_data); -} - -EOLIAN static void -_elm_app_client_view_close(Eo *eo, Elm_App_Client_View_Data *data, Elm_App_Client_View_Cb cb, const void *user_data) -{ - - _dbus_action_do(eo, data->view_proxy, "Close", cb, user_data); -} - -EOLIAN static const char* -_elm_app_client_view_title_get(Eo *eo EINA_UNUSED, Elm_App_Client_View_Data *data) -{ - Eina_Value *v; - - v = eldbus_proxy_property_local_get(data->view_proxy, "Title"); - return _string_prop_get(v); -} - -EOLIAN static const char* -_elm_app_client_view_icon_get(Eo *eo EINA_UNUSED, Elm_App_Client_View_Data *data) -{ - Eina_Value *v; - - v = eldbus_proxy_property_local_get(data->view_proxy, "IconName"); - return _string_prop_get(v); -} - -EOLIAN static void -_elm_app_client_view_icon_pixels_get(Eo *obj EINA_UNUSED, Elm_App_Client_View_Data *pd EINA_UNUSED, - unsigned int *w EINA_UNUSED, unsigned int *h EINA_UNUSED, - Eina_Bool *has_alpha EINA_UNUSED, const unsigned char **pixels EINA_UNUSED) -{ - //TODO -} - -EOLIAN static unsigned short -_elm_app_client_view_progress_get(Eo *eo EINA_UNUSED, Elm_App_Client_View_Data *data) -{ - Eina_Value *v; - - v = eldbus_proxy_property_local_get(data->view_proxy, "Progress"); - return _short_prop_get(v); -} - -EOLIAN static int -_elm_app_client_view_new_events_get(Eo *eo EINA_UNUSED, Elm_App_Client_View_Data *data) -{ - Eina_Value *v; - - v = eldbus_proxy_property_local_get(data->view_proxy, "NewEvents"); - return _int_prop_get(v); -} - -EOLIAN static Elm_App_View_State -_elm_app_client_view_state_get(Eo *eo EINA_UNUSED, Elm_App_Client_View_Data *data) -{ - return data->state; -} - -EOLIAN static int -_elm_app_client_view_window_get(Eo *eo EINA_UNUSED, Elm_App_Client_View_Data *data) -{ - Eina_Value *v; - - v = eldbus_proxy_property_local_get(data->view_proxy, "WindowId"); - return _int_prop_get(v); -} - -EOLIAN static void -_elm_app_client_view_path_set(Eo *eo, Elm_App_Client_View_Data *data, const char *path) -{ - if (efl_finalized_get(eo)) - { - ERR("Can't set id after object has been created."); - return; - } - - data->path = eina_stringshare_add(path); -} - -EOLIAN static const char* -_elm_app_client_view_path_get(Eo *eo EINA_UNUSED, Elm_App_Client_View_Data *data) -{ - Eldbus_Object *obj; - - obj = eldbus_proxy_object_get(data->view_proxy); - return eldbus_object_path_get(obj); -} - -EOLIAN static const char* -_elm_app_client_view_package_get(Eo *eo EINA_UNUSED, Elm_App_Client_View_Data *data) -{ - Eldbus_Object *obj; - - obj = eldbus_proxy_object_get(data->view_proxy); - return eldbus_object_bus_name_get(obj); -} - -EOLIAN static void -_elm_app_client_view_efl_object_destructor(Eo *eo, Elm_App_Client_View_Data *data) -{ - Eldbus_Object *obj; - Eldbus_Connection *conn; - - eldbus_proxy_properties_monitor(data->view_proxy, EINA_FALSE); - obj = eldbus_proxy_object_get(data->view_proxy); - conn = eldbus_object_connection_get(obj); - - eldbus_proxy_unref(data->view_proxy); - eldbus_object_unref(obj); - eldbus_connection_unref(conn); - eldbus_shutdown(); - - eina_stringshare_del(data->path); - - efl_destructor(efl_super(eo, MY_CLASS)); -} - -#include "elm_app_client_view.eo.c" diff --git a/src/lib/elementary/elm_app_client_view.eo b/src/lib/elementary/elm_app_client_view.eo deleted file mode 100644 index 3d3acaee86..0000000000 --- a/src/lib/elementary/elm_app_client_view.eo +++ /dev/null @@ -1,129 +0,0 @@ -import elm_general; - -type Elm_App_Client_View_Cb: __undefined_type; - -class Elm.App.Client.View (Efl.Object) -{ - methods { - @property state { - get { - [[Get state of view]] - } - values { - state: Elm.App.View_State; [[state of view]] - } - } - @property new_events { - get { - [[Get new events of view]] - } - values { - events: int; [[number of events of view]] - } - } - @property window { - get { - [[Get window of view]] - } - values { - window: int; [[window of view]] - } - } - @property icon_pixels { - get { - [[Get icon pixels of view, view could have a icon - in raw format not saved in disk. - ]] - } - values { - w: uint; [[icon width]] - h: uint; [[icon height]] - has_alpha: bool; [[if icon have alpha channel]] - pixels: const(ubyte)*; [[uchar array, with all bytes of icon]] - } - } - path_set { - params { - path: string; - } - } - @property path { - get { - [[Get DBus path of view]] - } - values { - ret: stringshare; [[DBus path of view]] - } - } - @property package { - get { - [[Get application package]] - } - values { - ret: string; [[Package of application]] - } - } - @property icon { - get { - [[Get icon path of view]] - } - values { - ret: string; [[icon path of view]] - } - } - @property progress { - get { - [[Get progress of view, should be -1 if there nothing in progress - or something between 0-100 - ]] - } - values { - progress: ushort; [[progress of view]] - } - } - @property title { - get { - [[Get title of view]] - } - values { - ret: string; [[title of view]] - } - } - pause { - [[Pause view]] - params { - @in cb: Elm_App_Client_View_Cb @optional; [[callback to be called when view was paused ]] - @in data: const(void_ptr) @optional; [[callback user data]] - } - } - resume { - [[Resume view]] - params { - @in cb: Elm_App_Client_View_Cb @optional; [[callback to be called when view was resumed]] - @in data: const(void_ptr) @optional; [[callback user data]] - } - } - close { - [[Close view]] - params { - @in cb: Elm_App_Client_View_Cb @optional; [[callback to be called when view was closed]] - @in data: const(void_ptr) @optional; [[callback user data]] - } - } - } - implements { - Efl.Object.destructor; - Efl.Object.finalize; - } - events { - state,changed; [[State of view changed.]] - title,changed; [[Title of view changed.]] - icon,changed; [[Icon of view changed.]] - icon,pixels,changed; [[Icons pixels of view changed.]] - new_events,changed; [[New events of view changed.]] - progress,changed; [[Progress of view changed.]] - window,changed; [[Window of view changed.]] - property,changed; [[One of view properties changed.]] - } - -} diff --git a/src/lib/elementary/elm_app_client_view.h b/src/lib/elementary/elm_app_client_view.h deleted file mode 100644 index e124359c54..0000000000 --- a/src/lib/elementary/elm_app_client_view.h +++ /dev/null @@ -1,3 +0,0 @@ -#ifdef EFL_EO_API_SUPPORT -#include "elm_app_client_view_eo.h" -#endif diff --git a/src/lib/elementary/elm_app_client_view_eo.h b/src/lib/elementary/elm_app_client_view_eo.h deleted file mode 100644 index 56b6e82871..0000000000 --- a/src/lib/elementary/elm_app_client_view_eo.h +++ /dev/null @@ -1,3 +0,0 @@ -typedef void *(*Elm_App_Client_View_Cb)(void *data, Elm_App_Client_View *view, const char *error, const char *error_message); - -#include "elm_app_client_view.eo.h" \ No newline at end of file diff --git a/src/lib/elementary/elm_app_common.c b/src/lib/elementary/elm_app_common.c deleted file mode 100644 index a3e13b4d14..0000000000 --- a/src/lib/elementary/elm_app_common.c +++ /dev/null @@ -1,56 +0,0 @@ -#ifdef HAVE_CONFIG_H -# include "elementary_config.h" -#endif - -#include -#include "elm_priv.h" - -char * -_dbus_package_to_path(const char *pkg) -{ - Eina_Strbuf *buffer; - char *ret; - - buffer = eina_strbuf_new(); - eina_strbuf_append_char(buffer, '/'); - for (; *pkg != '\0'; pkg++) - { - if (*pkg == '.') - eina_strbuf_append_char(buffer, '/'); - else if (isalnum(*pkg)) - eina_strbuf_append_char(buffer, *pkg); - else - eina_strbuf_append_printf(buffer, "_%02x", *pkg); - } - - ret = eina_strbuf_string_steal(buffer); - eina_strbuf_free(buffer); - - return ret; -} - -static const char *_string_states[] = { - "unknown", - "live", - "paused", - "closed", - "shallow", - NULL -}; - -Elm_App_View_State _string_state_to_id(const char *state) -{ - int i; - - for (i = 0; _string_states[i]; i++) - { - if (!strcmp(state, _string_states[i])) - return i; - } - return 0; -} - -const char *_state_id_to_string(Elm_App_View_State state) -{ - return _string_states[state]; -} diff --git a/src/lib/elementary/elm_app_common.h b/src/lib/elementary/elm_app_common.h deleted file mode 100644 index 8c25449801..0000000000 --- a/src/lib/elementary/elm_app_common.h +++ /dev/null @@ -1,9 +0,0 @@ - -char *_dbus_package_to_path(const char *package); - -Elm_App_View_State _string_state_to_id(const char *state); - -const char *_state_id_to_string(Elm_App_View_State state); - -void elm_app_client_view_internal_state_set(Eo *eo, Elm_App_View_State state); - diff --git a/src/lib/elementary/elm_app_server.c b/src/lib/elementary/elm_app_server.c deleted file mode 100644 index 744a433f16..0000000000 --- a/src/lib/elementary/elm_app_server.c +++ /dev/null @@ -1,452 +0,0 @@ -#ifdef HAVE_CONFIG_H -# include "elementary_config.h" -#endif - -#include -#include "elm_priv.h" -#include "elm_app_server_eet.h" - -#define MY_CLASS ELM_APP_SERVER_CLASS - -#define MY_CLASS_NAME "Elm_App_Server" - -typedef struct -{ - Eldbus_Connection *conn; - Eldbus_Service_Interface *iface; - Elm_App_Server_Create_View_Cb create_view_cb; - Eina_Hash *views; - - int PID; - Eina_Stringshare *title; - Eina_Stringshare *icon_name; - Eina_Stringshare *pkg; - struct { - unsigned int w, h; - Eina_Bool has_alpha; - unsigned char *raw; - } image_raw; -} Elm_App_Server_Data; - -static void -_view_del_cb(void *data, const Efl_Event *event) -{ - Elm_App_Server_Data *cdata = data; - eina_hash_del(cdata->views, NULL, event->object); -} - -static Eina_Bool -_view_append(Elm_App_Server_Data *data, Elm_App_Server_View *view) -{ - Eina_Stringshare *view_id = NULL; - - view_id = elm_app_server_view_id_get(view); - - if (eina_hash_find(data->views, view_id)) - { - ERR("%p already have a view with id=%s", data->pkg, view_id); - efl_del(view); - return EINA_FALSE; - } - - eina_hash_add(data->views, view_id, view); - efl_event_callback_add(view, EFL_EVENT_DEL, _view_del_cb, data); - return EINA_TRUE; -} - -static Eldbus_Message * -_method_create_view(const Eldbus_Service_Interface *iface, const Eldbus_Message *message) -{ - Eo *eo = eldbus_service_object_data_get(iface, MY_CLASS_NAME); - Elm_App_Server_Data *data = efl_data_scope_get(eo, MY_CLASS); - Eina_Value *args; - Eina_Stringshare *error_name, *error_message, *view_path = NULL; - Elm_App_Server_View *view; - Eldbus_Message *reply; - - args = eldbus_message_to_eina_value(message); - if (!args) - return eldbus_message_error_new(message, ELM_APP_CLEINT_VIEW_OPEN_ERROR, ""); - - view = data->create_view_cb(eo, args, &error_name, &error_message); - eina_value_free(args); - - if (!view) - { - reply = eldbus_message_error_new(message, error_name, error_message); - eina_stringshare_del(error_name); - eina_stringshare_del(error_message); - return reply; - } - - if (!_view_append(data, view)) - { - reply = eldbus_message_error_new(message, - ELM_APP_SERVER_VIEW_CREATE_DUPLICATE, - NULL); - return reply; - } - view_path = elm_app_server_view_path_get(view); - - reply = eldbus_message_method_return_new(message); - eldbus_message_arguments_append(reply, "o", view_path); - - return reply; -} - -static void -_close_all_views(Elm_App_Server_Data *data) -{ - Eina_Iterator *iter; - Elm_App_Server_View *view; - Eina_List *view_list = NULL; - - /* - * need do this because hash will be modified when called - * elm_app_server_view_close() - */ - iter = eina_hash_iterator_data_new(data->views); - EINA_ITERATOR_FOREACH(iter, view) - view_list = eina_list_append(view_list, view); - eina_iterator_free(iter); - - EINA_LIST_FREE(view_list, view) - elm_app_server_view_close(view); -} - -static Eldbus_Message * -_method_close_all_views(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eldbus_Message *message EINA_UNUSED) -{ - Eo *eo = eldbus_service_object_data_get(iface, MY_CLASS_NAME); - Elm_App_Server_Data *data = efl_data_scope_get(eo, MY_CLASS); - - _close_all_views(data); - - return eldbus_message_method_return_new(message); -} - -static Eldbus_Message * -_method_terminate(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eldbus_Message *message EINA_UNUSED) -{ - Eo *eo = eldbus_service_object_data_get(iface, MY_CLASS_NAME); - - efl_event_callback_legacy_call(eo, ELM_APP_SERVER_EVENT_TERMINATE, NULL); - - return eldbus_message_method_return_new(message); -} - -static const Eldbus_Method _methods[] = { - { "CreateView", ELDBUS_ARGS({"a{sv}", "arguments"}), - ELDBUS_ARGS({"o", "view_path"}), _method_create_view, 0 }, - { "CloseAllViews", NULL, NULL, _method_close_all_views, 0}, - { "Terminate", NULL, NULL, _method_terminate, 0 }, - { NULL, NULL, NULL, NULL, 0 } -}; - -static Eina_Bool -_prop_pid_get(const Eldbus_Service_Interface *iface, const char *propname EINA_UNUSED, Eldbus_Message_Iter *iter, const Eldbus_Message *request_msg EINA_UNUSED, Eldbus_Message **error EINA_UNUSED) -{ - Eo *eo = eldbus_service_object_data_get(iface, MY_CLASS_NAME); - Elm_App_Server_Data *data = efl_data_scope_get(eo, MY_CLASS); - - eldbus_message_iter_basic_append(iter, 'i', data->PID); - return EINA_TRUE; -} - -static Eina_Bool -_prop_title_get(const Eldbus_Service_Interface *iface, const char *propname EINA_UNUSED, Eldbus_Message_Iter *iter, const Eldbus_Message *request_msg EINA_UNUSED, Eldbus_Message **error EINA_UNUSED) -{ - Eo *eo = eldbus_service_object_data_get(iface, MY_CLASS_NAME); - Elm_App_Server_Data *data = efl_data_scope_get(eo, MY_CLASS); - - eldbus_message_iter_basic_append(iter, 's', data->title); - return EINA_TRUE; -} - -static Eina_Bool -_prop_icon_get(const Eldbus_Service_Interface *iface, const char *propname EINA_UNUSED, Eldbus_Message_Iter *iter, const Eldbus_Message *request_msg EINA_UNUSED, Eldbus_Message **error EINA_UNUSED) -{ - Eo *eo = eldbus_service_object_data_get(iface, MY_CLASS_NAME); - Elm_App_Server_Data *data = efl_data_scope_get(eo, MY_CLASS); - - eldbus_message_iter_basic_append(iter, 's', data->icon_name); - return EINA_TRUE; -} - -/*static Eina_Bool -_prop_icon_pixels_get(const Eldbus_Service_Interface *iface EINA_UNUSED, const char *propname EINA_UNUSED, Eldbus_Message_Iter *iter EINA_UNUSED, const Eldbus_Message *request_msg EINA_UNUSED, Eldbus_Message **error EINA_UNUSED) -{ - //TODO - return EINA_FALSE; -}*/ - -static const Eldbus_Property _props[] = { - { "PID", "i", _prop_pid_get, NULL, 0 }, - { "Title", "s", _prop_title_get, NULL, 0 }, - { "IconName", "s", _prop_icon_get, NULL, 0 }, - //{ "IconPixels", "(uubay)", _prop_icon_pixels_get, NULL, 0 }, - { NULL, NULL, NULL, NULL, 0 } -}; - -static const Eldbus_Service_Interface_Desc iface_desc = { - "org.enlightenment.Application1", _methods, NULL, _props, NULL, NULL -}; - -EOLIAN static void -_elm_app_server_constructor(Eo *obj, Elm_App_Server_Data *data, const char *pkg, Elm_App_Server_Create_View_Cb create_view_cb) -{ - char *path; - Elm_App_Server_Views_Eet *views_eet; - char buf[PATH_MAX]; - - data->create_view_cb = create_view_cb; - - EINA_SAFETY_ON_NULL_RETURN(data->create_view_cb); - EINA_SAFETY_ON_TRUE_RETURN(!pkg); - - data->views = eina_hash_string_small_new(NULL); - data->PID = getpid(); - data->title = eina_stringshare_add(""); - data->icon_name = eina_stringshare_add(""); - data->pkg = eina_stringshare_add(pkg); - - path = _dbus_package_to_path(pkg); - - eldbus_init(); - data->conn = eldbus_connection_get(ELDBUS_CONNECTION_TYPE_SESSION); - eldbus_name_request(data->conn, pkg, 0, NULL, NULL); - data->iface = eldbus_service_interface_register(data->conn, - path, - &iface_desc); - eldbus_service_object_data_set(data->iface, MY_CLASS_NAME, obj); - eldbus_service_object_manager_attach(data->iface); - - free(path); - - //Check if there a saved list of views - app_server_views_eet_init(); - - _elm_config_user_dir_snprintf(buf, sizeof(buf), "apps/%s.eet", - data->pkg); - views_eet = elm_app_server_views_eet_load(buf); - if (views_eet) - { - Elm_App_Server_View_Props *view_eet_props; - Eina_List *l, *views_list; - - views_list = elm_app_server_views_eet_views_entries_list_get(views_eet); - if (!views_list) - goto free_views_eet; - - EINA_LIST_FOREACH(views_list, l, view_eet_props) - { - Elm_App_Server_View *view; - const char *view_id, *title, *icon_name; - int new_events; - short progress; - - view_id = elm_app_server_view_props_id_get(view_eet_props); - - if (eina_hash_find(data->views, view_id)) - continue; - title = elm_app_server_view_props_title_get(view_eet_props); - icon_name = elm_app_server_view_props_icon_name_get(view_eet_props); - new_events = elm_app_server_view_props_new_events_get(view_eet_props); - progress = elm_app_server_view_props_progress_get(view_eet_props); - - view = efl_add(ELM_APP_SERVER_VIEW_CLASS, obj, elm_app_server_view_id_set(efl_added, view_id)); - if (!view) - continue; - - elm_app_server_view_title_set(view, title); - elm_app_server_view_icon_set(view, icon_name); - elm_app_server_view_progress_set(view, progress); - elm_app_server_view_new_events_set(view, new_events); - efl_event_callback_add(view, EFL_EVENT_DEL, _view_del_cb, data); - elm_app_server_view_shallow(view); - - eina_hash_add(data->views, view_id, view); - } - -free_views_eet: - elm_app_server_views_eet_free(views_eet); - } - - app_server_views_eet_shutdown(); - - return; -} - -EOLIAN static void -_elm_app_server_save(Eo *obj EINA_UNUSED, Elm_App_Server_Data *data) -{ - Eina_Iterator *iter; - Elm_App_Server_View *view; - Elm_App_Server_Views_Eet *views_eet; - char buf[PATH_MAX]; - - app_server_views_eet_init(); - - views_eet = elm_app_server_views_eet_new(1, NULL); - - if (!views_eet) return; - - iter = eina_hash_iterator_data_new(data->views); - EINA_ITERATOR_FOREACH(iter, view) - { - Elm_App_Server_View_Props *view_props; - const char *id = NULL, *title = NULL, *icon_name = NULL; - int new_events = 0; - short progress = 0; - - id = elm_app_server_view_id_get(view); - title = elm_app_server_view_title_get(view); - icon_name = elm_app_server_view_icon_get(view); - new_events = elm_app_server_view_new_events_get(view); - progress = elm_app_server_view_progress_get(view); - efl_event_callback_legacy_call(view, ELM_APP_SERVER_VIEW_EVENT_SAVE, NULL); - - view_props = elm_app_server_view_props_new(id, title, icon_name, - new_events, progress); - elm_app_server_views_eet_views_entries_add(views_eet, view_props); - } - eina_iterator_free(iter); - - _elm_config_user_dir_snprintf(buf, sizeof(buf), "apps/"); - if (!ecore_file_is_dir(buf)) - ecore_file_mkpath(buf); - _elm_config_user_dir_snprintf(buf, sizeof(buf), "apps/%s.eet", data->pkg); - elm_app_server_views_eet_save(views_eet, buf); - elm_app_server_views_eet_free(views_eet); - app_server_views_eet_shutdown(); -} - -EOLIAN static void -_elm_app_server_close_all(Eo *obj EINA_UNUSED, Elm_App_Server_Data *data) -{ - _close_all_views(data); -} - -EOLIAN static Eina_Bool -_elm_app_server_view_check(Eo *obj EINA_UNUSED, Elm_App_Server_Data *data, const char *id) -{ - const char *ptr; - - EINA_SAFETY_ON_NULL_RETURN_VAL(id, EINA_FALSE); - - for (ptr = id; *ptr; ptr++) - { - if (!isalnum(*ptr)) - break; - } - - if (!eina_hash_find(data->views, id)) return EINA_TRUE; - return EINA_FALSE; -} - -EOLIAN static void -_elm_app_server_title_set(Eo *obj EINA_UNUSED, Elm_App_Server_Data *data, const char *title) -{ - title = title ? title : ""; - - if (eina_stringshare_replace(&data->title, title)) - eldbus_service_property_changed(data->iface, "Title"); -} - -EOLIAN static Eina_Stringshare * -_elm_app_server_title_get(Eo *obj EINA_UNUSED, Elm_App_Server_Data *data) -{ - return data->title; -} - -EOLIAN static void -_elm_app_server_icon_set(Eo *obj EINA_UNUSED, Elm_App_Server_Data *data, const char *icon) -{ - icon = icon ? icon : ""; - - if (eina_stringshare_replace(&data->icon_name, icon)) - eldbus_service_property_changed(data->iface, "IconName"); -} - -EOLIAN static Eina_Stringshare * -_elm_app_server_icon_get(Eo *obj EINA_UNUSED, Elm_App_Server_Data *data) -{ - return data->icon_name; -} - -EOLIAN static void -_elm_app_server_pixels_set(Eo *obj EINA_UNUSED, Elm_App_Server_Data *pd EINA_UNUSED, - unsigned int w EINA_UNUSED, unsigned int h EINA_UNUSED, - Eina_Bool has_alpha EINA_UNUSED, const unsigned char *pixels EINA_UNUSED) -{ - //TODO -} - -EOLIAN static void -_elm_app_server_pixels_get(Eo *obj EINA_UNUSED, Elm_App_Server_Data *pd EINA_UNUSED, - unsigned int *w EINA_UNUSED, unsigned int *h EINA_UNUSED, - Eina_Bool *has_alpha EINA_UNUSED, const unsigned char **pixels EINA_UNUSED) -{ - //TODO -} - -EOLIAN static Eina_Stringshare* -_elm_app_server_package_get(Eo *obj EINA_UNUSED, Elm_App_Server_Data *data) -{ - return data->pkg; -} - -EOLIAN static Eina_Iterator* -_elm_app_server_views_get(Eo *obj EINA_UNUSED, Elm_App_Server_Data *data) -{ - return eina_hash_iterator_data_new(data->views); -} - -EOLIAN static const char* -_elm_app_server_path_get(Eo *obj EINA_UNUSED, Elm_App_Server_Data *data) -{ - return eldbus_service_object_path_get(data->iface); -} - -EOLIAN static void -_elm_app_server_view_add(Eo *obj EINA_UNUSED, Elm_App_Server_Data *data, Elm_App_Server_View *view) -{ - _view_append(data, view); -} - -EOLIAN static Eo * -_elm_app_server_efl_object_finalize(Eo *obj, Elm_App_Server_Data *data) -{ - EINA_SAFETY_ON_NULL_RETURN_VAL(data->pkg, NULL); - - return efl_finalize(efl_super(obj, MY_CLASS)); -} - -EOLIAN static void -_elm_app_server_efl_object_destructor(Eo *obj, Elm_App_Server_Data *data) -{ - Eina_Iterator *iter; - Elm_App_Server_View *view; - - iter = eina_hash_iterator_data_new(data->views); - EINA_ITERATOR_FOREACH(iter, view) - { - //do not modify hash when iterating - efl_event_callback_del(view, EFL_EVENT_DEL, _view_del_cb, data); - efl_del(view); - } - eina_iterator_free(iter); - eina_hash_free(data->views); - - eina_stringshare_del(data->title); - eina_stringshare_del(data->icon_name); - eina_stringshare_del(data->pkg); - - eldbus_service_object_manager_detach(data->iface); - eldbus_service_interface_unregister(data->iface); - eldbus_connection_unref(data->conn); - eldbus_shutdown(); - efl_destructor(efl_super(obj, MY_CLASS)); -} - -#include "elm_app_server.eo.c" diff --git a/src/lib/elementary/elm_app_server.eo b/src/lib/elementary/elm_app_server.eo deleted file mode 100644 index cdae4de8e1..0000000000 --- a/src/lib/elementary/elm_app_server.eo +++ /dev/null @@ -1,107 +0,0 @@ -import eina_types; -import elm_general; - -type Elm_App_Server_Create_View_Cb: __undefined_type; - -class Elm.App.Server (Efl.Object) -{ - eo_prefix: elm_app_server; - methods { - @property icon { - set { - } - get { - } - values { - icon: stringshare; [[title of icon]] - } - } - @property views { - get { - [[Return a iterator with all views of application]] - } - values { - ret: free(own(iterator), eina_iterator_free); [[Iterator with all views of application, you must free iterator after use]] - } - } - @property path { - get { - } - values { - ret: string; - } - } - @property package { - get { - } - values { - ret: stringshare; - } - } - @property pixels { - get { - [[Get application raw icon.]] - } - set { - [[Set icon to application, using the raw pixels of image.]] - } - values { - w: uint; - h: uint; - has_alpha: bool; - pixels: const(ubyte)*; - } - } - constructor { - [[Class constructor of elm_app_server]] - legacy: null; - params { - @in packageid: string; [[package of application]] - @in create_view_cb: Elm_App_Server_Create_View_Cb; [[callback to be called when user wants to open some application view]] - } - } - close_all { - [[Close all views of application]] - } - view_check { - [[If view id is available and unique, return the full DBus object path of view]] - params { - @in id: string; [[view identifier]] - } - return: bool; [[true if id is valid or false if not]] - } - view_add { - [[Add a view to elm_app_server. This should only be - used if the application open a view that was not - requested by create_view_cb. - ]] - params { - @in view: Elm.App.Server.View; [[elm_app_server_view]] - } - } - title_set { - [[Set a title to application.]] - params { - @in title: string @nullable; [[title of application]] - } - } - title_get { - [[Get title of application]] - return: stringshare; [[title of application]] - } - save { - [[Save the state of all views]] - } - } - implements { - Efl.Object.destructor; - Efl.Object.finalize; - } - constructors { - .constructor; - } - events { - terminate; [[Called when application must be terminated.]] - } - -} diff --git a/src/lib/elementary/elm_app_server.h b/src/lib/elementary/elm_app_server.h deleted file mode 100644 index 48ca221160..0000000000 --- a/src/lib/elementary/elm_app_server.h +++ /dev/null @@ -1,3 +0,0 @@ -#ifdef EFL_EO_API_SUPPORT -#include "elm_app_server_eo.h" -#endif diff --git a/src/lib/elementary/elm_app_server_eet.c b/src/lib/elementary/elm_app_server_eet.c deleted file mode 100644 index 905916ae10..0000000000 --- a/src/lib/elementary/elm_app_server_eet.c +++ /dev/null @@ -1,310 +0,0 @@ -#include "elm_app_server_eet.h" - -struct _Elm_App_Server_View_Props { - const char * id; - const char * title; - const char * icon_name; - int new_events; - char progress; -}; - -struct _Elm_App_Server_Views_Eet { - unsigned int version; - Eina_List * views_entries; - const char *__eet_filename; -}; - -static const char ELM_APP_SERVER_VIEWS_EET_ENTRY[] = "elm_app_server_views_eet"; - -static Eet_Data_Descriptor *_elm_app_server_view_props_descriptor = NULL; -static Eet_Data_Descriptor *_elm_app_server_views_eet_descriptor = NULL; - -static inline void -_elm_app_server_view_props_init(void) -{ - Eet_Data_Descriptor_Class eddc; - - if (_elm_app_server_view_props_descriptor) return; - - EET_EINA_STREAM_DATA_DESCRIPTOR_CLASS_SET(&eddc, Elm_App_Server_View_Props); - _elm_app_server_view_props_descriptor = eet_data_descriptor_stream_new(&eddc); - - EET_DATA_DESCRIPTOR_ADD_BASIC(_elm_app_server_view_props_descriptor, Elm_App_Server_View_Props, "id", id, EET_T_STRING); - EET_DATA_DESCRIPTOR_ADD_BASIC(_elm_app_server_view_props_descriptor, Elm_App_Server_View_Props, "title", title, EET_T_STRING); - EET_DATA_DESCRIPTOR_ADD_BASIC(_elm_app_server_view_props_descriptor, Elm_App_Server_View_Props, "icon_name", icon_name, EET_T_STRING); - EET_DATA_DESCRIPTOR_ADD_BASIC(_elm_app_server_view_props_descriptor, Elm_App_Server_View_Props, "new_events", new_events, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_elm_app_server_view_props_descriptor, Elm_App_Server_View_Props, "progress", progress, EET_T_CHAR); -} - -static inline void -_elm_app_server_view_props_shutdown(void) -{ - if (!_elm_app_server_view_props_descriptor) return; - eet_data_descriptor_free(_elm_app_server_view_props_descriptor); - _elm_app_server_view_props_descriptor = NULL; -} - -Elm_App_Server_View_Props * -elm_app_server_view_props_new(const char * id, const char * title, const char * icon_name, int new_events, char progress) -{ - Elm_App_Server_View_Props *elm_app_server_view_props = calloc(1, sizeof(Elm_App_Server_View_Props)); - - if (!elm_app_server_view_props) - { - fprintf(stderr, "ERROR: could not calloc Elm_App_Server_View_Props\n"); - return NULL; - } - - elm_app_server_view_props->id = eina_stringshare_add(id ? id : ""); - elm_app_server_view_props->title = eina_stringshare_add(title ? title : ""); - elm_app_server_view_props->icon_name = eina_stringshare_add(icon_name ? icon_name : ""); - elm_app_server_view_props->new_events = new_events; - elm_app_server_view_props->progress = progress; - - return elm_app_server_view_props; -} - -void -elm_app_server_view_props_free(Elm_App_Server_View_Props *elm_app_server_view_props) -{ - eina_stringshare_del(elm_app_server_view_props->id); - eina_stringshare_del(elm_app_server_view_props->title); - eina_stringshare_del(elm_app_server_view_props->icon_name); - free(elm_app_server_view_props); -} - -inline const char * -elm_app_server_view_props_id_get(const Elm_App_Server_View_Props *elm_app_server_view_props) -{ - return elm_app_server_view_props->id; -} - -inline void -elm_app_server_view_props_id_set(Elm_App_Server_View_Props *elm_app_server_view_props, const char *id) -{ - EINA_SAFETY_ON_NULL_RETURN(elm_app_server_view_props); - eina_stringshare_replace(&(elm_app_server_view_props->id), id); -} - -inline const char * -elm_app_server_view_props_title_get(const Elm_App_Server_View_Props *elm_app_server_view_props) -{ - return elm_app_server_view_props->title; -} - -inline void -elm_app_server_view_props_title_set(Elm_App_Server_View_Props *elm_app_server_view_props, const char *title) -{ - EINA_SAFETY_ON_NULL_RETURN(elm_app_server_view_props); - eina_stringshare_replace(&(elm_app_server_view_props->title), title); -} - -inline const char * -elm_app_server_view_props_icon_name_get(const Elm_App_Server_View_Props *elm_app_server_view_props) -{ - return elm_app_server_view_props->icon_name; -} - -inline void -elm_app_server_view_props_icon_name_set(Elm_App_Server_View_Props *elm_app_server_view_props, const char *icon_name) -{ - EINA_SAFETY_ON_NULL_RETURN(elm_app_server_view_props); - eina_stringshare_replace(&(elm_app_server_view_props->icon_name), icon_name); -} - -inline int -elm_app_server_view_props_new_events_get(const Elm_App_Server_View_Props *elm_app_server_view_props) -{ - return elm_app_server_view_props->new_events; -} - -inline void -elm_app_server_view_props_new_events_set(Elm_App_Server_View_Props *elm_app_server_view_props, int new_events) -{ - EINA_SAFETY_ON_NULL_RETURN(elm_app_server_view_props); - elm_app_server_view_props->new_events = new_events; -} - -inline char -elm_app_server_view_props_progress_get(const Elm_App_Server_View_Props *elm_app_server_view_props) -{ - return elm_app_server_view_props->progress; -} - -inline void -elm_app_server_view_props_progress_set(Elm_App_Server_View_Props *elm_app_server_view_props, char progress) -{ - EINA_SAFETY_ON_NULL_RETURN(elm_app_server_view_props); - elm_app_server_view_props->progress = progress; -} - -static inline void -_elm_app_server_views_eet_init(void) -{ - Eet_Data_Descriptor_Class eddc; - - if (_elm_app_server_views_eet_descriptor) return; - - EET_EINA_STREAM_DATA_DESCRIPTOR_CLASS_SET(&eddc, Elm_App_Server_Views_Eet); - _elm_app_server_views_eet_descriptor = eet_data_descriptor_stream_new(&eddc); - - EET_DATA_DESCRIPTOR_ADD_BASIC(_elm_app_server_views_eet_descriptor, Elm_App_Server_Views_Eet, "version", version, EET_T_UINT); - EET_DATA_DESCRIPTOR_ADD_LIST(_elm_app_server_views_eet_descriptor, Elm_App_Server_Views_Eet, "views_entries", views_entries, _elm_app_server_view_props_descriptor); -} - -static inline void -_elm_app_server_views_eet_shutdown(void) -{ - if (!_elm_app_server_views_eet_descriptor) return; - eet_data_descriptor_free(_elm_app_server_views_eet_descriptor); - _elm_app_server_views_eet_descriptor = NULL; -} - -Elm_App_Server_Views_Eet * -elm_app_server_views_eet_new(unsigned int version, Eina_List * views_entries) -{ - Elm_App_Server_Views_Eet *elm_app_server_views_eet = calloc(1, sizeof(Elm_App_Server_Views_Eet)); - - if (!elm_app_server_views_eet) - { - fprintf(stderr, "ERROR: could not calloc Elm_App_Server_Views_Eet\n"); - return NULL; - } - - elm_app_server_views_eet->version = version; - elm_app_server_views_eet->views_entries = views_entries; - - return elm_app_server_views_eet; -} - -void -elm_app_server_views_eet_free(Elm_App_Server_Views_Eet *elm_app_server_views_eet) -{ - if (elm_app_server_views_eet->views_entries) - { - Elm_App_Server_View_Props *views_entries_elem; - EINA_LIST_FREE(elm_app_server_views_eet->views_entries, views_entries_elem) - elm_app_server_view_props_free(views_entries_elem); - } - free(elm_app_server_views_eet); -} - -inline unsigned int -elm_app_server_views_eet_version_get(const Elm_App_Server_Views_Eet *elm_app_server_views_eet) -{ - return elm_app_server_views_eet->version; -} - -inline void -elm_app_server_views_eet_version_set(Elm_App_Server_Views_Eet *elm_app_server_views_eet, unsigned int version) -{ - EINA_SAFETY_ON_NULL_RETURN(elm_app_server_views_eet); - elm_app_server_views_eet->version = version; -} - -inline void -elm_app_server_views_eet_views_entries_add(Elm_App_Server_Views_Eet *elm_app_server_views_eet, Elm_App_Server_View_Props *elm_app_server_view_props) -{ - EINA_SAFETY_ON_NULL_RETURN(elm_app_server_views_eet); - elm_app_server_views_eet->views_entries = eina_list_append(elm_app_server_views_eet->views_entries, elm_app_server_view_props); -} - -inline void -elm_app_server_views_eet_views_entries_del(Elm_App_Server_Views_Eet *elm_app_server_views_eet, Elm_App_Server_View_Props *elm_app_server_view_props) -{ - EINA_SAFETY_ON_NULL_RETURN(elm_app_server_views_eet); - elm_app_server_views_eet->views_entries = eina_list_remove(elm_app_server_views_eet->views_entries, elm_app_server_view_props); -} - -inline Elm_App_Server_View_Props * -elm_app_server_views_eet_views_entries_get(const Elm_App_Server_Views_Eet *elm_app_server_views_eet, unsigned int nth) -{ - EINA_SAFETY_ON_NULL_RETURN_VAL(elm_app_server_views_eet, NULL); - return eina_list_nth(elm_app_server_views_eet->views_entries, nth); -} - -inline unsigned int -elm_app_server_views_eet_views_entries_count(const Elm_App_Server_Views_Eet *elm_app_server_views_eet) -{ - EINA_SAFETY_ON_NULL_RETURN_VAL(elm_app_server_views_eet, 0); - return eina_list_count(elm_app_server_views_eet->views_entries); -} - -void -elm_app_server_views_eet_views_entries_list_clear(Elm_App_Server_Views_Eet *elm_app_server_views_eet) -{ - EINA_SAFETY_ON_NULL_RETURN(elm_app_server_views_eet); - Elm_App_Server_View_Props *data; - EINA_LIST_FREE(elm_app_server_views_eet->views_entries, data) elm_app_server_view_props_free(data); -} - -inline Eina_List * -elm_app_server_views_eet_views_entries_list_get(const Elm_App_Server_Views_Eet *elm_app_server_views_eet) -{ - EINA_SAFETY_ON_NULL_RETURN_VAL(elm_app_server_views_eet, NULL); - return elm_app_server_views_eet->views_entries; -} - -inline void -elm_app_server_views_eet_views_entries_list_set(Elm_App_Server_Views_Eet *elm_app_server_views_eet, Eina_List *list) -{ - EINA_SAFETY_ON_NULL_RETURN(elm_app_server_views_eet); - elm_app_server_views_eet->views_entries = list; -} - -Elm_App_Server_Views_Eet * -elm_app_server_views_eet_load(const char *filename) -{ - Elm_App_Server_Views_Eet *elm_app_server_views_eet = NULL; - Eet_File *ef = eet_open(filename, EET_FILE_MODE_READ); - if (!ef) - { - fprintf(stderr, "ERROR: could not open '%s' for read\n", filename); - return NULL; - } - - elm_app_server_views_eet = eet_data_read(ef, _elm_app_server_views_eet_descriptor, ELM_APP_SERVER_VIEWS_EET_ENTRY); - if (!elm_app_server_views_eet) goto end; - elm_app_server_views_eet->__eet_filename = eina_stringshare_add(filename); - -end: - eet_close(ef); - return elm_app_server_views_eet; -} - -Eina_Bool -elm_app_server_views_eet_save(Elm_App_Server_Views_Eet *elm_app_server_views_eet, const char *filename) -{ - Eet_File *ef; - Eina_Bool ret; - - if (filename) eina_stringshare_replace(&(elm_app_server_views_eet->__eet_filename), filename); - else if (elm_app_server_views_eet->__eet_filename) filename = elm_app_server_views_eet->__eet_filename; - else return EINA_FALSE; - - ef = eet_open(filename, EET_FILE_MODE_READ_WRITE); - if (!ef) - { - fprintf(stderr, "ERROR: could not open '%s' for write\n", filename); - return EINA_FALSE; - } - - ret = !!eet_data_write(ef, _elm_app_server_views_eet_descriptor, ELM_APP_SERVER_VIEWS_EET_ENTRY, elm_app_server_views_eet, EINA_TRUE); - eet_close(ef); - - return ret; -} - -void -app_server_views_eet_init(void) -{ - _elm_app_server_view_props_init(); - _elm_app_server_views_eet_init(); -} - -void -app_server_views_eet_shutdown(void) -{ - _elm_app_server_view_props_shutdown(); - _elm_app_server_views_eet_shutdown(); -} diff --git a/src/lib/elementary/elm_app_server_eet.h b/src/lib/elementary/elm_app_server_eet.h deleted file mode 100644 index 8d35e5c054..0000000000 --- a/src/lib/elementary/elm_app_server_eet.h +++ /dev/null @@ -1,46 +0,0 @@ -#ifndef _ELM_APP_SERVER_EET_H_ -#define _ELM_APP_SERVER_EET_H_ - -#include -#include - -typedef struct _Elm_App_Server_View_Props Elm_App_Server_View_Props; -typedef struct _Elm_App_Server_Views_Eet Elm_App_Server_Views_Eet; - -/* Elm_App_Server_View_Props */ -Elm_App_Server_View_Props *elm_app_server_view_props_new(const char * id, const char * title, const char * icon_name, int new_events, char progress); -void elm_app_server_view_props_free(Elm_App_Server_View_Props *elm_app_server_view_props); - -void elm_app_server_view_props_id_set(Elm_App_Server_View_Props *elm_app_server_view_props, const char * id); -const char * elm_app_server_view_props_id_get(const Elm_App_Server_View_Props *elm_app_server_view_props); -void elm_app_server_view_props_title_set(Elm_App_Server_View_Props *elm_app_server_view_props, const char * title); -const char * elm_app_server_view_props_title_get(const Elm_App_Server_View_Props *elm_app_server_view_props); -void elm_app_server_view_props_icon_name_set(Elm_App_Server_View_Props *elm_app_server_view_props, const char * icon_name); -const char * elm_app_server_view_props_icon_name_get(const Elm_App_Server_View_Props *elm_app_server_view_props); -void elm_app_server_view_props_new_events_set(Elm_App_Server_View_Props *elm_app_server_view_props, int new_events); -int elm_app_server_view_props_new_events_get(const Elm_App_Server_View_Props *elm_app_server_view_props); -void elm_app_server_view_props_progress_set(Elm_App_Server_View_Props *elm_app_server_view_props, char progress); -char elm_app_server_view_props_progress_get(const Elm_App_Server_View_Props *elm_app_server_view_props); - -/* Elm_App_Server_Views_Eet */ -Elm_App_Server_Views_Eet *elm_app_server_views_eet_new(unsigned int version, Eina_List * views_entries); -void elm_app_server_views_eet_free(Elm_App_Server_Views_Eet *elm_app_server_views_eet); - -void elm_app_server_views_eet_version_set(Elm_App_Server_Views_Eet *elm_app_server_views_eet, unsigned int version); -unsigned int elm_app_server_views_eet_version_get(const Elm_App_Server_Views_Eet *elm_app_server_views_eet); -void elm_app_server_views_eet_views_entries_add(Elm_App_Server_Views_Eet *elm_app_server_views_eet, Elm_App_Server_View_Props *elm_app_server_view_props); -void elm_app_server_views_eet_views_entries_del(Elm_App_Server_Views_Eet *elm_app_server_views_eet, Elm_App_Server_View_Props *elm_app_server_view_props); -Elm_App_Server_View_Props *elm_app_server_views_eet_views_entries_get(const Elm_App_Server_Views_Eet *elm_app_server_views_eet, unsigned int nth); -unsigned int elm_app_server_views_eet_views_entries_count(const Elm_App_Server_Views_Eet *elm_app_server_views_eet); -Eina_List *elm_app_server_views_eet_views_entries_list_get(const Elm_App_Server_Views_Eet *elm_app_server_views_eet); -void elm_app_server_views_eet_views_entries_list_clear(Elm_App_Server_Views_Eet *elm_app_server_views_eet); -void elm_app_server_views_eet_views_entries_list_set(Elm_App_Server_Views_Eet *elm_app_server_views_eet, Eina_List *list); - -Elm_App_Server_Views_Eet *elm_app_server_views_eet_load(const char *filename); -Eina_Bool elm_app_server_views_eet_save(Elm_App_Server_Views_Eet *elm_app_server_views_eet, const char *filename); - -/* Global initializer / shutdown functions */ -void app_server_views_eet_init(void); -void app_server_views_eet_shutdown(void); - -#endif diff --git a/src/lib/elementary/elm_app_server_eo.h b/src/lib/elementary/elm_app_server_eo.h deleted file mode 100644 index 306535dc27..0000000000 --- a/src/lib/elementary/elm_app_server_eo.h +++ /dev/null @@ -1,15 +0,0 @@ -#define ELM_APP_CLIENT_VIEW_OPEN_CANCELED "org.enlightenment.Application.ViewOpenCanceled" -#define ELM_APP_CLIENT_VIEW_OPEN_TIMEOUT "org.enlightenment.Application.ViewOpenTimeout" -#define ELM_APP_CLEINT_VIEW_OPEN_ERROR "org.enlightenment.Application.CouldNotCreateView" - -#define ELM_APP_SERVER_VIEW_CREATE_DUPLICATE "org.enlightenment.Application.ViewDuplicate" - -typedef Eo Elm_App_Server; -#define _ELM_APP_SERVER_EO_CLASS_TYPE - -typedef Eo Elm_App_Server_View; -#define _ELM_APP_SERVER_VIEW_EO_CLASS_TYPE - -typedef Elm_App_Server_View *(*Elm_App_Server_Create_View_Cb)(Elm_App_Server *app, const Eina_Value *args, Eina_Stringshare **error_name, Eina_Stringshare **error_message); - -#include "elm_app_server.eo.h" \ No newline at end of file diff --git a/src/lib/elementary/elm_app_server_view.c b/src/lib/elementary/elm_app_server_view.c deleted file mode 100644 index 4a092b4729..0000000000 --- a/src/lib/elementary/elm_app_server_view.c +++ /dev/null @@ -1,388 +0,0 @@ -#ifdef HAVE_CONFIG_H -# include "elementary_config.h" -#endif - -#include -#include "elm_priv.h" - -#define MY_CLASS ELM_APP_SERVER_VIEW_CLASS - -#define MY_CLASS_NAME "Elm_App_Server_View" - -typedef struct -{ - Eldbus_Connection *conn; - Eldbus_Service_Interface *iface; - - Eina_Stringshare *id; - Eina_Stringshare *title; - Eina_Stringshare *icon_name; - int new_events; - short progress; - Elm_App_View_State state; - int window_id; - struct { - unsigned int w, h; - Eina_Bool has_alpha; - unsigned char *raw; - } image_raw; -} Elm_App_Server_View_Data; - -static void -_state_set(Elm_App_Server_View_Data *data, Elm_App_View_State state) -{ - if (data->state != state) - eldbus_service_property_changed(data->iface, "State"); - data->state = state; -} - -static Eldbus_Message * -_method_close(const Eldbus_Service_Interface *iface, const Eldbus_Message *message) -{ - Eo *eo = eldbus_service_object_data_get(iface, MY_CLASS_NAME); - Elm_App_Server_View_Data *data = efl_data_scope_get(eo, MY_CLASS); - - _state_set(data, ELM_APP_VIEW_STATE_CLOSED); - efl_event_callback_legacy_call(eo, ELM_APP_SERVER_VIEW_EVENT_CLOSED, NULL); - - return eldbus_message_method_return_new(message); -} - -static Eldbus_Message * -_method_pause(const Eldbus_Service_Interface *iface, const Eldbus_Message *message) -{ - Eo *eo = eldbus_service_object_data_get(iface, MY_CLASS_NAME); - Elm_App_Server_View_Data *data = efl_data_scope_get(eo, MY_CLASS); - - _state_set(data, ELM_APP_VIEW_STATE_PAUSED); - efl_event_callback_legacy_call(eo, ELM_APP_SERVER_VIEW_EVENT_PAUSED, NULL); - - return eldbus_message_method_return_new(message); -} - -static Eldbus_Message * -_method_resume(const Eldbus_Service_Interface *iface, const Eldbus_Message *message) -{ - Eo *eo = eldbus_service_object_data_get(iface, MY_CLASS_NAME); - Elm_App_Server_View_Data *data = efl_data_scope_get(eo, MY_CLASS); - - _state_set(data, ELM_APP_VIEW_STATE_LIVE); - efl_event_callback_legacy_call(eo, ELM_APP_SERVER_VIEW_EVENT_RESUMED, NULL); - - return eldbus_message_method_return_new(message); -} - -static const Eldbus_Method _methods[] = { - { "Close", NULL, NULL, _method_close, 0 }, - { "Pause", NULL, NULL, _method_pause, 0 }, - { "Resume", NULL, NULL, _method_resume, 0 }, - { NULL, NULL, NULL, NULL, 0 } -}; - -static Eina_Bool -_prop_title_get(const Eldbus_Service_Interface *iface, const char *propname EINA_UNUSED, Eldbus_Message_Iter *iter, const Eldbus_Message *request_msg EINA_UNUSED, Eldbus_Message **error EINA_UNUSED) -{ - Eo *eo = eldbus_service_object_data_get(iface, MY_CLASS_NAME); - Elm_App_Server_View_Data *data = efl_data_scope_get(eo, MY_CLASS); - - eldbus_message_iter_basic_append(iter, 's', data->title); - return EINA_TRUE; -} - -static Eina_Bool -_prop_icon_get(const Eldbus_Service_Interface *iface, const char *propname EINA_UNUSED, Eldbus_Message_Iter *iter, const Eldbus_Message *request_msg EINA_UNUSED, Eldbus_Message **error EINA_UNUSED) -{ - Eo *eo = eldbus_service_object_data_get(iface, MY_CLASS_NAME); - Elm_App_Server_View_Data *data = efl_data_scope_get(eo, MY_CLASS); - - eldbus_message_iter_basic_append(iter, 's', data->icon_name); - return EINA_TRUE; -} - -/*static Eina_Bool -_prop_icon_pixels_get(const Eldbus_Service_Interface *iface, const char *propname EINA_UNUSED, Eldbus_Message_Iter *iter, const Eldbus_Message *request_msg EINA_UNUSED, Eldbus_Message **error EINA_UNUSED) -{ - //TODO - return EINA_FALSE; -}*/ - -static Eina_Bool -_prop_events_get(const Eldbus_Service_Interface *iface, const char *propname EINA_UNUSED, Eldbus_Message_Iter *iter, const Eldbus_Message *request_msg EINA_UNUSED, Eldbus_Message **error EINA_UNUSED) -{ - Eo *eo = eldbus_service_object_data_get(iface, MY_CLASS_NAME); - Elm_App_Server_View_Data *data = efl_data_scope_get(eo, MY_CLASS); - - eldbus_message_iter_basic_append(iter, 'i', data->new_events); - return EINA_TRUE; -} - -static Eina_Bool -_prop_progress_get(const Eldbus_Service_Interface *iface, const char *propname EINA_UNUSED, Eldbus_Message_Iter *iter, const Eldbus_Message *request_msg EINA_UNUSED, Eldbus_Message **error EINA_UNUSED) -{ - Eo *eo = eldbus_service_object_data_get(iface, MY_CLASS_NAME); - Elm_App_Server_View_Data *data = efl_data_scope_get(eo, MY_CLASS); - - eldbus_message_iter_basic_append(iter, 'n', data->progress); - return EINA_TRUE; -} - -static Eina_Bool -_prop_state_get(const Eldbus_Service_Interface *iface, const char *propname EINA_UNUSED, Eldbus_Message_Iter *iter, const Eldbus_Message *request_msg EINA_UNUSED, Eldbus_Message **error EINA_UNUSED) -{ - Eo *eo = eldbus_service_object_data_get(iface, MY_CLASS_NAME); - Elm_App_Server_View_Data *data = efl_data_scope_get(eo, MY_CLASS); - - eldbus_message_iter_basic_append(iter, 's', _state_id_to_string(data->state)); - return EINA_TRUE; -} - -static Eina_Bool -_prop_window_get(const Eldbus_Service_Interface *iface, const char *propname EINA_UNUSED, Eldbus_Message_Iter *iter, const Eldbus_Message *request_msg EINA_UNUSED, Eldbus_Message **error EINA_UNUSED) -{ - Eo *eo = eldbus_service_object_data_get(iface, MY_CLASS_NAME); - Elm_App_Server_View_Data *data = efl_data_scope_get(eo, MY_CLASS); - - eldbus_message_iter_basic_append(iter, 'i', data->window_id); - return EINA_TRUE; -} - -static const Eldbus_Property _props[] = { - { "Title", "s", _prop_title_get, NULL, 0 }, - { "IconName", "s", _prop_icon_get, NULL, 0 }, - //{ "IconPixels", "(uubay)", _prop_icon_pixels_get, NULL, 0 }, - { "NewEvents", "i", _prop_events_get, NULL, 0 }, - { "Progress", "n", _prop_progress_get, NULL, 0 }, - { "State", "s", _prop_state_get, NULL, 0 }, - { "WindowId", "i", _prop_window_get, NULL, 0 }, - { NULL, NULL, NULL, NULL, 0 } -}; - -static const Eldbus_Signal _signals[] = { - { "Result", ELDBUS_ARGS({"a{sv}", "arguments"}), 0 }, - { NULL, NULL, 0} -}; - -static const Eldbus_Service_Interface_Desc iface_desc = { - "org.enlightenment.ApplicationView1", _methods, _signals, _props, NULL, NULL -}; - -EOLIAN static void -_elm_app_server_view_resume(Eo *obj, Elm_App_Server_View_Data *data) -{ - _state_set(data, ELM_APP_VIEW_STATE_LIVE); - efl_event_callback_legacy_call(obj, ELM_APP_SERVER_VIEW_EVENT_RESUMED, NULL); -} - -EOLIAN static void -_elm_app_server_view_pause(Eo *obj, Elm_App_Server_View_Data *data) -{ - _state_set(data, ELM_APP_VIEW_STATE_PAUSED); - efl_event_callback_legacy_call(obj, ELM_APP_SERVER_VIEW_EVENT_PAUSED, NULL); -} - -EOLIAN static void -_elm_app_server_view_close(Eo *obj, Elm_App_Server_View_Data *data) -{ - _state_set(data, ELM_APP_VIEW_STATE_CLOSED); - efl_event_callback_legacy_call(obj, ELM_APP_SERVER_VIEW_EVENT_CLOSED, NULL); -} - -EOLIAN static void -_elm_app_server_view_shallow(Eo *obj, Elm_App_Server_View_Data *data) -{ - _state_set(data, ELM_APP_VIEW_STATE_SHALLOW); - efl_event_callback_legacy_call(obj, ELM_APP_SERVER_VIEW_EVENT_SHALLOW, NULL); -} - -EOLIAN static Elm_App_View_State -_elm_app_server_view_state_get(Eo *obj EINA_UNUSED, Elm_App_Server_View_Data *data) -{ - return data->state; -} - -EOLIAN static void -_elm_app_server_view_window_set(Eo *obj EINA_UNUSED, Elm_App_Server_View_Data *data, Evas_Object *win) -{ - int before = data->window_id; - - data->window_id = elm_win_window_id_get(win); - - if (data->window_id != before) - eldbus_service_property_changed(data->iface, "WindowId"); -} - -EOLIAN static void -_elm_app_server_view_title_set(Eo *obj EINA_UNUSED, Elm_App_Server_View_Data *data, const char *title) -{ - title = title ? title : ""; - - if (eina_stringshare_replace(&data->title, title)) - eldbus_service_property_changed(data->iface, "Title"); -} - -EOLIAN static const char* -_elm_app_server_view_title_get(Eo *obj EINA_UNUSED, Elm_App_Server_View_Data *data) -{ - return data->title; -} - -EOLIAN static void -_elm_app_server_view_icon_set(Eo *obj EINA_UNUSED, Elm_App_Server_View_Data *data, const char *icon) -{ - icon = icon ? icon : ""; - - if (eina_stringshare_replace(&data->icon_name, icon)) - eldbus_service_property_changed(data->iface, "IconName"); -} - -EOLIAN static const char* -_elm_app_server_view_icon_get(Eo *obj EINA_UNUSED, Elm_App_Server_View_Data *data) -{ - return data->icon_name; -} - -EOLIAN static void -_elm_app_server_view_pixels_set(Eo *obj EINA_UNUSED, Elm_App_Server_View_Data *data, - unsigned int w EINA_UNUSED, unsigned int h EINA_UNUSED, - Eina_Bool has_alpha EINA_UNUSED, const unsigned char *pixels EINA_UNUSED) -{ - //TODO - eldbus_service_property_changed(data->iface, "IconPixels"); -} - -EOLIAN static void -_elm_app_server_view_pixels_get(Eo *obj EINA_UNUSED, Elm_App_Server_View_Data *pd EINA_UNUSED, - unsigned int *w EINA_UNUSED, unsigned int *h EINA_UNUSED, - Eina_Bool *has_alpha EINA_UNUSED, const unsigned char **pixels EINA_UNUSED) -{ - //TODO -} - -EOLIAN static void -_elm_app_server_view_progress_set(Eo *obj EINA_UNUSED, Elm_App_Server_View_Data *data, short progress) -{ - if (data->progress != progress) - eldbus_service_property_changed(data->iface, "Progress"); - data->progress = progress; -} - -EOLIAN static short -_elm_app_server_view_progress_get(Eo *obj EINA_UNUSED, Elm_App_Server_View_Data *data) -{ - return data->progress; -} - -EOLIAN static void -_elm_app_server_view_new_events_set(Eo *obj EINA_UNUSED, Elm_App_Server_View_Data *data, int events) -{ - if (data->new_events != events) - eldbus_service_property_changed(data->iface, "NewEvents"); - data->new_events = events; -} - -EOLIAN static int -_elm_app_server_view_new_events_get(Eo *obj EINA_UNUSED, Elm_App_Server_View_Data *data) -{ - return data->new_events; -} - -EOLIAN static Eina_Stringshare* -_elm_app_server_view_id_get(Eo *obj EINA_UNUSED, Elm_App_Server_View_Data *data) -{ - return data->id; -} - -EOLIAN static const char* -_elm_app_server_view_path_get(Eo *obj EINA_UNUSED, Elm_App_Server_View_Data *data) -{ - return eldbus_service_object_path_get(data->iface); -} - -EOLIAN static void -_elm_app_server_view_id_set(Eo *obj, Elm_App_Server_View_Data *data, const char *id) -{ - Elm_App_Server *server = NULL; - - if (efl_finalized_get(obj)) - { - ERR("Can't set id after object has been created."); - return; - } - - server = efl_parent_get(obj); - EINA_SAFETY_ON_TRUE_RETURN(!server || !efl_isa(server, ELM_APP_SERVER_CLASS)); - - if (!id) - { - int i; - for (i = 1; i < 99999; i++) - { - char buf[64]; - Eina_Bool valid = EINA_FALSE; - - snprintf(buf, sizeof(buf), "view_%d", i); - valid = elm_app_server_view_check(server, buf); - if (valid) - { - data->id = eina_stringshare_add(buf); - break; - } - } - } - else - { - Eina_Bool valid = EINA_FALSE; - valid = elm_app_server_view_check(server, id); - if (valid) - data->id = eina_stringshare_add(id); - } -} - -EOLIAN static Eo * -_elm_app_server_view_efl_object_finalize(Eo *obj, Elm_App_Server_View_Data *data) -{ - const char *server_path = NULL; - char view_path[PATH_MAX]; - Elm_App_Server *server = NULL; - - server = efl_parent_get(obj); - EINA_SAFETY_ON_TRUE_RETURN_VAL(!server || !efl_isa(server, ELM_APP_SERVER_CLASS), NULL); - - - if (!data->id) - { - ERR("Failed"); - return NULL; - } - - server_path = elm_app_server_path_get(server); - snprintf(view_path, sizeof(view_path), "%s/%s", server_path, data->id); - - eldbus_init(); - data->conn = eldbus_connection_get(ELDBUS_CONNECTION_TYPE_SESSION); - data->iface = eldbus_service_interface_register(data->conn, view_path, - &iface_desc); - eldbus_service_object_data_set(data->iface, MY_CLASS_NAME, obj); - - data->state = ELM_APP_VIEW_STATE_UNKNOWN; - data->title = eina_stringshare_add(""); - data->icon_name = eina_stringshare_add(""); - - return efl_finalize(efl_super(obj, MY_CLASS)); -} - -EOLIAN static void -_elm_app_server_view_efl_object_destructor(Eo *obj, Elm_App_Server_View_Data *data) -{ - eina_stringshare_del(data->title); - eina_stringshare_del(data->icon_name); - - eina_stringshare_del(data->id); - eldbus_service_object_unregister(data->iface); - eldbus_connection_unref(data->conn); - eldbus_shutdown(); - - efl_destructor(efl_super(obj, MY_CLASS)); -} - -#include "elm_app_server_view.eo.c" diff --git a/src/lib/elementary/elm_app_server_view.eo b/src/lib/elementary/elm_app_server_view.eo deleted file mode 100644 index 6405734318..0000000000 --- a/src/lib/elementary/elm_app_server_view.eo +++ /dev/null @@ -1,108 +0,0 @@ -import elm_general; - -class Elm.App.Server.View (Efl.Object) -{ - eo_prefix: elm_app_server_view; - methods { - @property progress { - set { - } - get { - } - values { - progress: short; - } - } - @property new_events { - set { - } - get { - } - values { - events: int; - } - } - @property icon { - set { - } - get { - } - values { - icon: string; - } - } - @property title { - set { - } - get { - } - values { - title: string @nullable; - } - } - @property window { - set { - } - values { - win: Efl.Canvas.Object; - } - } - @property id { - set { - } - get { - } - values { - ret: string; - } - } - @property state { - get { - } - values { - ret: Elm.App.View_State; - } - } - @property path { - get { - } - values { - ret: string; - } - } - @property pixels { - get { - [[Get application raw icon.]] - } - set { - [[Set icon to application, using the raw pixels of image.]] - } - values { - w: uint; - h: uint; - has_alpha: bool; - pixels: const(ubyte)*; - } - } - pause { - } - resume { - } - shallow { - } - close { - } - } - implements { - Efl.Object.destructor; - Efl.Object.finalize; - } - events { - resumed; [[Called when view must be resumed]] - paused; [[Called when view must be paused]] - closed; [[Called when view must be closed]] - shallow; [[Called when view state is set to shallow]] - save; [[Called when view state should be saved]] - } - -} diff --git a/src/lib/elementary/elm_app_server_view.h b/src/lib/elementary/elm_app_server_view.h deleted file mode 100644 index 9b6789e68b..0000000000 --- a/src/lib/elementary/elm_app_server_view.h +++ /dev/null @@ -1,3 +0,0 @@ -#ifdef EFL_EO_API_SUPPORT -#include "elm_app_server_view_eo.h" -#endif diff --git a/src/lib/elementary/elm_app_server_view_eo.h b/src/lib/elementary/elm_app_server_view_eo.h deleted file mode 100644 index ab52596ae5..0000000000 --- a/src/lib/elementary/elm_app_server_view_eo.h +++ /dev/null @@ -1 +0,0 @@ -#include "elm_app_server_view.eo.h" \ No newline at end of file