Enlightenment CVS committal Author : dj2 Project : e17 Module : apps/e_utils
Dir : e17/apps/e_utils/src/bin/entangle Modified Files: entangle_ui.c Log Message: - patch from Mathieu Lamar to: - add a scrollbar to the menu in entangle. - split the theme into multiple files =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e_utils/src/bin/entangle/entangle_ui.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -3 -r1.6 -r1.7 --- entangle_ui.c 16 May 2005 04:03:50 -0000 1.6 +++ entangle_ui.c 26 May 2005 00:34:22 -0000 1.7 @@ -23,6 +23,18 @@ static void entangle_ui_cb_down_released(void *data, Evas_Object *obj, const char *emission, const char *src); + +static void entangle_ui_cb_menu_up_pressed(void *data, Evas_Object *obj, + const char *emission, const char *src); +static void entangle_ui_cb_menu_up_released(void *data, Evas_Object *obj, + const char *emission, const char *src); +static void entangle_ui_cb_menu_down_pressed(void *data, Evas_Object *obj, + const char *emission, const char *src); +static void entangle_ui_cb_menu_down_released(void *data, Evas_Object *obj, + const char *emission, const char *src); +static void entangle_ui_cb_menu_drag(void *data, Evas_Object *obj, + const char *emission, const char *src); + /* container element mouse over/out callbacks */ static void entangle_ui_cb_mouse_in(void *data, Evas *evas, Evas_Object *obj, void *ev); @@ -102,7 +114,18 @@ evas_object_resize(edje, WIDTH, HEIGHT); evas_object_name_set(edje, "edje"); evas_object_show(edje); - + + edje_object_signal_callback_add(edje, "menu,down,clicked", + "*", entangle_ui_cb_menu_down_pressed, NULL); + edje_object_signal_callback_add(edje, "menu,down,release", + "*", entangle_ui_cb_menu_down_released, NULL); + edje_object_signal_callback_add(edje, "menu,up,clicked", + "*", entangle_ui_cb_menu_up_pressed, NULL); + edje_object_signal_callback_add(edje, "menu,up,release", + "*", entangle_ui_cb_menu_up_released, NULL); + edje_object_signal_callback_add(edje, "drag", + "scroll_title_outline", entangle_ui_cb_menu_drag, NULL); + o = esmart_container_new(evas); esmart_container_direction_set(o, CONTAINER_DIRECTION_VERTICAL); esmart_container_alignment_set(o, CONTAINER_ALIGN_CENTER); @@ -214,8 +237,27 @@ entangle_ui_cb_down_released, NULL); } } + + bar = evas_object_name_find(evas, "menu"); + edje_object_part_geometry_get(edje, "menu_items", NULL, NULL, NULL, &h); + l = esmart_container_elements_length_get(bar); + state = edje_object_part_state_get(edje, "scroll_title_outline", NULL); + + if (l < h) + { + if (!strcmp(state, "default")) + edje_object_signal_emit(edje, "scroll,buttons,hide", "*"); + } + else + { + if (!strcmp(state, "hidden")) + edje_object_signal_emit(edje, "scroll,buttons,show", "*"); + } } + + + static int entangle_ui_eapps_bar_populate(Evas_Object *container) { @@ -278,7 +320,8 @@ l = esmart_container_elements_length_get(container); state = edje_object_part_state_get(edje, "up_arrow", NULL); - if (l < h) edje_object_signal_emit(edje, "arrows,hide", "*"); + if (l < h) + edje_object_signal_emit(edje, "arrows,hide", "*"); else { edje_object_signal_emit(edje, "arrows,show", "*"); @@ -342,6 +385,93 @@ esmart_container_scroll_stop(o); } + +static void +entangle_ui_cb_menu_up_pressed(void *data __UNUSED__, Evas_Object *obj, + const char *emission __UNUSED__, + const char *src __UNUSED__) +{ + Evas *evas; + Evas_Object *o, *o2; + + evas = evas_object_evas_get(obj); + o = evas_object_name_find(evas, "menu"); + + esmart_container_scroll_start(o, 2); +} + +static void +entangle_ui_cb_menu_up_released(void *data __UNUSED__, Evas_Object *obj, + const char *emission __UNUSED__, + const char *src __UNUSED__) +{ + Evas *evas; + Evas_Object *o; + double y; + + evas = evas_object_evas_get(obj); + o = evas_object_name_find(evas, "menu"); + + esmart_container_scroll_stop(o); + + y = esmart_container_scroll_percent_get(o); + + o = evas_object_name_find(evas, "edje"); + edje_object_part_drag_value_set(o, "scroll_title_outline", 0, y); + +} + +static void +entangle_ui_cb_menu_down_pressed(void *data __UNUSED__, Evas_Object *obj, + const char *emission __UNUSED__, + const char *src __UNUSED__) +{ + Evas *evas; + Evas_Object *o; + + evas = evas_object_evas_get(obj); + o = evas_object_name_find(evas, "menu"); + esmart_container_scroll_start(o, -2); +} + +static void +entangle_ui_cb_menu_down_released(void *data __UNUSED__, Evas_Object *obj, + const char *emission __UNUSED__, + const char *src __UNUSED__) +{ + Evas *evas; + Evas_Object *o; + double y; + + evas = evas_object_evas_get(obj); + o = evas_object_name_find(evas, "menu"); + + esmart_container_scroll_stop(o); + + y = esmart_container_scroll_percent_get(o); + + o = evas_object_name_find(evas, "edje"); + edje_object_part_drag_value_set(o, "scroll_title_outline", 0, y); +} + +static void +entangle_ui_cb_menu_drag(void *data __UNUSED__, Evas_Object *obj, + const char *emission __UNUSED__, + const char *src __UNUSED__) +{ + Evas *evas; + Evas_Object *o; + double y; + + evas = evas_object_evas_get(obj); + o = evas_object_name_find(evas, "edje"); + + edje_object_part_drag_value_get(o, "scroll_title_outline", NULL, &y); + + o = evas_object_name_find(evas, "menu"); + esmart_container_scroll_percent_set(o, y); +} + static void entangle_ui_cb_mouse_in(void *data, Evas *evas, Evas_Object *obj __UNUSED__, void *ev __UNUSED__) @@ -423,13 +553,15 @@ Evas *evas; int i; const char *file; + Evas_Coord h; + double l; + Evas_Object *o; evas = evas_object_evas_get(container); - { - Evas_Object *o; - o = evas_object_name_find(evas, "edje"); - edje_object_file_get(o, &file, NULL); - } + + o = evas_object_name_find(evas, "edje"); + edje_object_file_get(o, &file, NULL); + evas_object_data_set(container, "list", apps); evas_object_data_set(container, "list_rel_path", rel_path); @@ -478,6 +610,20 @@ esmart_container_element_append(container, obj); } + + o = evas_object_name_find(evas, "edje"); + edje_object_part_geometry_get(o, "menu_items", NULL, NULL, NULL, &h); + + l = esmart_container_elements_length_get(container); + + if (l < h) + edje_object_signal_emit(o, "scroll,buttons,hide", "*"); + else + { + l = esmart_container_scroll_percent_get(o); + edje_object_part_drag_value_set(o, "scroll_title_outline", 0, l); + edje_object_signal_emit(o, "scroll,buttons,show", "*"); + } return 1; } @@ -638,7 +784,6 @@ o = entangle_ui_cmd_bar_button_get(evas, "Quit", entangle_ui_cb_quit); esmart_container_element_append(container, o); - } static Evas_Object * @@ -980,4 +1125,3 @@ } - ------------------------------------------------------- SF.Net email is sponsored by: GoToMeeting - the easiest way to collaborate online with coworkers and clients while avoiding the high cost of travel and communications. There is no equipment to buy and you can meet as often as you want. Try it free.http://ads.osdn.com/?ad_id=7402&alloc_id=16135&op=click _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs