From 79fad3b0dbb20cc90652705c3810ee9753fa20f5 Mon Sep 17 00:00:00 2001 From: Andy Geers Date: Wed, 4 Sep 2013 09:25:09 +0100 Subject: [PATCH 1/7] Use flat styles for the month view --- .../Month Calendar Date Tile Selected.png | Bin 2867 -> 4716 bytes .../Month Calendar Date Tile Selected@2x.png | Bin 3237 -> 5378 bytes .../calendar/Month Calendar Date Tile.png | Bin 2901 -> 0 bytes .../Month Calendar Today Selected Tile.png | Bin 3195 -> 4515 bytes .../Month Calendar Today Selected Tile@2x.png | Bin 0 -> 5008 bytes .../calendar/Month Calendar Today Tile.png | Bin 3237 -> 4515 bytes .../calendar/Month Calendar Today Tile@2x.png | Bin 0 -> 5008 bytes src/TapkuLibrary/TKCalendarMonthView.m | 106 +++++++----------- 8 files changed, 40 insertions(+), 66 deletions(-) mode change 100755 => 100644 src/TapkuLibrary.bundle/Images/calendar/Month Calendar Date Tile Selected.png mode change 100755 => 100644 src/TapkuLibrary.bundle/Images/calendar/Month Calendar Date Tile Selected@2x.png delete mode 100755 src/TapkuLibrary.bundle/Images/calendar/Month Calendar Date Tile.png mode change 100755 => 100644 src/TapkuLibrary.bundle/Images/calendar/Month Calendar Today Selected Tile.png create mode 100644 src/TapkuLibrary.bundle/Images/calendar/Month Calendar Today Selected Tile@2x.png mode change 100755 => 100644 src/TapkuLibrary.bundle/Images/calendar/Month Calendar Today Tile.png create mode 100644 src/TapkuLibrary.bundle/Images/calendar/Month Calendar Today Tile@2x.png diff --git a/src/TapkuLibrary.bundle/Images/calendar/Month Calendar Date Tile Selected.png b/src/TapkuLibrary.bundle/Images/calendar/Month Calendar Date Tile Selected.png old mode 100755 new mode 100644 index 58c645ca2930c365aad85b1a2b766028abe1b1d5..fb2ef41ba647892eaf196efd1479e348d04ccb08 GIT binary patch literal 4716 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 HbqM`GY$z#l literal 2867 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 RB6I)%002ovPDHLkV1kPGOzQvu diff --git a/src/TapkuLibrary.bundle/Images/calendar/Month Calendar Date Tile Selected@2x.png b/src/TapkuLibrary.bundle/Images/calendar/Month Calendar Date Tile Selected@2x.png old mode 100755 new mode 100644 index 6f8f1eebcef8ad9358f5c213ef58e7bef9f06723..3ac45f84924211a3c7da61443eceb958d58af5ec GIT binary patch literal 5378 zcmb_fXIN9)wha(OK#EcY)PNLe2_2~d0Ya020w(kpYUqJPI!HMnNDWm$L_koAf=cg2 z${}=YbP(yF2uMI)@SJ;&*K^-{e{Q~SXYD=am}{;z#@zecJH|jCMn}Uz0{{T%w6)Z4 zkVbRTp?vxj>Az?skQxA>QFVqw4YZ+9kb$>{gEJZh0BF(Wq+yM2zGaOjG|Dy(p5p=W z?Qr;0gN7BfSb&Bx+Mx#IQ4#!p>Xe$yX9Z2{jatZH(L8n<%(QpHZ6~NdGa7WY8men7 zPR6-XZ#^5zHH_t>)*L`a1T=*%`^` z5o9g14h}%rzB>8nVWU!J=3}j{s@)B6sD1r=k!AyapYh|6Bpz8P?2s+9Tn)^;*Y}hJsIiz3;7(#f%6SgxpDOdQ(1ho z1#!T9^9;Tj$AUmARHKo07GQDj%E-w6eLa8}bEZ}Q5`R8AMnZ%6{6@@Ya=_`-4!H(z z`n%ucoN@uUBFBYTV2rkH(bD!y^L#p9XbBd>09&L>5IWPkCa~f6OFg|*9f_)ak36xuSmWA2Oq?cKFCv=3RHD_HoGEHN+KqqjLq zZZETMgJ_~q#C9$0vNnq(N@KC8xJXyMzyAzG*EkMVfEMb7#6o_3M@c`a<)k)MnW zKc!Mf#5mPQDuy8v!S*x}A!D;4>@osW=Yw-xnVo#C06~#*1~uALuRW9i(90CO?$`Xu zgI3KL#c5tQH8_prWe%5(GM?wJI8Z@z~j=L@DI(5>X>5~(l` zXr#ixV&o#$bX=j5o)l9cKt!k(BSjhoSc}|Q1^8T5`3WYy~g*l%N-(qBWs9KuH`iLP@ZJd$Q^z?10s=-xeicV-u zB4e`3w?Y2L>_T@+^PvVxJC`vWb*C-v96X>J1WBDbA`6N*n?XKeL-z*oGW2bw0@rC+ zTi=X2j^#cTTg&@dof=kU`d4jivz%K1kw~kyl+!A&Pg4wOB2IH|tE(jWvSesR*KcjeKv!=jB-`#S4j>|K+hTUAkUAi3jieVzI zK6JI6ZkB%=*B~^-ycy2W>a%4V$lXK}!WD9HI^j}Rvp^!XDbO{XfjbSvi{>?ApH6hEBwrG9WD*ExB7BAwJNt&ZbJ)i&^>k^MU-aL<(R@7 z)q`|`Ag~n4^e^f2J!L6Rl3ekt=>dH3)QNO#x)nH2z=}IW=X=p%4Y^^fO6$$Af=ZKo z&DrWUrATd!tcQ5p-)ysNV{GrtNp~9ZH6({6zd8pmQCY4W<}2jpP#Y<{JzP_Ly;}Yq z>YdmHnCv6sNXl~O&ZSR{JJcvXl-c5yMXp7T#j4&Lr`p7<_a$$fFN{lxtB*_gBK5JB zFi&_dQ{ilR+#rbmCgd&@i08pO;K}d_rFzC5W6WbYrEaD0Q85>O7aNziF2phLlXyZg z0h>$6v64DoIE-GYtc&rlIdJ*fzM`~}!jZ+%#BrX(m?K@POZt44dsa`@V%CyWceRr# z?F*pkqUq8LOEG-rM!%5*U)5c?{Ic@(V$mVxN0U#K%IqFjAsh?zs|J`XlEG%Os;|sn z-NdTFbs-3dRfXYZzOrFnS>B^&ShHD3Z_6O)o%LPS?AFKmvH8t5xi$r}c9%<&o(u^U zm=-8>UA24Z6}zoGZ^mC4lcSxi9p7{P=9|$eBkMXsHQ|iwM<;%%C(`xZ4=X<)kxw

RxY23>|E*xl~b;*=#00nnvb%Qs~tl9A{D8n&seY=_^^XTq@MDx-L5gl1>>+lQCkglXh*$P!t3GJ zu)FcBx~y2u9$2Tw80@-6fJVB8ZaP8)S+$@UXBr18QewTt$r8Zp=UuWlJgFN!zcxoR zzX6ssPpevc=lx=_q>oUZXw{1J61vEF>B2PQaST&i$)aBQj#Vvo5jc@jA5BbN>Jnax z-?rFC9VP+OBc4YLsi${X#Mo(34 zh#H?wY^AV;q>?}*q+O~&3|iOgJhoxX^iX9eN$-je(xE=%-gmvPT5-JDe0PwvRW8q` z9AT)uUc>&gA9ohA7To(T^nB?d21`3gV|^W){JuvWwn}ff(w9Y!mz%$@)yG=2*3Eux zT1{{RxoN%K>eK9tM{!QO$4-qJJ}|6ovUaN4{Me;dt7bUcC^}$9kM2aXpw}lIs>)p6 zr}J12eYNeIi=Bh>eMnxNMh4ybHrc-$vEEp?TS&yt_?^anm|U*=g2=Q*TD~1DpRp)g z?En1m^Q-z>YfUCLW?t3|&I$Gj)e?`NH|kWlz{ZMK9<79NBxHSTTnTu!p7XBz{Y3M$ zTgV7mJVhs!@9W94 z-tNmm(^%8|@ekuMFCWP`2j~S%FNcogTo||@dM*1na3^jzGpnlCQJ0W3z;ZuZE)N_0 zS*Y$7f4PSrdXg86B{n+R_H=By4y|Th z)0ukQBzG{r>$YV7X<-EGyjfHnJN2aL+HTlUKGANcJ85|hz7NOe#b3h)QXhWC@w+*E zoZgH0LX?n429w??sXeujJ^%nM)5$>w$hyxC002KY8zC@=>w5Bb9&TV8dkVejnNGS=;&H-YJmnz}EEWsKN`gJS9Uuxam63xU*W&2{gDOraP#y=`S_61l%@Yn z`5F6_kNCTcvaH0P2|t6sCcwR&Q6xc5*7et#e#U;~BmYx@pTR#96d@-f{v_%T$4=Dv z1^@rVM&X?Q7qL$w{}lTKl{aw4q0k6*XE&7l59#DcQvAojPuu$uhkBqryl;Bi*r86; z_!at<{i6)>?=mv~R_3R`e_IrLyT3Z!)7KmQqtET_ASg77v}249Nfq&bZ$W!Ic^_X} z7nB|5Uq1ZN(?8r$vvGv{1S>-R$^Ng|NxI|zTKd1;Iyf88f0{{R%U}1fcXqg~Zi7K7 zONfa}ii*jJib)xXU6mJ;lb4ZIg#5z!$)l49)Ei}k@$feC@IWj7u*>b_5+ng8S@moD z|8(gO1xQaDWg1fEzn)ymG(n&JYybet5N&l;BOKX!wuRQ^Tg=_A=cI$Bf=&EV=AiL| zrW&Pv!xn`gWA1T~hR{xDg0V2m3bf3C`7BDe46l(ItLA#^i9!FJ?3I@qbZSD?29J!F z@663XwN}FGM)%#~lpL2;7}I%WB^`_UE+lqj1`HhEpT7SgvvyDaO=o8(ZD7IW2M<%` zbhJV#1j;Gs?^6iytB7<9|6^pYi9$fG)D8^je()RRgn9zgY6AiHSW^ZS9^VFE1~Y2mr9J!H#yK#cv|a%v`O^ z%@4~93flYT;53{XfQpimAsJcOX0> zS=J4v7g}M^aM7)W{d2y_gkfDcd^18Q!GGLKa5sg_!^LHI`RhSKp;q{qKwJ+ysNCNq zfK@?arm(P(ZxGv62^1`(`ykXLPfNK~^*U?PCf*B3xhmr|obo?LKUN2k}!sE)UViHV8M zi2B(lrx)+ik!uLFR_H25KDkwp72pJw&b?#G+cMkpSw2?KH((lJE{2Zn@9Yv390(gTjOJMVQy0rxjH${&W!-=Jm1k@zjL zva*++0bwW~9Ii%{#BV4pTs+&KTVcq@@^pY?wqB*o({=4oJ5L1#1qQ^O)ZvZ8!$az) z>S%Tot)lc|aq)NSvCQN}#2sy;zES9eT^y_~_JRua!~Ew~@0&`z9tPP1_SD z{qy!M;;oB|i*RuqH&UF5dYp}(scv#3&!)?f8}Z)YT?$z@=y!)NXGC6B+da<*UMLmK z^?cJHlfCXt7O?_h54bVIo-yfu3`|yH;MaQgevW#2YO0B0ey7itxVx0Vh4c0Ox=HFJ z_>#=C{zJ+uonGuN`*zmWGnWMeiC?toxhQ%Ggw1FgB8PB1hx~_A%DEXCS2!6O^Xw9g3wmD+4d%~4l5=z|MstHWPm8L5kdK@)g{M4X&>+p6tNy#ru z3kwS+)&--4V@l7$HoF+zm+#fmtn;Wi>F@80c+YTM6(_Tmvz+~pV{Hi8=Jxs&hDwP1 QKLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0005dNkl~UN|K@_622}TH@|PEtf*bs@AlREbMd|UNvwE< zlIO`Ep|zt2fcEC{VZxfW901o3Rl2acEe8rW4jWi?Foys)kK_RbZdq9Q8*W=zejtk~ z+&Nn1!m|BYAP+3vmqmcP#|$jl8v??;;|9w1grIQ$MBIha-5~(I78dUcQQ*Nz1B-Ts zAn@>%frYIZ03Nk(bfI`h1`+7DuwZ*sJU(q;eoF*T&KQ{2oI!wr4g+(W(jf5kY_$t> zwxv&(bASM^ zFPWmSE(O4wq$#G?M)1}%FfEY+fp@-vsfiRQyblaasqq2$5NvW`a}@Sd$%bH z%9AMYqsPFQbrJl$YCzUTQ+mz7U`ZDMvA+7hhfYBL&D1E27$~v6hS8J!?=b9t$*%zb Xb_lE>=3px600000NkvXXu0mjfsagj9 diff --git a/src/TapkuLibrary.bundle/Images/calendar/Month Calendar Date Tile.png b/src/TapkuLibrary.bundle/Images/calendar/Month Calendar Date Tile.png deleted file mode 100755 index e311b00162f62632e444ca526361e4200d3aad01..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2901 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 diff --git a/src/TapkuLibrary.bundle/Images/calendar/Month Calendar Today Selected Tile.png b/src/TapkuLibrary.bundle/Images/calendar/Month Calendar Today Selected Tile.png old mode 100755 new mode 100644 index 7f81b13dae13837ca52a502ab95a7bedd9210562..959d319c97572ba6958f09d7314e1627a9cd7733 GIT binary patch literal 4515 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 RZtI&5ZFJnQSl=n^{{Z$v#k2qb literal 3195 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 literal 0 HcmV?d00001 diff --git a/src/TapkuLibrary.bundle/Images/calendar/Month Calendar Today Tile.png b/src/TapkuLibrary.bundle/Images/calendar/Month Calendar Today Tile.png old mode 100755 new mode 100644 index fa14ec52cddf7bcadd7606231656cfdad8dff589..e8d731b2fd1ae2eb17be4820767162e5f74799ca GIT binary patch literal 4515 zcmb_edpwhG{~wlP4wamX#B^X|P7Ry0SrI~Qa@rWim}YDxIV9zjoEl0J$(f=O&G{H# zOU@ONkTWGYB){o<>goIZp68!uuid-v`~7*pug`V8KcDN~9cg(I$h<}`UFEmOO&CZj3t@mMj+w=08{?-n^YU?L6NIWh9=|XZdn=m zWr+(sGOx5v_X4dVQ6ZM>5#gW!qa7x~yAGdrwW(!8UX^t*7UsJghU@3~BxKoKXJuqO zJ{04{vrwe|c{pve1v4@@`Lut~eIcm75@7i)3|LP=vxTT-qJ`&Y>g;##X>a_>E+)h# zfM%;5b#ntESB=_+mNvFf>91Dw4@_uTXZZv4pttVB%<1TM8ZYAyWd=DgIpTPE3{MaGLyR zRtzxHK1KeWd)7rRJi`W+1{nW(sJnahwi!TKIMu0R5|l}dgc=Kr&qsb@2XH4f!k&`_ zqSs&^cL1~;_YYCPNE9w-SAPm&{9~)z`cj$o8cyYCQiJ*EHJTZ7xqRn!Wzmol(oJJF zd5m|eNBmro)Z84VZ^C1(W^iQxCF@Oi>xB*5CD1JMj(*G?%m{I|5W)}vtjO8j+E-Sc zYzrv&=F}S>EwosW0esp4C?CH4d4B}aF`@DOP6fW`*;%3=TZR|-=ts?sj4;xRnh4m} z)b{y})7m+rx}gVAdsXqq<2es=d9gT{pi9ZH?8!2*0&8DBjMf6I%fN7WUbQ1lJ3D{pvk?`W`?h60!PrF1W04}T{>&=r_v1&XVc1P2%%KKm%2Q8Rs6>xq?}ajsNYak`yrI73F=37-!^j&# z33_WULAhc_F6U<&TEdqPQY0$59WJlm<$5Wj#<|HB6uv8ky&KCv0C*BISgI|>jjV5f zXGGh3n@hCz&FJw85rn|gdeKqIMS$WJr}{*0y;g3HE)z7j(;f^~k2xQhp>d4r{b_m9L$H`gfK;IRXGg$W+GDI-Uevk{Wup5)#P z-&L<>6`E^7k&O^K-)N6J{P6mK{&SQR=wzZWDnd^5l-%Le@=zO;r>p}A4q_ZgY}0Z@ zlEpB3juypo88S}tf(g2oNrynf7RRNG4F*rbjz7~ouXoP##$Cgu;UaOD->WxS$v;mBO?bN7B2RCs^p*Vm0}=+^_s_qoC^s+HdX0ar zybr0Fz0sXG)wC@Ak+IB!m&czSKQt~iE-_yA;uL4Svh%9yDe?O;i7{0%ai7&Do-xOm zZ!}5>j$6+UC$AmxIdU;sHrXwiEjcdV%$C$E+?$^7oo~^j>LXdwWW=xO{%q&d)VOy1>6~K#Ja?8-}StrXn_c$bg&uZ#FwSQ_& zHLy4VK|`EMtQIm6RvASZ*)_*xzbtKC! zOS}1)%ae0aONgAMSS z&}qGxb^g}cQ9gJyIyzlsNW@8TPSILvMo}7b7_$TIT|Qm9-tf9H&C9_hs3pR4%%!X| zXK3PaQJ&IBK+Rl`cA7)!kVw_ZD&~s7itGkxLxl@|m3EaO@O6L^aHuLgsCU=Q$I*(; zrI;};g+PUe-KYm6>6p&Lo&23yd^<%KMSGOQ$X(|~E2PNrU{`RA6U{fX$M#L~nBB~J zhk1YOWI&^L6TadWJQp4yv=EVq zSj3*{fa-!E$SQV|eKTNv=yU(#waQjMYTfE?D+~?+9etlsDv{%GHk3ejca|?ij0mG zIUzzdX+t&{_ae=W1C8m%C+KKJOxXvM7`qsm9Jq+IY0^?BoF#mi35sN=x?#Hy31;9lIu$Kcs!|Y2VlOxozW;x|=%H-@Q8Ed&IXo^?5IWqAPvH_HUk@q&n19j((}0 ziSw56HXU4SH))T>OOE(N4fj~xwJNQ4_9$DJXf}9eU^U86>O3nzY$EO@&JDSh6?wj) z%Q|*_!L`4SdT$~BHeqH26Le;6sADC3j&XnG{s#4305|pR&{XATbSe(xIQX*ookP)h z$ESOro>rZitv-!Cd(K&q5a$|K4$XbUI9}q3?0qnuJsm0$mo~we4tzS7{<`H&f6a(@ za5q~lM-vxfzp&Kv;MT8}UPb!eP1v`ig$>M^d()LQ?!ivMMsuc1@l50ukc7*o^Jl zUv=lE)9fX})Z+zj#*}Z_=FPF9>(x7gCf6M{Aj2z_LF3oA(j_^fIoIdG)qz`%Z{brx z!<$`Pd4i6*9T$#mdThGPj@?t>wK#GoU$xp=7!61OZ?QV#i~VeMyxLNBG0!^G?2I3 z#K_n1&l^xJ%q7-4C6BKu#t#7C+p~SJ0n%=Z0RX_a1RFF3ZEmLJLh=S}1PWDRF_iqy`%thn zB_F?ozYp@~I7WCs7c#+@LLm9bY>$h@k^CueS=sGGe|>(RCxzhlcP1adKbFN>AY?lN zQ2{GM{u-Ml)!9b1PT~DXME~vKZG8w7go@4&@~`mU*?w0UlDvJ%ct1au459vqlsur{(>K8x(A7oD&mZTBccJ`Q zhu?epM>Pzv?vS5g9mqe~|Fd$kcKlyc|Cg;p!}|WSm@KxIImwmacHRg}!6Tr`DymA# zFePO*8)cXl>w65Q1NnvXQ;oJGhGaaJLL%FcNJPYss(5eT%0R)a&GBpeKUV2?2Ut%V z1TRbZ=aUP;`>Y4t3IMRnpp5iw&^&YW-@qJJ!Yx~8>Fp()m5BP;pL;JTU@!K)j)so&L=g2Bm6usP6;Ch%w<4~)t4(GDQl z;XezoY?i#f_%Xxo1%GhD<;fw5%oQH(&*Qp2iM&;>YT;E6Te@^r7Qd^ZI1!Uiaw&R? zR`nG3S8Q<-HPN}NWAhS^`yX9qR@$=DZC_??2@Pk3oDG(6^ExF->x?~kS=C@tt@HKt z1sj#Hz4mMLCy$(<#0{E=_U-PryF1L(rhA|%`|Y3TICsB0THFR=|E=Ov>qU6QZ1+2X zS97=+%0{}l$F-Xt`DTLir5(@GhwJ3+?&Yb$kI`zgNuK6>wDp1A5{G_c2P3JK6INZk z({=Dp7(&_(`S6SJ3AN-LF8U$C7|r?t!>Q8y7w#TlX`yhMP})r!N3AnpOuYlVLT~4o z5dZ#ul=<~kcTRC_y?y)k zllH#Fmwun|gAX~#-N541@7?WW?%{@>>SKZ2;^Urx{pv@8Q~RGD{LXXeaORx>M19@% PKOf5Yq*1YfbJ+g@0LaFk delta 3228 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 diff --git a/src/TapkuLibrary.bundle/Images/calendar/Month Calendar Today Tile@2x.png b/src/TapkuLibrary.bundle/Images/calendar/Month Calendar Today Tile@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9f2ba242f4e3e9edc9972a61906d7ec173408444 GIT binary patch literal 5008 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 literal 0 HcmV?d00001 diff --git a/src/TapkuLibrary/TKCalendarMonthView.m b/src/TapkuLibrary/TKCalendarMonthView.m index f8b58457..5dbe622a 100644 --- a/src/TapkuLibrary/TKCalendarMonthView.m +++ b/src/TapkuLibrary/TKCalendarMonthView.m @@ -42,12 +42,11 @@ static UIColor *gradientColor; static UIColor *grayGradientColor; static NSNumberFormatter *numberFormatter = nil; -static UIImage *tileImage; #define TEXT_COLOR [UIColor colorWithWhite:84/255. alpha:1] #define TOP_BAR_HEIGHT 45.0f #define DOT_FONT_SIZE 18.0f -#define DATE_FONT_SIZE 24.0f +#define DATE_FONT_SIZE 14.0f #define VIEW_WIDTH 320.0f #pragma mark - TKCalendarMonthTiles @@ -79,9 +78,7 @@ @interface TKCalendarMonthTiles : UIView { @implementation TKCalendarMonthTiles + (void) initialize{ - if (self == [TKCalendarMonthTiles class]){ - tileImage = [UIImage imageWithContentsOfFile:TKBUNDLE(@"calendar/Month Calendar Date Tile.png")]; - } + } #pragma mark Accessibility Container methods @@ -286,9 +283,6 @@ - (void) drawTileInRect:(CGRect)r day:(NSInteger)day mark:(BOOL)mark font:(UIFon NSString *str = [numberFormatter stringFromNumber:@(day)]; r.size.height -= 2; - CGContextSetPatternPhase(context, CGSizeMake(r.origin.x, r.origin.y - 2)); - - [str drawInRect: r withFont: f1 lineBreakMode: NSLineBreakByWordWrapping @@ -308,28 +302,29 @@ - (void) drawTileInRect:(CGRect)r day:(NSInteger)day mark:(BOOL)mark font:(UIFon } - (void) drawRect:(CGRect)rect { - CGContextRef context = UIGraphicsGetCurrentContext(); - UIImage *tile = tileImage; CGRect r = CGRectMake(-1, 0, 46, 44); CGContextSetInterpolationQuality(context, kCGInterpolationNone); - CGContextDrawTiledImage(context, r, tile.CGImage); + + CGContextSetFillColorWithColor(context, [[UIColor whiteColor] CGColor]); + CGContextFillRect(context, CGRectMake(0, 0, self.bounds.size.width, self.bounds.size.height)); - if(today > 0){ + if (today > 0) { NSInteger pre = firstOfPrev > 0 ? lastOfPrev - firstOfPrev + 1 : 0; NSInteger index = today + pre-1; + UIImage* bgImg = [UIImage imageWithContentsOfFile:TKBUNDLE(@"calendar/Month Calendar Today Tile.png")]; CGRect r = [self rectForCellAtIndex:index]; + r.size.width = bgImg.size.width; + r.size.height = bgImg.size.height; r.origin.y -= 6; - [[UIImage imageWithContentsOfFile:TKBUNDLE(@"calendar/Month Calendar Today Tile.png")] drawInRect:r]; + [bgImg drawInRect:r]; } - - float myColorValues[] = {1, 1, 1, .8}; + float myColorValues[] = {1, 1, 1, .8}; CGColorSpaceRef myColorSpace = CGColorSpaceCreateDeviceRGB(); - CGColorRef whiteColor = CGColorCreate(myColorSpace, myColorValues); - CGContextSetShadowWithColor(context, CGSizeMake(0,1), 0, whiteColor); + CGColorRef whiteColor = CGColorCreate(myColorSpace, myColorValues); float darkColorValues[] = {0, 0, 0, .5}; CGColorRef darkColor = CGColorCreate(myColorSpace, darkColorValues); @@ -338,9 +333,9 @@ - (void) drawRect:(CGRect)rect { NSInteger index = 0, mc = self.marks.count; - UIFont *font = [UIFont boldSystemFontOfSize:DATE_FONT_SIZE]; + UIFont *font = [UIFont systemFontOfSize:DATE_FONT_SIZE]; UIFont *font2 =[UIFont boldSystemFontOfSize:DOT_FONT_SIZE]; - UIColor *color = grayGradientColor; + UIColor *color = [UIColor lightGrayColor]; if(firstOfPrev>0){ [color set]; @@ -354,29 +349,19 @@ - (void) drawRect:(CGRect)rect { } } - - color = gradientColor; - [color set]; - - - - for(NSInteger i=1; i <= daysInMonth; i++){ + + if (i == today) { + color = [UIColor whiteColor]; + [color set]; + } else { + color = [UIColor blackColor]; + [color set]; + } r = [self rectForCellAtIndex:index]; - if(today == i){ - CGContextSetShadowWithColor(context, CGSizeMake(0,-1), 0, darkColor); - [[UIColor whiteColor] set]; - r.origin.y += 1; - } - BOOL mark = mc > 0 && index < mc ? [self.marks[index] boolValue] : NO; [self drawTileInRect:r day:i mark:mark font:font font2:font2 context:context]; - - if(today == i){ - CGContextSetShadowWithColor(context, CGSizeMake(0,1), 0, whiteColor); - [color set]; - } index++; } @@ -384,7 +369,7 @@ - (void) drawRect:(CGRect)rect { CGColorRelease(whiteColor); CGColorSpaceRelease(myColorSpace); - [grayGradientColor set]; + [[UIColor lightGrayColor] set]; NSInteger i = 1; while(index % 7 != 0){ r = [self rectForCellAtIndex:index]; @@ -406,24 +391,23 @@ - (BOOL) selectDay:(NSInteger)day{ selectedDay = day; selectedPortion = 1; - self.currentDay.font = [UIFont boldSystemFontOfSize:DATE_FONT_SIZE]; + self.currentDay.font = [UIFont systemFontOfSize:DATE_FONT_SIZE]; BOOL hasDot = NO; if(day == today){ - self.currentDay.shadowOffset = CGSizeMake(0, -1); - self.dot.shadowOffset = CGSizeMake(0, -1); self.selectedImageView.image = [UIImage imageWithContentsOfFile:TKBUNDLE(@"calendar/Month Calendar Today Selected Tile.png")]; markWasOnToday = YES; }else if(markWasOnToday){ - self.dot.shadowOffset = CGSizeMake(0, -1); - self.currentDay.shadowOffset = CGSizeMake(0, -1); NSString *path = TKBUNDLE(@"calendar/Month Calendar Date Tile Selected.png"); - self.selectedImageView.image = [[UIImage imageWithContentsOfFile:path] stretchableImageWithLeftCapWidth:1 topCapHeight:0]; + self.selectedImageView.image = [UIImage imageWithContentsOfFile:path]; markWasOnToday = NO; - } + } else { + self.selectedImageView.image = [UIImage imageWithContentsOfFile:TKBUNDLE(@"calendar/Month Calendar Date Tile Selected.png")]; + + } self.currentDay.text = [numberFormatter stringFromNumber:@(day)]; @@ -443,7 +427,7 @@ - (BOOL) selectDay:(NSInteger)day{ row--; } - self.selectedImageView.frame = CGRectMakeWithSize((column*46)-1, (row*44)-1, self.selectedImageView.frame.size); + self.selectedImageView.frame = CGRectMakeWithSize((column*46)-1, (row*44), self.selectedImageView.frame.size); [self addSubview:self.selectedImageView]; @@ -504,7 +488,7 @@ - (void) reactToTouch:(UITouch*)touch down:(BOOL)down{ day = day - daysInMonth; } - self.currentDay.font = [UIFont boldSystemFontOfSize:DATE_FONT_SIZE]; + self.currentDay.font = [UIFont systemFontOfSize:DATE_FONT_SIZE]; self.currentDay.hidden = NO; self.dot.hidden = NO; @@ -516,17 +500,15 @@ - (void) reactToTouch:(UITouch*)touch down:(BOOL)down{ self.dot.hidden = YES; }else if(portion==1 && day == today){ - self.currentDay.shadowOffset = CGSizeMake(0, -1); - self.dot.shadowOffset = CGSizeMake(0, -1); self.selectedImageView.image = [UIImage imageWithContentsOfFile:TKBUNDLE(@"calendar/Month Calendar Today Selected Tile.png")]; markWasOnToday = YES; }else if(markWasOnToday){ - self.dot.shadowOffset = CGSizeMake(0, -1); - self.currentDay.shadowOffset = CGSizeMake(0, -1); NSString *path = TKBUNDLE(@"calendar/Month Calendar Date Tile Selected.png"); - self.selectedImageView.image = [[UIImage imageWithContentsOfFile:path] stretchableImageWithLeftCapWidth:1 topCapHeight:0]; + self.selectedImageView.image = [UIImage imageWithContentsOfFile:path]; markWasOnToday = NO; - } + } else { + self.selectedImageView.image = [UIImage imageWithContentsOfFile:TKBUNDLE(@"calendar/Month Calendar Date Tile Selected.png")]; + } [self addSubview:self.selectedImageView]; self.currentDay.text = [NSString stringWithFormat:@"%d",day]; @@ -543,7 +525,7 @@ - (void) reactToTouch:(UITouch*)touch down:(BOOL)down{ - self.selectedImageView.frame = CGRectMakeWithSize((column*46)-1, (row*44)-1, self.selectedImageView.frame.size); + self.selectedImageView.frame = CGRectMakeWithSize((column*46)-1, (row*44), self.selectedImageView.frame.size); if(day == selectedDay && selectedPortion == portion) return; @@ -582,10 +564,8 @@ - (UILabel *) currentDay{ _currentDay.text = @"1"; _currentDay.textColor = [UIColor whiteColor]; _currentDay.backgroundColor = [UIColor clearColor]; - _currentDay.font = [UIFont boldSystemFontOfSize:DATE_FONT_SIZE]; + _currentDay.font = [UIFont systemFontOfSize:DATE_FONT_SIZE]; _currentDay.textAlignment = NSTextAlignmentCenter; - _currentDay.shadowColor = [UIColor darkGrayColor]; - _currentDay.shadowOffset = CGSizeMake(0, -1); return _currentDay; } - (UILabel *) dot{ @@ -600,18 +580,16 @@ - (UILabel *) dot{ _dot.backgroundColor = [UIColor clearColor]; _dot.font = [UIFont boldSystemFontOfSize:DOT_FONT_SIZE]; _dot.textAlignment = NSTextAlignmentCenter; - _dot.shadowColor = [UIColor darkGrayColor]; - _dot.shadowOffset = CGSizeMake(0, -1); return _dot; } - (UIImageView *) selectedImageView{ if(_selectedImageView) return _selectedImageView; - NSString *path = TKBUNDLE(@"calendar/Month Calendar Date Tile Selected.png"); - UIImage *img = [[UIImage imageWithContentsOfFile:path] stretchableImageWithLeftCapWidth:1 topCapHeight:0]; + NSString *path = TKBUNDLE(@"calendar/Month Calendar Today Selected Tile.png"); + UIImage *img = [UIImage imageWithContentsOfFile:path]; _selectedImageView = [[UIImageView alloc] initWithImage:img]; _selectedImageView.layer.magnificationFilter = kCAFilterNearest; - _selectedImageView.frame = CGRectMake(0, 0, 47, 45); + _selectedImageView.frame = CGRectMake(0, 0, img.size.width, img.size.height); return _selectedImageView; } @@ -719,8 +697,6 @@ - (id) initWithSundayAsFirst:(BOOL)s timeZone:(NSTimeZone*)timeZone{ label.text = s; label.textAlignment = NSTextAlignmentCenter; - label.shadowColor = [UIColor whiteColor]; - label.shadowOffset = CGSizeMake(0, 1); label.font = [UIFont boldSystemFontOfSize:10]; label.backgroundColor = [UIColor clearColor]; label.textColor = TEXT_COLOR; @@ -949,8 +925,6 @@ - (UILabel *) monthYear{ _monthYear.textAlignment = NSTextAlignmentCenter; _monthYear.backgroundColor = [UIColor clearColor]; _monthYear.font = [UIFont boldSystemFontOfSize:22]; - _monthYear.shadowColor = [UIColor whiteColor]; - _monthYear.shadowOffset = CGSizeMake(0,1); _monthYear.textColor = gradientColor; return _monthYear; } From 24cecfb16e2af859edcffdeeecdc32880973e6d0 Mon Sep 17 00:00:00 2001 From: Andy Geers Date: Wed, 4 Sep 2013 09:30:22 +0100 Subject: [PATCH 2/7] Just use first letter of day names --- src/TapkuLibrary/TKCalendarMonthView.m | 30 ++++++++++++++------------ 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/src/TapkuLibrary/TKCalendarMonthView.m b/src/TapkuLibrary/TKCalendarMonthView.m index 5dbe622a..5b3b4074 100644 --- a/src/TapkuLibrary/TKCalendarMonthView.m +++ b/src/TapkuLibrary/TKCalendarMonthView.m @@ -649,25 +649,25 @@ - (id) initWithSundayAsFirst:(BOOL)s timeZone:(NSTimeZone*)timeZone{ sund.timeZone = self.timeZone; - NSString * sun = [dateFormat stringFromDate:[NSDate dateWithDateComponents:sund]]; + NSString * sun = [[dateFormat stringFromDate:[NSDate dateWithDateComponents:sund]] substringToIndex:1]; sund.day = 6; - NSString *mon = [dateFormat stringFromDate:[NSDate dateWithDateComponents:sund]]; + NSString *mon = [[dateFormat stringFromDate:[NSDate dateWithDateComponents:sund]] substringToIndex:1]; sund.day = 7; - NSString *tue = [dateFormat stringFromDate:[NSDate dateWithDateComponents:sund]]; + NSString *tue = [[dateFormat stringFromDate:[NSDate dateWithDateComponents:sund]] substringToIndex:1]; sund.day = 8; - NSString *wed = [dateFormat stringFromDate:[NSDate dateWithDateComponents:sund]]; + NSString *wed = [[dateFormat stringFromDate:[NSDate dateWithDateComponents:sund]] substringToIndex:1]; sund.day = 9; - NSString *thu = [dateFormat stringFromDate:[NSDate dateWithDateComponents:sund]]; + NSString *thu = [[dateFormat stringFromDate:[NSDate dateWithDateComponents:sund]] substringToIndex:1]; sund.day = 10; - NSString *fri = [dateFormat stringFromDate:[NSDate dateWithDateComponents:sund]]; + NSString *fri = [[dateFormat stringFromDate:[NSDate dateWithDateComponents:sund]] substringToIndex:1]; sund.day = 11; - NSString *sat = [dateFormat stringFromDate:[NSDate dateWithDateComponents:sund]]; + NSString *sat = [[dateFormat stringFromDate:[NSDate dateWithDateComponents:sund]] substringToIndex:1]; NSArray *ar; if(self.sunday) ar = @[sun,mon,tue,wed,thu,fri,sat]; @@ -679,19 +679,21 @@ - (id) initWithSundayAsFirst:(BOOL)s timeZone:(NSTimeZone*)timeZone{ [self addSubview:label]; // Added Accessibility Labels - if ([s isEqualToString:@"Sun"]) { + // Don't use isEqualToString since Sun and Sat are both "S" + // - it's fine, since we're looping over an array of string references + if (s == sun) { label.accessibilityLabel = @"Sunday"; - } else if ([s isEqualToString:@"Mon"]) { + } else if (s == mon) { label.accessibilityLabel = @"Monday"; - } else if ([s isEqualToString:@"Tue"]) { + } else if (s == tue) { label.accessibilityLabel = @"Tuesday"; - } else if ([s isEqualToString:@"Wed"]) { + } else if (s == wed) { label.accessibilityLabel = @"Wednesday"; - } else if ([s isEqualToString:@"Thu"]) { + } else if (s == thu) { label.accessibilityLabel = @"Thursday"; - } else if ([s isEqualToString:@"Fri"]) { + } else if (s == fri) { label.accessibilityLabel = @"Friday"; - } else if ([s isEqualToString:@"Sat"]) { + } else if (s == sat) { label.accessibilityLabel = @"Saturday"; } From 67fe16c24246f6638b50f2a5c860aeb4f6819db9 Mon Sep 17 00:00:00 2001 From: Andy Geers Date: Wed, 4 Sep 2013 09:33:26 +0100 Subject: [PATCH 3/7] Use bold font for selected day --- src/TapkuLibrary/TKCalendarMonthView.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/TapkuLibrary/TKCalendarMonthView.m b/src/TapkuLibrary/TKCalendarMonthView.m index 5b3b4074..40ee587c 100644 --- a/src/TapkuLibrary/TKCalendarMonthView.m +++ b/src/TapkuLibrary/TKCalendarMonthView.m @@ -391,7 +391,7 @@ - (BOOL) selectDay:(NSInteger)day{ selectedDay = day; selectedPortion = 1; - self.currentDay.font = [UIFont systemFontOfSize:DATE_FONT_SIZE]; + self.currentDay.font = [UIFont boldSystemFontOfSize:DATE_FONT_SIZE]; BOOL hasDot = NO; @@ -488,7 +488,7 @@ - (void) reactToTouch:(UITouch*)touch down:(BOOL)down{ day = day - daysInMonth; } - self.currentDay.font = [UIFont systemFontOfSize:DATE_FONT_SIZE]; + self.currentDay.font = [UIFont boldSystemFontOfSize:DATE_FONT_SIZE]; self.currentDay.hidden = NO; self.dot.hidden = NO; From f64a95ea689f9fcd0542929d2f2f47bc0faabdab Mon Sep 17 00:00:00 2001 From: Andy Geers Date: Wed, 4 Sep 2013 09:46:52 +0100 Subject: [PATCH 4/7] Use iOS7 style left-right arrows --- .../Images/calendar/calendar_left_arrow.png | Bin 1187 -> 4661 bytes .../calendar/calendar_left_arrow@2x.png | Bin 1459 -> 4712 bytes .../Images/calendar/calendar_right_arrow.png | Bin 3103 -> 4649 bytes .../calendar/calendar_right_arrow@2x.png | Bin 3406 -> 4696 bytes src/TapkuLibrary/TKCalendarMonthView.m | 18 +++++++++--------- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/TapkuLibrary.bundle/Images/calendar/calendar_left_arrow.png b/src/TapkuLibrary.bundle/Images/calendar/calendar_left_arrow.png index b45151004863f2710872d298c0a02360124d1a14..f3f2505ec6e9ebff3d267e807c08ef4a1171264e 100644 GIT binary patch literal 4661 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 vBiZX1-IQo^wrTg*uB5izq*8&}yaPHxDSr z1<%~X^wgl##FWaylc_cg49qH-ArU1JzCKpT`MG+DAT@dwxdlMo3=B5*6$OdO*{LN8 zNvY|XdA3ULckfqH$V{%1*XSQL?vFu&J;D8jzb> zlBiITo0C^;Rbi_HHrEQs1_|pcDS(xfWZNo192Makpx~Tel&WB=XRMoSU}&gdW~OIo zVrph)sH0$HU}&Uo07PcGh9*{~W>!Y#3Q(W~w5=#5%__*n4QdyVXRDM^Qc_^0uU}qX zu2*iXmtT~wZ)j<02{OaTNEfI=x41H|B(Xv_uUHvof=g;~a#3bMNoIbY0?5R~r2Ntn zTP2`NAzsKWfE$}v3=Jk=fazBx7U&!58GyV5Q|Rl9UukYGTy=3tP%6T`SPd=?sVqp< z4@xc0FD*(2MqHXQ$f^P>=c3falKi5O{QMkPC z!8&|>tvvIJOA_;vQ$1a5m4IgGWoD*WxtW~4YRO~K+8uwDxT1DtyGfsWA!MJ-ZP!-Rn82gHOYTp$OY^i%VI>AeV; zu=&ndyE8B_ih8;@hE&{2`uYFAJ+q<1{ZqbT9=?f+OD-I^#k@qVed5HGk{+KQTun%M zoqFiV5fkPUCT*RGR}*sHpJrYXB{6eGaf6BRCYd%iQPU@YmdKI;Vst0Nr7hGXMYp diff --git a/src/TapkuLibrary.bundle/Images/calendar/calendar_left_arrow@2x.png b/src/TapkuLibrary.bundle/Images/calendar/calendar_left_arrow@2x.png index d51e06603c3828557950a788b2eaf7c8a70ef2ff..f4833a7aa42f142c32e6c23292a81d11a3d17261 100644 GIT binary patch literal 4712 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 literal 1459 zcmeAS@N?(olHy`uVBq!ia0vp^5DSr z1<%~X^wgl##FWaylc_cg49qH-ArU1JzCKpT`MG+DAT@dwxdlMo3=B5*6$OdO*{LN8 zNvY|XdA3ULckfqH$V{%1*XSQL?vFu&J;D8jzb> zlBiITo0C^;Rbi_HHrEQs1_|pcDS(xfWZNo192Makpx~Tel&WB=XRMoSU}&gdW~OIo zVrph)sH0$HU}&Uo07PcGh9*{~W>!Y#3Q(W~w5=#5%__*n4QdyVXRDM^Qc_^0uU}qX zu2*iXmtT~wZ)j<02{OaTNEfI=x41H|B(Xv_uUHvof=g;~a#3bMNoIbY0?5R~r2Ntn zTP2`NAzsKWfE$}v3=Jk=fazBx7U&!58GyV5Q|Rl9UukYGTy=3tP%6T`SPd=?sVqp< z4@xc0FD*(2MqHXQ$f^P>=c3falKi5O{QMkPC z!8&|>tvvIJOA_;vQ$1a5m4IgGWoD*WnHrh9S(>}KSXdex85+78Iht9Ty1JUX8d;i~ zIvJa}!SuT1Czs}?=9R$orXcjX;?xUD47mkBn_W_iGRsm^+=}vZ6~Lah%Eav!C!FR% z^`_uM2^AYO;?=Zj~1Ze(@a7Prr#S)F<2ryEaBZaZ+|T(p!(Cr?k$!5>#9<}_~H%da6+ z+^{Z>%~eV9t4d_TqX+3HPMk0iwiH^K)VOl8y@t?iiJ20`o~0s=N7K$V9`Hz+#g%eu zl5n_%u0c8HB*vi04T-WIo?3@D95|%gBI%I|jNGjZnQ>l|4ZB#w-X$LM>G3gk_~^Oz z4)3-Dx0Gc>I?o<>aAINDySC_r$D%L!dHPO1aZ_^S4w)*_B5z-N@aO02`m;oCpLy;t zTlX?0z3}6$wYzQJ+tmcIrPT@~ERbpovsh4YJ#KU5^4p81&Ni~E`?bbJSKeUJ)r=&Hb@Apo?}&iGw;!vqnYR9_ZcqU#%geYbCtK+`N&uM zlkZ(7MsUsjZP#;O&RY9Y-o8F?**4Y= zmk*zpd){u@IdQpuOy`f^-{sY}>Ncn{J>5Kg-EIGQn|l(J5|%7@$Xc}bU{CAnzuTLI z4xW!!y0VRdO=bSRiqxx?sg8%yK;eEwKX) z2iD);?|Vz_T(?#A$EqXq_t#rWW?uNgs@_yQJ^zO9-2GZpCx)%fj!;^#lr@1tAc3J{ W*7-blqsv*KV${>s&t;ucLK6Tr`5wmr diff --git a/src/TapkuLibrary.bundle/Images/calendar/calendar_right_arrow.png b/src/TapkuLibrary.bundle/Images/calendar/calendar_right_arrow.png index 55cd4200ca82a081d65a122273513e73b9825f10..b6474696fca299d3378d9ef32aaea4af4e3fabd1 100644 GIT binary patch literal 4649 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 literal 3103 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

8GQZ^Al|o7dqna0`_w>-t+vx>%wLE(aN?}FVKV` z(psiHqffs?x)B01=jow8uI3 zy@{t(=ru*d9_hMIw^6=_^;G!!1VUtMKc6J2V+#T`0?J&@4icIaZ61(=7)U zYgWY29;5I!#+8a6+^5@QFv+F79~xmWVdSl3!zLW{c4B=+=`*YPzJ@SyQ{aU5E7M^K zQnF~fAa~SB&7-%`cl+JOVoZ{~XCM43$8HFlLrjd9NId_{79mlfqs!Cp+GgV~`h@=au)9yM0qqhR5K! zfTK_;Xwct7%9qYp)R(t{`)#C9W1PMCdF6C)7uQV8{^p0?Dph79r$!t`R7Q+OB$h-o zBL<#YPwlKQ`Ge~D>>`m7$SV!eA#qt^Z3i}(x+3IgE}3W!8Y*kf9vOjL<+u~QhDPN| z%g5Y2X=6|%R>2PA5I!)Tpm#(lkrRI)+E_~DbW&U*G$~3ys|}3hd~`g3$;xmH?FI2m zSWX%@mEfX{VK^F^h#ErUb8WKKbApp|+A(c%IAypy)(tm|^=f~TaEv5ZVdYO2cWl9l_3X5eOZZQ2Gzs>!H7pzQ2OJ_$Hryc$D zV&s0Xs0G*Q8}mju^8r&f6PTGU9+P@FR^K51dS6`6S69v$a7;yve9V`a@)#GcOS2L+ zpbUNE0>T~P+vE8mXL?Q6EZ#|Znz)(P6mDo)84aOs-M6_jaxYl-OBopT%<`xa?*7Tz zcBj*i??umx^sD!e-s3&}yx-Lg>gG`nFL!cdd+p%ExyiW6J^!u$!F^*lSGUjZj7q+4 zHa&a;dG3L(cihgnW%eKJ%XO>9ua--dcj4=>5^#0?xvOqEY);zN=hQT0OmW|O~2&=!1Fb=tN@xgZnT2weDe3Sko zJ&gG}%dM!$sLrTsS0!|obgXnXbt+>Yw#K#MTWha=GqUGY`Yab&qVAY>e!%tSzj^I=<9?A#99pT;`)ppDY^&@z|^s z{8*}D{&AqYr(fvgcl~bR?dh46lDekpzKV=H_LtDJ+&Q*?D1~CLBT)47x zGdvTOi^^!u7VVTDIe&W!Cw?{QMxQ`I->Izhj~S%&Ybv|%9hVY65Zm5A({7F&iDcl3 ztD3KRWV2PxS}i}qG5V>7rP{r=Y-C|HD{wZ@Tb(sfeM|9^;imfHm*I|HgK3}Mh49L< zEvaRwaPqYV<6FjA55fqK39-wZNTCL<2ImH*5Vc+I@8>`_DcO`_P`DwBSlUoaIwP6U zhI^0`%^Jgek10^VgF^zt>C#+LSi{i83%bU@~mxW@i*(;@%&OUKd zN7jpiZm=hL%Q+AqF2DPDMfb*_tmHYOU*Tl$cD`jwA=JRm*SUI;_-1V?`ew^u3o6>O*l_-u8;g4kMBG6G&&#|})#O!G>XNWL{|^m&PbF(=#f#0pc>VHa_d)hlut6lss>|wanHX9tH+;zC zQ}1HjK>^1zC0Alwke4r!Mv3ku|NLKRRftDGQB%k+2q{Z#WLQmjI->J?YQ6G;DIGP`I^*k+>h+^I63yZa_Hjv zlI$RL82u`12%bgp4V`-H(cP}Es;4CoZ??Gz4)^FDJkjP(~{M7$r;_68-B$L7_;kVZ_(3o7hT5hdtIR>=puU|C zU#t<8&{5~HdSCI4uEx>X+AaDU%&enRBSGhpJKxh7s@d)c^JqL(mkN^Es+y1fn)G!% zHiRJbNLW>2Q6YE-KizjpbTPp)1iQP6dpynm-m0HeJYxhavP(a-F1Qd<{rUZ@^yK}y z)n4TL-J&4Rjjt_sheFO}T~6b>AR4H!?mMM+-H&D2bKK83${2C0{buTSlTW7aouxQVz>P*?8orZuehVJ=~AlDTDQo~4@fC9dvr-dEhYu5+MCD?$sgL={&3CW9C z!38Tyn@CG)aQdx)0uWHbNqLZa>(<;k1qC}ci0w84IA=u~JDc0u4l3mp&ykMe5d4<) z-mW}yr3|~{NB#E-FnQ})kpN&n=iUJVQq%bWVBZMd0z<|a8LB!FJfRL)f+G&<@9Diq z2h{ylsi&SevIE55)5D9T>aQX4gP}@2--BTykRKGXyM_qH$OM8S5OEMCs5}%df&fDx z5OpHfS=9`!^HWZ}(hzYalf6}8Fh4&(sGkCqKy-o0tEi~JIPwZ5tuww z4)#}Ws#JXsRW-wr2p&Fr=}&v%$q0G%ALQTRzpMSBLJ>T@i8vC8Dnls!l>CbQ&d2;+ z25}tzQ}8SJyTF);$59R0Ti0J}`W5?~Z}smA{0jaQsKfS5{KeEC9ouu`H~hbujq}I< zKW6Vm{%Q6es%nDw$9Z7Tcu$Cq-=W{xKgwAB zT}JUw&F_K#wJBJqzb4(=hv@NR&aqA~oCl7&V={^Aiu}KhAl6Bhn(`TwuSz>ac&Z|7Y!_-tm7e{aHj~O$H6mc~&H-o#G7bTklUIs zQ#z1~m!w8QCPnm`iBvhG)X|=ZFm{?IHA>4-E{=Jwsq?B=Du*^pGGg;x4+iFV4TVv9s*yjgpf^%uv+uuHj&e$)Z z%$PkJ5JvOe(J23N*n%%$rX;9u+W6r^&hDnd#(4S0=gIWSapn(e5v82s8LX(r_Oj2} zvnA?=4Ejjkc&Y6wt;qvtAmhBFx=Ljti_+tq$1ZSb%dLL9;6PtDnwV*D<^oqJCcIRK zU%;2qk(MJjYN-$+T=$N?-XSNDEv(RNq~h!Xp)%Y00f?ZqYe$hEi)P>G1kV@C@M}Gs z>$Pj0mphUN<<^eLGt%(USAySJ$QBt8z(vK2@WykufR7MZRef%`{ySb!=1>4ZJ{_+ayycZ+381?gU@D z&b>ra5F=cB4d6Q*0Al9|iZBN$6l8lF96PJcB3Futf~Xzm?aa7JdAoI3S(V!wtD)T4 zoVtOm=LMJ6pA15!90mkCX((D;`#^Q#K7*Y!H`BX{C}X|C$2BD@xPPI+03|KvZe7@vatu!e7ObVcbn9Q_48v*##XqqC& fJJ^VH_Af(T6l*udHMv9gena(7oI;mq+lT!h>8|jI literal 3406 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 diff --git a/src/TapkuLibrary/TKCalendarMonthView.m b/src/TapkuLibrary/TKCalendarMonthView.m index 40ee587c..828dbdf3 100644 --- a/src/TapkuLibrary/TKCalendarMonthView.m +++ b/src/TapkuLibrary/TKCalendarMonthView.m @@ -908,16 +908,15 @@ - (void) animationEnded{ - (UIView *) topBackground{ if(_topBackground) return _topBackground; - TKGradientView *gradient = [[TKGradientView alloc] initWithFrame:CGRectMake(0, 0, self.frame.size.width, TOP_BAR_HEIGHT)]; - gradient.colors = @[[UIColor colorWithHex:0xf4f4f5],[UIColor colorWithHex:0xccccd1]]; - gradient.autoresizingMask = UIViewAutoresizingFlexibleWidth; - UIView *line = [[UIView alloc] initWithFrame:CGRectMake(0, 44, gradient.bounds.size.width, 1)]; - line.backgroundColor = [UIColor colorWithHex:0xaaaeb6]; + UIView* header = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.frame.size.width, TOP_BAR_HEIGHT)]; + header.backgroundColor = [UIColor colorWithHex:0xf7f7f7]; + UIView *line = [[UIView alloc] initWithFrame:CGRectMake(0, 44, header.bounds.size.width, 1)]; + line.backgroundColor = [UIColor colorWithHex:0xdadada]; line.autoresizingMask = UIViewAutoresizingFlexibleWidth; - [gradient addSubview:line]; + [header addSubview:line]; - gradient.userInteractionEnabled = YES; - _topBackground = gradient; + header.userInteractionEnabled = YES; + _topBackground = header; return _topBackground; } - (UILabel *) monthYear{ @@ -926,7 +925,7 @@ - (UILabel *) monthYear{ _monthYear = [[UILabel alloc] initWithFrame:CGRectInset(CGRectMake(0, 0, VIEW_WIDTH, 36), 40, 6)]; _monthYear.textAlignment = NSTextAlignmentCenter; _monthYear.backgroundColor = [UIColor clearColor]; - _monthYear.font = [UIFont boldSystemFontOfSize:22]; + _monthYear.font = [UIFont systemFontOfSize:20]; _monthYear.textColor = gradientColor; return _monthYear; } @@ -939,6 +938,7 @@ - (UIButton *) leftArrow{ _leftArrow.accessibilityLabel = @"Previous Month"; [_leftArrow addTarget:self action:@selector(changeMonth:) forControlEvents:UIControlEventTouchUpInside]; [_leftArrow setImage:[UIImage imageNamedTK:@"calendar/calendar_left_arrow"] forState:0]; + return _leftArrow; } - (UIButton *) rightArrow{ From bc469851d49432fe226876c8daf3ca2bf7d47edd Mon Sep 17 00:00:00 2001 From: Andy Geers Date: Wed, 4 Sep 2013 10:58:52 +0100 Subject: [PATCH 5/7] Allow changing colour of interface elements --- .../Month Calendar Today Selected Tile.png | Bin 4515 -> 4392 bytes .../Month Calendar Today Selected Tile@2x.png | Bin 5008 -> 4933 bytes .../calendar/Month Calendar Today Tile.png | Bin 4515 -> 4392 bytes .../calendar/Month Calendar Today Tile@2x.png | Bin 5008 -> 4933 bytes .../Images/calendar/calendar_left_arrow.png | Bin 4661 -> 4402 bytes .../calendar/calendar_left_arrow@2x.png | Bin 4712 -> 4928 bytes .../Images/calendar/calendar_right_arrow.png | Bin 4649 -> 4409 bytes .../calendar/calendar_right_arrow@2x.png | Bin 4696 -> 4949 bytes src/TapkuLibrary/TKCalendarMonthView.h | 2 + src/TapkuLibrary/TKCalendarMonthView.m | 95 ++++++++++++++++-- 10 files changed, 86 insertions(+), 11 deletions(-) diff --git a/src/TapkuLibrary.bundle/Images/calendar/Month Calendar Today Selected Tile.png b/src/TapkuLibrary.bundle/Images/calendar/Month Calendar Today Selected Tile.png index 959d319c97572ba6958f09d7314e1627a9cd7733..6466a1c039c3c064815588bd9066178662c90edf 100644 GIT binary patch delta 473 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 M07*qoM6N<$f@47-8UO$Q diff --git a/src/TapkuLibrary.bundle/Images/calendar/Month Calendar Today Tile.png b/src/TapkuLibrary.bundle/Images/calendar/Month Calendar Today Tile.png index e8d731b2fd1ae2eb17be4820767162e5f74799ca..6466a1c039c3c064815588bd9066178662c90edf 100644 GIT binary patch delta 473 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 M07*qoM6N<$f@47-8UO$Q diff --git a/src/TapkuLibrary.bundle/Images/calendar/calendar_left_arrow.png b/src/TapkuLibrary.bundle/Images/calendar/calendar_left_arrow.png index f3f2505ec6e9ebff3d267e807c08ef4a1171264e..d8b735103d03c219a97410852706ca66e168231f 100644 GIT binary patch delta 375 zcmV--0f_#!B(fr~Ne>7yFgh?fIx{qrQ4fKC+qdO@0003*Nkl4#9yGjHx6hP;J zet;G#=x()zot54GfY@1B*s7HX?k8;N|M&@3B7!RjHe#WLh}FDb@!VlD+*N0G10grb zIZ5VT#x=$`OSA#ZJH7OlfQMO@-BeX|4ZGsV4LyBOmgRF01O_RBJMM$G0Uia;^E@qo zisFR1+a+wVITJWdg)L5**X)17CYw(dCO)^YjK75q79Rvol4R~=D`{b!#rrS}1vY%_ zrG@lpg*6s$ElfPskd8&z;qDraq9|)%S3^4X;y7+==li}x3cpzBE`MXo`|spQ+$Kf3 z(5LFyeuIo{I*AQ8x4G{UL>kgxB(2h7D4JAPANr>b4k;Z0y(;NQOLMl`*d=~zq>4ih z?OvB4>wEMMNd!gANyZs-uTPM@ec(^IiT@#Gezi!Dx{Q&&dDaABb)f(x%mKZw{tsxK Vrc1f1f(-xw002ovPDHLkV1fYss%`)P delta 636 zcmV-?0)zdsBDEy2Ne>7xIXW;oIyf_vQ4fKC-@XE100064E@T}V@59LCSi zW)@?o8QWYa>a^y}B#TVNMHdChDoTjHkUlPgqN^Y%N|G${Gpbp1=f#8|p%@i2NX#e_ zc99AN$r^Q`Q8Z;c$DQ-OC-v!^qZ@u~J8*8E^ZfqL`+v^M0AMn`H1u_g{HSw|`unbb zsXhaf;UTd<4xO*(h1}Q6>Z@v+Da+DK)AQ)9t6#*ed59Ep;7c|D-gdAl1LAQzy>tEb z{PU;fq98D9va%RM{o%-LW$nIH30ASSDJWGIE>6w?y>w<8qoZzhhh@Moz#_HX946Zx znmJZ%2D#A4OTpltL@`NV1Td4%mLal#vt+^SP|W8~#L36^o`gA>5CAy(pe;amZC1=C zM2pr#Ja?4RcLPV3nl-@p8%FBw@XNJj+T>^v2kCT!EDi*YuQY3b_~ibWSY3)KrMhWl zGC6rrpl{!tN@Z3xmeniG>U3JWdRE8GQ8LAgldn?Nt%!Q(%l_U9SuW518Fop3u_$AR z{52awKXyx#5&v4Zo2&xW7;Wk9t^loeB2r)iDYb&%Uo!}=ms@$XWUU{f$RQ6~he*{X zZFy2^17Ba)51-Gt6iNcB7!qKW?%f_HJBqb>Nm(vCF-o2q*?|iKY z(PaaA9;dn9N|);xW@7$w(;@w_#&1T>#8BJDPcmm|NSlyY65(*gY6Cq(sXA00007yFgh?fIyg9!Q4fKCO(c8}000A0Nkl^`X94 z@UgikoA{kH6V~l)lHKfq)480T^Uaw#Gm{#fPA3wwr14ip`;Ma_0>qb5sZ@&fdVQIH zdP?~Y3nG5v0G?5vv~7F6(P*qFkP*^ySpdG{bPnxHEEcA6xDLwA;*n0sT#VU<7Kc+@4NJ62b8SfCy>22q4d(kpSY{8ObDoV_eg6 z*(Jp27C8rG(FXn9lkB#8wG|{KdjLRYs0Faew|ghq7eK(WTqz!ySpeUpE}d@ay$c`c z-*ekWX~$Zv))`c;0^KG@IDk2SBG|<)nG{Im(UKcgPVx>K*LfjbXOqdKWK$rK0LQk)U`QJw(T^V&HI4}3{olFVM&UlW{y5>Y65v26r>B{a2I`!@vnT~Clckb z#buc%qAPTGMf8+}xQTsqP6h>uM8=88Q@y}D^lHC(@GsGAvVdN?K}2y6U607Wb0Mhwj9M(0%N?bp`l|9920;19aE_J);sgjteGpce fCaWH*2vqqGn}ssDBUL8=00000NkvXXu0mjf=AfTp delta 688 zcmV;h0#E(GCg>!vNe>7xIXW;oIx#hqQ4fKC=@0w~0007dNklNy+;LxRRu z_TpUP&l;Xxd4nwZyNhKPJ!DzNl0mCNVfrfc*I)SGRN8@3hrds-jlE5obo{`PhN#sf z(kYO-&y z>e%0J+KYVNqd(_o>5riS|N3?726OBAP7M%_IB4NIhsXfz&kTaj5cGQ+b%j+`b&dhs W%{ispmhtca00007yFgh?fIx{kpQ4fKCPCf*-0003?Nkl4d1J5B>J5Qei^ z!2zHE#3L029TgoHKy(xoX#*8P3P(uEeK-OYLP&swM1!E9K!|GJFZ0b}TV}Jnu{6qf z=Knk%&&E?q4Ol+5iG9eXZw*Ns83wysBnrn3W7kDW%N2+$2B)p=3 zD8_l7rvkAau`R3>vO%Cpnx=(@o&Yx5APeZ^xdS~DTW>;5U?7!}Br%m90M=Y+4v-|x zUjnHx4B4uCY*pf7t$9O#zV$|Ar+FpHunlS*7wplumk*HS$7x9`hG@VDYP?!FSk zyx>&R#~r8FeYEz#NfQK0&*b0p&H>D6VeE)s@kf}|Sx171Pxv(_zwt`Du2_5vkUS<( z>1({>?={5+7}DGs!^-ubK1uAii48F2|4@IaKwkt8y2J)p<~mo1e|Y!9KCuC$51H!G cBC+Iu0rD`VOEBn9yZ`_I07*qoM6N<$f+a(#kN^Mx delta 624 zcmV-$0+0Q;>Ne>7xIXW;oIyX3zQ4fKC)!-B}0006zNkl3M)|NlS3&kd_8 zeog8A`}6iyEf60cX85sbP2sl~zwe*b#s2@OExz&n!wW^c8vak}{QpT==>HpezW?8J zr2qeHEWZNOAdO2C(;ov%7ZwlyH*Bn|4BtL~X85;unfA|?sx1s(ze+G*17MRbT(J3n znH~S`ld>S#rtb#w|G%}@oC3;;qT2-b;P+Ff?0;m$eEO&)0M_)wQ1Sowj=JN|{{I(2 z)&$o868v%Gpx2Moh_4?Np_)vT|NrQ2I&l8~e*u^#6b&H3pZoU&d`k@Z`9XmnXcO=M zpJuB6e@^Jww(b9aK9D?y29V&lJ=?;6zsCjs`k=rEcHS>b&Hq0qb!}Mm;y*W54Pcvg z?}+*l>GSy=(5APbAU9Y4|808zMJ8+^2NL`A?dj&fKYzSsW@3aWVPs@rVg@P)nTC!( zw6_a>b~QizMMW6wk6%_=|9?*H-LU9CHYZJ*#P`YFV&4yS(f@DcfSxv2`~P!)at{tq zFIvR?$-{d44`8|iC6ynhD*t~>Y(H@L!+$}TD-h1PeVhH0m-U7pn&Mz*{4i4b|Gl^Q z`0dZAu?^91^QOpWZ=01rG@yz>vE0*i>hu5qVlb0oG{f(U=bV3(WIp+#CJGL|@A`88 ze|FXbBlo`qOc658@PFRa|KBuQfNlnQ@SBdz|DSEuSHAuKFN3TIna%WzPbBcCnB*~T zK3)dqu$UYF3Tu2h85o}6iXX5az9e`_{F&T!=l|Wiy2z$sV*>z*8%sGF?C0_T0000< KMNUMnLSTY*KTKBu diff --git a/src/TapkuLibrary.bundle/Images/calendar/calendar_right_arrow@2x.png b/src/TapkuLibrary.bundle/Images/calendar/calendar_right_arrow@2x.png index 185c237cd38a9493c36fa3eec49304522a75d84d..6f8caf01aaa5da2b9939d6b87ab41dbe6fc9eb5f 100644 GIT binary patch delta 926 zcmV;P17ZBwB-JLcNe>4xFgh?fIyaM04}yPw#yTGW00U=9L_t(o38k0YYEwZJhMUvQ zp^+k}RKcpXh=>;|7Qre=2vV!nUWgaIfY`V2B}9D$!5j5TZ!AdF3$-4KA|B8i#RFnB zY0{khR>*|OWcHry-GRl-{A*_Y^RJmblf+uB){s_Ww6j=Q!`9u5YZ0>5YV}OHTwZ?$ z6EfYW4GZ5?fwF6BYqO0;<2E67LUfBdg(-jd$l8n;>GB{rSFhJ^YPd8%=5o1x)Kvoy z-Hq33wRsDH1R6)t8|q<9(igdik}d4TB&oXV6Xgqv#_=_L{7zVM{ym*e-%BJCGd`oo zQ1lYt1}y0_CJ+`SYQQjx3Z2bYm|lPXM9~Dm3f7&Z5AbX2r>BIXg=8{0=QDT{ir(WJ z!4f`Wtgx;`4alIVh@v|R&})?c!S>|y`Cs4z?USxV#j2p_0ef^>0eT&a#YV7qU>kKj zsBKfC#(R}YWvbb1-UsMQ4{BDh2^9TM6a4BR5}A|WJ353tr0rRP{9_TjU8#SwrAv?1 zNTpKGISdB?ZI@;~9*=)mU0vOVU#=l*agoTRy61VH2)3Vg#S$e?+TLuYaq6aZP-~~zpJfzn2g_)NYA(GVP)tE3!)Es{ylAGbY0*u;&XbGZGaCv1zD^c zcWMWCHq6EwaoXKo9N$q+*P_h{R%S89NLRNC$c@klAgD2J0<|kq_N2|hEpVCB^jQ%a zb)Ddcc^bZfmm(<<0_>_0Sas#7AI0QXPy5{oP2wPE68uPqp!*DjN|%3wKom@2^5diD z`WaY>gFqBWik?EyRiN@W5Q&R`V|tv8mWQm5K!}_q4uTd0Cm?v@N8ltGfZ!MeuYw2y zNn8Y6>jem&5u|66C8$}f>2eWhDe8GQ%;2iucZ4CB$NWCD77B`;6b(cmMEV7}nc#ES z4YdNZ76M+r1@OA*3+jKXbd3|d5J1pY0Kto}1VSz(lLSAAT^GPsOV delta 671 zcmV;Q0$}~sCfFpfNe>4wIXW;oIyRF~4}yQP^e=G$00L@BL_t(o3AL5MZWA#OhG$pn zid=aGo`9m3gftW?gvtpCZk3=&96%t#1p#MnDLs*%fFqAkDzykICD4R|5CXwFfW##f z66zG=aXO2)+4ZiSjiqQDdv?D4XFOg{2mv&ByD9kQ2C&m-ffXwrt&eI03V?v#<2rxv z#!J}y@(DnIV5NLO3ZerL%GvjNAH5*A$z~<(m|MfHU z-?jAk;heYM4CeBLuoEYp4nx4ov-qIst~^W!Nk12mD*U)X;Sp9K-xu9SHM1h@E8i0~ zeH214@%w#Y2EE;qo=aAJ6oFWSutt9w8g>X`0}`T!?x`Rjz2XMGVWD~tf~iv6wp#0N zx1d|E0dF<`Uw|>*i4gS73hJ#a89}k>(qG2vFeIcd6+()nO+9rn-?=;!I*cwDg=e5)aT-MJ2bzkf@7?9hLut6-fj zJ=&jVPmKUpoPmjR=iMPYH!h3ajpsTuGDkq6dKZG}vgf4427qMi!lwdC6{$eodEuwp zN{I^qm1Ksv0y3v76;PfXr0Cf3Fhv-gMyirg0SGce@&Fhic>xd-dxTQ~GpC?%OEy|U z4KT1ih9EmP7tNiFfZO*WI68k7TVy>r&BL1XKfV_Vu)a!rLzW=`8_fcMK@tO5&a8mm(jPZKDdEjmV^a_+VU; 0) { NSInteger pre = firstOfPrev > 0 ? lastOfPrev - firstOfPrev + 1 : 0; NSInteger index = today + pre-1; - UIImage* bgImg = [UIImage imageWithContentsOfFile:TKBUNDLE(@"calendar/Month Calendar Today Tile.png")]; + + UIColor* tintColour = [TKCalendarMonthView setImageTintColour:nil]; + UIImage* bgImg = [TKCalendarMonthView image:[UIImage imageWithContentsOfFile:TKBUNDLE(@"calendar/Month Calendar Today Tile.png")] withTint:tintColour]; CGRect r = [self rectForCellAtIndex:index]; r.size.width = bgImg.size.width; r.size.height = bgImg.size.height; @@ -397,7 +404,8 @@ - (BOOL) selectDay:(NSInteger)day{ BOOL hasDot = NO; if(day == today){ - self.selectedImageView.image = [UIImage imageWithContentsOfFile:TKBUNDLE(@"calendar/Month Calendar Today Selected Tile.png")]; + UIColor* tintColour = [TKCalendarMonthView setImageTintColour:nil]; + self.selectedImageView.image = [TKCalendarMonthView image:[UIImage imageWithContentsOfFile:TKBUNDLE(@"calendar/Month Calendar Today Selected Tile.png")] withTint:tintColour]; markWasOnToday = YES; }else if(markWasOnToday){ @@ -500,7 +508,8 @@ - (void) reactToTouch:(UITouch*)touch down:(BOOL)down{ self.dot.hidden = YES; }else if(portion==1 && day == today){ - self.selectedImageView.image = [UIImage imageWithContentsOfFile:TKBUNDLE(@"calendar/Month Calendar Today Selected Tile.png")]; + UIColor* tintColour = [TKCalendarMonthView setImageTintColour:nil]; + self.selectedImageView.image = [TKCalendarMonthView image:[UIImage imageWithContentsOfFile:TKBUNDLE(@"calendar/Month Calendar Today Selected Tile.png")] withTint:tintColour]; markWasOnToday = YES; }else if(markWasOnToday){ NSString *path = TKBUNDLE(@"calendar/Month Calendar Date Tile Selected.png"); @@ -586,7 +595,8 @@ - (UIImageView *) selectedImageView{ if(_selectedImageView) return _selectedImageView; NSString *path = TKBUNDLE(@"calendar/Month Calendar Today Selected Tile.png"); - UIImage *img = [UIImage imageWithContentsOfFile:path]; + UIColor* tintColour = [TKCalendarMonthView setImageTintColour:nil]; + UIImage *img = [TKCalendarMonthView image:[UIImage imageWithContentsOfFile:path] withTint:tintColour]; _selectedImageView = [[UIImageView alloc] initWithImage:img]; _selectedImageView.layer.magnificationFilter = kCAFilterNearest; _selectedImageView.frame = CGRectMake(0, 0, img.size.width, img.size.height); @@ -621,11 +631,24 @@ + (void) initialize{ gradientColor = [UIColor colorWithPatternImage:[UIImage imageWithContentsOfFile:TKBUNDLE(@"calendar/color_gradient.png")]]; grayGradientColor = [UIColor colorWithPatternImage:[UIImage imageWithContentsOfFile:TKBUNDLE(@"calendar/color_gradient_gray.png")]]; numberFormatter = [[NSNumberFormatter alloc] init]; + + // Set default tint colour + [TKCalendarMonthView setImageTintColour:[UIColor redColor]]; + } +} + ++ (UIColor*) setImageTintColour:(UIColor*)color { + static UIColor* tintColour; + if (color != nil) { + tintColour = [color copy]; } + return tintColour; } + - (id) initWithSundayAsFirst:(BOOL)s timeZone:(NSTimeZone*)timeZone{ if (!(self = [super initWithFrame:CGRectMake(0, 0, VIEW_WIDTH, VIEW_WIDTH)])) return nil; - self.backgroundColor = [UIColor colorWithHex:0xaaaeb6]; + + self.backgroundColor = [UIColor colorWithHex:0xaaaeb6]; self.timeZone = timeZone; self.sunday = s; @@ -929,6 +952,53 @@ - (UILabel *) monthYear{ _monthYear.textColor = gradientColor; return _monthYear; } + +// Tint the image, default to half transparency if given an opaque colour. ++ (UIImage *)image:(UIImage*)image withTint:(UIColor *)tintColor { + CGFloat white, alpha; + [tintColor getWhite:&white alpha:&alpha]; + return [TKCalendarMonthView image:image withTint:tintColor alpha:1.0f]; +} + +// Tint the image ++ (UIImage *)image:(UIImage*)image withTint:(UIColor *)tintColor alpha:(CGFloat)alpha { + + // Begin drawing + CGRect aRect = CGRectMake(0.f, 0.f, image.size.width, image.size.height); + UIGraphicsBeginImageContextWithOptions(aRect.size, NO, image.scale); + + // Get the graphic context + CGContextRef c = UIGraphicsGetCurrentContext(); + + // Converting a UIImage to a CGImage flips the image, + // so apply a upside-down translation + CGContextTranslateCTM(c, 0, image.size.height); + CGContextScaleCTM(c, 1.0f, -1.0f); + + // Draw the image + [image drawInRect:aRect]; + + // Set the fill color space + CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); + CGContextSetFillColorSpace(c, colorSpace); + + // Set the mask to only tint non-transparent pixels + CGContextClipToMask(c, aRect, image.CGImage); + + // Set the fill color + CGContextSetFillColorWithColor(c, [tintColor colorWithAlphaComponent:alpha].CGColor); + + UIRectFillUsingBlendMode(aRect, kCGBlendModeMultiply); + + UIImage *img = UIGraphicsGetImageFromCurrentImageContext(); + UIGraphicsEndImageContext(); + + // Release memory + CGColorSpaceRelease(colorSpace); + + return img; +} + - (UIButton *) leftArrow{ if(_leftArrow) return _leftArrow; @@ -937,7 +1007,9 @@ - (UIButton *) leftArrow{ _leftArrow.frame = CGRectMake(0, 0, 52, 36); _leftArrow.accessibilityLabel = @"Previous Month"; [_leftArrow addTarget:self action:@selector(changeMonth:) forControlEvents:UIControlEventTouchUpInside]; - [_leftArrow setImage:[UIImage imageNamedTK:@"calendar/calendar_left_arrow"] forState:0]; + + UIColor* tintColour = [TKCalendarMonthView setImageTintColour:nil]; + [_leftArrow setImage:[TKCalendarMonthView image:[UIImage imageNamedTK:@"calendar/calendar_left_arrow"] withTint:tintColour] forState:0]; return _leftArrow; } @@ -949,7 +1021,9 @@ - (UIButton *) rightArrow{ _rightArrow.frame = CGRectMake(VIEW_WIDTH-52, 0, 52, 36); _rightArrow.accessibilityLabel = @"Next Month"; [_rightArrow addTarget:self action:@selector(changeMonth:) forControlEvents:UIControlEventTouchUpInside]; - [_rightArrow setImage:[UIImage imageNamedTK:@"calendar/calendar_right_arrow"] forState:0]; + + UIColor* tintColour = [TKCalendarMonthView setImageTintColour:nil]; + [_rightArrow setImage:[TKCalendarMonthView image:[UIImage imageNamedTK:@"calendar/calendar_right_arrow"] withTint:tintColour] forState:0]; return _rightArrow; } - (UIView *) tileBox{ @@ -1050,5 +1124,4 @@ - (void) reloadData{ } - @end \ No newline at end of file From 7494611424bdf0df489c1b39a0d7c7c3281e6cd7 Mon Sep 17 00:00:00 2001 From: Andy Geers Date: Wed, 4 Sep 2013 11:29:12 +0100 Subject: [PATCH 6/7] Get rid of comedic warning message from iOS7 --- src/TapkuLibrary/TKCalendarMonthView.m | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/TapkuLibrary/TKCalendarMonthView.m b/src/TapkuLibrary/TKCalendarMonthView.m index 6150cb4c..e50d7103 100644 --- a/src/TapkuLibrary/TKCalendarMonthView.m +++ b/src/TapkuLibrary/TKCalendarMonthView.m @@ -140,6 +140,9 @@ + (NSArray*) rangeOfDatesInMonthGrid:(NSDate*)date startOnSunday:(BOOL)sunday ti NSDate *firstDate, *lastDate; + if (date == nil) { + date = [NSDate date]; + } NSDateComponents *info = [date dateComponentsWithTimeZone:timeZone]; info.day = 1; @@ -1124,4 +1127,4 @@ - (void) reloadData{ } -@end \ No newline at end of file +@end From 5800628601be0b83e56cd7a3e02cb726dbe9bd4d Mon Sep 17 00:00:00 2001 From: Andy Geers Date: Wed, 4 Sep 2013 12:14:03 +0100 Subject: [PATCH 7/7] Fix messed up display when calendar is first opened --- src/TapkuLibrary/TKCalendarMonthView.m | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/TapkuLibrary/TKCalendarMonthView.m b/src/TapkuLibrary/TKCalendarMonthView.m index e50d7103..9559c15a 100644 --- a/src/TapkuLibrary/TKCalendarMonthView.m +++ b/src/TapkuLibrary/TKCalendarMonthView.m @@ -1106,6 +1106,10 @@ - (BOOL) selectDate:(NSDate*)date{ return ret; } - (void) reloadData{ + if (self.currentTile == nil) { + // Nothing here to reload yet + return; + } NSDate *d = self.currentTile.dateSelected; [self.currentTile removeFromSuperview];