From c334b2ab2078ccd3c4381500f38d30e3ebff8373 Mon Sep 17 00:00:00 2001 From: titan Date: Mon, 5 Jul 2010 21:07:53 +0000 Subject: [PATCH] Add a flow browser. It can be accessed by clicking View Large from the toolbar. It is functional for viewing your images at high resolutions. SVN revision: 50048 --- data/images/Makefile.am | 7 +- data/images/first.png | Bin 0 -> 2122 bytes data/images/go_back.png | Bin 0 -> 2285 bytes data/images/last.png | Bin 0 -> 2178 bytes data/images/next.png | Bin 0 -> 2038 bytes data/images/previous.png | Bin 0 -> 2028 bytes src/bin/Makefile.am | 1 + src/bin/ephoto.h | 11 ++- src/bin/ephoto_flow_browser.c | 154 +++++++++++++++++++++++++++++++++ src/bin/ephoto_main.c | 2 + src/bin/ephoto_thumb_browser.c | 108 +++++++++++++---------- 11 files changed, 230 insertions(+), 53 deletions(-) create mode 100644 data/images/first.png create mode 100644 data/images/go_back.png create mode 100644 data/images/last.png create mode 100644 data/images/next.png create mode 100644 data/images/previous.png create mode 100644 src/bin/ephoto_flow_browser.c diff --git a/data/images/Makefile.am b/data/images/Makefile.am index 419b1cb..98ee780 100644 --- a/data/images/Makefile.am +++ b/data/images/Makefile.am @@ -4,7 +4,12 @@ IMAGES = \ change_directory.png \ filter.png \ view_presentation.png \ -play_slideshow.png +play_slideshow.png \ +first.png \ +last.png \ +next.png \ +previous.png \ +go_back.png imagesdir = $(pkgdatadir)/images images_DATA = $(IMAGES) diff --git a/data/images/first.png b/data/images/first.png new file mode 100644 index 0000000000000000000000000000000000000000..5f717ac2cfda2582dfffc79a294b4f7e233d762f GIT binary patch literal 2122 zcmV-Q2(|Z#P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2igY( z6dwk~nHkIg00+uRL_t(&-tAd!j1|=xe%>>4cklACtYWKD0nw(xV6%nQYL^yTwo)pX zqU#o^9}zT!)~2SeXlrVkrm6lQZPm2JA4(}=OKK!gA(#@WHV6S-N}woNDCKK+U6#eY zd)K`mGv|H#!yG9ByY}{b7$tf&-*;@JLk>-V{NRBwXyd9Y!nP?8(oS2 z=sF4b+QZ&o`!te8=04`!E<`&ZT zPyIz_S33Y7qY6L(>^r#yj&h;M!JMfJOTKZFaa=_HG~9;6b38WHBVwvt9G}~ zt6qFl-A#8Tk9WL>RJJ3`A4UX(puF67yJ{QzNk-+sRS78NgaOQXy@Ni33IH$|T6`!d z01jk;B(7ake!TA-we5Xqt?{iJR+T6r@gbtXq>3ir+{VPiS6p`W3->MhQAJj| zak%wu2pB}c#>7M(7KDHyWTI+%hA4)xw#TN23Z!O!#}Erhp@f8?*$0t=f-0y&4GnNw zrn|qne#(uj>gyg#wxo}tEp^=Ps02g=h=3G@*Y&Z$U@#zTnYGSC14a~NGM2R5f$cuo>+Eh@h$gEn|WPzqUqe5$mF|2$pp1ZMfOwXHwhCOHlG3z zf#Zb|Gtn3LfHKULEFmEUvU{QOLWR?euJRHgQx-Ud(S0RkM0K&iu1k8}?%S{nL$m(7MU^^!S62~O?Z~$VO=R+EIIe=$rrc?GU@s33IcUiO3Q)>0M2d`& z(N-ugvS|@kT!Dy@B18ZdhMNrvHnvPC1q;^BITTvoIRtXdbt(cLpC*8J*ZRxPwVrxz>#kQbpTF$OsGhRGIvqs1 zP%wshAchP8fcyUM_0|h#GWFa3zPY>eLYK^+aUaH&O&U~E zD#Aj@hO&%AK|~qt^Vf-hC>emV<{Wud|LdcJyy&exJ6jGNZSv+#zZa7$t}*c`BB?;v zD$x8u$sTM=41)ODs+hm-Faan4&WX4DmJ4UGMEv*Hr&1r!S~&lX^5)bYw0v^ZL@tcJ zadOer$3V)?N1p=)^snxq*KY09Csr05rcip}$S(%)S z=B_<`(X>~RB0T%t&qwn1kYZyQE`Xvf-vfQ%clu{@9_%=^>Gk!i>z8~tS##xgaQNa* zFuafn^OuplgB!j2-gczyD>~n9q5PP|=i(qr%7I{q7PWBh;0FJXtsnIK^e0|&B!8c0rXcGxQPCT_KB&4*Yc_#=V^et9WRUhf#BghD*$XJR18Ea#0tc|e!4`r^FVp^ZN-~a#s07*qoM6N<$g1H*@ Ag8%>k literal 0 HcmV?d00001 diff --git a/data/images/go_back.png b/data/images/go_back.png new file mode 100644 index 0000000000000000000000000000000000000000..f6abdb02514d50b1da3cda0c64cb84df535e99bf GIT binary patch literal 2285 zcmV+P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2igY( z6e0$%aZz#r00?bKL_t(&-tC!ta8%VD$3N%ZePywry(%DQUH6`b2U(P<=5|;=j7ikh9EMB&I6Sjxl?mG-@5LmU*}}!6^odE6H3L04PZbXIIxk&oLPA*CeL5v z(RGbjpd5i3)*0_h0hE`c7sOcW_7#>+p1anKY{Ure0Tc+0;S8aE0~{#FE#hp=y}Wqd z_!+-)ThYT<(T_SscZnDOnE-oUC65@p$4tI+;@E3{>M$df$XIQcaG}JoitiV|fz1?R zvG=N(KN>yiic;MS?nau8o#MN~UUVfTaaC+2t_dPSP_G20zxShfrdhX45O?z z&|GNtE74t3Kx#Rles?QY^bls`{lxT`Jin_hFMx$oCRX%gtXOrwKJWA`LO5no zv;P;NXvgP^OP283fVUC?o{fj=+X4-LmYSmwAv}pe8t;sC5@lteFgwM^s{1Lv(+DyD zCamx_Ce3*=OLsWeS8ig;pp1cc*E3$}R7{w@^wLq|?$M3&e??lYN#9n01SHZphZ(Ny z7VrIeoFnhUi07!9ir>^m3n-dDA9FyPx!Gl$QgHpr57yN-)x2ohvu{V!FG*NF{)Gpu zKqABjwg-x}Z@}ffOyrKew!n3cWrH@29{dwIQu5a5Yi^l(`IN^UMsOQ4{wXMhQc=us z1xf}l>Qb|f?s}(WC}TL?QHb5QjE{HzxHW33g85}c`)t!!g+Fd3cE@}+TcO%n@zBYF z-0?rKDXRrDdI&3W2&KXoTSW8V9lH_T{cY^ox8WGE0K2Cc-BAcAq}9?n_|uIDs||;D zKJjRiiUgWZt$&?=4Hy96l^s|&-@_Jr+v$ntoA(vwjl0XPtaDhgW8GaU?AWqy;n3gj zrRl_L{?BT+Y5wNpF)4M+<-5t2mAe=OSn-oRfCxOknU1z|?~QqBD=!V&fo8!1tXT_L z6ly)S?%2L3!Zy$MaE!R8=h)PU7B6Dt?1fQhw6(VAT=hR5I{MDfKB=jADkLewGkP_e zEx%hkGkOTOZyHiEb^C8|4(f?a2-NIS9*LZ9dgjQUCnCZ=1Lw%4eGaABWt=K0;}5eJ zGC9~eHq`y1bouH1*a)stoe?h#`(sd43yor#Ofc-e@B@2%dwGHk}2 zxG#AcAzT@?omWbogn1{cwg)W3#O5hUA&6qPyL3(A8`494$zuK%m+@PU?qAgr?Pyc( z{AUoFH>0+5N~u>Sk2ZYrddQJ|Ys#+{O6Vv>Y{+jV=9aQo8glNj$~FFumSf62dNo4x zWYpH@;g!~NN8)H>5ctTL2DB#x}9NlzpV(2O_- zjp%tPw9eT`b4Y={{ZcLUTh?@aM}{ z(U8=4GJs6Hlc@md1oa0->m{tZ2?x{*Pcqe)mvy}-C%-`oyJ$H2m&ob5y7KQo$Qwz0 z$}|SK$S}4Z4mTo$T=W2x&Lc88mRH`-)z=m2Kg=sAI1>)lsg~2neGO*=Tkrk}FQ@UO z>LtIZqSk{5tsh=V=LwYzvFbr47SG_WQDX=w3%#R_k#(oozVJzQrwrIk@@^I#itqto z+7z727x0a7EcUN8Fe2{@(|;hiv%QNC=PmVptB zVjlUBmYwf${?n!|;i?DWy+QSPD>0yjEVb4w@69Acr{;~j>fc4g|>cbQNo6o-i^poks?-5+d00000NkvXX Hu0mjfZCzFu literal 0 HcmV?d00001 diff --git a/data/images/last.png b/data/images/last.png new file mode 100644 index 0000000000000000000000000000000000000000..1f7e9f21fefa65c4199300cbcee2ba37dacf4f6e GIT binary patch literal 2178 zcmV-|2z~d7P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2igY( z6do;bKGDqp00;s}L_t(&-tAdyY*fb;{?6RHYa1unG7ew}X&$Jd5ApyJ@oH&Fs1%VV z(BMjynjlguYLm8VYEVIysw!2ZR+LDzYN9q#C}{&IDWNn4LMV@>*gOg`AtX2y>b4kT zUIxF``+DIE|Bkh0LXgC&~UF{2r zEUbCfY#-`6yFdKnAQ~ya6N{cMe0A?HpOzIn?ntzn$BzCQsXq96iIdF-P%&6=S_bp3=exBPMLipZ0Btp*8JMYa=$Ee2Q^np0rWV9{u3IgU%Q z22?FtRrtx9XRMyH!h4~z65hbz+x2qEsNXC!yV{qiU)W>b_aaa#_x{%xmVrPpqSNjd zFwVFA10Bh$_|oSeD=L3y+*ki1Z%mo~J^jGZpQ5!d4cRqpN4^9A;QPyd0mC|-)+{&! zfrKg{rFS%Jto2!g-KH!I7K5v?3wXC_4`$vuzp$)i?98qE*Bzg|g67w*PMqm&e-06l z!4Oc&Lv6zrC{iF&AW&$e97SE6)g=u+@B)iLEO`xejc;Mf#F_r1_kVZN#$C@Jon37n ztX-qu&Mij+2B+7_I|f7;EE+~M45!kgcHOX>cU`CN(V6RFM`i=V8VTKnV~u-2QB743 zt|%!l8TaO#>PS^j1zF288?cxj5*iQz7Iq**-34cuNDo2*XwjiL4I>te5smtb2hkim zgGV0tPSM9IKK}FB%l)VAqkqghUvcwUZEmB#@4chj19A6_pW?1L0&PoYu6> zER27*ypQ(yWh|b*v}oUvZI9QX=F^{hLO+yr&$A=U90YQn1lUQ4g`h}T;FJMR1Snp&MN{*%SeLiNkK6(=+d3&N_8Nf>_j3NM@lDq?6>`c zUt!vf3)CZvoA-z z4s@kD5!any!w?n-15EbRnk8$9Fiu~72e+2r4HibqBr;fBJ<5wfd%OjgIvY{wk3z&N zKr~VS4?a9n;7rs)a}rt-&>TmS<4BsAEo3$%KuVxM5VGKviy?+|BQbvTt+?l=h4|~q zE%?kQ7WX(>49WwsWGiCHRvWM$!SfW9??HL6QgYTLMIf?ejT9_Mfy+P^yg1Gb0fC?d zE=vKEZZgyb6vRt~k2`q_FjZ zkbs@|g7ZELphV%0ihEH$Y7(~WemU0G-ns+8!~LET`nm3P2k$xoEot@a~5P`OwjW9kI(;a_l#zHrsId5TFqFZXPHuD23-+ z_ji+ppCz3TftYDcXCNVfU6CdcOuX)POdWF{b|3mv>eQ+F=9ZIcas9SbL%wn8=dixY zC82qfzmfqLvUYkd2xJ1F2&4QGyxI7yJyHm{^k*~DZ6){Mrt9v)A9ihsH#Ih&_;8nb z^vVfy)$J#4e;KR?C`5t);Q39@kya-TM2LP&FqbuBfekd;d-sVP)#pr2EBd?JnUwMECfk_Zmg}Af) zi|B0c!Yf5*U8RfAaQ2k!*uFD<`HWt5 zax?$=qxhcI&-FD-NPp5t=aBUnfN@cj0w6)f9vzv0siPO-K;2$Gu>VNgxg-4bf9~TC z+%tWxpErSA;8f`U0Iccp0-SlqkU}z;9Uq;7$;F?=w!K@DCy)QV>GaOj;}=h$*{uP3)xp?pM{CGz6>=i;r+sb}ienT@@W=N#TJS)Ks^RNlQZ?<~Z<#6%DmCadTLHG?>g zb^y5YuVmGG8_e4wBXFK1FpwHFkkl2f%&M18S-CvhgZ+^R6Og>pb)NU;0ch)te#wIG77O^^*XyNyv~3=6~UrPr*nVY5%|NKjSD57OThUJOBUy07*qoM6N<$ Ef(l9YC;$Ke literal 0 HcmV?d00001 diff --git a/data/images/next.png b/data/images/next.png new file mode 100644 index 0000000000000000000000000000000000000000..e114357d00dea08c773d5d7aa23e2678ab0c982d GIT binary patch literal 2038 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 KMNUMnLSTaKp~%eu literal 0 HcmV?d00001 diff --git a/src/bin/Makefile.am b/src/bin/Makefile.am index 874fb7e..3cdce00 100644 --- a/src/bin/Makefile.am +++ b/src/bin/Makefile.am @@ -8,6 +8,7 @@ bin_PROGRAMS = ephoto ephoto_SOURCES = \ ephoto.c \ ephoto.h \ + ephoto_flow_browser.c \ ephoto_main.c \ ephoto_thumb_browser.c diff --git a/src/bin/ephoto.h b/src/bin/ephoto.h index 4391789..eba4ddb 100644 --- a/src/bin/ephoto.h +++ b/src/bin/ephoto.h @@ -26,6 +26,12 @@ /*Main Functions*/ void ephoto_create_main_window(void); +/*Ephoto Flow Browser*/ +void ephoto_create_flow_browser(void); +void ephoto_show_flow_browser(const char *current_image); +void ephoto_hide_flow_browser(void); +void ephoto_delete_flow_browser(void); + /*Ephoto Thumb Browser*/ void ephoto_create_thumb_browser(void); void ephoto_show_thumb_browser(void); @@ -40,11 +46,8 @@ struct _Ephoto Evas_Object *win; Evas_Object *bg; Evas_Object *box; - Evas_Object *dir_label; - Evas_Object *thbox; + Evas_Object *flow_browser; Evas_Object *thumb_browser; - Evas_Object *thumb_slider; - Evas_Object *toolbar; Eina_Hash *thumbs_images; Eina_List *images; }; diff --git a/src/bin/ephoto_flow_browser.c b/src/bin/ephoto_flow_browser.c new file mode 100644 index 0000000..05e6ca2 --- /dev/null +++ b/src/bin/ephoto_flow_browser.c @@ -0,0 +1,154 @@ +#include "ephoto.h" + +/*Callbacks*/ +static void _ephoto_go_back(void *data, Evas_Object *obj, void *event_info); +static void _ephoto_go_first(void *data, Evas_Object *obj, void *event_info); +static void _ephoto_go_last(void *data, Evas_Object *obj, void *event_info); +static void _ephoto_go_next(void *data, Evas_Object *obj, void *event_info); +static void _ephoto_go_previous(void *data, Evas_Object *obj, void *event_info); + +/*Inline variables*/ +static Eina_List *iter; +static Evas_Object *image, *toolbar; + +/*Create the flow browser*/ +void ephoto_create_flow_browser(void) +{ + Evas_Object *o; + + em->flow_browser = elm_box_add(em->win); + elm_win_resize_object_add(em->win, em->flow_browser); + evas_object_size_hint_weight_set(em->flow_browser, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(em->flow_browser, EVAS_HINT_FILL, EVAS_HINT_FILL); + + image = elm_photocam_add(em->win); + elm_photocam_zoom_mode_set(image, ELM_PHOTOCAM_ZOOM_MODE_AUTO_FIT); + evas_object_size_hint_weight_set(image, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(image, EVAS_HINT_FILL, EVAS_HINT_FILL); + elm_box_pack_end(em->flow_browser, image); + + toolbar = elm_toolbar_add(em->win); + elm_toolbar_icon_size_set(toolbar, 24); + elm_toolbar_homogenous_set(toolbar, EINA_TRUE); + evas_object_size_hint_weight_set(toolbar, EVAS_HINT_EXPAND, 0.0); + evas_object_size_hint_align_set(toolbar, EVAS_HINT_FILL, 0.5); + elm_box_pack_end(em->flow_browser, toolbar); + evas_object_show(toolbar); + + o = elm_icon_add(em->win); + elm_icon_file_set(o, PACKAGE_DATA_DIR "/images/go_back.png", NULL); + elm_toolbar_item_add(toolbar, o, "Go Back", _ephoto_go_back, NULL); + + o = elm_icon_add(em->win); + elm_icon_file_set(o, PACKAGE_DATA_DIR "/images/first.png", NULL); + elm_toolbar_item_add(toolbar, o, "First", _ephoto_go_first, NULL); + + o = elm_icon_add(em->win); + elm_icon_file_set(o, PACKAGE_DATA_DIR "/images/previous.png", NULL); + elm_toolbar_item_add(toolbar, o, "Previous", _ephoto_go_previous, NULL); + + o = elm_icon_add(em->win); + elm_icon_file_set(o, PACKAGE_DATA_DIR "/images/next.png", NULL); + elm_toolbar_item_add(toolbar, o, "Next", _ephoto_go_next, NULL); + + o = elm_icon_add(em->win); + elm_icon_file_set(o, PACKAGE_DATA_DIR "/images/last.png", NULL); + elm_toolbar_item_add(toolbar, o, "Last", _ephoto_go_last, NULL); + + o = elm_icon_add(em->win); + elm_icon_file_set(o, PACKAGE_DATA_DIR "/images/play_slideshow.png", NULL); + elm_toolbar_item_add(toolbar, o, "Slideshow", NULL, NULL); +} + +/*Show the flow browser*/ +void ephoto_show_flow_browser(const char *current_image) +{ + iter = eina_list_data_find_list(em->images, current_image); + if (iter == NULL) + iter = eina_list_nth_list(em->images, 0); + + elm_photocam_file_set(image, current_image); + + evas_object_show(image); + evas_object_show(toolbar); + evas_object_show(em->flow_browser); +} + +/*Hide the flow browser*/ +void ephoto_hide_flow_browser(void) +{ + evas_object_hide(image); + evas_object_hide(toolbar); + evas_object_hide(em->flow_browser); +} + +/*Delete the flow browser*/ +void ephoto_delete_flow_browser(void) +{ + Eina_List *items; + + items = elm_toolbar_item_get_all(toolbar); + while (items) + { + evas_object_del(eina_list_data_get(items)); + items = eina_list_next(items); + } + + evas_object_del(image); + evas_object_del(toolbar); + evas_object_del(em->flow_browser); +} + +/*Go back to the thumbnail viewer*/ +static void _ephoto_go_back(void *data, Evas_Object *obj, void *event_info) +{ + ephoto_hide_flow_browser(); + ephoto_show_thumb_browser(); + + elm_toolbar_item_unselect_all(toolbar); +} + +/*Go to the very first image in the list*/ +static void _ephoto_go_first(void *data, Evas_Object *obj, void *event_info) +{ + iter = eina_list_nth_list(em->images, 0); + + elm_photocam_file_set(image, eina_list_data_get(iter)); + + elm_toolbar_item_unselect_all(toolbar); +} + +/*Go to the very last image in the list*/ +static void _ephoto_go_last(void *data, Evas_Object *obj, void *event_info) +{ + iter = eina_list_last(em->images); + + elm_photocam_file_set(image, eina_list_data_get(iter)); + + elm_toolbar_item_unselect_all(toolbar); +} + +/*Go to the next image in the list*/ +static void _ephoto_go_next(void *data, Evas_Object *obj, void *event_info) +{ + iter = iter->next; + if (!iter) + iter = eina_list_nth_list(em->images, 0); + + elm_photocam_file_set(image, eina_list_data_get(iter)); + + elm_toolbar_item_unselect_all(toolbar); +} + +/*Go to the previous image in the list*/ +static void _ephoto_go_previous(void *data, Evas_Object *obj, void *event_info) +{ + iter = iter->prev; + if (!iter) + iter = eina_list_last(em->images); + + elm_photocam_file_set(image, eina_list_data_get(iter)); + + elm_toolbar_item_unselect_all(toolbar); +} + diff --git a/src/bin/ephoto_main.c b/src/bin/ephoto_main.c index cc948c3..c61bf7f 100644 --- a/src/bin/ephoto_main.c +++ b/src/bin/ephoto_main.c @@ -38,12 +38,14 @@ void ephoto_create_main_window(void) evas_object_show(em->box); ephoto_create_thumb_browser(); + ephoto_create_flow_browser(); } /*Delete the main ephoto window*/ static void _ephoto_delete_main_window(void *data, Evas_Object *obj, void *event_info) { ephoto_delete_thumb_browser(); + ephoto_delete_flow_browser(); evas_object_del(em->box); evas_object_del(em->bg); evas_object_del(em->win); diff --git a/src/bin/ephoto_thumb_browser.c b/src/bin/ephoto_thumb_browser.c index 22865d1..4844106 100644 --- a/src/bin/ephoto_thumb_browser.c +++ b/src/bin/ephoto_thumb_browser.c @@ -11,12 +11,14 @@ static char *_ephoto_get_label(const void *data, Evas_Object *obj, const char *p static Evas_Object *_ephoto_get_icon(const void *data, Evas_Object *obj, const char *part); static Eina_Bool _ephoto_get_state(const void *data, Evas_Object *obj, const char *part); static void _ephoto_grid_del(const void *data, Evas_Object *obj); +static void _ephoto_view_large(void *data, Evas_Object *obj, void *event_info); /*Inline Variables*/ static Elm_Gengrid_Item_Class eg; static Ethumb_Client *ec; static int cur_val; static Ecore_Thread *thread = NULL; +static Evas_Object *toolbar, *dir_label, *thumb_slider, *thbox; /*Create the thumbnail browser object*/ void @@ -31,29 +33,29 @@ ephoto_create_thumb_browser(void) getcwd(buf, PATH_MAX); - em->toolbar = elm_toolbar_add(em->win); - elm_toolbar_icon_size_set(em->toolbar, 32); - elm_toolbar_homogenous_set(em->toolbar, EINA_TRUE); - evas_object_size_hint_weight_set(em->toolbar, EVAS_HINT_EXPAND, 0.0); - evas_object_size_hint_align_set(em->toolbar, EVAS_HINT_FILL, 0.5); - elm_box_pack_end(em->box, em->toolbar); - evas_object_show(em->toolbar); + toolbar = elm_toolbar_add(em->win); + elm_toolbar_icon_size_set(toolbar, 24); + elm_toolbar_homogenous_set(toolbar, EINA_TRUE); + evas_object_size_hint_weight_set(toolbar, EVAS_HINT_EXPAND, 0.0); + evas_object_size_hint_align_set(toolbar, EVAS_HINT_FILL, 0.5); + elm_box_pack_end(em->box, toolbar); + evas_object_show(toolbar); o = elm_icon_add(em->win); elm_icon_file_set(o, PACKAGE_DATA_DIR "/images/change_directory.png", NULL); - elm_toolbar_item_add(em->toolbar, o, "Change Directory", NULL, NULL); + elm_toolbar_item_add(toolbar, o, "Change Directory", NULL, NULL); o = elm_icon_add(em->win); elm_icon_file_set(o, PACKAGE_DATA_DIR "/images/filter.png", NULL); - elm_toolbar_item_add(em->toolbar, o, "Filter", NULL, NULL); + elm_toolbar_item_add(toolbar, o, "Filter", NULL, NULL); o = elm_icon_add(em->win); elm_icon_file_set(o, PACKAGE_DATA_DIR "/images/view_presentation.png", NULL); - elm_toolbar_item_add(em->toolbar, o, "View Presentation", NULL, NULL); + elm_toolbar_item_add(toolbar, o, "View Large", _ephoto_view_large, NULL); o = elm_icon_add(em->win); elm_icon_file_set(o, PACKAGE_DATA_DIR "/images/play_slideshow.png", NULL); - elm_toolbar_item_add(em->toolbar, o, "Play Slideshow", NULL, NULL); + elm_toolbar_item_add(toolbar, o, "Play Slideshow", NULL, NULL); em->thumb_browser = elm_gengrid_add(em->win); elm_gengrid_align_set(em->thumb_browser, 0.5, 0.6); @@ -66,29 +68,29 @@ ephoto_create_thumb_browser(void) elm_box_pack_end(em->box, em->thumb_browser); evas_object_show(em->thumb_browser); - em->thbox = elm_box_add(em->win); - elm_win_resize_object_add(em->win, em->thbox); - elm_box_horizontal_set(em->thbox, EINA_TRUE); - evas_object_size_hint_weight_set(em->thbox, EVAS_HINT_EXPAND, EVAS_HINT_FILL); - evas_object_size_hint_fill_set(em->thbox, EVAS_HINT_FILL, EVAS_HINT_FILL); - elm_box_pack_end(em->box, em->thbox); - evas_object_show(em->thbox); - - em->dir_label = elm_label_add(em->win); - elm_label_label_set(em->dir_label, buf); - evas_object_size_hint_weight_set(em->dir_label, EVAS_HINT_EXPAND, 0.0); - evas_object_size_hint_align_set(em->dir_label, 0.01, 0.5); - elm_box_pack_end(em->thbox, em->dir_label); - evas_object_show(em->dir_label); - - em->thumb_slider = elm_slider_add(em->win); - elm_slider_label_set(em->thumb_slider, "Thumb Size:"); - elm_slider_span_size_set(em->thumb_slider, 100); - elm_slider_min_max_set(em->thumb_slider, 0, 100); - elm_slider_value_set(em->thumb_slider, 50); - elm_box_pack_end(em->thbox, em->thumb_slider); - evas_object_show(em->thumb_slider); - evas_object_smart_callback_add(em->thumb_slider, "changed", + thbox = elm_box_add(em->win); + elm_win_resize_object_add(em->win, thbox); + elm_box_horizontal_set(thbox, EINA_TRUE); + evas_object_size_hint_weight_set(thbox, EVAS_HINT_EXPAND, EVAS_HINT_FILL); + evas_object_size_hint_fill_set(thbox, EVAS_HINT_FILL, EVAS_HINT_FILL); + elm_box_pack_end(em->box, thbox); + evas_object_show(thbox); + + dir_label = elm_label_add(em->win); + elm_label_label_set(dir_label, buf); + evas_object_size_hint_weight_set(dir_label, EVAS_HINT_EXPAND, 0.0); + evas_object_size_hint_align_set(dir_label, 0.01, 0.5); + elm_box_pack_end(thbox, dir_label); + evas_object_show(dir_label); + + thumb_slider = elm_slider_add(em->win); + elm_slider_label_set(thumb_slider, "Thumb Size:"); + elm_slider_span_size_set(thumb_slider, 100); + elm_slider_min_max_set(thumb_slider, 0, 100); + elm_slider_value_set(thumb_slider, 50); + elm_box_pack_end(thbox, thumb_slider); + evas_object_show(thumb_slider); + evas_object_smart_callback_add(thumb_slider, "changed", _ephoto_slider_changed, NULL); cur_val = 50; @@ -103,22 +105,22 @@ ephoto_create_thumb_browser(void) void ephoto_show_thumb_browser(void) { - evas_object_show(em->toolbar); + evas_object_show(toolbar); evas_object_show(em->thumb_browser); - evas_object_show(em->dir_label); - evas_object_show(em->thumb_slider); - evas_object_show(em->thbox); + evas_object_show(dir_label); + evas_object_show(thumb_slider); + evas_object_show(thbox); } /*Hide the thumbnail browser*/ void ephoto_hide_thumb_browser(void) { - evas_object_hide(em->toolbar); + evas_object_hide(toolbar); evas_object_hide(em->thumb_browser); - evas_object_hide(em->dir_label); - evas_object_hide(em->thumb_slider); - evas_object_hide(em->thbox); + evas_object_hide(dir_label); + evas_object_hide(thumb_slider); + evas_object_hide(thbox); } /*Destroy the thumbnail browser*/ @@ -127,18 +129,18 @@ ephoto_delete_thumb_browser(void) { Eina_List *items; - items = elm_toolbar_item_get_all(em->toolbar); + items = elm_toolbar_item_get_all(toolbar); while (items) { evas_object_del(eina_list_data_get(items)); items = eina_list_next(items); } - evas_object_del(em->toolbar); + evas_object_del(toolbar); evas_object_del(em->thumb_browser); - evas_object_del(em->dir_label); - evas_object_del(em->thumb_slider); - evas_object_del(em->thbox); + evas_object_del(dir_label); + evas_object_del(thumb_slider); + evas_object_del(thbox); ethumb_client_disconnect(ec); } @@ -170,6 +172,7 @@ _ephoto_access_disk(Ecore_Thread *thread, void *data) efreet_mime_shutdown(); } +/*Done populating images*/ static void _ephoto_populate_end(void *data) { @@ -229,7 +232,7 @@ _ephoto_slider_changed(void *data, Evas_Object *obj, void *event) { int w, h, val; - val = elm_slider_value_get(em->thumb_slider); + val = elm_slider_value_get(thumb_slider); elm_gengrid_item_size_get(em->thumb_browser, &w, &h); if (val < cur_val) { @@ -333,3 +336,12 @@ _ephoto_grid_del(const void *data, Evas_Object *obj) return; } +/*Show the flow browser*/ +static void +_ephoto_view_large(void *data, Evas_Object *obj, void *event_info) +{ + ephoto_hide_thumb_browser(); + ephoto_show_flow_browser(eina_list_data_get(em->images)); + + elm_toolbar_item_unselect_all(toolbar); +}