From 5895fe5a549ecf00485f5cc61b2a0d13f58da98b Mon Sep 17 00:00:00 2001 From: "hhh.kwon" Date: Mon, 10 Dec 2012 09:38:56 +0900 Subject: [PATCH] sync magnolia to RSA --- CMakeLists.txt | 1 - data/CMakeLists.txt | 8 +- ...et_list_progress_bg.png => 00_divider_line.png} | Bin 2800 -> 2812 bytes data/images/private/00_popup_bg.png | Bin 3496 -> 1070 bytes data/images/private/00_popup_bottom_bg.png | Bin 2858 -> 0 bytes data/images/private/00_popup_title_bg.png | Bin 3114 -> 0 bytes data/images/private/00_progress_bar.png | Bin 0 -> 1628 bytes data/images/private/00_progress_bg.png | Bin 0 -> 2419 bytes data/images/private/00_slider_handle.png | Bin 3056 -> 4576 bytes data/images/private/00_slider_handle_dim.png | Bin 3047 -> 4011 bytes data/images/private/00_slider_handle_press.png | Bin 0 -> 4515 bytes data/images/private/00_volume_icon.png | Bin 3587 -> 3446 bytes data/images/private/00_volume_icon_Call.png | Bin 3548 -> 3693 bytes data/images/private/00_volume_icon_Mute.png | Bin 3492 -> 3990 bytes data/images/private/00_volume_icon_Vibrat.png | Bin 3840 -> 4680 bytes data/images/private/00_volume_icon_headphone.png | Bin 3489 -> 3716 bytes data/images/private/00_volume_icon_media.png | Bin 3388 -> 3564 bytes data/images/private/00_winset_divider_line.png | Bin 2802 -> 0 bytes .../images/private/00_winset_list_progress_bar.png | Bin 2800 -> 0 bytes .../private/00_winset_list_progress_bar_h.png | Bin 2800 -> 0 bytes .../private/00_winset_list_progress_bg_h.png | Bin 2800 -> 0 bytes data/images/public/00_volume_icon_settings.png | Bin 3796 -> 4131 bytes .../public/00_volume_icon_settings_pressed.png | Bin 3796 -> 4229 bytes data/volume_app.edc | 128 ++++---- data/volume_popup.edc | 123 ------- src/_button.c | 128 -------- src/_button.h | 18 -- src/_logic.c | 355 ++++++++++++++------- src/_logic.h | 4 +- src/_sound.c | 44 +-- src/_util_efl.c | 17 + src/_util_efl.h | 1 + src/volume.c | 27 +- src/volume.h | 27 +- 34 files changed, 369 insertions(+), 512 deletions(-) rename data/images/private/{00_winset_list_progress_bg.png => 00_divider_line.png} (95%) delete mode 100755 data/images/private/00_popup_bottom_bg.png delete mode 100755 data/images/private/00_popup_title_bg.png create mode 100755 data/images/private/00_progress_bar.png create mode 100755 data/images/private/00_progress_bg.png create mode 100755 data/images/private/00_slider_handle_press.png delete mode 100755 data/images/private/00_winset_divider_line.png delete mode 100755 data/images/private/00_winset_list_progress_bar.png delete mode 100755 data/images/private/00_winset_list_progress_bar_h.png delete mode 100755 data/images/private/00_winset_list_progress_bg_h.png delete mode 100755 data/volume_popup.edc delete mode 100755 src/_button.c delete mode 100755 src/_button.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 0fcf918..b450b2b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,7 +6,6 @@ SET(SRCS src/_util_efl.c src/_logic.c src/_sound.c - src/_button.c ) SET(VENDOR "tizen") diff --git a/data/CMakeLists.txt b/data/CMakeLists.txt index 53d40e6..33e0974 100755 --- a/data/CMakeLists.txt +++ b/data/CMakeLists.txt @@ -1,20 +1,14 @@ CMAKE_MINIMUM_REQUIRED(VERSION 2.6) # install edj -ADD_CUSTOM_COMMAND(OUTPUT volume_popup.edj - COMMAND edje_cc -id ${CMAKE_CURRENT_SOURCE_DIR}/images/private - ${CMAKE_CURRENT_SOURCE_DIR}/volume_popup.edc ${CMAKE_BINARY_DIR}/volume_popup.edj - DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/volume_popup.edc -) ADD_CUSTOM_COMMAND(OUTPUT volume_app.edj COMMAND edje_cc -id ${CMAKE_CURRENT_SOURCE_DIR}/images/private ${CMAKE_CURRENT_SOURCE_DIR}/volume_app.edc ${CMAKE_BINARY_DIR}/volume_app.edj DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/volume_app.edc ) -ADD_CUSTOM_TARGET(edj_build DEPENDS volume_popup.edj volume_app.edj) +ADD_CUSTOM_TARGET(edj_build DEPENDS volume_app.edj) ADD_DEPENDENCIES(${PROJECT_NAME} edj_build) -INSTALL(FILES ${CMAKE_BINARY_DIR}/volume_popup.edj DESTINATION ${EDJDIR}) INSTALL(FILES ${CMAKE_BINARY_DIR}/volume_app.edj DESTINATION ${EDJDIR}) # install images diff --git a/data/images/private/00_winset_list_progress_bg.png b/data/images/private/00_divider_line.png similarity index 95% rename from data/images/private/00_winset_list_progress_bg.png rename to data/images/private/00_divider_line.png index 3cece50c4eb46ead77f97403e010cb3058764243..fa2f19e06bb9ea67b499cf42f5f28a955aa6d04f 100755 GIT binary patch delta 103 zcmew$`bSi;Gr-TCmrII^fq{Y7)59eQNV5R35Cr!t3JY%kdl;(NOKxvXZgkqn|km_(0RilBDB_CscH-PWB|7hREcO)X4kXP)k)GjE!CwyUR% zgrq~4JQU=i$cQY85F!t11rZ%2IwMw4Uz7oylfNMFyj|7$$F6giTR3k-Vj-0}z7@?AOgOy*fKb16>Q#9l<1*v|=!; zH;&k_ZKNfwjtr=xMn`HvOTvwtssVM z2!agfQ@IciLIH*kaAH6_0R)ccSYBYcY9G%@!D@-)!RDYzG+XPFQgZ!fEV2vJS&S`- zWplY4lk+pk?q_*X6j@GS1;IxUK4;j(O5SHW-hzS*9o5z?tRoY+ib@6z;V?~{ZlqvX zTe7CJSte32Hm_JL&v0%^1zp&gup+kSTxcGANZWK+;VL$*pTuFva+vZR;| z6^!gOLW6}Wwq_AVP8L}p))r)V(4m_e$~o)!WKv3)4pvMRCgd%f?<)!GPLyzP^-6*0oGHN z^x|H)qI#QLt+*GyD3>K>SodQ8x#+?X=^l5v)wX1_)%egP-ENb%{`levAW!0ULXM{M zE8jmf?R^RMl$?A&wbrwCvpe|b@|CK<>=IYI@U3gt?y2_n2lLOOFt2}e8~c<}n&|0=iw%p-)9A*%tDn7|x8ZA}JB&YPzwG-tSyq+%y_#Nb%A6LD50-d5 zo~QFGuV#Kk_W!zg>+VDk_qa=`TCVI>OGEbL+(g9t`rLtDYT^2^Qg-P~kNbiX@fP_} HUGJs8XAELK literal 3496 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 IM6N<$f=t~{Gynhq diff --git a/data/images/private/00_popup_title_bg.png b/data/images/private/00_popup_title_bg.png deleted file mode 100755 index ac60214329c844b98b00ca48ca17c749096f6b5e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3114 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 literal 0 HcmV?d00001 diff --git a/data/images/private/00_progress_bg.png b/data/images/private/00_progress_bg.png new file mode 100755 index 0000000000000000000000000000000000000000..1f4a0f4793559d9e11baff0e393777c82baef635 GIT binary patch literal 2419 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 Am;e9( literal 3056 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 literal 0 HcmV?d00001 diff --git a/data/images/private/00_volume_icon.png b/data/images/private/00_volume_icon.png index d9bdd9b903eff396b012d50cb7cebfbd65bb82c6..ee6b1333785b995a68ccc00c8eb0b150833ff4eb 100755 GIT binary patch delta 708 zcmV;#0z3VK9QGQpzY2c>p-DtRRCwC#o6U8bKoH0O_Dcbz1G$2r3QQ`9TtU!9*N6&Y zRUqZ63sME51LF!z2gV)HfpYNZg=}U6m_@rRGZzFx3;Wyo-lv=M`HU&cEha7kKmZ5; z0U!VbfB+Bx0zd#vR6hOh%hhUijdutEq;xC*%uPRFzu!Bn0c(E%FEn}7j&5kcfD!;W z0f?sP10n#gh9swL)Ulo7w ziwUvcn*iLlc$jV3X>2@V?yH#lW@E1g6U{2Bt6gb)LF7X@oU~lsBlFvDJ^-l5#<}oV zmt5n>y=aJVzTlp@mNPkt7XT_|ax+ba=yW;UH~no|-8X-q0lb+WaBKkXTV|u)0towh z{V@Xwnas3o0jcl>zz^oyb34S-8!r%Ki$>wESA09V@|l=L{zXh1f001M5;j!fSm zU?yMn0Z=(=`?(SU0?mELroo#UB6D=xa2TQ^#4XB_DUG=Zk@W>o;(arti^OEJfuRW> zm6|?L!e4&`zWKVbl?NQ~-mWSPjyIQv$C!ck#JfI@KurWNQdj8;gIsAx! zH#I&gJN#*d7X-L;9YEbdW(LMe0DPwLJ`{CqrNTTHbzR!dHf`4emz*KDm3rUEe}*P5 q0zd!=00AHX1b_e#00LmD@_PWu0EMax delta 850 zcmV-Y1Fih_8iO3LzY2c?E=fc|RCwC#o6C{fKoEw1wj6*mur>m-5m-dvB?8c`Z-xj~ ziU9UDH*f@KBUm{CD}z-AmLtFinkreI7UD6I22EcmC>Ye={Qa0ljQ0CIhHMWQxH$k0 zfCJzFH~u$?_E3Jg#tX@_2*kIN<;y#>jOvuER|AO-xM$g@XLVn9)KM?e@v+FL^SRbfQX&< z4T1G^N@F;k0`NH2UkrXnQ3GbzC4grDA1p~@#<9MY`U@h8x&W|Z`d%CHrIZS5AiNNf z-xdI$V|`($bnbr`uFjz)04eit+5j+T=S|f1s8l`|x`e8fDgaD{oDguSJlzLKZ#-c$ z24Kp*Ym(~@z*7Z6PDC-QM7Ks-eQ{Kt3KP-Bup><@)|>@?3;85gN=2GY{1C$AQ7M(z zg+SNNOLlI8i)$*AmGgilfJB0zsR~;m7tCxPh=c%gUGjewRG?GMxY`}s1fV!a+5p~a zhA&nEIPR)W1z$B`kk+)w)&c;4*HgP%G984^wgb>PmW&-&odBH{i-bkrao~bzlHM z%w^3h0hv~=!-G8ke`UXnc7i#8iJ>sc0X*{h6C8iW;e{qi`od?|ZMMP@Uu1scb&twS ztIiYA9P&haDeb<=Dv2KAZ-(91>Z} zr8BIPe%p;u#v!pb1h~*R->8zc-3cxs|AKpw@f={nAQAx6YIj&?UEC*_aFX2Js%PNC zP@`UrdiLJu zoSAm-|2e;xndHCD{_pdh_5c6ZTK_eDqobp`S^c_PJperbJpg|_09~ztvW7!LLwV0Q z1uHNO8}T4^`}x{vG{z4=6HUhTxHW!Y_(I6eNdWwi{)r2?QI=V7pg&m4qH(U$^% zd05=W9GBy$6aar5g1K$XaR4r>YSh`vOC8#QE3b&-Zz3Q21+XF0lC} z0-tqt`0}j+_%>WRPa{=!_f7%)hmYfDGtG@NKS==a4nBX)8Q(h+repzZ4G4L20%uW#iJbo|2SkUGidsP|04_FyXB2UL- zz3hs;tY+d7YzWXtR}lbwhD&6Xp*+nGPgq{!nUirhuE7%AfR}K;tQn(H0N~v?`~NMl zn;xgbUDzYX?rK??ZAZ<f1$eT+JK*2|xDtD|`jP`CR!>B*w5G(%?T`Dy<+sHq*-AFK zMs^K<8-A*S2aIVguE2LC?PuZSHdE{u(*u{3u{ovAoKD|l+;Jw(ahIheS zXGVV#Rw)2ual%=#UjLflxz4X508u|!g=;5xNeovNz?d4iFrvEg)+Qx8Rd;ve(xwQV zm*bOhdgl57`$Zi9z@KqSoD<99^ERKe9aqU3vPv(lDz&bSM8>yB)>ijwBvpUseCD4B zdLEPYAT{uFl_J4*)9PnpZf e=mF?z{XYPF*`#>gjiGY@0000@GUr*!s$K_g#P` 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 X@&Ih!OAl%d00000NkvXXu0mjf3^n}r diff --git a/data/images/private/00_volume_icon_headphone.png b/data/images/private/00_volume_icon_headphone.png index 0819ca0407d7444efc813ef45b6cb6eafe2df3ee..76e8098750f954184415fbbd57c2756058e01bbc 100755 GIT binary patch delta 980 zcmV;_11tQY8-yLOzY2c?uSrBfRCwC#+ewHVRUF6h&t$=5Fk)OLPH+SrWfEM1BJM;K z1Qj8gV8p0{5Ev2Tf){Z=sN^7e@S;vm21Udrii#SEph1lb5|;!;6NsoIB5ELRW0LVu z|HCkJ)pU2NYNosE2Myizs;c{a>;K;Sz5jdNH8wV;lQlz!s{(&e0jK~}04e|#fC@kb zpkp0OY7saT89*l8p1_ zqd(p+$6o>B9jwEyQX?P-_2EHWh@+dhz8h!9>nc2pwfK9w_W@n;1V6%Hla-&S<8cq( z#-iyApc{AMdGvo40QOwGkBg>b6F3BqV)Z2F?ZKDW5$$?3D%XR>(GMJxas6S@9InNi z(*?jx+&f9-$M9T4$Ho9rOK0G6Tp6KXONV29K-f4Pn!q5|WR!2i3S5VmGAa)r<1So* zCo|4F5>HJsvXlZ~2_D9rl=973i4EA>z&Y7!%Jj6lu`g38&la@T3_(&azjREcz#&`22#fT-|=n10KUhsDP;>VuM7Y^ z;Q=PY`GJHv282}chbbvqO-x2_%4X<s>H>Ra&lcFxgD{Uw|I6CKf zMF8l=L*eZ&Hnr-?nAzSC6ROpD0vN!iNOtrqK97HRAetLlqsPOL%|B28i}5nfDk;44 z(rm24(>S7806k$m7HM5w8hM3T%>cL`Cu@Bzi@ZWZ0M5kK+CwvOb2!+#0j#R018E`k zM{{T>0@_J4B#SI{0~pYLI;{}^hqfVr-aPXGt*F_Z4q&X)0W{JF#sUt`r=paM_ delta 751 zcmV%t=H+RCwC#o6&LNFc5}6G@2=KLZ@1eKvJ`6P52ji=NOo2bZSUl+B0VI2dKX@GTS;ib)GJwpp;bkCRfTd4w@C9JxdtnZsQy+u* z2!hiiuKHG9W`?Na4NG7kS>tQ~>KMNQ<`UhD3ZpXM&T&jH5Y&lo@3PRfEOH64Zt?Rtijq{#|2w#%9;X@lx$ec ztMt@x5wvg!s6U$mkXs_{lY@);(B#B*9u45m;+`|w(aL`zAm&YZK$YgStN95R>nH%W zz%pwYz~aR9)&`K)*x0n8ttH+h4z)@x0Ewm6KZk7ddIj+Hz;~Mv03=+V{C22q5LNL7UY9pqmWWYIxbLu&nA|s0!mVx~EZDA48QGpVD1Dm=Kh) z)$OwJ`w)L}6F^D>PhBop|9gnavC+{r>GY1`^9gQfy4L_gG+w92Q~}=!SGfu#@>g#1 zl(4uWq10(jfc0IUtpXxF$o_iZpQ&Z}!d1|f%AOU|!01|)%AOT1K>Z=9+ zcS3)Ee_3-|jBc#Ns`&gOp28+2_yf1gjANYwa0zeYT3zb_=c|9{d?x|isZ$*;B z&hD0#!moeCvb-6`+tp$m!&^CQG-d)o4-VtC$2iyPnbe^obTquA(e2&c>Sds4+ zU}vPrJYWTmcEEWN<<}Ho=W3Av_Qory6S^0#v^*NacSQo&Re)p7_6m#W6Aa<|A^|*6 z0D$vNo_7;xb6n>-j)a}U0OZ}izx*ad$xd(38jfg8lvd;31roz|o9zMkzP1^lZ_QQp53kaaoAWGc}jABm!cr$ik zD<3nFeVvLRbSk!~l~*JEZLa1@01|)%AOT1K5`Y@({s036mWd%7ZI}Q6002ovPDHLk FV1iF+fcO9a delta 650 zcmV;50(JfD8@w8@zY2c>XGugsRCwC#o6Aw-KoEvMQw~5GAR<^10U`qv0dSj}A%evb zEPI<95CJ9v9D+6jZ3fD~dvL2zZOPapjb5JaDwTEdNdMRWJft4Yw%aWs#~Fc#0#E=7 zAncg8ZNL~a#C@kg1SG%@AeQrLtbvuaHv6ujS=(u_Lja|~M9zP&L}={T&W*Kp-I)VC zL@6o-&MVoBJhlHKZW!DF$Jn;3xVF}A`gTAH+{$k}u**`QHvo~?ZV|*RP!sP$JjiuG zIwkR40Jsf(B^ZYeAPF5nG&KNorW+ZM1ApW^0)DwBVe9~kiqOBZn91b;z*<{fm6i}D z2cQ&{iO@`rqJe)aM%@Lfwk<_(LKp*9z;lC)o&sjs>$I?DVDJrsXi=Lf_uNt^eS;zZcHa zpfTo2EEo;Y_m`gA%bfriWA0?s9U{^Wpdar5V@!-=fpG$nxj10Suyy{zb9-xRtU5d);wMNdEXAvJ^?flv-04AS8MHKlc&MVqxjeFrl14U)?-WY_e~#% z-#iXxtCoN8E*%q+v)dSbf9xM>cZ(ZiK3hJ36u`AdH>K=0VJ0<$^hU1pcIe{>m!#vptQLBGwITd%?&zMI7t`|8<9iuYLc?p6q-Gth{dlZ5=Sv kPiF%U1)u-|kADLIN|m8q;m83f00000NkvXXu0jG}f&`8qOaK4? diff --git a/data/images/private/00_winset_divider_line.png b/data/images/private/00_winset_divider_line.png deleted file mode 100755 index e28797828da57e169e98c212c7ee06e75f6f7ee2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2802 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 Eg4i*La{vGU delta 1061 zcmV+=1ls$fAk-bOzY2c?|4BqaRCwC#Tg!3VFc5w6qyV~t&=o|kAY=uRDzJFN%~A!i zDzJ0IO;QDxD-d0Q=?cPBV0NG!vKYe(NG?8P#7H}X84nEt*oXbR1;o*QzsD)d1x{Sf z0Gt6h18~~%$#(!DgiZH3fO|&2DS$0!Kq=**EZ{4%-?#tO1;&4Y`wa?!nA%YRF!Eu7 zLWqbKTL7q9x=#Q+S`428$QhuH0pwE3s#gmj<#*J6l7b<3wXOdgzzc!8qxJLyfTp}! zWTY0-VCJ@g?MnkNFO*Fp?U@q@7Xg&lC85R5HDJ_E*;>Gi-kWJ--8GEm1cFrz5JHS; zr#Zo_q(w&oVpV@djWcfnAd^xSK>;A;cYze@S}Fi32Lu}z7>e@BU3Q^kK!ssR85)3W zU;t!60gzJW0G0z$ei1wfYQfMYrRi?82JlQQuR8GCgbJpaN4&|UlxdelD07Gh6}@)} zU_qsBW$3e||6h8{GwqZJk!jhu!WO_4?Yxbw>AkI`=~sW90-%{ISBa@d22nf81uwRp zz?BN$GL_G2=<*7{8-Tsm-spK!<8~YnZu%&OCJYNG49e>TlPSnW^n6GCA_E9*kv$ed z%!AefM1jXtosDaDsI8W7DxjJ`Ob^^AVKTge+Ams1Q5PGG00<%OX)>2|m(#*^d1Ray z)CJI~fs%hG4r7%7wo=Lk#|7pdxqf5t`HACL6N9oF$FX9qO!q$#YS}eiZav4lZ5iK7 zLIY45QeNUYW@1Q<iy?z*bj$$2kn(MMT%@R|PR5Tt)ig>!oUm1uC`TniXL znWO!VzW{J;@ZIkwHdbSSOG5zUoJM6*%5|49V9ki^V=8SAqxph%b!~95lAfp3?{JP4 zL;2E1dDj!6iW%5u1`w2aW^~#!(%Kb0H)V|#-ml1P0%m7ffEyrZHMPAB3w&fM@5DJ= zVnBa{KiAVZ!B&*ZV*`nr9Q1RYryC1kW`JXm zrIhk6C;)Uc_A;P4C#Bo0U@ox2uw)fF2E+pcAPNmYis4+5SNQv2)(-$mEh*a1=5?-6 z1yqR3JqnvtXq5&nKv+^Opx9mEsJLQ{mo$IYq6Jhd<(-I-Mutq)UD2R0m(Dg7R4Nvk zuF#b7R#xXkg=rGq5){+BZrJTt%W0k(Tr0)LOIIi5oh{(N5)xWKn~!p9c_o~m%&YT? z!u6-JBj2yaEWa19ne2)a_=fhqfK3J|`&iJi0#Nj|puPckV)lFPYeA#)m!l^xX8;|} f0Gt6hZTUR_Rk>)`0H^9V00000NkvXXu0mjfjP>Lu diff --git a/data/images/public/00_volume_icon_settings_pressed.png b/data/images/public/00_volume_icon_settings_pressed.png index 71cdb7b814f92bcd6a9e9cebfc7524bc3bf456fd..1808e65306db9c51bf7c073f36cef107662842cf 100755 GIT binary patch delta 1515 zcmV@K&Z%= z{;x-11aP@en_)n|iaG)Twsr~_2b@sVc8{jx0=|@L;DE<`V}X9Ey0cPtKs~S%I3Oam zBGSJ=yXt`BjW2&-_&^a^3N!=TMWmtFg{Oj~!(L8MMCyT;fRyXk+kr=%HzXo`fHbfP zxGKQ9ngIb?RrS1x^Z;%Go;4rgAOkE?)fG{lU}OSBq!-WtEXy(8!5QE=;74E@Fx{MB zP@Dob0G|UBfW<)1Jnb^J16Ql+g;)qM<5vI+D?1gPrQz{5o>_As#99GvsB+kPL_2i&i!hhh^# zs=7f$ZUg3o=(Zi$27CgvsA{LnvG%YKcMC8Tm=a>#msNF3Ih5cMU^Fnvr`<0WF4wB+ zsRD#{0=s{JT_Um?SYYE1@frIIU}?Fe@NwXv4*@>|^Hp_gh~0GxctJ$=0qcO_9?ic8 z&X_AxMBRsS?2CIcS?%=M33-)8H3iS@nJXSaQ8N1_>M z1KQK+bXzG1*qxJv_~9H-r>bw50e#I`Rfia34^X43XKjpoP44y%F~;6>I$d1~9WXKE z(K>%>r7s7wLmKa-&a++5TOx?B38fN3ogpV~Q`M8M=a~_m>`Yf=IBDBDtUxMDNi5eR z4~aO=5T9{Nl0{WAQgNh_U4c<~lwcGb@fkNZ0>TnCQbY#1o;O8Y-@7g?FbEh~YWsp3 zwm0O&Rlp3_^E(#S!eFn(eg`vb+%RY<6#;*DkiE^BYq5Bn36DbP4a_nDgT?ZNCUAo0 z78O0)MD#rleB1P+43=#sfQmOFiW2JvqtHWx#*k z_Li~ro(33I{Wd2 zh}>-LhIusmFi*6IEgind-l7+V18<9nXF(*#@PQ!;B4e!0k#Z356y8_eZbjD!OcN2O zEY_l`=Uhhjww%K$hXpN(O)?)aHIGqy$A|6tJoYC0S+JUX4YB8hfrPVmCI5$aQf^;blIKsT`=X5E}~t$0{^=`XMeS zxX8|JU4>+n&gJNXvFrf5fvqQdJzmI*UI3mk3HvJ9>+Z0Qa*g$Woa}XbK4gDv9rd|4 z!(AE%?Jj<$-RR_gAkhLm3T#u=jEHOoUIWxLx*rY$w__hjnB)DF?Dqy!a*SW3sw*QG z9E$xy#1_|JZ~JeH_p9;=9ua9ITT1uC>#90GPyhaw7c>GF1COcda<759S_(V6VY!Ix z06J9lfJf7P0f*dEV4mNACJ|%#2pA0PFLv#{O67$DezCR39G0K&+3zz~yH7e^_L5j3 zbOc!VuVk;uVnN&l91l>XIS8DNYeA{xzs9;b5&{we5&{we5&{we5(2s}{sCw-^ZQ>6 Rujc>&002ovPDHLkV1i^Fx+wqv delta 1079 zcmV-71jze^A=DkPtqOk%1qBcac$%lf000CANkl}|s{rw%sZ09&~I{|P4-~_;N+mEIW9v>goV~OY*z@1{~n3;dq8lRV!mz~-Hf0W}c zzUvX_dmh&v0Ej3A5PmBF(liZ-Xh=kX@1Tfir~x%i(@~nH!QKIom$H1`h-l<_Rr?A; z-2iw3z^)*iHw=C|$pF9;5wUD_AH?>%Ch$HHZ6uon1+bhzII}H=DuORt4q(pA_i{9* z049#-Isx#&%u9dqbq(NV$9OWvOpew;|If;FfV2*BC<{N;hV*o^60WikI0OlPDe&(G73uL%yAXRe!O8_qb zVrI?@`8@zIl!9s6fNx@B47I5PT(Ut9V8+Z#3n@G;i5-9KdwMoHz*-5)*0MPYYXCi) z-~m9!_vCq-t#3uvt_>0Gsw|n=nLOo)jEQI=$6}X-w(oG2!fy%?Dub6QZvtRc@{!AG zub4TmcuoUCW{l~z4Zsw@VwW6c=0PcdK%N^Zk4;o0N%5f};F&Sz-WvcydVQ(R`oh#Z zIjp#f5l`>o#V`iExaNQu+uPV;`$kErRqBFE|^c6~6{#s(6oZq5dHS~A2!+#_54M0{V zF30U!`@Hzi4i5yU=8Rs4sCd<4oV@1dc; z)eiry0C3-cXeK4rjvJ(|bwyn;arBi)TzV-ih0j+0{*u2n0_m%za4gTiiVRMC7DJjl z{<>o5rb>;~?7+EWF%%hN)V+tVEQg0BGRtJ;4!ax{5N`4L6_uBUh-L5qFgM2B?xQ25 zCCGoNZ2hQ0B5MM-=^;32jy8`#d1Cu&ijuY^?h1fwJ-(gb8o;v{`Twr@Uyy;M#LvowtO$sm2EmO_c27s_*00h1PAav)7JeT?U13*#> ziN@Ayh1_F6TJ4e8q(ZB5*aCz(fC2vB?L~hUpj8z$5i|c}<{p6A4p6OvZz6^3s=Guc zoHUTLwFOl{FDxpwi1jzboEswYlHyL-D!oBf@M5o)uX(QeCo^Yq@iH##2B+W~b%Y8a zi~$Uo`Cf50Z5tT1CSRxT$sC-5cRm6|v;4h)&C7a4sa$7W`@MiVgJ^>HVTTGpvac@* x?Hhn+<+zu9P3Y|O%h4mZ696XwP5>OY{R5s%@vxuC6zu>2002ovPDHLkV1lMi^QQm+ diff --git a/data/volume_app.edc b/data/volume_app.edc index 78d4f06..b7b0a8f 100755 --- a/data/volume_app.edc +++ b/data/volume_app.edc @@ -15,20 +15,20 @@ */ #define RESOURCE_IMAGE( FILE_NAME ) \ - group { \ - name : FILE_NAME; \ - images.image: FILE_NAME COMP; \ - parts { \ - part { name: "image"; \ - description { \ - state : "default" 0.0; \ - image.normal : FILE_NAME; \ - aspect : 1 1; \ - aspect_preference : BOTH; \ - } \ - } \ - } \ - } + group { \ + name : FILE_NAME; \ + images.image: FILE_NAME COMP; \ + parts { \ + part { name: "image"; \ + description { \ + state : "default" 0.0; \ + image.normal : FILE_NAME; \ + aspect : 1 1; \ + aspect_preference : BOTH; \ + } \ + } \ + } \ + } collections { @@ -40,19 +40,17 @@ RESOURCE_IMAGE("00_volume_icon_Vibrat.png"); RESOURCE_IMAGE("00_volume_icon_headphone.png"); RESOURCE_IMAGE("00_volume_icon_media.png"); - #define SLIDER_INDICATOR_TEXT_COLOR_INC 42 109 140 255 - #define SLIDER_UNITS_TEXT_COLOR_INC 100 100 100 255 + #define SLIDER_INDICATOR_TEXT_COLOR_INC 42 137 194 255 + #define SLIDER_UNITS_TEXT_COLOR_INC 0 0 0 255 #define SLIDER_UNITS_TEXT_SIZE_INC 30 #define SLIDER_INDICATOR_TEXT_SIZE_INC 40 - #define SLIDER_BASE_HEIGHT_INC 16 + #define SLIDER_BASE_HEIGHT_INC 34 #define SLIDER_BASE_MIN_WIDTH_INC 375 - #define SLIDER_BASE_HEIGHT_INC 16 - #define SLIDER_SWALLOW_BAR_MIN_WIDTH_INC 58 - #define SLIDER_SWALLOW_BAR_HEIGHT_INC 58 + #define SLIDER_SWALLOW_BAR_MIN_WIDTH_INC 72 + #define SLIDER_SWALLOW_BAR_HEIGHT_INC 74 #define SLIDER_INDICATOR_MAX_WIDTH_INC 90 - #define SLIDER_INDICATOR_WIDTH_INC 58 - #define SLIDER_INDICATOR_HEIGHT_INC 58 - #define SLIDER_DISABLER_PART_COLOR_INC 185 185 185 100 + #define SLIDER_INDICATOR_WIDTH_INC 72 + #define SLIDER_INDICATOR_HEIGHT_INC 72 group { name: "elm/slider/horizontal/indicator/default"; alias: "elm/slider/horizontal/indicator/disabled"; @@ -62,6 +60,7 @@ RESOURCE_IMAGE("00_volume_icon_media.png"); images { image: "00_slider_handle.png" COMP; image: "00_slider_handle_dim.png" COMP; + image: "00_slider_handle_press.png" COMP; } parts { @@ -103,6 +102,12 @@ RESOURCE_IMAGE("00_volume_icon_media.png"); border_scale: 1; } } + description { state: "pressed" 0.0; + inherit: "default" 0.0; + image { + normal: "00_slider_handle_press.png"; + } + } description { state: "disabled" 0.0; inherit: "default" 0.0; image { @@ -160,15 +165,27 @@ RESOURCE_IMAGE("00_volume_icon_media.png"); target: "button0"; target: "button_events"; } + program { name: "mouse_down"; + signal: "mouse,down,*"; + source: "button_events"; + action: STATE_SET "pressed" 0.0; + target: "button0"; + } + program { name: "mouse_up"; + signal: "mouse,up,*"; + source: "button_events"; + action: STATE_SET "default" 0.0; + target: "button0"; + } } } /* END group "elm/slider/horizontal/indicator/default" */ group { name: "elm/slider/horizontal/volumeHorizontalSlider"; images { - image: "00_winset_list_progress_bg.png" COMP; - image: "00_winset_list_progress_bar.png" COMP; - image: "00_winset_divider_line.png" COMP; + image: "00_progress_bg.png" COMP; + image: "00_progress_bar.png" COMP; + image: "00_divider_line.png" COMP; } script { @@ -202,12 +219,12 @@ RESOURCE_IMAGE("00_volume_icon_media.png"); mouse_events: 0; scale: 1; description { state: "default" 0.0; - min: 402 16; - max: 99999 16; + min: 488 34; + max: 99999 34; rel1.to: "bg"; rel2.to: "bg"; - image.normal: "00_winset_list_progress_bg.png"; - image.border: 0 0 4 4; + image.normal: "00_progress_bg.png"; + image.border: 16 16 0 0; image.border_scale: 1; } } /* "base" end */ @@ -224,8 +241,8 @@ RESOURCE_IMAGE("00_volume_icon_media.png"); to_x: "elm.dragable.slider"; relative: 0.5 1.0; } - image.normal: "00_winset_list_progress_bar.png"; - image.border: 0 0 4 4; + image.normal: "00_progress_bar.png"; + image.border: 16 16 0 0; image.border_scale: 1; } description { state: "inverted" 0.0; @@ -234,7 +251,7 @@ RESOURCE_IMAGE("00_volume_icon_media.png"); } description { state: "pressed" 0.0; inherit: "default" 0.0; - image.normal: "00_winset_list_progress_bar.png"; + image.normal: "00_progress_bar.png"; } } /* "level" end */ @@ -251,7 +268,7 @@ RESOURCE_IMAGE("00_volume_icon_media.png"); relative: 0.5 0.0; } rel2.to: "base"; - image.normal: "00_winset_list_progress_bar.png"; + image.normal: "00_progress_bar.png"; image.border: 0 0 4 4; image.border_scale: 1; } @@ -262,7 +279,7 @@ RESOURCE_IMAGE("00_volume_icon_media.png"); description { state: "pressed" 0.0; inherit: "default" 0.0; visible: 1; - image.normal: "00_winset_list_progress_bar.png"; + image.normal: "00_progress_bar.png"; } } /* "level" end */ @@ -282,8 +299,8 @@ RESOURCE_IMAGE("00_volume_icon_media.png"); mouse_events: 0; scale: 1; description { state: "default" 0.0; - min: 58 58; - max: 402 58; + min: 72 70; + max: 488 72; align: 1.0 0.5; rel1 { to_x: "bar_left_padding"; @@ -302,7 +319,7 @@ RESOURCE_IMAGE("00_volume_icon_media.png"); description { state: "default" 0.0; visible: 1; - min: 28 0; + min: 16 0; fixed: 1 1; color : 255 0 0 255; rel1 { @@ -324,7 +341,7 @@ RESOURCE_IMAGE("00_volume_icon_media.png"); description { state: "default" 0.0; visible: 1; - min: 28 0; + min: 16 0; fixed: 1 1; color : 0 255 0 255; rel1 { @@ -344,8 +361,8 @@ RESOURCE_IMAGE("00_volume_icon_media.png"); scale: 1; description { state: "default" 0.0; fixed: 1 1; - min: 2 64; - max: 2 64; + min: 4 94; + max: 4 94; align: 1.0 0.5; rel1 { relative: 0.0 0.5; @@ -356,8 +373,8 @@ RESOURCE_IMAGE("00_volume_icon_media.png"); to_x: "bar_right_right_padding"; } image { - normal: "00_winset_divider_line.png"; - border: 0 0 18 0; + normal: "00_divider_line.png"; + border: 0 0 0 2; border_scale: 1; } } @@ -365,12 +382,13 @@ RESOURCE_IMAGE("00_volume_icon_media.png"); part { name: "bar_right_right_padding"; - type: SWALLOW; + type: RECT; scale: 1; description { state: "default" 0.0; - visible: 0; - min: 28 0; + visible: 1; + color : 255 0 0 200; + min: 16 0; fixed: 1 1; rel1 { relative: 0.0 0.5; @@ -614,11 +632,11 @@ RESOURCE_IMAGE("00_volume_icon_media.png"); description { state: "default" 0.0; image { normal: "00_popup_bg.png"; - border: 15 15 15 15; + border: 18 18 32 52; border_scale: 1; } - min: 700 146; - max: 700 1120; + min: 720 182; + max: 720 1120; align: 0.5 0.5; } } @@ -626,7 +644,7 @@ RESOURCE_IMAGE("00_volume_icon_media.png"); type: SWALLOW; scale : 1; description { state: "default" 0.0; - min: 700 0; + min: 720 0; fixed: 1 0; rel1 { relative: 0.5 0.0; @@ -650,7 +668,7 @@ RESOURCE_IMAGE("00_volume_icon_media.png"); mouse_events : 0; description { state: "default" 0.0; align: 0.5 0.0; - min: 0 31; + min: 0 49; fixed: 0 1; visible: 0; rel1 { @@ -668,7 +686,7 @@ RESOURCE_IMAGE("00_volume_icon_media.png"); type: RECT; scale: 1; description { state: "default" 0.0; - min : 32 0; + min : 26 0; fixed: 1 0; rel2.relative: 0.0 1.0; visible: 0; @@ -680,7 +698,7 @@ RESOURCE_IMAGE("00_volume_icon_media.png"); type: RECT; scale: 1; description { state: "default" 0.0; - min : 32 0; + min : 26 0; fixed: 1 0; rel1.relative: 1.0 0.0; visible: 0; @@ -692,7 +710,7 @@ RESOURCE_IMAGE("00_volume_icon_media.png"); type: SWALLOW; scale : 1; description { state: "default" 0.0; - min: 616 0; + min: 568 0; fixed: 1 0; rel1 { relative: 0.5 1.0; @@ -711,7 +729,7 @@ RESOURCE_IMAGE("00_volume_icon_media.png"); mouse_events: 0; description { state: "default" 0.0; align: 0.5 1.0; - min: 0 31; + min: 0 69; fixed: 0 1; visible: 0; rel1 { diff --git a/data/volume_popup.edc b/data/volume_popup.edc deleted file mode 100755 index b2009a4..0000000 --- a/data/volume_popup.edc +++ /dev/null @@ -1,123 +0,0 @@ -/* - * Copyright 2012 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.0 (the License); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.tizenopensource.org/license - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -collections { - group { name: "popup_slider_text_style_with_warn_label"; - parts{ - part { name: "pad_t"; - scale : 1; - mouse_events: 0; - repeat_events: 1; - description { state: "default" 0.0; - align: 0.0 0.0; - min: 0 0; - fixed: 0 1; - rel1 { - relative: 1.0 0.0; - to_x: "pad_l"; - } - rel2 { - relative: 0.0 0.0; - to_x: "pad_r"; - } - } - } - part { name: "pad_l"; - scale: 1; - description { state: "default" 0.0; - min : 38 0; - fixed: 1 0; - rel1 { - relative: 0.0 0.0; - } - rel2 { - relative: 0.0 1.0; - } - align: 0.0 0.0; - } - } - part { name: "pad_r"; - scale: 1; - description { state: "default" 0.0; - min : 38 0; - fixed: 1 0; - rel1 { - relative: 1.0 0.0; - } - rel2 { - relative: 1.0 1.0; - } - align: 1.0 0.0; - } - } - part{ name:"elm.swallow.slider1"; - type: SWALLOW; - scale : 1; - description { state: "default" 0.0; - min: 0 0; - align: 0.0 0.5; - fixed: 1 0; - rel1 { - relative: 0.0 1.0; - to: "pad_t"; - } - rel2 { - relative: 1.0 0.0; - to: "pad_b"; - } - } - } - part { name: "pad_b"; - scale : 1; - mouse_events: 0; - repeat_events: 1; - description { state: "default" 0.0; - align: 0.0 1.0; - min: 0 101; - fixed: 0 1; - rel1 { - relative: 1.0 1.0; - to_x: "pad_l"; - } - rel2 { - relative: 0.0 1.0; - to_x: "pad_r"; - } - } - } - - part { name : "elm.swallow.warn_label"; - type: SWALLOW; - scale : 1; - mouse_events: 1; - repeat_events: 1; - description { state: "default" 0.0; - align : 0.0 0.5; - fixed : 0 1; - rel1{ - relative: 0.0 0.5; - to: "pad_b"; - } - rel2{ - relative: 1.0 0.5; - to : "pad_b"; - } - } - - } - } - } -} - diff --git a/src/_button.c b/src/_button.c deleted file mode 100755 index 0dd3924..0000000 --- a/src/_button.c +++ /dev/null @@ -1,128 +0,0 @@ -/* - * Copyright 2012 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.0 (the License); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.tizenopensource.org/license - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -#include -#include - -#include "_util_log.h" -#include "volume.h" -#include "_sound.h" -#include "_logic.h" - -enum { - IDLELOCK_OFF = 0x0, - IDLELOCK_ON, - IDLELOCK_MAX, -}; - -static void button_ug_layout_cb(ui_gadget_h ug, - enum ug_mode mode, void *priv) -{ - Evas_Object *base = NULL; - Evas_Object *win = NULL; - - base = ug_get_layout(ug); - win = ug_get_window(); - - retm_if(ug == NULL, "ug_get_layout API is failed\n"); - retm_if(ug == NULL, "ug_get_window API is failed\n"); - - switch (mode) { - case UG_MODE_FULLVIEW: - evas_object_size_hint_weight_set(base, - EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - elm_win_resize_object_add(win, base); - evas_object_show(base); - break; - default: - break; - } -} - -static void button_ug_destroy_cb(ui_gadget_h ug, void *priv) -{ - _D("%s\n", __func__); - struct appdata *ad = (struct appdata *)priv; - retm_if(ug == NULL, "Invalid argument: ug is NULL\n"); - - /* ug_destroy 0 : success, -1 : fail */ - _D("%d\n", ug_destroy(ug)); - ad->ug = NULL; - - ecore_x_netwm_window_type_set(elm_win_xwindow_get(ad->win), ECORE_X_WINDOW_TYPE_NOTIFICATION); - utilx_set_window_opaque_state(ecore_x_display_get(), elm_win_xwindow_get(ad->win), UTILX_OPAQUE_STATE_OFF); - elm_win_indicator_mode_set(ad->win, ELM_WIN_INDICATOR_HIDE); - - _close_volume(ad); -} - -ui_gadget_h create_button_ug(void *data) -{ - ui_gadget_h ug = NULL; - struct ug_cbs cbs = {0}; - struct appdata *ad = (struct appdata *)data; - int vconf_status = -1; - int lock = -1, type = -1; - retvm_if(ad == NULL, 0, "Invalid argument:appdata is NULL\n"); - - cbs.layout_cb = button_ug_layout_cb; - cbs.destroy_cb = button_ug_destroy_cb; - cbs.priv = (void *)data; - - vconf_get_int(VCONFKEY_PWLOCK_STATE, &vconf_status); - - lock = _get_vconf_idlelock(); - type = _get_volume_type(); - - if(vconf_status == VCONFKEY_PWLOCK_BOOTING_LOCK || (lock == IDLELOCK_ON && type == VOLUME_TYPE_MEDIA)){ - ecore_x_netwm_window_type_set(elm_win_xwindow_get(ad->win), ECORE_X_WINDOW_TYPE_NOTIFICATION); - } - else{ - ecore_x_netwm_window_type_set(elm_win_xwindow_get(ad->win), ECORE_X_WINDOW_TYPE_NORMAL); - } - utilx_set_window_opaque_state(ecore_x_display_get(), elm_win_xwindow_get(ad->win), UTILX_OPAQUE_STATE_ON); - ug = ug_create(NULL, "setting-profile-efl", UG_MODE_FULLVIEW, NULL, &cbs); - - return ug; -} - -int _open_ug(void *data) -{ - struct appdata *ad = (struct appdata *)data; - ui_gadget_h ug= NULL; - - retvm_if(ad == NULL, -1, "Invalid argument: appdata is NULL\n"); - retvm_if(ad->win == NULL, -1, "Invalid argument: window is NULL\n"); - - elm_win_indicator_mode_set(ad->win, ELM_WIN_INDICATOR_SHOW); - UG_INIT_EFL(ad->win, UG_OPT_INDICATOR_ENABLE); - ug = create_button_ug(ad); - if(ug!=NULL){ - ecore_x_e_illume_quickpanel_state_send(ecore_x_e_illume_zone_get(elm_win_xwindow_get(ad->win)), - ECORE_X_ILLUME_QUICKPANEL_STATE_OFF); - _ungrab_key(ad); - } - else{ - ecore_x_netwm_window_type_set(elm_win_xwindow_get(ad->win), ECORE_X_WINDOW_TYPE_NOTIFICATION); - utilx_set_window_opaque_state(ecore_x_display_get(), elm_win_xwindow_get(ad->win), UTILX_OPAQUE_STATE_OFF); - elm_win_indicator_mode_set(ad->win, ELM_WIN_INDICATOR_HIDE); - return -1; - } - - ad->ug = ug; - return 0; -} diff --git a/src/_button.h b/src/_button.h deleted file mode 100755 index 61fb368..0000000 --- a/src/_button.h +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright 2012 Samsung Electronics Co., Ltd - * - * Licensed under the Flora License, Version 1.0 (the License); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.tizenopensource.org/license - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -int _open_ug(void *data); diff --git a/src/_logic.c b/src/_logic.c index 62a6168..097cefd 100755 --- a/src/_logic.c +++ b/src/_logic.c @@ -31,7 +31,6 @@ #include "_util_log.h" #include "_util_efl.h" #include "_sound.h" -#include "_button.h" #define STRBUF_SIZE 128 #define PATHBUF_SIZE 256 @@ -42,6 +41,13 @@ enum { IDLELOCK_MAX, }; +/* _check_status() return value */ +enum{ + LOCK_AND_NOT_MEDIA = -0x1, + UNLOCK_STATUS, + LOCK_AND_MEIDA, +}; + int _close_volume(void *data) { struct appdata *ad = (struct appdata *)data; @@ -51,7 +57,8 @@ int _close_volume(void *data) _D("start closing volume\n"); ad->flag_deleting = EINA_TRUE; - _ungrab_key(ad); + _ungrab_key_new(ad); + _grab_key_new(ad, ad->input_win, SHARED_GRAB); DEL_TIMER(ad->sutimer) DEL_TIMER(ad->lutimer) @@ -59,11 +66,13 @@ int _close_volume(void *data) DEL_TIMER(ad->ldtimer) DEL_TIMER(ad->ptimer) - if (ad->win) + if (ad->win){ evas_object_hide(ad->win); + } appcore_flush_memory(); ad->flag_deleting = EINA_FALSE; + ad->flag_launching = EINA_FALSE; _D("end closing volume\n"); return 0; } @@ -126,18 +135,74 @@ Eina_Bool _sd_timer_cb(void *data) return ECORE_CALLBACK_CANCEL; } +Eina_Bool _volume_show(void *data) +{ + _D("%s\n", __func__); + int status = -1; + int type = MM_ERROR_SOUND_VOLUME_CAPTURE_ONLY; + int lock = IDLELOCK_ON; + struct appdata *ad = (struct appdata *)data; + retvm_if(ad == NULL, EINA_FALSE, "Invalid argument: appdata is NULL\n"); + + status = _check_status(&lock, &type); + if(status != LOCK_AND_NOT_MEDIA && ad->win) + { + _init_mm_sound(ad); + /* ungrab SHARED_GRAB */ + _ungrab_key_new(ad); + + if(status == UNLOCK_STATUS) + { + _grab_key_new(ad, -1, TOP_POSITION_GRAB); + + _rotate_func(ad); + elm_win_indicator_mode_set(ad->win, ELM_WIN_INDICATOR_HIDE); + evas_object_show(ad->win); + if(syspopup_has_popup(ad->volume_bundle)) + syspopup_reset(ad->volume_bundle); + } + else if(status == LOCK_AND_MEIDA) + { + _grab_key_new(ad, ad->input_win, EXCLUSIVE_GRAB); + } + ad->flag_launching = EINA_TRUE; + _mm_func(ad); + return EINA_TRUE; + } + else if(!ad->win) + { + /* recreate window */ + } + + _D("status == LOCK_AND_NOT_MEDIA\n"); + return EINA_FALSE; +} + static Eina_Bool _key_press_cb(void *data, int type, void *event) { _D("%s\n", __func__); int val=0, snd=0, vib=0; Ecore_Event_Key *ev = event; + int status = -1; + int mtype = MM_ERROR_SOUND_VOLUME_CAPTURE_ONLY; + int lock = IDLELOCK_ON; struct appdata *ad = (struct appdata *)data; + status = _check_status(&lock, &mtype); + retvm_if(ev == NULL, ECORE_CALLBACK_CANCEL, "Invalid arguemnt: event is NULL\n"); retvm_if(ad == NULL, ECORE_CALLBACK_CANCEL, "Invalid argument: appdata is NULL\n"); retvm_if(ad->win == NULL, ECORE_CALLBACK_CANCEL, "Invalid argument: window is NULL\n"); - if (ad->flag_touching == EINA_TRUE) { + if(!ad->flag_launching) + { + if(_volume_show(data) != EINA_TRUE) + { + return ECORE_CALLBACK_CANCEL; + } + } + + if(ad->flag_touching == EINA_TRUE) { return ECORE_CALLBACK_CANCEL; } @@ -213,60 +278,91 @@ static Eina_Bool _key_release_cb(void *data, int type, void *event) DEL_TIMER(ad->ptimer) - /* In UG, This Callback should not be called. */ - if ( ad->ug == NULL ) - ADD_TIMER(ad->ptimer, 3.0, popup_timer_cb, ad) + ADD_TIMER(ad->ptimer, 3.0, popup_timer_cb, ad) return ECORE_CALLBACK_CANCEL; } -int _grab_key(struct appdata *ad) +int _grab_key_new(struct appdata *ad, Ecore_X_Window _xwin, int grab_mode) { - Ecore_X_Window xwin = 0; + _D("%s\n", __func__); Ecore_X_Display *disp = NULL; + Ecore_X_Window xwin = 0; int ret = -1; - retvm_if(ad == NULL, -1, "Invalid argument: appdata is NULL\n"); + /* ALREADY GRAB check */ + switch(grab_mode) + { + case SHARED_GRAB : if(ad->flag_shared_grabed)return -1; + break; + case EXCLUSIVE_GRAB : if(ad->flag_exclusive_grabed)return -1; + break; + case TOP_POSITION_GRAB : if(ad->flag_top_positioni_grabed)return -1; + break; + } disp = ecore_x_display_get(); retvm_if(disp == NULL, -1, "Failed to get display\n"); - retvm_if(ad->win == NULL, -1, "Invalid argument: ad->win is NULL\n"); - xwin = elm_win_xwindow_get(ad->win); - retvm_if(xwin == 0, -1, "Failed to get xwindow\n"); + if(_xwin == -1) + { + /* TOP_POSITION_GRAB */ + xwin = elm_win_xwindow_get(ad->win); + retvm_if(xwin == 0, -1, "elm_win_xwindow_get() failed\n"); + } + else + xwin = _xwin; - ret = utilx_grab_key(disp, xwin, KEY_VOLUMEDOWN, TOP_POSITION_GRAB); + ret = utilx_grab_key(disp, xwin, KEY_VOLUMEDOWN, grab_mode); retvm_if(ret < 0, -1, "Failed to grab key down\n"); retvm_if(ret == 1, -1, "Already grab\n"); - ret = utilx_grab_key(disp, xwin, KEY_VOLUMEUP, TOP_POSITION_GRAB); + ret = utilx_grab_key(disp, xwin, KEY_VOLUMEUP, grab_mode); retvm_if(ret < 0, -1, "Failed to grab key up\n"); retvm_if(ret == 1, -1, "Already grab\n"); - ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, _key_press_cb, ad); - ecore_event_handler_add(ECORE_EVENT_KEY_UP, _key_release_cb, ad); - _D("key grabed\n"); + switch(grab_mode) + { + case SHARED_GRAB : + ad->flag_shared_grabed = EINA_TRUE; + break; + case EXCLUSIVE_GRAB : + ad->flag_exclusive_grabed = EINA_TRUE; + break; + case TOP_POSITION_GRAB : + ad->flag_top_positioni_grabed = EINA_TRUE; + break; + } + return 0; } -void _ungrab_key(struct appdata *ad) +int _ungrab_key_new(struct appdata *ad) { Ecore_X_Window xwin = 0; Ecore_X_Display *disp = NULL; - retm_if(ad == NULL, "Invalid argument: appdata is NULL\n"); - retm_if(ad->win == NULL, "Invalid argument: ad->win is NULL\n"); + retvm_if(ad == NULL, -1, "Invalid argument: appdata is NULL\n"); + retvm_if(ad->input_win == 0, -1, "Invalid argument: ad->win is NULL\n"); xwin = elm_win_xwindow_get(ad->win); - retm_if(xwin == 0, "Failed to get xwindow\n"); + retvm_if(xwin == 0, -1, "Failed to get xwindow\n"); disp = ecore_x_display_get(); - retm_if(disp == NULL, "Failed to get display\n"); + retvm_if(disp == NULL, -1, "Failed to get display\n"); - if (disp && xwin) { - utilx_ungrab_key(disp, xwin, KEY_VOLUMEUP); - utilx_ungrab_key(disp, xwin, KEY_VOLUMEDOWN); - } + utilx_ungrab_key(disp, ad->input_win, KEY_VOLUMEUP); + utilx_ungrab_key(disp, ad->input_win, KEY_VOLUMEDOWN); + _D("key ungrabed\n"); + + if(ad->flag_exclusive_grabed) + ad->flag_exclusive_grabed = EINA_FALSE; + else if(ad->flag_top_positioni_grabed) + ad->flag_top_positioni_grabed = EINA_FALSE; + else if(ad->flag_shared_grabed) + ad->flag_shared_grabed = EINA_FALSE; + + return 0; } int _get_vconf_idlelock(void) @@ -299,6 +395,8 @@ volume_type_t _get_volume_type(void) _D("Failed to get sound type(errno:%x)\n", ret); return -1; } + if(type == VOLUME_TYPE_NOTIFICATION || type == VOLUME_TYPE_SYSTEM) + type = VOLUME_TYPE_RINGTONE; return type; } @@ -318,14 +416,61 @@ int _check_status(int *lock, int *type) _D("lock is set, not in media\n"); return -1; } + + if (*lock == IDLELOCK_ON && *type == VOLUME_TYPE_MEDIA) { + _D("lock is set, in media\n"); + return 1; + } + _D("unlock status, normal case\n"); return 0; } +void _starter_user_volume_key_vconf_changed_cb(keynode_t *key, void *data){ + _D("%s\n", __func__); + int ret = EINA_FALSE; + vconf_get_int(VCONFKEY_STARTER_USE_VOLUME_KEY, &ret); + if(ret != 0) + { + _D("any other App grab volume hard key\n", __func__); + _close_volume(data); + vconf_set_int(VCONFKEY_STARTER_USE_VOLUME_KEY, 0); + } +} + +void _idle_lock_state_vconf_chnaged_cb(keynode_t *key, void *data){ + _close_volume(data); +} + int _app_create(struct appdata *ad) { + _D("%s\n", __func__); + int ret = 0; _init_svi(ad); - return 0; + /* create input_window */ + ad->input_win = _add_input_window(); + retvm_if(ad->input_win == 0, -1, "Failed to create input window\n"); + + /* vconf changed callback */ + vconf_notify_key_changed(VCONFKEY_STARTER_USE_VOLUME_KEY, + _starter_user_volume_key_vconf_changed_cb, ad); + + /* Lock screen status vconf changed callback */ + vconf_notify_key_changed(VCONFKEY_IDLE_LOCK_STATE, + _idle_lock_state_vconf_chnaged_cb, ad); + + /* grab volume shared grab */ + ret = _grab_key_new(ad, ad->input_win, SHARED_GRAB); + + /* ecore event handler add once */ + if(ad->event_volume_down == NULL) + ad->event_volume_down = ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, _key_press_cb, ad); + if(ad->event_volume_up == NULL) + ad->event_volume_up = ecore_event_handler_add(ECORE_EVENT_KEY_UP, _key_release_cb, ad); + + _init_mm_sound(ad); + + return ret; } int __utilx_ss_get_window_property(Display *dpy, Window win, Atom atom, @@ -527,7 +672,7 @@ static void _slider_start_cb(void *data, Evas_Object *obj, void *event_info) if (ad->flag_pressing == EINA_TRUE) { return; } - ad->flag_touching = EINA_FALSE; + ad->flag_touching = EINA_TRUE; DEL_TIMER(ad->ptimer) @@ -665,7 +810,19 @@ static void _button_cb(void *data, Evas_Object *obj, void *event_info) elm_icon_file_set(obj, buf, NULL); if(evas_object_visible_get(ad->win)){ DEL_TIMER(ad->ptimer) - _open_ug(ad); + if(ecore_x_e_illume_quickpanel_state_get( + ecore_x_e_illume_zone_get(elm_win_xwindow_get(ad->win))) != ECORE_X_ILLUME_QUICKPANEL_STATE_OFF) + { + _D("Quickpanel is hide\n"); + ecore_x_e_illume_quickpanel_state_send( + ecore_x_e_illume_zone_get(elm_win_xwindow_get(ad->win)), ECORE_X_ILLUME_QUICKPANEL_STATE_OFF); + } + service_h svc; + service_create(&svc); + service_add_extra_data(svc, "view_to_jump", "IDS_COM_BODY_SOUNDS"); + service_set_package(svc, "org.tizen.setting"); + service_send_launch_request(svc, NULL, NULL); + _app_pause(ad); } } @@ -683,103 +840,71 @@ int _app_reset(bundle *b, void *data) struct appdata *ad = (struct appdata *)data; retvm_if(ad == NULL, -1, "Invalid argument: appdata is NULL\n"); - ad->flag_touching = EINA_FALSE; ad->noti_seen = EINA_FALSE; + ad->flag_launching = EINA_FALSE; + ad->flag_pressing = EINA_FALSE; + ad->flag_touching = EINA_FALSE; - _init_mm_sound(ad); status = _check_status(&lock, &type); ad->type = type; mm_sound_volume_get_value(type, (unsigned int*)(&val)); - if (status == 0) { - if(ad->win){ - _D("window exists", __func__); - if(_grab_key(ad)==-1)return -1; - _handle_bundle(b, ad); - _rotate_func(ad); - elm_win_indicator_mode_set(ad->win, ELM_WIN_INDICATOR_HIDE); - evas_object_show(ad->win); - _mm_func(ad); - if (syspopup_has_popup(b)) - syspopup_reset(b); - ad->flag_launching = EINA_FALSE; - return 0; - } - ad->step = _get_step(type); - - _set_level(type); - - win = _add_window(PACKAGE); - retvm_if(win == NULL, -1, "Failed add window\n"); - ad->win = win; - - _grab_key(ad); - mm_sound_route_get_playing_device(&(ad->device)); - - th = elm_theme_new(); - elm_theme_ref_set(th, NULL); - elm_theme_extension_add(th, EDJ_APP); - - block = _add_layout(win, EDJ_APP, GRP_VOLUME_BLOCKEVENTS); - edje_object_signal_callback_add(elm_layout_edje_get(block), "clicked", "*", _block_clicked_cb, ad); - outer = _add_layout(win, EDJ_APP, GRP_VOLUME_LAYOUT); - inner = _add_layout(win, EDJ_APP, GRP_VOLUME_CONTENT); - ad->block_events = block; - ad->ly = outer; - - elm_object_part_content_set(outer, "elm.swallow.content", inner); - - sl = _add_slider(win, 0, ad->step, val); - elm_object_theme_set(sl, th); - elm_object_style_set(sl, GRP_VOLUME_SLIDER_HORIZONTAL); - evas_object_smart_callback_add(sl, "slider,drag,start", _slider_start_cb, ad); - evas_object_smart_callback_add(sl, "changed", _slider_changed_cb, ad); - evas_object_smart_callback_add(sl, "slider,drag,stop", _slider_stop_cb, ad); - - ic_settings = elm_icon_add(win); - evas_object_size_hint_aspect_set(ic_settings, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1); - elm_icon_resizable_set(ic_settings, EINA_FALSE, EINA_FALSE); - snprintf(buf, sizeof(buf), "%s/%s", IMAGEDIR, IMG_VOLUME_ICON_SETTINGS); - _D("%s\n", buf); - elm_icon_file_set(ic_settings, buf, NULL); - elm_object_part_content_set(sl, "end", ic_settings); - evas_object_event_callback_add(ic_settings, EVAS_CALLBACK_MOUSE_DOWN, _button_mouse_down_cb, ad); - evas_object_smart_callback_add(ic_settings, "clicked", _button_cb, ad); - evas_object_show(ic_settings); - ad->ic_settings = ic_settings; - - ad->sl = sl; - elm_object_part_content_set(inner, "elm.swallow.content", sl); - - ic = elm_icon_add(win); - evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1); - elm_icon_resizable_set(ic, EINA_FALSE, EINA_FALSE); - elm_object_part_content_set(ad->sl, "icon", ic); - ad->ic = ic; - _set_icon(ad, val); - - ret = syspopup_create(b, &handler, ad->win, ad); - retvm_if(ret < 0, -1, "Failed to create syspopup\n"); - - _handle_bundle(b, ad); - - _rotate_func(ad); - evas_object_show(ad->win); - } - ad->flag_launching = EINA_FALSE; + win = _add_window(PACKAGE); + retvm_if(win == NULL, -1, "Failed add window\n"); + ad->win = win; + + th = elm_theme_new(); + elm_theme_ref_set(th, NULL); + elm_theme_extension_add(th, EDJ_APP); + + block = _add_layout(win, EDJ_APP, GRP_VOLUME_BLOCKEVENTS); + edje_object_signal_callback_add(elm_layout_edje_get(block), "clicked", "*", _block_clicked_cb, ad); + outer = _add_layout(win, EDJ_APP, GRP_VOLUME_LAYOUT); + inner = _add_layout(win, EDJ_APP, GRP_VOLUME_CONTENT); + ad->block_events = block; + ad->ly = outer; + + elm_object_part_content_set(outer, "elm.swallow.content", inner); + + sl = _add_slider(win, 0, ad->step, val); + elm_object_theme_set(sl, th); + elm_object_style_set(sl, GRP_VOLUME_SLIDER_HORIZONTAL); + evas_object_smart_callback_add(sl, "slider,drag,start", _slider_start_cb, ad); + evas_object_smart_callback_add(sl, "changed", _slider_changed_cb, ad); + evas_object_smart_callback_add(sl, "slider,drag,stop", _slider_stop_cb, ad); + + ic_settings = elm_icon_add(win); + evas_object_size_hint_aspect_set(ic_settings, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1); + elm_icon_resizable_set(ic_settings, EINA_FALSE, EINA_FALSE); + snprintf(buf, sizeof(buf), "%s/%s", IMAGEDIR, IMG_VOLUME_ICON_SETTINGS); + _D("%s\n", buf); + elm_icon_file_set(ic_settings, buf, NULL); + elm_object_part_content_set(sl, "end", ic_settings); + evas_object_event_callback_add(ic_settings, EVAS_CALLBACK_MOUSE_DOWN, _button_mouse_down_cb, ad); + evas_object_smart_callback_add(ic_settings, "clicked", _button_cb, ad); + evas_object_show(ic_settings); + ad->ic_settings = ic_settings; + + ad->sl = sl; + elm_object_part_content_set(inner, "elm.swallow.content", sl); + + ic = elm_icon_add(win); + evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1); + elm_icon_resizable_set(ic, EINA_FALSE, EINA_FALSE); + elm_object_part_content_set(ad->sl, "icon", ic); + ad->ic = ic; + _set_icon(ad, val); + + ret = syspopup_create(b, &handler, ad->win, ad); + retvm_if(ret < 0, -1, "Failed to create syspopup\n"); + ad->volume_bundle = bundle_dup(b); + return 0; } int _app_pause(struct appdata *ad) { _D("%s\n", __func__); - if(ad->ug){ - _D("%d\n", ug_destroy(ad->ug)); - ad->ug = NULL; - ecore_x_netwm_window_type_set(elm_win_xwindow_get(ad->win), ECORE_X_WINDOW_TYPE_NOTIFICATION); - utilx_set_window_opaque_state(ecore_x_display_get(), elm_win_xwindow_get(ad->win), UTILX_OPAQUE_STATE_OFF); - elm_win_indicator_mode_set(ad->win, ELM_WIN_INDICATOR_HIDE); - } _close_volume(ad); return 0; } diff --git a/src/_logic.h b/src/_logic.h index 0faa99d..8bf79bf 100755 --- a/src/_logic.h +++ b/src/_logic.h @@ -30,7 +30,9 @@ int _rotate_func(void *data); int _app_reset(bundle *b, void *data); Eina_Bool popup_timer_cb(void *data); void _init_press_timers(void *data); -void _ungrab_key(struct appdata *ad); +int _check_status(int *lock, int *type); +int _ungrab_key_new(struct appdata *ad); +int _grab_key_new(struct appdata *ad, Ecore_X_Window _xwin, int grab_mode); #endif /* __VOLUME_LOGIC_H__ */ diff --git a/src/_sound.c b/src/_sound.c index 305bd45..67d3116 100755 --- a/src/_sound.c +++ b/src/_sound.c @@ -28,6 +28,7 @@ #define PATHBUF_SIZE 256 int _set_sound_level(volume_type_t type, int val); +int _get_sound_level(volume_type_t type, int * val); void _play_vib(int handle) { @@ -36,10 +37,16 @@ void _play_vib(int handle) void _play_sound(int type, int handle) { - if (type == VOLUME_TYPE_MEDIA || type == VOLUME_TYPE_RINGTONE) { + int ringtone_val = -1; + int system_val = -1; + if (type == VOLUME_TYPE_MEDIA) { } else { + _get_sound_level(type, &ringtone_val); + _get_sound_level(VOLUME_TYPE_SYSTEM, &system_val); + _set_sound_level(VOLUME_TYPE_SYSTEM, ringtone_val); svi_play_sound(handle, SVI_SND_TOUCH_TOUCH1); + _set_sound_level(VOLUME_TYPE_SYSTEM, system_val); } } @@ -92,16 +99,6 @@ int _set_icon(void *data, int val) switch(ad->type){ case VOLUME_TYPE_RINGTONE: img = IMG_VOLUME_ICON_CALL; - if(val == 0){ - if(vib) - img = IMG_VOLUME_ICON_VIB; - else - img = IMG_VOLUME_ICON_MUTE; - } - if(!snd){ - img = IMG_VOLUME_ICON_MUTE; - if(vib)img = IMG_VOLUME_ICON_VIB; - } break; case VOLUME_TYPE_MEDIA: if(device == SYSTEM_AUDIO_ROUTE_PLAYBACK_DEVICE_EARPHONE) @@ -111,16 +108,6 @@ int _set_icon(void *data, int val) break; default: img = IMG_VOLUME_ICON; - if(val == 0){ - if(vib) - img = IMG_VOLUME_ICON_VIB; - else - img = IMG_VOLUME_ICON_MUTE; - } - if(!snd){ - img = IMG_VOLUME_ICON_MUTE; - if(vib)img = IMG_VOLUME_ICON_VIB; - } break; } if (ad->ic ) { @@ -258,11 +245,13 @@ int _get_step(int type) void _mm_func(void *data) { _D("%s\n", __func__); - int val = 0, snd = 0; + int val = 0; system_audio_route_device_t device = 0; struct appdata *ad = (struct appdata *)data; retm_if(ad == NULL, "Invalid argument: appdata is NULL\n"); + _set_device_warning(ad, val, device); + retm_if(ad->win == NULL, "Failed to get window\n"); /* function could be activated when window exists */ @@ -278,20 +267,9 @@ void _mm_func(void *data) _set_sound_level(ad->type, val); ad->device = device; } - if(ad->type == VOLUME_TYPE_RINGTONE){ - if(val == 0) - vconf_set_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, EINA_FALSE); - else{ - vconf_get_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, &snd); - if(snd == EINA_FALSE){ - vconf_set_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, EINA_TRUE); - } - } - } _set_slider_value(ad, val); _set_icon(ad, val); - _set_device_warning(ad, val, device); _D("type(%d) val(%d)\n", ad->type, val); } diff --git a/src/_util_efl.c b/src/_util_efl.c index 323b30b..d640b8f 100755 --- a/src/_util_efl.c +++ b/src/_util_efl.c @@ -22,6 +22,23 @@ #include "volume.h" #include "_util_log.h" +Ecore_X_Window _add_input_window(void) +{ + Ecore_X_Window win = 0; + win = ecore_x_window_input_new(0, 0, 0, 1, 1); + if(win){ + ecore_x_event_mask_unset(win, ECORE_X_EVENT_MASK_NONE); + ecore_x_icccm_title_set(win, "volumekey-input-window"); + ecore_x_netwm_name_set(win, "volumekey-input-window"); + ecore_x_netwm_pid_set(win, getpid()); + return win; + } + else{ + _E("%s() is failed\n", __func__); + return 0; + } +} + Evas_Object *_add_window(const char *name) { Evas_Object *eo = NULL; diff --git a/src/_util_efl.h b/src/_util_efl.h index e89b3d8..bfb898c 100755 --- a/src/_util_efl.h +++ b/src/_util_efl.h @@ -20,6 +20,7 @@ #include +Ecore_X_Window *_add_input_window(void); Evas_Object *_add_window(const char *name); Evas_Object *_add_slider(Evas_Object *parent, int min, int max, int val); Evas_Object *_add_layout(Evas_Object *parent, const char *file, const char *group); diff --git a/src/volume.c b/src/volume.c index 7dbdb63..7d8251d 100755 --- a/src/volume.c +++ b/src/volume.c @@ -37,7 +37,7 @@ static Eina_Bool rotate_cb(void *data, int type, void *event) return ECORE_CALLBACK_RENEW; } - if (ev->message_type == ECORE_X_ATOM_E_ILLUME_ROTATE_ROOT_ANGLE && ad->ug == NULL){ + if (ev->message_type == ECORE_X_ATOM_E_ILLUME_ROTATE_ROOT_ANGLE){ _rotate_func(data); } return ECORE_CALLBACK_RENEW; @@ -49,17 +49,15 @@ static int app_create(void *data) retvm_if(ad == NULL, -1, "Invalid argument: appdata is NULL\n"); - _app_create(ad); + if(_app_create(ad)!=0){ + _E("_app_create() if failed\n"); + return -1; + } /* add rotation event callback */ ecore_event_handler_add(ECORE_X_EVENT_CLIENT_MESSAGE, rotate_cb, (void *)data); - /* appcore measure time example */ - printf("from AUL to %s(): %d msec\n", __func__, - appcore_measure_time_from("APP_START_TIME")); - - appcore_measure_start(); return 0; } @@ -90,24 +88,10 @@ static int app_reset(bundle *b, void *data) struct appdata *ad = data; retvm_if(ad == NULL, -1, "Invalid argument: appdata is NULL\n"); - if(ad->flag_launching == EINA_TRUE || evas_object_visible_get(ad->win)) - { - _init_press_timers(ad); - return 0; - } - ad->flag_launching = EINA_TRUE; - if(_app_reset(b, data) == -1){ _D("_app_reset() if failed\n"); - ad->flag_launching = EINA_FALSE; return -1; } - /* appcore measure time example */ - printf("from AUL to %s(): %d msec\n", __func__, - appcore_measure_time_from("APP_START_TIME")); - printf("from create to %s(): %d msec\n", __func__, - appcore_measure_time()); - if (ad->win) elm_win_activate(ad->win); @@ -125,7 +109,6 @@ int main(int argc, char *argv[]) .reset = app_reset, }; - /* appcore measure time example */ printf("from AUL to %s(): %d msec\n", __func__, appcore_measure_time_from("APP_START_TIME")); diff --git a/src/volume.h b/src/volume.h index 0b1f82e..94a09f4 100755 --- a/src/volume.h +++ b/src/volume.h @@ -43,7 +43,7 @@ #endif #if !defined(PKGNAME) -# define PKGNAME "com.samsung.volume" +# define PKGNAME "org.tizen.volume" #endif #define EDJ_APP EDJDIR"/volume_app.edj" @@ -52,7 +52,7 @@ #define GRP_VOLUME_CONTENT "volumeLayoutContent" #define GRP_VOLUME_SLIDER_HORIZONTAL "volumeHorizontalSlider" -#define IMG_VOLUME_PACKAGE_ICON "/usr/share/icons/default/small/com.samsung.volume.png" +#define IMG_VOLUME_PACKAGE_ICON "/usr/share/icons/default/small/org.tizen.volume.png" #define IMG_VOLUME_ICON "00_volume_icon.png" #define IMG_VOLUME_ICON_CALL "00_volume_icon_Call.png" #define IMG_VOLUME_ICON_MUTE "00_volume_icon_Mute.png" @@ -82,6 +82,7 @@ struct appdata { + Ecore_X_Window input_win; Evas_Object *win, *block_events, *ly, *sl, *ic, *ic_settings, *warn_lb; Ecore_Timer *ptimer; @@ -94,19 +95,27 @@ struct appdata int step; int angle; + /* bundle */ + bundle *volume_bundle; + /* ticker notification handler */ int noti_id; bool noti_seen; - /* ug handler */ - ui_gadget_h ug; - /* add more variables here */ int sh; /* svi handle */ - int flag_pressing; /* to set hard key press */ - int flag_touching; - int flag_launching; - int flag_deleting; + int flag_pressing; /* EINA_TRUE : hw key pressing, block slider cb */ + int flag_touching; /* EINA_TRUE : slider indicator pressing, block hw key cb */ + int flag_launching; /* EINA_TRUE : volume is launcing block double lauch*/ + int flag_deleting; /* EINA_TRUE : closing volume, block double close_volume() */ + int flag_media; + int flag_shared_grabed; + int flag_top_positioni_grabed; + int flag_exclusive_grabed; + + /* Ecore event handler */ + Ecore_Event_Handler *event_volume_up; + Ecore_Event_Handler *event_volume_down; }; #endif /* __VOLUME_H__ */ -- 2.7.4