From 6b5b7ea2bca39b8a389ca15e35c1a66d7734ad98 Mon Sep 17 00:00:00 2001 From: Enrico Strocchi Date: Fri, 3 Jan 2014 01:20:38 +0100 Subject: [PATCH] Added localization (now English and Italian) and a new tab where is possible see the software version --- Timer/.classpath | 2 +- Timer/AndroidManifest.xml | 8 ++-- Timer/project.properties | 2 +- Timer/res/drawable/icon_big.png | Bin 0 -> 22236 bytes Timer/res/layout/about.xml | 24 ++++++++++ Timer/res/layout/countdown_simplified.xml | 4 +- Timer/res/layout/stopwatch.xml | 4 +- Timer/res/layout/world_clock.xml | 2 +- Timer/res/values-it/strings.xml | 42 ++++++++++++++++++ Timer/res/values/strings.xml | 23 ++++++++++ .../src/org/dpadgett/timer/AboutFragment.java | 40 +++++++++++++++++ .../src/org/dpadgett/timer/AlarmService.java | 6 +-- .../org/dpadgett/timer/CountdownFragment.java | 6 +-- Timer/src/org/dpadgett/timer/LapTimes.java | 2 +- .../org/dpadgett/timer/StopwatchFragment.java | 16 +++---- .../src/org/dpadgett/timer/TimerActivity.java | 28 +++++++----- .../dpadgett/timer/WorldClockFragment.java | 16 ++++--- 17 files changed, 179 insertions(+), 46 deletions(-) create mode 100644 Timer/res/drawable/icon_big.png create mode 100644 Timer/res/layout/about.xml create mode 100644 Timer/res/values-it/strings.xml create mode 100644 Timer/src/org/dpadgett/timer/AboutFragment.java diff --git a/Timer/.classpath b/Timer/.classpath index f63eddd..bf91232 100644 --- a/Timer/.classpath +++ b/Timer/.classpath @@ -6,6 +6,6 @@ - + diff --git a/Timer/AndroidManifest.xml b/Timer/AndroidManifest.xml index 13159f8..58b25bd 100644 --- a/Timer/AndroidManifest.xml +++ b/Timer/AndroidManifest.xml @@ -1,15 +1,14 @@ + android:versionCode="8" + android:versionName="1.4" > + android:targetSdkVersion="19" /> - 6@Kse=1`~}04FCX4Iax_{@ICIo7X%r+?@4bqgKu!I>N4U$rv^@}=1$=ylDaal3yl zIN(KpjlitQg&~bFt7&Q;bJ@@+i5_BTIEvW6JoD{jyPmaJNRMVXX0HiN_?qly|D0%f zD6gBhs+eFxe3=u$0GyxwSDd?|h`SDCB7j+{K#)0iAb*pK?wuJCd4NFiwvgaGF>cI6 zb=6+B{mHypzI`eU&@}oEda6x+PwDBQp}O`071}l==KUB;Y*e}mKgeXJ6KMz`=Sp*P zd7%>6b7H%-_tn+}<&{`=2kKM_aNak1CQtV- zF()tn&!kbL18k=7;VcNTtUw>I(BC_Gp+v0qn@VY~?BNy{cjmTPj5TH+`0B-+wSO_c8a3P7q=R}4b zQ;?g8P)HE0s`|+Rz2+F-3@}56a+*LfLh~dRFs;*(4HxokNVt@&(u;7lwDQW{uodw* zlfD0D;UKrxF-Q4$WbFT;!I?IgkQqZ3Z!SR&3g{Y=M``_lg`jt@`u-bOiw~pt0$DI{ z#Y9;LU~Wj_?XcTOST4fh3p2cA5yH1#RBE&xKEs9dQxGI8qj*O^XFZz?K=J+&-4x0_8QWPnDj=UxRV&GY15GWF%T1Vg%j@rF zx}Nr$&nF_Qss#I&dqryW?4r%$3bXdetT^ z)wT;p0D)*Z+#(N-3FgB?a>CP30*SR%gjendLhE}M<|L(wfkj2WQ7*z)z7MOF^uhIP z{liAi7av1w%upR#zvjtc$F&Nm0%V0zN57MtWXO?td~UCc8|oPoG?O0XlbNYT@DeQ2 z25T`c>BR`>W#hN;DBy%9g7&;r<-46T3%pi#M>@3iVRqERXmMCdb=+|}o&-{23<=Ig z2W}*3ilN{Vhs-~&du>%%CwiNXrTcf>-0kIxJa%F9hgUM1Bqg!EzlV4}*jHa4Eqg>( zwjLI>L`l6aDGQ}nNH#n9eFivT3<8S+Xp8v1q-ut*GI1+>EjeF zs=YlB0`qEe6V0x#tIlEu7Ct*pv_`(-C`n!K6i`b7X0yFgUy3n6*e_-UXnbu>;8jo}PASRIY-{tGe z`TowF7;1)Lg1C5zoqI6+f&-V|$@jGIsskTOtIm@~iX`K(#s)ov?iwZcXZ9*xdiv@z zZfw<=o^@d)t7Y>xUYxMEsK%S~sDqxCJ(qjaFhhSM4UI3YRFdAoz0^c#A+mIMVti!M z;KfKFPK6^%h2xaQM7q@sS8Jc&X8gxqyS?Y*ivv2rCFI+(peuS(|Ed?e z(^OnS;?O~^?2rO0OqULi`kO4`4Ko?m&(S1vFWokDf`<$S!CJd7+71=H*-q5cmin>2{e6bGqzp}IrVAQG zmAabFG6D(f4VR<|mu6Pg(1`r~n*QT3;)WB_<^>Ns3Hjpe?_u#>`#E-( zZPlxT8O#e$w6v(wuN=gL%Z(?$I((Ig-pLZI`D5)}QzXFFr!eaua3rmvz>?u!Jaq0aV$-&kiM3FIQAz5OFR1RN>`WfvbK^QM=(V~efs%#99z(4=evN_+TinXQTSdjQU0v!@>tI82j2bXc$Urx4n` z|4F|*KdEVHA%SW3D4kZdrFrOT-L5>baa0NKt0eqaNwON<72NNVG}5r`K!tZ{P6y{3 zo#FHelXR%}3&yNg|5i9Nu_*mEcU4RDtIj$eVvheTfAqyh@V&qKwcd>oC;Q!GlLp^} zm#5L>Y}FTlAZWrL3!sE|J|@`aZiGcIec7>C`1i@qfuTm1ba(UtvFtMhIzzSr2mSr~ zeGrRIkUAFGYuFazd0SLb5#ia%a?|549V2$e!eE7B?u|@WPad~@_Y^K(QtYtaxsr0O zkfO3OyeaG1X#ob^Mqwt8V`QqBc{2ArFyeJK>D{A&z9|3?co}dp5DUaB*#(@4K9!SOi`MO(49Fcuf;Hg z=Zo9fb?wSe6@~#gKF1yCJ0g z@A%{9R@pqbf*$q*<*$;1raSme_(ME>-k7({(+joHN(NGyfd}IsFIRc%!Sw>JUhQ^8 z>)qvxM+cQAW<_~aZCRPTx|UYR@bD+ef}(j;#6Sq5xx!Xz*Wx@6PctDR+=VAu4j7Hz zKi`_!EjO;xvmpbRgoJ8W2O41=zDJVALxOB-0fESb<8ZD*r#4=BrLlgf zs_|OHpP%~G?zX}mFC7#aJSSp8tH`h>huk-+e|}QJHhRO%ZqGL$i14aPmU9J3E4j-= z-wmiE2DVrzRB*KHjow?UUJ1$bcGAkVdl#$QeB5N3@pZJb>lx4TCa1o}a+QFpnsf2m`1~nX0=xg1KZ9D%ok#2hw&V7NmaY^n(K4i; zhzfsOe%&iV@?+n&$+^?)La~)pL6)wC1$}8{rMQ+BcUf7Psv52sBY`v(4vbM=`>`Lf zUoRaFM+(l^?~Z=e%Zhrw${0)3g)4vsh0V>HlFUUG8-r|-JTDG>A{MI5xevRYhz^Ut zoXO@Z^ij05Caa7^Bx!I5gj$hC9y5vAcfGIzyYdR@0~%~SOm>DVbX(mx3Fs|Q2@rDg zjXNdSEJvXjBwUcPG6C^zB05sqB~d{N-Z4FWebV2*f8)fy))n|8iN!BzLP&`BbpU_R ze0tEF;QNdv1`|ar=sD#K@K9uoee~=-A&T@jsy4t87ErzOnt;m1VC}t(U)(quvL4pY z_v6%Qk658K*nz4WQ+&H4T!KQZ;sh3m@M4X&3-9u62usQ$KnM9WU8?a~Q%9$uwszWi z%szALreu^s*Jc*wJ<}w$rk=ZJ#C}K zC=r{7$R=ADcN#eO{9`oq~#jrq_QpT`SF@+MhD28t@TS z1Mm7e+9b+#)7kLnJT)}&o8oWyM9Tv=4gBf~=HGIu4a>o5BtC^!6C>kPlJ$OjQ@`&C z`LM8bZ_?lDJJHFi1A$Z~4>!nzE};FHrod${_TYn26)WSzKops4ZlbF-p8OjQVkFjf zE|jzOe=+DDP$>H*6`AWOHQzdHT$Ny~>%QQ8V!CM~t(;&EP%j%a{65V?8Cm@OBc+A<#_EO}=v>nc zj{=WUe(>9UIxjRYZhl^cdL)S|cw$CKh!wU+4+%un!wO_a5d2)9S6hobH#b*OTIw8J z45p246G(05oWN-=r5Ofm2OkRhtB#FS1ifUZX*mh!(N!4Pt4N>6iQDJ|{~AqfeL5~T{(WcnJ4jLFSy zI0;&Bc78s;s0cYJDJfi%2?ry+l7GTg*$B%FBcIW9qbDSl+m;B*2{=K*5cqZyd)X~V zfs(RQNNQ(j?s#Ymx01F=NkK(hptQj)*87~G0fV$o4O?;o9Nj~RC(XD1^9>Y}$J-6v zx?PkN_XXRhuL&ta6m!3X0+ z6ociLP>AjE5vM03$K6wyWN0RxXwNk+2r>zg6H&=aeA1YCpa#VCN$CKey>XeUuafuf zJAB#aZKP+xQ!6V`l7TXYhE@trpVTyFP_?wQVutXfx+VBkni}sfZp$5nvYjOz@tl zKy@xFj!p)jJy!|tChB+20hyaW%SR{^z;(8GapTlaKqJS2j!aupRTY*WtfsFY`OZ+F zKq2K_$&Vir?(VOdJMgOm1DBeWB_xC^n>W$g9!@)f^Zl7(B99g4cYfDDdO1b*YfWxBSNPsQ!i1PuA2szvh-}Y5m2nh)**KMJpQwU!raRRB>N+HzE}`A~DDQ~yzx_{nmo?Q=XVU?uKAf+TEMv5~ z&gAfF1m~;XXB+oNRnp*|0ikjUG2NKFnSru&KtCiso#bMW)`K=p(KFSZRDZGiJ@0Mf zSZoC<8ftobXbaXgB=*i@x0^j=fjZmOt14mp(E&Z3c;9=zYf>dU#BbVIq^4Nyf z2JT+BwFT~To1WtaZys%$NY$LdoyxY?2gNsy490Uyk$uF1yt>R8Fh$ z;Cx1`7>+s&PuX~L`rjeKLNuygatoDvYl5cm(86`U3-mazOW07t(n~ZjmfAhp#M+x? z6-a`7>+pvv3VQK??k?;TeNwalvYZ;l$|dDdGz4hk1X4PZ#MaiKvtnWE}(ZdZ2P{Q zuQ;wt9Sy7m)XQUpNA34 zG}XuXYwCD>U6dqTW5!LIpBg?a^s!g$V63Q4W|pf>v+7njSgdjGVYleU)xz`B%8m zfOESz8fpd=^27@d_|ORpeXgG?{Y#U%TK}e^+FIM#)>eV(3VmL;)0L$id%1P5?xk={ zQl8DqpOyg5WP>fCL&qJL3arxLUJOU_@w&=i%HIC%xZs%qH1wMcDM1lo8^f?~!OB3I zF6N{=ZJ6lwUjv6ajqpGJ3Y6l9=*C4}G)FVo?PVf?#kp3r5@1~+`^~^SvkGB zL6zcw{um1=Z;a`!lWH~!uPHpW424%;UAKw-1Xy&cYiMl6<>#pm%5l4ARQx=>#|Pkq zzs#=B>rb59HNP6zem`d9C^w^N;B(=4F(u=e*V3}&s`zgF0;SrB_cu0n+Ci~&4Cz^z znf27IYGr@^tfGY1?M4{8!^*)vh(weNA8F&|on^u=VJgQbuQ>`=Xum{#E9f z^Ln6IoWeU(kwO4>#kc9JH*_XA_WhT3hqd=7X(05~HncA`)1<*;H+0WXvKn=pbNp#f z0$_pF&*KJmvEHcH29XE~qOvuwkoIj*1((IAD z;2~fH`(64GVvyL1@4r9biLo_EqU|f#^7|0K#m8dUige*gVmmJs-r*~Vkee##k)5b~oeKT3WYL1xnN;g2^YwaOvzp8`BEJ$QS@F;`v_o2x(PE ztCOFU6!(wv@>&kmA0R+&WQ*178h|1UINxqjI@Yzlg=<>@y{G65sd~YFSBO**G!$Rt6gN={8Iis9@LRwIqUg5mbG5JxV93#QAurqz2CkXoO( z0NK9cOc(e@$F*IB8uOQlzreo~V~1cCbls*?RsaJeHQT^%(iS(G=j6;#l+{M{#Ocme zwM zM$Jyt+U2)su$WQ}{{U;Q{Rhn?36a|^{7c{7NnA7}L(A};=9j{K6m2>qjda!#k&bhL zC}PmJm4D@m1(DSf=El+e2aGVKqxeWrC_Hl=Z)w)rC;Y+`rF&c51t;sQFju`D1puVw zCjZ#EA39!&Wp5=L`RgJ$^k}HZeYT>Dd((?t_j0gZj%)1vAvi&F?BI5P{9>5+{^=@H zhUOcSrnYwcuzZ~n^O3W~jLOl`(ZyzD9pJ=w@O^{tYLWuUS-Is(f||7iI{rr4tV?Hd zxR2k+UJC=8a5#e@xrpdIrSlO<@bhsO$Xn)>l}&iC#Dt9+MZYbna_mEWjnN;?s|)}> z*K=0Zwj(HW@#cY_6vD$9L)kq}A7YI?sRy_)-TrPrt7dNFDbLEf<*RwjdV zKgLAM4HXdrPMuYE2;*BK^5WautynMtvzpys5wCl_+iNRqmwxDTMm(B72`(aTKI^!= z00S~Yml+7=D$|7p2_>C`IDbZ>nswJ9V`Xv>$hy>GOt)}enp-p~!0xY1_gAwv25I5s zyOq-E_Kz0MJoEEuhV!QwnV1Wdm18l}PlVF0AbS!7*1Z&%oi*O!C#~?&UKRE4Wak71yMdiC$EXcaNmuav;HL#Mt*Qr{y zWJl%%_GJs>Zx4S|3E8xM?yLMWM28bcB?s5&YW258ffe&jVxV#wygJjofhw%gf&TXC zOziUse4!>jmf&$KY9Nj_3X_YLerctJQ-9vl*_DJd2?7#gbbX{BV@#N8SLEdc{5l_&j-fj}pK`roih7q22#lWd!gN`p+r9PG z^oV<0Ck)X=dp*`Fq+DI=BHJf6sr8bnr7Q`F}0I zYk~#w4tOpns$OC%wyPs6GfE>{YuPn?tgy77-2rI}y?XDw=a1m&u8tN63uLevpU{TIDU!w@-_W zn_=pKN*OmW_E4~zAdw+s#{pvdB3}s_rP;q7{U|&2N8@YX$16wt*TeF*%==vdeGPF{ zK!u?K+b0590nA}%MJUJi;iV+|Z((o;^*u)=J*TwZ3|CuE(Qt8d1C!2ugs=6AMj~Aw zc@`bF&}@IWoa2mb&7w_Vhy1yju8-h-r`fSE=uGe*)uWK&7c*55JD?^L{YDn;6~d*T zDHbo^THDgGc$-OgG(bR?;Oz77kB9OZ?a$WU7;L>iE06)HFK#CS7d~>+En6`X-rP97 z>;r5Vlvt{00;ce4>FJ5Y8%}Xc!d`7guiQV4?2V=&z&5uN!f45o(Y|}$Z{dr02#VO} zb3MgnSgP>}=Yx)CN)nWWJ9op-Z~wcV7_4L2Jm13(W*j}d44>U%I*ZKd+xvyRKg11L zm;8wQcsQ$3{&;Ai?M2`!YodXUs%`cTH;}4YGVtN@yIfnma?tyG>z`~m-Eyx3W*34u zivH3{8~E2!Xkzo| z1^XA9eH8zub|*-#+vhxg7r#^X^rFpl+e&2M@j%7j<+@1vXAfCn{#IhT*RIO@I~rj9 zo6NgVmPi1qUGX8S?sXAStylviTJW@Lj!`>9cA|2zb(IlSNPS!tG6_3;oW|Yh#CUHwW_!!7pH%yJTsYB-H&krx~U2M*qP$)7&A>wkQeP7PYBZ|=7HvS~nnAU}A z%umC26o-sYaj~xQThvwhM#?T74{h;u8{k0~eg((vbAdvF-Wb`Jr6wJaSiUm?Z${UiDJI{MyB(Xtl&jO&*g88lJf-&~- zGD<#Ul;BZ03O3@l8u*y0Ma1$8a#hB}$2G7wHjjFo#$tsXMeRj1qA~&khT1Urb71n~o$$;~;i( z7=HL!CMQq7rw|{kl)j6x1v>xZ&c5nPvyQN*`pziRsqyc*r zkR0fhp=`&7Z5-Fd*7MM#15#?gc2bOE1W%hO6_R}-Mp!#Bj^-;Grdc0nSX?etOSvM& z>jQF@Ph~_Bi`Z3rMw4BdP~X2ix`G=(1~7pL`?S7Hex%qnB27h}A8alZSJ^ z)#EJm;jEJ~;k9vi=hKN}D!Z9LdPYXq9%qm1FCHRAdcUEXnpk}iL)^nDb3_27KNjV~2T?Aiy-5O`+W{CQ)p|~vyxS{X_Q^!*C?JUE7Xy^0AQ7osyNwT8;{jZF ztCpMW-%)onv(ZBq^wCsj9v~EiOs%bLEiD}5bN(Eo9w%S=ZGssS_b$8ZWe}n%v1uZx zUS|*HHE0Q{BwHk(bg~F84vhEeb@;T*opg6KJ4^U{eD`cQ$i}6Z>O}N>H(@n3I~zQd z@Oq;cTjV?u{#8EZaOvMGkCB7eT*?TUf%c_@B{Orqo_d>^$;D=DQ4)}?^e}RWqs-D^ z;`cwAKXabfv-)^{bkJ;+r2_JRp&PWeZ1qgtF_X#W9J{tz+&(9~d z_dFar=$+*{{mzN>c$*=6nY4!iz#y*7?I)^GY6+m1jdo&+v83qRMJ>y>a^P!jq6fF= z`o({sXPy1iY`3 zy;~=nDFS!UrSais3)Hz@h2~pVf3z)N&3EyOnhhgSvFt1}+egIJ-sP+QMN{V=^scB1bEOoKEDe@r_Jz^xFNdY692OA+1jz~8Rg5Il zHZ#7R_lL&tgSn-p-F@9HKMeR&aFC`7NAx-^6=~nTH8Sd*5(Py-co=~g#Nt!)MX@P# z-_49`$H{dR_EJl*SfB`b&|YRqjIh9!l6dgXel zCwAY>hVgjn(HXQv&lBx^*1k}1?Sj;(>L#?%W??&zv4%pw_HboXyd=noB@V$7ENA`n z=@Z}t!d6NlPBFWQcY`d8N1B3GI*KvU?|dSAbmwwd>93WS8-yCMq5^e~6I>?^V6r!!#h*><92lv`DXsiE zcpnq9Yk<^*zCX)DFwG&dN@%GIUj2;ZPGz(8B>a7i2-;=nuj+ zxupG~3UT5dZT7>ar<@(*bxnnST?$cnZR3_3cg}xG$LTt0TEkM(7|Ew};jjDXS#mBg z*c*4s7EpGmj6Z!jE{FyT)Gc57s<z8xqE6#>?!!Jr04A`iBc}~7t+w$^GUE* z-xtaH9<$EWlH}i-zi~F0FWuV6gc4tJZ)f;hEVI-jbVrZb-Os!K;C|JF&t3fKQ6*9P z<$}5)I9x^o;oqgEeBqy;dnUO72xBUlE@%TB#9P*C+i7E?=}b|r@}6(BtBep}z2Ueh zqH6U|(jsp4!*$T;sqAf^&f2ucWUsruhMyJ&{!i|JIcSZnD_b(Z+YJk;fj&I1Oj%ndkXBQTNYU~sTi&1Db2)?Y`?Vs@wO&2XOkx*Kv!GS={suGeR^~LE@Pizo z6kLkYmr@N?90($t{ckR-OtCi=dpb61ECNQ>B9YgisEq||-8<7vzRvN10+>olO1X*6 zqp5~DRvy9hzt{$ygK?7O;dajjkvnSf;^^Wu(YCX_-`XWD%hN#l6Pj9$cH8Ne3#r3B_emlh zYSW+3q&LS)7QO<}D3p)I+%L}Kts$jb9yc*0>`Y>x$kj21`7y4z z7dYM3dS{Uf`gQ&Bn1C%sEJl^9Wbll=rjmF4z4Z-m3BK=Urjw-CUu0vsEl@qsO<+0L z=gPW{w48r{R&bnCO?c;0n$!y^jMuMU_drki^nj}qT#l$%fk=I7_V{!IeqcNQwi8E-{> zCzAA|)gJR$viNO&{w)G9tH}ZySvZGRu=6;V(hmfPg`8=Mv57yfvXXoS5(BUH;r_5q z#%?h>H;sEN;Ngnbxb9&A$oJPr2H%J4e3cmd6_cz=w;#oAi2A14Yc1zH(|=(Q8AVId zz-AIywJ3QnlZoK{N#2PCXK#iLIIe3Xp(f2@KSEZtf*a$mxQ`f{ zHi_EEaMa#BD1O=ag3uq0P{Ifw2>g9mnNJRdczcC2qtU5ZJe zA&AhWn2)vPIPfs=OL~2wwR6{SN}fk4ujAEPC72|yM^}mg{72`}3o*ie++aVguRRy> zQ4FIw<!dzGe^m?oiaouyQ?K5XTWygmN> z{5&!&zg55v31?))><#Gc20MDnR52hjaQi+y(?KDJ=R8FJN)R*G$oHE2>UgO)#g9>B zs8i^^n^oX6Y~t^b-V2T71DONoe1S|fQe{$R&5n}=3my)Q$=zQ^!GVu3M)<@%xNH;~ zJH-VHGv3tWP0XQ55nCfQ=1^z1unIA%tg?ii5*gM)@E@UYE&}3HQ7>kkQfGx(; z<}Iwp^Io3t{O|>1e{#d0pKsC>bsZAh`JUEugoh$x3>dY8bs0xZi<{v^C$i@N5Hbjp z3=&ZF2H9>o=b=vo&CUXCX`S%j)jx1k=QHyz*meLPy~ux&`1M3A?ricE715oO7#2pKTxc2cN)s(}Rd(_)8*OIXJ*B4a!d_qO5J zj-xm_&x~0}4DG%r>A;wnC4le*gJj#Dm0iObStM#vI{5QYI5y;uP{r{-7)?xd`qgmf zX=Z8^PwOajBZZWY)<`1vc?F!kc9^$|X0aO$QfFH`{=NavSxlmU-6w}$ixh(>jaU() zxj8MY7agppb(uZ4U_V9%s1aO|)B)u`zgB-HCU~M{lV&a)pDwO0D5eXUsxh{zej#ya z2u4N5Cx5;lA;6f+LZH~twRv+ayUWV(BlikD-ANwh;}{(?K6aAMjtvw!+iUkM^=_8s z3Zfv(j5b{sL19YFne&BYLg+GlZnDkiK2McfF7H^*gTu&FNYb}p>vL<3y-O`fLPCN~ zQ6n9Yf&yeEKO+umGO-LKTD0r+%ffK*5iV||4g~O56zi9LmRR*+hykv2o}0gN5FlS% zKDjCsy3SO;di!BB{ceX>emY}6+jrBhVcch$5DknfX+I1uQNa!~M%F!L3>-J1EOVJv zJGd>AcayX=AN$alm4bGJE(SHOmr%YEHB*SxWvldV`}zCV4V=$vsBC~;dt05Hy*C;~ zCcC3)UhE?Od?(t&LgAL!Oq36aq^Pn!hgEG9_+sqs!aMbIrwypSj;8L6japm#`$y-D zaj3^L*GVWWv7x(g$$PKr-KA-t5+tC=rqYzHZ{GC%f}tm!m3GD}ftYQ{fj@f|NMru| zA}u*J-0?ZPE>C}ea@l%Q-DjbYc%<>rOX{CZ)MlYGnc;hNC&%D6U&9loeP2&VQ!f6y zA4Ul>ELd?YgybTR=Nr~5x7*DOz4FcIfczNV3)YMZa}5SB%u7JukV#{ zbR>vai*tO55Co*)#H&k7F+1DWc~f16xYxZ_gMw~Qp4MNU(4_{@XZS6vB>1gfTy0{? zwZOzpi-Yr)hI_~7-78V=04{{CX)+WpUVReTz1mdiZ=ERB?!_fjjG-*c6N+TE61*e-nR}Z-V(B;~!Rjf8%%eD*_6$!Uo;W(y$>`^NDb@Zy};)v|VB1CU4)u z=$w^mpmnOvPqj)=S6youb%NU4>?lH~5xs1*2Hpa;@cy|;L{%UE!cPPBSC<*{nPCUbV@Hl-i?l3YIS z@ouGF4FtJ(Oye`%EI$-$q2XJzzKQTZKg0P5VU;lH+E*AD8&`qAWWV(k@=f1&3BDf0 z@I9u)UnLp#qzSW~wPbC#%dY>PtFjwxgsGIM2-ujynT>*j98i9j@3g55o<&|NF7toh zSsLky0ht-6=^1DmKA%a(E|J^MUd_*c_DgxHbG1s)svU13W30kRg@#i@M`t;auMQAY zl{o*@1R(e~#B@X+b!e%Q)X5*UY*K`3xnD?W4=QYQ2d z`w14v`S#}3ld3Ye9DjTA@zK8zjDI2V4ID3bWFzZEr2#pXA>3M21zX@`G zsVSfsK58%*l+?p-oG5L*=oQw}Q@sFd><`RLT|D;iw?z!OMg6li!MUq!Q3C&s1X7P@C*H3=^NDd#)F+IYjZlr>D#z=;7Z9 z;cs)3ej{Ywv@*hL3>Utkm#t^Pyih-s~=pKIM@tPg5+#{9MNJ+Llo^3pQ_XB zDB-(I|DEo(#gIK~Vcw;ev{kVm2CI({1GX8xK4j8uO&~r$#ddN^ruKdf=IS}X1Em!(2vrjtl)!DVdIAfXk zIV=f!EgEt2fkU4)!~gOAXbkWK$7Omag>#plK1Q*_?75V(OUn-0ykLxh?N5!$hymr( zTv^uXXj%<5s-NMMW>od{(P8T|DhmbrO@|yAiuuP(6Y5F~f*_VPip`r|&~Ug85;-#B zGwm=dpm^*w^D3YS@3Tr5G4^YjvI$S;HoQ}_?iXd8>+rfi;4*BP{)KaO(iBj}1Y?hp zqHzl;^;N|DZj-Kno`&vzFpUHYpjVhLu$oY|&=I+sdI!D%`Fm zynw|{w(5d8x}EC}Opdb>?_keYGni~GZ-)xKbd4Cp*b#(s42YuT!zH@_%g=j@^{7!> zCYioBRVlU~NXp7Su#QcM!&-Fzo&JHd25}=VBYh>m$&RMiuA`H8h9XhfUzX@FkROu# zdOXx)Lln}B+*hWC9{Xiqw~9VDQw`hUWM)1Y6w!MFY=gDOrt7Xj!%?MB;SWY6Utz*e z^$pm`!U%;XO>6Hva8*g|F~66UA(gnxAcXYdLc}4kaBy|B(8RxrvKve)A8tmgKMvjb zX=V3Gv+abT4p;qU*-n0yZKKA={~}^Gi$E38hOcGRd`=3`KsGX|@+*ApDhiHnUXpxY z?iXGd{vA8hZ@^&`NT;14;4tVgo-p7Gg)ibgjj ziK+X;fb%il>}OHLSBB=Fa#M_^OX)VulxD*9BuiS`*#E#!3xMPpLRZ%atA7jv_VMNw zCey0h&s*>al#vK%@95oHCUu@H^JfbsQd@-C~ZZJAKoz0NT%4nD+(~~4Eje_5Zl6pjvM@9O&)9~& z^yD_+KVP*LV$OjqdcID{3Y#Y%BY<$VFSL7yKkf2T;9EY|+P)Hf69tM|9zONTHoS>I zlNu6LYg+~9g952?HHs?%$%FF?1@+3iFPmTgRnUCR#TVroO9tCb01fs155PpJ@f>Y( zz5-Fl5J|GY1f2*7U&FzcXx6DYLEj<+>Nbpp>5JD{};Qnj57t z7R8};!jQUFHrQV7WSY3qOd!aoM622oIqY^2Ud)!8$sZI<3kCInQW_csLH@PDZ!)>C zQqWcS-aY?TVC@?`s)e#9axwK@19cJ)Od@o5J{`9Y&#Sy=)0aZ@7sV zWWi8`)%}UH9svalF&Ct>rEsJuxVgX89-zc*O@R|CLkXE6#wL@go zPh%MpR{Q1dEE}I}h;|xy-mScpv?mm0q^DPZnv>Vm{;wHr01kZ-kY1Zer+KLatY1#} z12Ad=G_TR|i&D$Duo5e~(gG_*xeOoMQ#0o_!#-es*~K zVc1@Vm^brw=ZKT=FaV(pO=tA4-R6HFx z(AfaxJw+6{p4ITYKX`RM;s1;ejxJrSM$AATiigZ)W>{)1i`>#fI**h`aw&)NOkEm? z#h8+MW=lIIG&D#-q3UFz0_JJQ!#f31HJ$Axw;AIv2O7UVIx`Ol@0WI6Ouf(Lx(p}u zwe(9Gpn&_`nzWwj3Ij3S98*7*aQ*3qB14EG!xkRR+>|K8H+eRbE^2_$q3yy;HXc@K z_#^WxD<~N3eE0(vpF6z&6`-IHFE{`JJEV-sqFC>^iXq`y${*DD6wa{7g8_)Uk4dVR zfC6;GR3xE`Uy9|14{uj}E|n1B;f{=_G=95X&rRsgO0m7RVd4EZ05i3Qgpoe~eY_O# z+96Dw7jN!>%#L4nY@QFimmuzfq`>M=3t*9!(*Kk;Txtx+}zi4BH z0uz);0*ucq#Y}U^x*M$~LaY*w&)hjVPC0t&LIq)wffJB9Wd@sQW(IgipICIrE zob;cLk9D&LowaK+PvSqVIM7u$@lIMoq7EVZk`pVM>^#$8dgbvtCdIgDRK*hwf>Zqw z2?wp)b0Y-9*l_IWO@f-|e$@v6Ad>v={{qM|BuFzQeV!uKgUe4`&ke#t5_R55QVGBb z?C`Y(bALEb;& z#90h2)*mc|v{Ec5D;Mj{(~gKPXsOgL#ZgO?Q+N|AX54U;{g41HNHaS-t1BLg#})d5 z{GxlG2R?~+nOsE6j>!A5eBB#5X4~&c4`)1EetTIS;>i{(eh(wz0|@{mup6dP=^%k? z=#f%SiXm$^W}eJqRFm&0cA}vQ140ddDzXXNCcg{my|+(`5?3!J0IyL1)kv&6}*&F#kgKn>fEwqhmF5*^13 z&zoac4DZAT`PX6dwT$}(2kYt{`s@W2BR42A)SIPJ9i!Ew};?on=&Nm^n?#{OwC z*`8{WLOl>m(GTU*Fr_m(i#5i|O~w-h&I6pskG}_i07^M4ZPm!hcV_O?4aQh}yQVFk z|H><3QSDPifPk@M8Qy;%jN_osotqIO5q4cVt&ns&jdVJNOeXD#3mJwP7aBc!Gyn~s zf4&y8XMcpMsxWG6D_m-}{Z*bnMU%bLM=C zPd{A)fFT?Xdy>RV!O?Tuxe$(PnfkZCZ6dF}T1J1NQU~07FC(?J;C}mCqD7{$?-)6Y^X0T8Q z`U@{4gq}Tv7o^ikl1|%LC>va~CD||x3>h*6vMdAOaO|-&0GQ(y?Vds%p&tt4A^$Xs zQuITi^X8^m6vsn_M=-S~&7$~(Ao%o@^dC{q^VHK8=a^$|cM{yp`;lw5vYwbFKtvGg zCr+BQij*TfWeAXYb2e-MOQ(az>eWxIASC%pI&B6PQ>mn7%4{Jr9HMp1n4k zZoKh1a2&-!2X%G&OaIhWo`tJ3J5uF|f>oaFp&!bbG+lU|!r=z9s|NMtWKEm)62AFn zi(|Un<;q^yojLp_5TBdLe6@DYoWab$-(?3(n5~KC&j+DY=RWvgcE#-3i}!^>m54+l zBpePS6beC-B+HahXJfwq{(G!lyBdIsMT_pl&woA`u~-^gw(Rwk5Br&b{3ery&0cOz zyM4TQT%l%Gxn`(Pb5Fl@m`7mk|NEIMw~*WIl4V&&JRXNA3T3QQ*bLi$x7)PXzb{&} z8so;@20(-?2OtPyUa7Jd3mJ^D47zsxGT622+Vs+;Rb}^Bq~#nmV}@DEs_UFFZrnxj zU@&uOI-McOWD==V%8Csst^|DZ0{iyui_V?R)YlVEn1Suv_aPFI(Ytqz4-o7){jhZD z*LeHww=KrG{q#e5T`x+fS(G>Gf#8WJp1_zfV-OAp%3h~XxWNR?S)8ED=f2{zPWe?G*#=Rj@MJO?4m#*sCpKo5>g1a)w+S;V zEZV-(^^c#6M%&%wwLAf`%~*3YSZgcTi!Y{xex)1UtAF+-)BO1b+A zWrb(RkQ?y*_j{cjXVYw{r8S`Jiwm&y=>tbKKvFeU%uJN@v-a4vf~Muj~B+kSo0jl-aQvT;)itX zV+?cWf@qq~O`629ii$~_MX|D1Fc>7EPzb?b(B+kJp4nrqt*uzTd?^5e!Gn8a)v5=; zm`Ubs-@XsJt{3Sso!!7)yLMsBn8UDY)n-?(YQH9v#5Wk}Jb~BaU$LVtJc9>ck2PzyJ55lt9cqhdAjTL= zY-8-LzQB3_2X|P2Xh%LYV+L^d-C*G`r_Y`pr$-*y=SW3~Bb`pOR4RpJGU=Ezv%5#O zD6yiV0z-!m1HiC)^)~eDcO^0z4ID?%uU{QPAvq_kpN|KE!4RfSy%JYmc@wIut2)$V zvQV0Zy_PJ?xbC{^aM48BkoI^>NT_+K z;i}|xKpe-tP>%4HCUN7W2W?1-RNmT?j-um0Rdrk|r?gdzj!S7ssFRQet~4qkl$YWV zanyi_YG|aI1V?^bd*j#j?#@2<$IR@`?2BVC32xvgt=3-Iv-8Y+=lA~nzL&xGsH(b< zPe22ia`)YmE3QBR)bD(!@k{;v`b$1vKn4N<5eWG4`TTf19&8q9r|KOZ9_CMfdIOt( zti8RN*|RIGkt1XD^$nINKfuc`zf4opdX69OB%My> zi=8`v!?I=dlPo`!Dr1x`KQuQt^XQ|G^4@#zVi=i%a*pjI+H&-0ABz^6$Ff+2 zxJ67?Zm*Y#pR`cb1H~HyLA0eGi z72V}|vhqWz=KNyq5&2H>$;%HDw^Kk|^t z$qm~qf|S$%Yhaw#R-wr%5v8*a#g0kC?i*74R`?*j_D?#T|r%rOh*=Xf%CEQ9^qPX%~B z77b)eW22U?%jJ? zzI^!v$2l3N#pLosIddiG={dpm*FVg`gNLm#PA2uZ9r?LQ0m%#7aeUst1D;>2>vg13 z&ok{bP;RfaV964A@kOMrE18xSLme90`&HWc$ef3=`DjK=}{+8@_dA%A{RpnGxh8!bH+_|HP%MVPV{NU`xnP@l3R4B@eJkdgM z|NSk@oY};|gYN+vs;c4hd0b|y(C5K5-^Vsv@cdd>dP>0au>uI7xmlp=uxXPCqHWtU z>d?^Bw+a#afwiMUj*TVqD)?zvFOiv4G?+Vg4)f3~ z+_{^EtX{pO;JZ_)G>L>cD7|^5Eb?-p)kMnLyk_~Q;vgD9uspg;SWpt>5?twVNpBAat5~RF5fZy-2 zI9|mBd%gJewOm`CYqXlOi#}VKtt{uI188Kkw3BPRa40WgOGEWYO)_gmV=)LN>lW@~SDc#b)QWo0W{gebp7({!opy6|{(G)>Q{ZaYGA zpQ3#c1yW{+#bU%_F>AK50LF<#qTF`dQkt6nkp&Cp6o4roSnhB)_k`=ZN<~G4czl3o zp7~!^toWyr#nED5b$-^~-pTguf8^&se~!MsKERW`{3ZjET8vt|064j5)i$|ON{N7h zC*k=ua4FEn83`bOx;n}2wLu3e0cjj?p;Qj6kY zaxylSjT;fOXG0)>^3X%KpY{6d-TM?JT&rnX7D)C5Hs6J7Cu{zbZmV*`$S^oK z$k5Ob$z+0Dhg}*-QdxO6ix*$Ol~d2JV)ZKl8!-tR2*7jFgTi>I# z^oTkGt3`R#su^a!TH1d|42F(7O zXta{*>L}IK5u(u$p^%SI$e-;wHaF>wF*rCzJU+s)V=+GXAZD2(Y56i*o|Y8Zb9aKK zRPwJ_ROR&1a_b$J(7O&=pMXWcJAA4DJVbZ< zIWqe}M!--DJhu)=GEL+Y1<=BUlEa4uU;nz~rkfD4SW0~DYo5%^nJa4IanBARLKkV8 zA{9jyre9{?O-Hwj2^Z1W=X#PeZ;I;aP;Vq@{MnVjbL#3Ey-lyKZOX+QxruiiV#kdk!unw1|*j$ znAH2pvc8i8%S2$ycaXDwjt!g+7`Ph_?t#U?t4vp!b^tQ_iv$;3AlbYbanVKa!3Qa2 z!v>F0UcT&_M562gDg8?nMYl|u$Tsfh8n=`Z+@;PNne%5#Ij<9aRth-9L4?b3b_2&| z>@k4RSD@!Uc;jVQ3v6e)iZ(&YZfreSQ8r4MX3o zC}kcYkU|KNbFyt3BzJ$Zq6q6|$r7NNSldkgvx!VqR^v!1g@Dl{Bp!kG|AJ#((;>1t zBLI}IkwCIx1ERhjqEX4RWkL!eC@ZVGHkB${FQs;)5PpOZ(!`7?L3Jsz6G9480PY(- zIa9|Z-%Y1j2qC0Q0Lfj@zZDMcvqFk#zIWaU)~3^;%cRsU0p)xt#d#oRnptFh!ehHrLK3reA`N7^ zA#(&We-R?t27_+|0 + + + + + + + diff --git a/Timer/res/layout/countdown_simplified.xml b/Timer/res/layout/countdown_simplified.xml index 67aaa67..399b647 100644 --- a/Timer/res/layout/countdown_simplified.xml +++ b/Timer/res/layout/countdown_simplified.xml @@ -73,7 +73,7 @@ + android:text="@string/countdown_start" /> \ No newline at end of file diff --git a/Timer/res/layout/stopwatch.xml b/Timer/res/layout/stopwatch.xml index d419556..275b7bb 100644 --- a/Timer/res/layout/stopwatch.xml +++ b/Timer/res/layout/stopwatch.xml @@ -66,7 +66,7 @@ android:layout_width="0dip" android:layout_height="wrap_content" android:layout_weight="1" - android:text="Start" /> + android:text="@string/stopwatch_start" /> + android:text="@string/stopwatch_reset" /> + android:text="@string/wordclock_plusadd" /> \ No newline at end of file diff --git a/Timer/res/values-it/strings.xml b/Timer/res/values-it/strings.xml new file mode 100644 index 0000000..ffd7c1a --- /dev/null +++ b/Timer/res/values-it/strings.xml @@ -0,0 +1,42 @@ + + + + Sup World, TimerActivity! + Timer + + + + Incrementa + + Decrementa + + %s clicca e tieni. + + Slide su per incrementare e giù per decrementare. + + StopwatchAutostartActivity + + Versione + Chiudi + + Orologio Mondiale + Cronometro + Timer + About + + + Aggiungi + Seleziona una timezone + Rimuovi + + Avvia + Ferma + Azzera + Giro + + Avvia + Annulla + Alla fine: + Conteggio timer completato + Premi qui per terminare + + \ No newline at end of file diff --git a/Timer/res/values/strings.xml b/Timer/res/values/strings.xml index 39e2dcf..0e2d1fc 100644 --- a/Timer/res/values/strings.xml +++ b/Timer/res/values/strings.xml @@ -16,4 +16,27 @@ StopwatchAutostartActivity + Version + Dismiss + + World Clock + Stopwatch + Countdown + About + + + Add + Select a timezone + Remove + + Start + Stop + Reset + Lap + + Start + Cancel + On finish: + Countdown timer finished + Tap here to dismiss + \ No newline at end of file diff --git a/Timer/src/org/dpadgett/timer/AboutFragment.java b/Timer/src/org/dpadgett/timer/AboutFragment.java new file mode 100644 index 0000000..ed62f88 --- /dev/null +++ b/Timer/src/org/dpadgett/timer/AboutFragment.java @@ -0,0 +1,40 @@ +package org.dpadgett.timer; + +import android.content.pm.PackageManager.NameNotFoundException; +import android.os.Bundle; +import android.support.v4.app.Fragment; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +public class AboutFragment extends Fragment { + + private View rootView; + + /* (non-Javadoc) + * @see android.support.v4.app.Fragment#onCreate(android.os.Bundle) + */ + @Override + public void onCreate(Bundle savedInstanceState) { + // TODO Auto-generated method stub + super.onCreate(savedInstanceState); + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + // Inflate the layout for this fragment + rootView = inflater.inflate(R.layout.about, container, false); + ResourceFinder finder = ResourceFinders.from(rootView); + TextView tv = (TextView)finder.findViewById(R.id.textVersion); + String version = getActivity().getResources().getString(R.string.gen_version)+" "; + try { + version += getActivity().getPackageManager().getPackageInfo(getActivity().getPackageName(), 0).versionName; + } catch (NameNotFoundException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + tv.setText(version); + return rootView; + } +} diff --git a/Timer/src/org/dpadgett/timer/AlarmService.java b/Timer/src/org/dpadgett/timer/AlarmService.java index 84cba9e..057b810 100644 --- a/Timer/src/org/dpadgett/timer/AlarmService.java +++ b/Timer/src/org/dpadgett/timer/AlarmService.java @@ -104,14 +104,14 @@ private void countdownFinished() { NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); int icon = drawable.ic_dialog_info; - String tickerText = "Countdown timer finished"; + String tickerText = context.getResources().getString(R.string.countdown_finished); long when = System.currentTimeMillis(); Notification notification = new Notification(icon, tickerText, when); notification.flags |= Notification.FLAG_AUTO_CANCEL | Notification.FLAG_ONGOING_EVENT; - String contentTitle = "Countdown timer finished"; - String contentText = "Tap here to dismiss"; + String contentTitle = context.getResources().getString(R.string.countdown_finished); + String contentText = context.getResources().getString(R.string.countdown_taptodismiss); Intent notificationIntent = new Intent(context, AlarmService.class) .putExtra("startAlarm", false).putExtra("fromFragment", false) .setAction("internalStopAlarm"); diff --git a/Timer/src/org/dpadgett/timer/CountdownFragment.java b/Timer/src/org/dpadgett/timer/CountdownFragment.java index c283b78..2829abb 100644 --- a/Timer/src/org/dpadgett/timer/CountdownFragment.java +++ b/Timer/src/org/dpadgett/timer/CountdownFragment.java @@ -186,7 +186,7 @@ private void restoreState() { Button startButton = (Button) rootView.findViewById(R.id.startButton); inputs.removeAllViews(); inputs.addView(timerLayout); - startButton.setText("Cancel"); + startButton.setText(getContext().getResources().getString(R.string.countdown_cancel)); // timing thread will auto start itself } } @@ -262,7 +262,7 @@ public void run() { inputs.removeAllViews(); inputs.addView(timerLayout); - startButton.setText("Cancel"); + startButton.setText(getContext().getResources().getString(R.string.countdown_cancel)); AlarmManager alarmMgr = (AlarmManager) getContext().getSystemService(Context.ALARM_SERVICE); // should be unique @@ -295,7 +295,7 @@ public void run() { handler.removeCallbacks(inputModeOn); inputs.removeAllViews(); inputs.addView(inputLayout); - startButton.setText("Start"); + startButton.setText(getContext().getResources().getString(R.string.countdown_start)); timingState.stopTimer(); if (alarmPendingIntent == null) { // should be unique diff --git a/Timer/src/org/dpadgett/timer/LapTimes.java b/Timer/src/org/dpadgett/timer/LapTimes.java index 57c8fe8..3dda1bb 100644 --- a/Timer/src/org/dpadgett/timer/LapTimes.java +++ b/Timer/src/org/dpadgett/timer/LapTimes.java @@ -86,7 +86,7 @@ public void add(long lapTime) { .inflate(R.layout.single_lap_time, (ViewGroup) lapTimesView, false); TextView lapLabel = (TextView) lapLayout.findViewById(R.id.lapLabel); - lapLabel.setText("lap " + (lapTimes.size() + 1)); + lapLabel.setText(context.getResources().getString(R.string.stopwatch_lap)+" "+(lapTimes.size() + 1)); TextView lapTimeView = (TextView) lapLayout.findViewById(R.id.lapTime); lapTimeView.setText(getTimerText(lapTime)); diff --git a/Timer/src/org/dpadgett/timer/StopwatchFragment.java b/Timer/src/org/dpadgett/timer/StopwatchFragment.java index e9b0138..dbcd70d 100644 --- a/Timer/src/org/dpadgett/timer/StopwatchFragment.java +++ b/Timer/src/org/dpadgett/timer/StopwatchFragment.java @@ -19,7 +19,6 @@ import org.dpadgett.compat.LinearLayout; import org.dpadgett.timer.TimerActivity.StartReason; import org.dpadgett.widget.TimerTextView; - import android.content.Context; import android.content.SharedPreferences; import android.graphics.Bitmap; @@ -27,7 +26,6 @@ import android.os.Bundle; import android.os.Handler; import android.support.v4.app.Fragment; -import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.View.MeasureSpec; @@ -73,8 +71,8 @@ public void start() { lapTimeText.resume(); timerText.forceUpdate(timeStarted); lapTimeText.forceUpdate(timeStarted); - startButton.setText("Stop"); - resetButton.setText("Lap"); + startButton.setText(getResources().getString(R.string.stopwatch_stop)); + resetButton.setText(getResources().getString(R.string.stopwatch_lap)); saveState(); } @@ -82,8 +80,8 @@ public void stop() { Button startButton = (Button) rootView.findViewById(R.id.startButton); Button resetButton = (Button) rootView.findViewById(R.id.stopButton); long timeStopped = System.currentTimeMillis(); - startButton.setText("Start"); - resetButton.setText("Reset"); + startButton.setText(getResources().getString(R.string.stopwatch_start)); + resetButton.setText(getResources().getString(R.string.stopwatch_reset)); additionalElapsed += timeStopped - timeStarted; timerText.pause(timeStopped); lapTimeText.pause(timeStopped); @@ -142,7 +140,7 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, timerText = (TimerTextView) rootView.findViewById(R.id.timerText); lapTimeText = (TimerTextView) rootView.findViewById(R.id.liveLapTime); - lapTimeText.setTextPrefix("lap: "); + lapTimeText.setTextPrefix(getResources().getString(R.string.stopwatch_lap)+": "); lapTimes = new LapTimes((ScrollView) rootView.findViewById(R.id.scrollView1)); @@ -219,8 +217,8 @@ private void restoreState() { if (isTimerRunning) { timerText.resume(); lapTimeText.resume(); - startButton.setText("Stop"); - resetButton.setText("Lap"); + startButton.setText(getResources().getString(R.string.stopwatch_stop)); + resetButton.setText(getResources().getString(R.string.stopwatch_lap)); } timerText.forceUpdate(timeStarted); lapTimeText.forceUpdate(timeStarted); diff --git a/Timer/src/org/dpadgett/timer/TimerActivity.java b/Timer/src/org/dpadgett/timer/TimerActivity.java index 384c859..b214858 100644 --- a/Timer/src/org/dpadgett/timer/TimerActivity.java +++ b/Timer/src/org/dpadgett/timer/TimerActivity.java @@ -26,7 +26,6 @@ import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.view.ViewPager; - import com.actionbarsherlock.app.ActionBar; import com.actionbarsherlock.app.SherlockFragmentActivity; @@ -43,25 +42,27 @@ public class TimerActivity extends SherlockFragmentActivity { static final String ACTION_SHOW_DIALOG = "org.dpadgett.timer.CountdownFragment.SHOW_DIALOG"; static final String ACTION_DISMISS_DIALOG = "org.dpadgett.timer.CountdownFragment.DISMISS_DIALOG"; static final String START_REASON = "START_REASON"; + public enum StartReason { START_REASON_AUTOSTART_STOPWATCH, START_REASON_NONE }; private static enum Tab { - WORLD_CLOCK("World Clock", WorldClockFragment.class), - STOPWATCH("Stopwatch", StopwatchFragment.class), - COUNTDOWN("Countdown", CountdownFragment.class); + WORLD_CLOCK(R.string.tab_worldclock, WorldClockFragment.class), + STOPWATCH(R.string.tab_stopwatch, StopwatchFragment.class), + COUNTDOWN(R.string.tab_countdown, CountdownFragment.class), + ABOUT(R.string.tab_about, AboutFragment.class); - private final String title; + private final int title; private final Class clazz; - private Tab(String title, Class clazz) { + private Tab(int title, Class clazz) { this.title = title; this.clazz = clazz; } - private String getTitle() { + private int getTitle() { return title; } @@ -87,13 +88,15 @@ public void onCreate(final Bundle savedInstanceState) { bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); bar.setDisplayOptions(0, ActionBar.DISPLAY_SHOW_TITLE); bar.setDisplayShowHomeEnabled(false); - + Bundle extras = getIntent().getExtras(); mTabsAdapter = new TabsAdapter(this, mViewPager); for (Tab tab : Tab.values()) { - mTabsAdapter.addTab(bar.newTab().setText(tab.getTitle()), - tab.getFragmentClass(), extras); + mTabsAdapter.addTab(bar.newTab().setText( + getResources().getString(tab.getTitle())), + tab.getFragmentClass(), + extras); } StartReason startReason = StartReason.START_REASON_NONE; @@ -111,8 +114,8 @@ public void onCreate(final Bundle savedInstanceState) { } alarmDialog = new AlertDialog.Builder(this) - .setTitle("Countdown timer finished") - .setPositiveButton("Dismiss", + .setTitle(getResources().getString(R.string.countdown_finished)) + .setPositiveButton(getResources().getString(R.string.gen_dismiss), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { @@ -166,4 +169,5 @@ public void onReceive(Context context, Intent intent) { } } }; + } \ No newline at end of file diff --git a/Timer/src/org/dpadgett/timer/WorldClockFragment.java b/Timer/src/org/dpadgett/timer/WorldClockFragment.java index 61ca8b0..e854bc7 100644 --- a/Timer/src/org/dpadgett/timer/WorldClockFragment.java +++ b/Timer/src/org/dpadgett/timer/WorldClockFragment.java @@ -40,8 +40,8 @@ import android.graphics.drawable.Drawable; import android.os.Bundle; import android.os.Handler; +import android.provider.Settings; import android.support.v4.app.Fragment; -import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.View.MeasureSpec; @@ -139,7 +139,7 @@ public void run() { private void newClockDialog(final int position) { AlertDialog.Builder builder = new AlertDialog.Builder(context); - builder.setTitle("Select a timezone"); + builder.setTitle(context.getResources().getString(R.string.wordclock_selecttimezone)); final Map timezoneNameToId = new HashMap(); Set timezones = new TreeSet(); final Map> offsetToName = new HashMap>(); @@ -164,7 +164,7 @@ private void newClockDialog(final int position) { Collections.sort(names); } if (position > -1) { - builder.setPositiveButton("Remove", new DialogInterface.OnClickListener() { + builder.setPositiveButton(context.getResources().getString(R.string.wordclock_remove), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { clockList.remove(position); @@ -216,7 +216,7 @@ public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { adapter.clear(); adapter.addAll(offsetToName.get(timezonesList.get(progress))); int millisOffset = timezonesList.get(progress); - String offset = String.format("%02d:%02d", Math.abs(millisOffset / 1000 / 60 / 60), Math.abs(millisOffset / 1000 / 60) % 60); + String offset = String.format(Locale.getDefault(),"%02d:%02d", Math.abs(millisOffset / 1000 / 60 / 60), Math.abs(millisOffset / 1000 / 60) % 60); if (millisOffset / 1000 / 60 / 60 < 0) { offset = "-" + offset; } else { @@ -313,10 +313,14 @@ public void onTick() { } private void updateClockTextView(TextView clockToUpdate, String timezone) { - SimpleDateFormat sdf = new SimpleDateFormat("h:mm:ss a"); + SimpleDateFormat sdf = null; + String value = Settings.System.getString(context.getContentResolver(), android.provider.Settings.System.TIME_12_24); + if (value.equals("12")) sdf = new SimpleDateFormat("h:mm:ss a",Locale.getDefault()); + else sdf = new SimpleDateFormat("HH:mm:ss",Locale.getDefault()); Date newDate = new Date(); // as a fallback sdf.setTimeZone(TimeZone.getTimeZone(timezone)); - String toText = sdf.format(newDate).toLowerCase(); + String toText = sdf.format(newDate).toLowerCase(Locale.getDefault()); clockToUpdate.setText(toText); } + }