From 247c1e67aeefe9c393d1794bb069c6757069420b Mon Sep 17 00:00:00 2001 From: Hermet Park Date: Wed, 29 Jun 2016 23:29:37 +0900 Subject: [PATCH] file_tab: use customed list for file tab. --- data/themes/default/images/Makefile.am | 5 +- .../default/images/bevel_curved_vert_out.png | Bin 0 -> 148 bytes .../default/images/shadow_rounded_vert.png | Bin 0 -> 693 bytes data/themes/default/images/vgrad_med_dark.png | Bin 0 -> 1908 bytes data/themes/default/layout_common.edc | 13 +- data/themes/default/theme_ext.edc | 397 ++++++++++++++++++ src/bin/file_tab.c | 94 +++-- src/bin/main.c | 1 + src/include/file_tab.h | 3 +- src/lib/util.c | 11 + 10 files changed, 482 insertions(+), 42 deletions(-) create mode 100644 data/themes/default/images/bevel_curved_vert_out.png create mode 100644 data/themes/default/images/shadow_rounded_vert.png create mode 100644 data/themes/default/images/vgrad_med_dark.png create mode 100644 src/lib/util.c diff --git a/data/themes/default/images/Makefile.am b/data/themes/default/images/Makefile.am index 717c0a9..d697610 100644 --- a/data/themes/default/images/Makefile.am +++ b/data/themes/default/images/Makefile.am @@ -96,4 +96,7 @@ EXTRA_DIST = \ template.png \ left.png \ right.png \ - filetab.png + filetab.png \ + bevel_curved_vert_out.png \ + vgrad_med_dark.png \ + shadow_rounded_vert.png diff --git a/data/themes/default/images/bevel_curved_vert_out.png b/data/themes/default/images/bevel_curved_vert_out.png new file mode 100644 index 0000000000000000000000000000000000000000..a8b44dc43127e8995d0f4ae265677356db66172f GIT binary patch literal 148 zcmeAS@N?(olHy`uVBq!ia0vp^tU&C;!3HFkTGToMsc26Z#}JFtZzp>4H8^mv%uf6F zKT-B$U+$qDcOFEnR8nNPUg*}MYN2t)ks++@$HAI;)=%GFovZUc#d7*G&5kx+X(mU8 yi4PW@sh;t9<(Z%7?p!|;^shDYl=)X)d&a%X<>tIR8RY}ChQZU-&t;ucLK6T!Cpo+T literal 0 HcmV?d00001 diff --git a/data/themes/default/images/shadow_rounded_vert.png b/data/themes/default/images/shadow_rounded_vert.png new file mode 100644 index 0000000000000000000000000000000000000000..10a751ab334ae8110ab400f254a62bda9b5acd8e GIT binary patch literal 693 zcmV;m0!safP)J5(&r<9Z)qmn4k|Dq$AtnM67YMP zLqSRc1|x(R!PG*2NWh1NLJ<=x`8lK~G;$a+9JNBef+eypt_+zJWF;x}Tpm@}H6;k{ zLi6$}9EJ z)V)l_(^6Q)1p%ZT)Khr(2#x$`)S(wLR)mb6DWjvRkPJ*ASA}a-Qm<@G>yQjWCihO+ zbGTk18Rn2&b2xI86OVN6>meygNgJ~1^7T1d?;e-uw%#^Zn|;@_Iel&WDB>Ej%X(X!NdU=CXMmx?OKgLUvKO6YhjtAmkMs zJWU~IGb@#Gsd8$_yyiP8R5i(D6*{lxPP$9eJkPQsxsV?)HE^$@J z282ANuuV-F4V$O-vWqF(&Y{Z|z_|R=Vl?D9t!%d6%Pj2^9V6zfhiu@oU#GBP+4ygx z=B>Bw6?@O&SJ?Gj&)9cgd|b|lpXcJEAr^5pg|U-MmX`loFGm22VsGIBEB5k&%O5-! z1z{B%8gCs@C=$9TJZE`njT}2y;ZiFHp}fQ#x|NN&%Q1U2rokdp}4n9b-376)_sZnnD#}zBruHEafoA bynE??b%)A34jx@r00000NkvXXu0mjf{f{=v literal 0 HcmV?d00001 diff --git a/data/themes/default/images/vgrad_med_dark.png b/data/themes/default/images/vgrad_med_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..85430449e9567d900b0b371c0175c7f0ea4ede1f GIT binary patch literal 1908 zcmV-)2aEWLP)0AC(ESfbI3U4K@5=i4IrAjD)6-p5tRevr&F|m87bVh9)es~g0rOn|1QG!Jza$XMRpi(;xIjV@ z$h-)uuK`@+335mi8dPibq`fKt>Pzgo9L0W0nC}i#YY=#8%-^1nDmGD!j6?uHF%UqH zm|+Hi$Z_jObzI>cuOU>&>08vxzF7DOrNQ>u`i zywNKKdR55#KdTa-0Vi3rrdXjeAZA|r`K+c~duCbYJUn1{jyxba>$T2(RR=2ko_1wr z)+?kgz{pbbawLKX=L*pkS&^f+5KkZ&R1H;0N)e2lDU(Z8=AF2iCYb=8OpHXA+HL|O zl>uyT&Zkc}~**O`oFS|NDPr&6?WjRwGkM(&L$XvxAWE~OEsb|=3X=h?Uk zGzv{rE7gmb9e^RZAF87#3aRA6^kg|fF$1Bh$}DC+RS>Rt?W0oeUK|edkzgXwA=*_u zHKZ9Jvnz*dk$}1=Xe9@Qz@$F$u9p0TaP4(!#s|7(m(`*$97M?!P$h}Uwkt9Z$2`?* z82rv$jhL!i^#MxpNUVk=c=5pMu>N>&0GfkXCy!`d#(9sNL9jDAp8f~g-*1i;LKp@D`jPhU(> zdZQJ9i`SwDWW|xphGth#KDxEX+I!@!B}*vf#smj1N22AK$2-e8K-LJ#&TFe=HP}_c z<+%bvl1^cL)oogbspiYV;U9GhZ$pnjYQSL+WVq^Ne<-SYH#pJb4FaM8PbR4NE4v zdRu)$6oVsYhP7+srXMW8%o6BAG!U-(b3KiuN*aq(XokJn+>wwi-d8S-aLn8*4rD{> zGx)s`3##^KHF|o>N(;EIuLhr?Hk?aZz2fd9caBfNb@x0f zVzJ~BiRgq&=%DGl>V+df4|}(S>fN5?-;G`-XDmBHRJBUkewHaQUdS;VqCh3EEQaWs znGQxZ0>@(6`lp#|lV%+eR*bUM(^$)8`z#NnMeWHrSMXusjqMPg2(?mbqewi~LL+2s zX|%X(lvy=+?q3<3u&AWmz}NuAm$gly>#SH>hguF=sSqK{|8cku-WG*-YfyV%3Cl9B zb^{5vbJDg5mm6Yr$|dl+I@u`a>C{e(9=+;rw?Wa(@H$r9zVOuw&HcK1)~>(-i5Kl{ zT_B4uhb(g2j&kF|@$cRQIm1VE@TIa6ez?23QG3&j^PF5S@I$vcTkyJW^)S%U$~5&q zF~-&|geVsAjO|8t)|c)ZMI*i>uX6eF|CU1c{k_ApN#pl z&u5RXYdqb_a_D|<*7q!*FPh7L`HjzCU%q_V{b_k()s}CoSGp>9mrdUpg?EA!rzU-q z*0aJ}H;=%TPAh|J1$BeB?WxQAG3kqAGanJYWcG)uk2kn!OAT$mVSw-~XW8XxDh&?V zzhJlF%YkVAD!-+0o@e;gIQ1(JNXwXS_LVDMLHC{W;$U=rREZ|B+K+d)Lo<~2+l^S3 zmNvA1IUH&;IOy=BgC-@vRhz4f-N#^664_=L&DnH#aj-E5ib z*DR30Co6ovjL_SaoPMfb(zVE0EjPN~gG~xMb#3PNs801(1Eyck(^hGjs8Qrty`-E^ z1f!X^Ez0oQ3$-lUP01|Y%(~t|EmzSUSwG|V7t;=Lx7_d6RkV*Je*OCO2dr?ppe@=_ u1o~sr{FglV>$m>-B0l5VU!VQsBYy*@XKECq%E@a00000list); + //just in case + if (!it) it = elm_list_last_item_get(fd->list); + if (!it) return; + it = elm_list_item_prev(it); + if (!it) return; + elm_list_item_selected_set(it, EINA_TRUE); +} + +static void +right_btn_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED, + void *event_info EINA_UNUSED) +{ + file_data *fd = data; + + Elm_Object_Item *it = elm_list_selected_item_get(fd->list); + //just in case + if (!it) it = elm_list_first_item_get(fd->list); + if (!it) return; + it = elm_list_item_next(it); + if (!it) return; + elm_list_item_selected_set(it, EINA_TRUE); +} /*****************************************************************************/ /* Externally accessible calls */ /*****************************************************************************/ +Eina_Bool file_tab_it_selected_set(Enventor_Item *enventor_it) +{ + file_data *fd = g_fd; + if (!fd) return EINA_FALSE; + + Eina_List *list = (Eina_List*) elm_list_items_get(fd->list); + Eina_List *l; + Elm_Object_Item *it; + + EINA_LIST_FOREACH(list, l, it) + { + file_tab_it *fti = elm_object_item_data_get(it); + if (fti->it != enventor_it) continue; + elm_list_item_selected_set(it, EINA_TRUE); + } +} Eina_Bool file_tab_it_add(Enventor_Item *enventor_it) { @@ -58,14 +102,10 @@ Eina_Bool file_tab_it_add(Enventor_Item *enventor_it) goto err; } - Evas_Object *btn = elm_button_add(fd->in_box); - elm_object_text_set(btn, filename); - elm_object_style_set(btn, "enventor"); - evas_object_size_hint_weight_set(btn, 0, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(btn, 0, 0.5); - evas_object_show(btn); + fti->it = enventor_it; - elm_box_pack_end(fd->in_box, btn); + elm_list_item_append(fd->list, filename, NULL, NULL, NULL, fti); + elm_list_go(fd->list); free(filename); @@ -89,14 +129,16 @@ file_tab_init(Evas_Object *parent) //Outer Box Evas_Object *out_box = elm_box_add(parent); - elm_box_padding_set(out_box, ELM_SCALE_SIZE(5), 0); + elm_box_padding_set(out_box, ELM_SCALE_SIZE(3), 0); elm_box_horizontal_set(out_box, EINA_TRUE); //Left Button Evas_Object *left_btn = elm_button_add(out_box); elm_object_style_set(left_btn, ENVENTOR_NAME); + elm_object_focus_allow_set(left_btn, EINA_FALSE); evas_object_size_hint_weight_set(left_btn, 0, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(left_btn, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_smart_callback_add(left_btn, "clicked", left_btn_clicked_cb, fd); evas_object_show(left_btn); elm_box_pack_end(out_box, left_btn); @@ -107,9 +149,12 @@ file_tab_init(Evas_Object *parent) //Right Button Evas_Object *right_btn = elm_button_add(out_box); + elm_object_style_set(right_btn, ENVENTOR_NAME); + elm_object_focus_allow_set(left_btn, EINA_FALSE); evas_object_size_hint_weight_set(right_btn, 0, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(right_btn, EVAS_HINT_FILL, EVAS_HINT_FILL); - elm_object_style_set(right_btn, ENVENTOR_NAME); + evas_object_smart_callback_add(right_btn, "clicked", + right_btn_clicked_cb, fd); evas_object_show(right_btn); elm_box_pack_end(out_box, right_btn); @@ -118,27 +163,20 @@ file_tab_init(Evas_Object *parent) elm_image_file_set(img2, EDJE_PATH, "right_arrow"); elm_object_content_set(right_btn, img2); - //Scroller - Evas_Object *scroller = elm_scroller_add(out_box); - elm_object_style_set(scroller, ENVENTOR_NAME); - elm_scroller_policy_set(scroller, ELM_SCROLLER_POLICY_OFF, + //List + Evas_Object *list = elm_list_add(out_box); + elm_object_style_set(list, ENVENTOR_NAME); + elm_list_horizontal_set(list, EINA_TRUE); + elm_scroller_policy_set(list, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF); - evas_object_size_hint_weight_set(scroller, EVAS_HINT_EXPAND, + evas_object_size_hint_weight_set(list, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(scroller, EVAS_HINT_FILL, EVAS_HINT_FILL); - evas_object_show(scroller); - elm_box_pack_end(out_box, scroller); - - //Inner Box - Evas_Object *in_box = elm_box_add(scroller); - elm_box_horizontal_set(in_box, EINA_TRUE); - evas_object_size_hint_weight_set(in_box, 0, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(in_box, EVAS_HINT_FILL, EVAS_HINT_FILL); - elm_object_content_set(scroller, in_box); + evas_object_size_hint_align_set(list, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_show(list); + elm_box_pack_end(out_box, list); fd->out_box = out_box; - fd->in_box = in_box; - fd->scroller = scroller; + fd->list = list; return out_box; } diff --git a/src/bin/main.c b/src/bin/main.c index 60bafed..da97477 100644 --- a/src/bin/main.c +++ b/src/bin/main.c @@ -595,6 +595,7 @@ enventor_setup(app_data *ad) ad->main_it = enventor_object_main_file_set(enventor, config_input_path_get()); file_tab_it_add(ad->main_it); + file_tab_it_selected_set(ad->main_it); base_enventor_set(enventor); base_text_editor_set(ad->main_it); diff --git a/src/include/file_tab.h b/src/include/file_tab.h index 768975d..d76f600 100644 --- a/src/include/file_tab.h +++ b/src/include/file_tab.h @@ -1,3 +1,4 @@ Evas_Object *file_tab_init(Evas_Object *parent); void file_tab_term(void); - +Eina_Bool file_tab_it_add(Enventor_Item *it); +Eina_Bool file_tab_it_selected_set(Enventor_Item *enventor_it); diff --git a/src/lib/util.c b/src/lib/util.c new file mode 100644 index 0000000..5a0919d --- /dev/null +++ b/src/lib/util.c @@ -0,0 +1,11 @@ +#ifdef HAVE_CONFIG_H + #include "config.h" +#endif + +#include +#include "enventor_private.h" + +void mem_fail_msg(void) +{ + EINA_LOG_ERR("Failed to allocate Memory!"); +}