#include "e_mod_main.h" #include "gadget.h" #include "bryce.h" EINTERN Evas_Object *start_create(Evas_Object *parent, int *id EINA_UNUSED, Z_Gadget_Site_Orient orient);; EINTERN void clock_init(void); EINTERN void clock_shutdown(void); EINTERN void ibar_init(void); EINTERN void wireless_init(void); static Eina_List *handlers; static Evas_Object *rect; static Eina_Bool added = 1; static void _gadget_desklock_del(void) { e_desklock_hide(); } static void _edit_end() { E_FREE_LIST(handlers, ecore_event_handler_del); } static Eina_Bool _gadget_key_handler(void *d EINA_UNUSED, int t EINA_UNUSED, Ecore_Event_Key *ev) { if (eina_streq(ev->key, "Escape")) _gadget_desklock_del(); return ECORE_CALLBACK_DONE; } static void _gadget_mouse_up_handler() { if (!added) _gadget_desklock_del(); added = 0; } static void _gadget_added() { added = 1; } static Eina_Bool _gadget_desklock_handler(void *d EINA_UNUSED, int t EINA_UNUSED, E_Event_Comp_Object *ev) { E_Notification_Notify n; int w, h; const char *name; Evas_Object *site, *editor, *comp_object; name = evas_object_name_get(ev->comp_object); if (!name) return ECORE_CALLBACK_RENEW; if (strncmp(name, "desklock", 8)) return ECORE_CALLBACK_RENEW; evas_object_layer_set(ev->comp_object, E_LAYER_POPUP - 1); site = z_gadget_site_auto_add(Z_GADGET_SITE_ORIENT_NONE, name); evas_object_smart_callback_add(site, "gadget_added", _gadget_added, NULL); evas_object_layer_set(site, E_LAYER_POPUP); editor = z_gadget_editor_add(e_comp->elm, site); comp_object = e_comp_object_util_add(editor, E_COMP_OBJECT_TYPE_POPUP); evas_object_resize(comp_object, 300 * e_scale, 300 * e_scale); e_comp_object_util_center(comp_object); evas_object_layer_set(comp_object, E_LAYER_POPUP); evas_object_show(comp_object); evas_object_size_hint_min_get(editor, &w, &h); evas_object_resize(comp_object, 300 * e_scale, h * e_scale); e_comp_object_util_center(comp_object); e_comp_object_util_del_list_append(ev->comp_object, comp_object); e_comp_object_util_del_list_append(ev->comp_object, rect); memset(&n, 0, sizeof(E_Notification_Notify)); n.timeout = 3000; n.summary = _("Lockscreen Gadgets"); n.body = _("Press Escape or click the background to exit."); n.urgency = E_NOTIFICATION_NOTIFY_URGENCY_NORMAL; e_notification_client_send(&n, NULL, NULL); return ECORE_CALLBACK_RENEW; } static void _gadget_conf() { rect = evas_object_rectangle_add(e_comp->evas); evas_object_event_callback_add(rect, EVAS_CALLBACK_DEL, _edit_end, NULL); evas_object_color_set(rect, 0, 0, 0, 0); evas_object_resize(rect, e_comp->w, e_comp->h); evas_object_layer_set(rect, E_LAYER_POPUP); evas_object_show(rect); E_LIST_HANDLER_APPEND(handlers, E_EVENT_COMP_OBJECT_ADD, _gadget_desklock_handler, NULL); E_LIST_HANDLER_APPEND(handlers, ECORE_EVENT_KEY_DOWN, _gadget_key_handler, NULL); E_LIST_HANDLER_APPEND(handlers, ECORE_EVENT_MOUSE_BUTTON_UP, _gadget_mouse_up_handler, NULL); e_desklock_demo(); } static void _bryce_edit_end(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { e_bindings_disabled_set(0); evas_object_hide(data); evas_object_del(data); } static Eina_Bool _bryce_editor_key_down() { return EINA_TRUE; } static void _bryce_conf() { Evas_Object *editor, *comp_object; E_Zone *zone; int x, y, w, h; zone = e_zone_current_get(); x = zone->x, y = zone->y, w = zone->w, h = zone->h; e_bindings_disabled_set(1); editor = z_bryce_editor_add(e_comp->elm); evas_object_geometry_set(editor, x, y, w, h); comp_object = e_comp_object_util_add(editor, E_COMP_OBJECT_TYPE_NONE); evas_object_event_callback_add(editor, EVAS_CALLBACK_DEL, _bryce_edit_end, comp_object); evas_object_layer_set(comp_object, E_LAYER_POPUP); evas_object_show(comp_object); e_comp_object_util_autoclose(comp_object, NULL, _bryce_editor_key_down, NULL); } static void _gadget_menu(void *d EINA_UNUSED, E_Menu *m) { E_Menu_Item *mi; mi = e_menu_item_new(m); e_menu_item_label_set(mi, _("Lockscreen Gadgets")); e_util_menu_item_theme_icon_set(mi, "preferences-desktop-wallpaper"); e_menu_item_callback_set(mi, _gadget_conf, NULL); mi = e_menu_item_new(m); e_menu_item_label_set(mi, _("Bryces")); //e_util_menu_item_theme_icon_set(mi, "preferences-desktop-wallpaper"); e_menu_item_callback_set(mi, _bryce_conf, NULL); } EINTERN void gadget_demo(void) { Evas_Object *b, *site; if (!eina_streq(getenv("USER"), "cedric")) return; z_gadget_type_add("Start", start_create); clock_init(); ibar_init(); wireless_init(); z_gadget_init(); z_bryce_init(); if (!e_config->null_container_win) { Eina_List *l; E_Config_Binding_Mouse *ebm; e_module_disable(e_module_find("connman")); EINA_LIST_FOREACH(e_bindings->mouse_bindings, l, ebm) { if (eina_streq(ebm->action, "window_move")) { e_bindings_mouse_add(E_BINDING_CONTEXT_ANY, ebm->button, ebm->modifiers, ebm->any_mod, "gadget_move", NULL); } else if (eina_streq(ebm->action, "window_resize")) { e_bindings_mouse_add(E_BINDING_CONTEXT_ANY, ebm->button, ebm->modifiers, ebm->any_mod, "gadget_resize", NULL); } else if (eina_streq(ebm->action, "window_menu")) { e_bindings_mouse_add(E_BINDING_CONTEXT_ANY, ebm->button, ebm->modifiers, ebm->any_mod, "gadget_menu", NULL); e_bindings_mouse_add(E_BINDING_CONTEXT_ANY, ebm->button, ebm->modifiers, ebm->any_mod, "bryce_menu", NULL); } } e_bindings_wheel_add(E_BINDING_CONTEXT_ANY, 0, 1, E_BINDING_MODIFIER_CTRL, 0, "bryce_resize", NULL); e_bindings_wheel_add(E_BINDING_CONTEXT_ANY, 0, -1, E_BINDING_MODIFIER_CTRL, 0, "bryce_resize", NULL); e_config->null_container_win = 1; ecore_job_add(_bryce_conf, NULL); e_config_save_queue(); } //b = z_bryce_add(e_comp->elm, "demo"); //site = z_bryce_site_get(b); //z_gadget_site_gadget_add(site, "Start", 0); //z_gadget_site_gadget_add(site, "Clock", 0); //z_gadget_site_gadget_add(site, "IBar", 0); //z_bryce_autosize_set(b, 1); //z_bryce_autohide_set(b, 1); e_int_menus_menu_augmentation_add_sorted("config/1", "Gadgets 2.0", _gadget_menu, NULL, NULL, NULL); }