From b8e248f29c53f85153db3cd54210155bfb530c68 Mon Sep 17 00:00:00 2001 From: Jonathan Atton Date: Wed, 14 Jul 2010 09:07:43 +0000 Subject: [PATCH] Add a list of "layout" to elm_slideshow. A layout is like a "sub-style". For example the content can take all the slideshow widget (~fullscreen) or not. I do not have finish to work on it. SVN revision: 50247 --- legacy/elementary/data/themes/default.edc | 35 ++++++++++ legacy/elementary/data/themes/map_item_1.png | Bin 0 -> 2669 bytes legacy/elementary/data/themes/map_item_2.png | Bin 2957 -> 2578 bytes legacy/elementary/src/bin/test_slideshow.c | 29 ++++++-- legacy/elementary/src/lib/Elementary.h.in | 3 + legacy/elementary/src/lib/elm_slideshow.c | 68 ++++++++++++++++++- 6 files changed, 129 insertions(+), 6 deletions(-) create mode 100644 legacy/elementary/data/themes/map_item_1.png diff --git a/legacy/elementary/data/themes/default.edc b/legacy/elementary/data/themes/default.edc index 38d1a6515d..bdf069a119 100644 --- a/legacy/elementary/data/themes/default.edc +++ b/legacy/elementary/data/themes/default.edc @@ -8428,6 +8428,7 @@ collections { group { name: "elm/slideshow/base/default"; data { item: transitions "fade black_fade horizontal vertical square"; + item: layouts "fullscreen not_fullscreen"; } parts { part { name: "whole"; @@ -8591,6 +8592,14 @@ collections { rel2.to: "image_1_whole"; color: 255 255 255 255; } + description { + state: "not_fullscreen" 0.0; + rel1.relative: 0.1 0.1; + rel1.to: "image_1_whole"; + rel2.relative: 0.9 0.9; + rel2.to: "image_1_whole"; + color: 255 255 255 255; + } } part { name: "elm.swallow.2"; type: SWALLOW; @@ -8601,6 +8610,14 @@ collections { rel1.to: "image_2_whole"; rel2.to: "image_2_whole"; } + description { + state: "not_fullscreen" 0.0; + color: 255 255 255 255; + rel1.relative: 0.1 0.1; + rel1.to: "image_2_whole"; + rel2.relative: 0.9 0.9; + rel2.to: "image_2_whole"; + } } part { name: "events_catcher"; type: RECT; @@ -8613,6 +8630,24 @@ collections { } } programs { + //Substyle + program { name: "layout_fullscreen"; + signal: "layout,fullscreen"; + source: "slideshow"; + action: STATE_SET "default" 0.0; + target: "elm.swallow.1"; + target: "elm.swallow.2"; + transition: SINUSOIDAL 1.0; + } + program { name: "layout_not_fullscreen"; + signal: "layout,not_fullscreen"; + source: "slideshow"; + action: STATE_SET "not_fullscreen" 0.0; + target: "elm.swallow.1"; + target: "elm.swallow.2"; + transition: SINUSOIDAL 1.0; + } + // program { name: "fade_next"; signal: "fade,next"; source: "slideshow"; diff --git a/legacy/elementary/data/themes/map_item_1.png b/legacy/elementary/data/themes/map_item_1.png new file mode 100644 index 0000000000000000000000000000000000000000..da9b580c3776a388808cca2229a719fb6360a2b8 GIT binary patch literal 2669 zcmV-z3X=7SP)r^ihC2k( zgASbr%F(1lxI#N5r5w{1N?SfO%s^qLg;FT(bVvu9>A}D>FiA@Zk7NfRJINK2u`; zzY@`*oCzDQaW)M=L2V)*FIANESAC>&4T06y2edqRp+e}0FVJPSOQ`Y7(iqY5T`sYkpVx7V^7Nfp}_NSk$d^3rmLTHnal;u*}xHzoxP|tFlYqn zY5i#P(`S6Guf3(j0~=WYP1)@ho& zcPjlSH2@I>$yT-ditGP&o*Nm6@!8X!E|@ zwEC%fK`P?_aqa~V0DuT)-hmf?ZA+z8;QbdO^4WHs&;Zd^`HQ;7jh7aCR`3AGkT$QVsnugoHD%qpZSFhVy0|4f^a>2_MB7=5qyP-dPdVd`eg(hm7F#|+v*$?ZN-|GQ@ zv$wkW1tNpXRz7MIY~_IlyBM!{@c^5wb02DeK&|b9UQbb%lQM)k) zhy~@3U2xgY%81A`@Jv5{X;}FvC)&K*CTcUn07NX}rP8lE%darc?JItENVZCJmS0|n zh?kGoW`qHpSbWnt4R<*S3>I%SYD? zMawW|38u4pIZv?Ks~EvrdiUsZ24LWwpR-tng*g8Q5v>&f1WlvM2Q#2dv{sk_7j6dd zk{bcRHoE+C18kK-o;BqaUUUJ&3gYN;1^|F%S&wA%@(VZtz#=(;Wi6Qv&~-hjrxlp5 zZ+_W8dI}hhM?@Sk4F;z`ARcWuz5rc$LrDaIGusRp*p?q+$bdwDS59_c=L*S04^cXq z0)W2Z<%0$URk=s|e0O%?k(5KArDb*W4iWNz|)lsVh z!O_um!&gamhJ3p<0ATYcEkAU3yhA3F5RFIMUm9IElmSFUx~6o7%bKBU`BRu< zPJOzSSk|176Fq;-R6oK1BGQbsvcK(A8USQUN{gq`438K3Bw|};hWP4H+ zC0qHMuFBP`5EyRh%FW0y8F!oWPV1rHlM?e8=U()n_TL@1_k_C-uOU(oXWKukjX)xz zM8E&Ko{o2RB4Vuh%}t~#;pwZM1$147gYP~_CYIN0FWji@-gc9(KYIMzQwbhm8pq{D zoA(KayWtK!rMRk=ti$r!Ya!pu>Al?_!twpjQtgFzYb?vB4!nJTYa-gQhKPJq9cxTkk6FCpKC~50cq(mLD2X0uIq)nQx@Mfa z;=Z(|CFt<3NBr^r_E(fx;HNZ$)!Z3$DG ze+3ImE|~V%@kl##x4%Ww&493LiIyS^8>> z7phqFUrd7x0oBEP@Mou>_DY0g(Z!5{9JQ z1F9T^q#T4qq@7}YtsvQ}jnYM5){Dzl81YCOocwr8IOzM}SR&f-eIgpOwl{6 bZ@~WmP+WDwGsb#y00000NkvXXu0mjff-vdX literal 0 HcmV?d00001 diff --git a/legacy/elementary/data/themes/map_item_2.png b/legacy/elementary/data/themes/map_item_2.png index baae8f4ed9a0d61a85db73eecd44de0cf006cfe9..f92ebfac5d9f657a0b5a76b53d8345cbcd5800d2 100644 GIT binary patch delta 2495 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 ba>D-skGkl#Nb_x^00000NkvXXu0mjfubqO> diff --git a/legacy/elementary/src/bin/test_slideshow.c b/legacy/elementary/src/bin/test_slideshow.c index 123feccd5a..21a78f8128 100644 --- a/legacy/elementary/src/bin/test_slideshow.c +++ b/legacy/elementary/src/bin/test_slideshow.c @@ -53,6 +53,13 @@ _hv_select(void *data, Evas_Object *obj, void *event_info) elm_hoversel_label_set(obj, data); } +static void +_layout_select(void *data, Evas_Object *obj, void *event_info) +{ + elm_slideshow_layout_set(slideshow, data); + elm_hoversel_label_set(obj, data); +} + static void _start(void *data, Evas_Object *obj, void *event_info) { @@ -80,9 +87,13 @@ _spin(void *data, Evas_Object *obj, void *event_info) static Evas_Object * _get(void *data, Evas_Object *obj) { - Evas_Object *photo = elm_photocam_add(obj); - elm_photocam_file_set(photo, data); - elm_photocam_zoom_mode_set(photo, ELM_PHOTOCAM_ZOOM_MODE_AUTO_FIT); + //Evas_Object *photo = elm_photocam_add(obj); + //elm_photocam_file_set(photo, data); + //elm_photocam_zoom_mode_set(photo, ELM_PHOTOCAM_ZOOM_MODE_AUTO_FIT); + + Evas_Object *photo = elm_photo_add(obj); + elm_photo_file_set(photo, data); + return photo; } @@ -93,7 +104,7 @@ test_slideshow(void *data, Evas_Object *obj, void *event_info) { Evas_Object *win, *bg, *notify, *bx, *bt, *hv, *spin; const Eina_List *l; - const char *transition; + const char *transition, *layout; win = elm_win_add(NULL, "Slideshow", ELM_WIN_BASIC); elm_win_title_set(win, "Slideshow"); @@ -154,6 +165,14 @@ test_slideshow(void *data, Evas_Object *obj, void *event_info) elm_hoversel_label_set(hv, eina_list_data_get(elm_slideshow_transitions_get(slideshow))); evas_object_show(hv); + hv = elm_hoversel_add(win); + elm_box_pack_end(bx, hv); + elm_hoversel_hover_parent_set(hv, win); + EINA_LIST_FOREACH(elm_slideshow_layouts_get(slideshow), l, layout) + elm_hoversel_item_add(hv, layout, NULL, 0, _layout_select, layout); + elm_hoversel_label_set(hv, elm_slideshow_layout_get(slideshow)); + evas_object_show(hv); + spin = elm_spinner_add(win); elm_spinner_label_format_set(spin, "%2.0f secs."); evas_object_smart_callback_add(spin, "changed", _spin, spin); @@ -182,7 +201,7 @@ test_slideshow(void *data, Evas_Object *obj, void *event_info) evas_object_event_callback_add(slideshow, EVAS_CALLBACK_MOUSE_UP, _notify_show, notify); evas_object_event_callback_add(slideshow, EVAS_CALLBACK_MOUSE_MOVE, _notify_show, notify); - evas_object_resize(win, 350, 200); + evas_object_resize(win, 500, 400); evas_object_show(win); } diff --git a/legacy/elementary/src/lib/Elementary.h.in b/legacy/elementary/src/lib/Elementary.h.in index bfe21d34c9..5d27399950 100644 --- a/legacy/elementary/src/lib/Elementary.h.in +++ b/legacy/elementary/src/lib/Elementary.h.in @@ -1232,6 +1232,9 @@ extern "C" { EAPI void * elm_slideshow_item_data_get(Elm_Slideshow_Item *item); EAPI Elm_Slideshow_Item* elm_slideshow_item_current_get(const Evas_Object *obj); EAPI Evas_Object* elm_slideshow_item_object_get(Elm_Slideshow_Item* item); + EAPI const char * elm_slideshow_layout_get(const Evas_Object *obj); + EAPI void elm_slideshow_layout_set(Evas_Object *obj, const char *layout); + EAPI const Eina_List *elm_slideshow_layouts_get(const Evas_Object *obj); EAPI Evas_Object *elm_fileselector_add(Evas_Object *parent); diff --git a/legacy/elementary/src/lib/elm_slideshow.c b/legacy/elementary/src/lib/elm_slideshow.c index b60b4ee480..0e8971ea68 100644 --- a/legacy/elementary/src/lib/elm_slideshow.c +++ b/legacy/elementary/src/lib/elm_slideshow.c @@ -49,6 +49,11 @@ struct _Widget_Data Ecore_Timer *timer; int timeout; Eina_Bool loop:1; + + struct { + const char *current; + Eina_List *list; //list of const char * + } layout; }; static const char *widtype = NULL; @@ -66,6 +71,7 @@ _del_hook(Evas_Object *obj) elm_slideshow_clear(obj); _elm_stringlist_free(wd->transitions); if (wd->timer) ecore_timer_del(wd->timer); + _elm_stringlist_free(wd->layout.list); free(wd); } @@ -241,6 +247,10 @@ elm_slideshow_add(Evas_Object *parent) if (eina_list_count(wd->transitions) > 0) wd->transition = eina_stringshare_add(eina_list_data_get(wd->transitions)); + wd->layout.list = _elm_stringlist_get(edje_object_data_get(wd->slideshow, "layouts")); + if (eina_list_count(wd->layout.list) > 0) + wd->layout.current = eina_stringshare_add(eina_list_data_get(wd->layout.list)); + edje_object_signal_callback_add(wd->slideshow, "end", "slideshow", _end, obj); evas_object_smart_callback_add(obj, "sub-object-del", _sub_del, obj); @@ -399,7 +409,7 @@ elm_slideshow_previous(Evas_Object *obj) * Returns the list of transitions available. * * @param obj The slideshow object - * @return Returns the list of transitions (list of char*) + * @return Returns the list of transitions (list of const char*) * * @ingroup Slideshow */ @@ -412,6 +422,23 @@ elm_slideshow_transitions_get(const Evas_Object *obj) return wd->transitions; } +/** + * Returns the list of layouts available. + * + * @param obj The slideshow object + * @return Returns the list of layout (list of const char*) + * + * @ingroup Slideshow + */ +const Eina_List * +elm_slideshow_layouts_get(const Evas_Object *obj) +{ + ELM_CHECK_WIDTYPE(obj, widtype) NULL; + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return NULL; + return wd->layout.list; +} + /** * Set the transition to use * @@ -502,6 +529,44 @@ elm_slideshow_loop_set(Evas_Object *obj, Eina_Bool loop) wd->loop = loop; } +/** + * Returns the current layout name + * + * @param obj The slideshow object + * @returns Returns the layout name + * + * @ingroup Slideshow + */ +EAPI const char * +elm_slideshow_layout_get(const Evas_Object *obj) +{ + ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE; + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return EINA_FALSE; + return wd->layout.current; +} + +/** + * Set the layout + * + * @param obj The slideshow object + * @param layout the new layout + * + * @ingroup Slideshow + */ +EAPI void +elm_slideshow_layout_set(Evas_Object *obj, const char *layout) +{ + char buf[PATH_MAX]; + ELM_CHECK_WIDTYPE(obj, widtype); + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return; + wd->layout.current = eina_stringshare_add(layout); + + snprintf(buf, sizeof(buf), "layout,%s", wd->layout.current); + edje_object_signal_emit(wd->slideshow, buf, "slideshow"); +} + /** * Return if the first item should follow the last and vice versa * @@ -649,3 +714,4 @@ elm_slideshow_item_data_get(Elm_Slideshow_Item * item) return (void *)item->data; } +