From 6d9712c40c02cdae090ecfc58a8a669df03ef467 Mon Sep 17 00:00:00 2001 From: "Jay Freeman (saurik)" Date: Fri, 25 Jul 2008 11:10:44 +0000 Subject: [PATCH] The return of Reorganizing, a ton of graphical enhancements, and section filters. --- Cydia.app/Administration.png | Bin 0 -> 1403 bytes Cydia.app/Archiving.png | Bin 0 -> 2475 bytes Cydia.app/Data Storage.png | Bin 0 -> 2744 bytes Cydia.app/Development.png | Bin 0 -> 2242 bytes Cydia.app/Games.png | Bin 0 -> 1587 bytes Cydia.app/Java.png | Bin 0 -> 2356 bytes Cydia.app/Localization.png | Bin 0 -> 2223 bytes Cydia.app/Multimedia.png | Bin 0 -> 3133 bytes Cydia.app/Networking.png | Bin 0 -> 2520 bytes Cydia.app/Packaging.png | Bin 0 -> 1490 bytes Cydia.app/Repositories.png | Bin 0 -> 2455 bytes Cydia.app/Scripting.png | Bin 0 -> 1223 bytes Cydia.app/Security.png | Bin 0 -> 1959 bytes Cydia.app/System.png | Bin 0 -> 1939 bytes Cydia.app/Terminal Support.png | Bin 0 -> 1649 bytes Cydia.app/Text Editors.png | Bin 0 -> 1272 bytes Cydia.app/Themes.png | Bin 0 -> 1873 bytes Cydia.app/Toys.png | Bin 0 -> 2604 bytes Cydia.app/Tweaks.png | Bin 0 -> 1693 bytes Cydia.app/Utilities.png | Bin 0 -> 2484 bytes Cydia.app/X Window.png | Bin 0 -> 1878 bytes Cydia.app/home.html | 41 +++++ Cydia.mm | 326 +++++++++++++++++++++++++++------ Library/free.sh | 6 +- Library/move.sh | 2 +- 25 files changed, 315 insertions(+), 60 deletions(-) create mode 100644 Cydia.app/Administration.png create mode 100644 Cydia.app/Archiving.png create mode 100644 Cydia.app/Data Storage.png create mode 100644 Cydia.app/Development.png create mode 100644 Cydia.app/Games.png create mode 100644 Cydia.app/Java.png create mode 100644 Cydia.app/Localization.png create mode 100644 Cydia.app/Multimedia.png create mode 100644 Cydia.app/Networking.png create mode 100644 Cydia.app/Packaging.png create mode 100644 Cydia.app/Repositories.png create mode 100644 Cydia.app/Scripting.png create mode 100644 Cydia.app/Security.png create mode 100644 Cydia.app/System.png create mode 100644 Cydia.app/Terminal Support.png create mode 100644 Cydia.app/Text Editors.png create mode 100644 Cydia.app/Themes.png create mode 100644 Cydia.app/Toys.png create mode 100644 Cydia.app/Tweaks.png create mode 100644 Cydia.app/Utilities.png create mode 100644 Cydia.app/X Window.png create mode 100644 Cydia.app/home.html diff --git a/Cydia.app/Administration.png b/Cydia.app/Administration.png new file mode 100644 index 0000000000000000000000000000000000000000..8b4b44f8019b9fc390b22137d939142f351e05b1 GIT binary patch literal 1403 zcmV->1%&#EP)niz_ukoj6}YCpNG%;@*R$F&hh_j zVl*1zoMSi~QkEtE38Bku*UdTS5JI4oVmh57r9|aJM8Z6E-yd`!NL^hTrG1gw{tk!@(U->9nG_6&v^0T1-EbCW;`BajBx<62@*vS zuV26B&6_tX;J!&Ikx~)_0ZJ*9QiNexb*<4_e2V(h~ItvHTUn|U-45IgAk%RdP>zHypVu5Xv!Z&5wVU? zPF4gOC(T($M@PhQ+*YrWw)XW|3N*o+i?r7C`hC6_{sgyFDufUiN;;iRdtAzT9;zH_ zu2~_l3|{TdLJ;7bLI z-=3f!YgNM9&^d5b@-0gk_j=@cK~b2M4pl8UI5;5B^9xmN`n)s*i$P3TlIM9{dY}CB zX)C@$2zvcKX_hgY&Dh`H$6CwQ)>iGeY2Q@ff)IQnFZS^pjmG@;H@{|G`}UiEaB^}&mSr3t9}~wh(%$kpU>-eK$0YkMk5A;L2c^^Hp9?TAj>ii4-eVg+$4_U z6%~XK%;$5SKYvaT1T7L_7}hE!Ny2zMW@BTc&Iy1dNjN(@Ygakwl?CtF_ z9*=8G6-5!om;m7F)vHV<6XH0g)9DZd!AcnV{XWCt5O7%gNu8o7I6XZj&vW89Mr&Qi zTnNFX3s-ezZK2dyVKkE0o&z(l*3m|mP{otHC`Zp{l-_Xb*yvYCn002ov JPDHLkV1m#9tPTJG literal 0 HcmV?d00001 diff --git a/Cydia.app/Archiving.png b/Cydia.app/Archiving.png new file mode 100644 index 0000000000000000000000000000000000000000..68b486a95f0aa815b1e595c28083cc239ce4f136 GIT binary patch literal 2475 zcmV;c2~_rpP)q!_oD2#UBzR4^1NvIG@D zqj3qc*@yuJRQA#qESB1WMeG98(lXOdXXd?k-+OmE=lI7Pi@^%Sn0Rw%i2CAkew0J7LG9FGjK~OH6LDZ;{zI1mK*(T1%ScG#bev zl}hd0WlPUI?f7G+A3c3aZ*O;Ji;t9yjMlSPUfsLUH zRCCCIf&4oFYss<-0H?`unFa4*tpR1WqJ?03kpLm^H0~t3Gr3!p%!g zS@`i!eenmtC6K(9A%GA#`?^i&fNHhM__n7OeCyWVJ$CU$@ABGna zsn#0Q>J!2LOQ{e7L^YvUC~)=}C&)GDUG?;aHTTZ*lm`;5ap<1z5;(}Mp}VL5ck_=w zu0>+mIkXRJ{x>2eD|OmSB|d!q*>hK~dSt~rj-T^YAtcU$&P|hBo9DB7r_5N~-BDuC zNQE@Xar|!p2n6+dMo&j8CoOpQS8O_bmC~Xn1n4=lXCZ+5|G4@KXY@@W$t+{#>YHx1 zw;Z~;Cy|k$SS)bT$tQB{*T3{xJntG1XdyrVVN2<~o*%GptW1(*ZxO&h1Bi)Rpp`%< zi4+2*BvMMG)Sxs*2K4n$L6r_#a>@yFuW=6aGaLR2*n&|0A;wxp$0O1-Z61{agtXS} zS2v+O4(jYeO0Zc@Vhvd%BdN#K8#SV8l}fonC8{!BE>kI2sE$XN;XOy;B-UDVdAtnP zwPv!Ywrza{rJ=K6~nP|)9?ZZcw@+^VoV* zyRgs_7W}~XwdeavdLjq|o__Mr{mGt`+~w#n43Pp?EM|<2>>~*DepLi0wYA~-O~K4^ zL!4v?B*r?3_cH6Ki;9PT(pz}xx#zHVyg@atP^py}ukK?k8lzkprDkHBZ3>`Y@YuVn z(z=O_p~J+|2?;{QeUm%m-Me>CtJjI5D)p#_l8TnFKufVmu~4McTB5zJg|?Og?WF>( zEgr|toX4Zz6;v8y#O0KvYOyh36xwQR4wXuUN>rg%kEqrnlFaxmonfKaUPMox+>4TO zJd3L@r_n33s)ZJWwfJFx4gx|yAPhZ<1&^ZV5&8jzP@$C%!g1JPn!cUyL8e(ooFv4JB$r*&ulUK2Zhi6U70YRBYsUgf znqaNP8B3n$m^{NcN1lT*7M#NmEK|cd-22D|M3~~RO>h`+V2mNoV@d%Wb;w-2B0tOW zjLf8nzwfRi5GbVx1CPFrfkh`STDWrQvQM`>w|O&KLR4$uc|M(;B}!p|LQ$io*Q^0F z>-x6shF@>IoSW~M&%V8eYCO((ZIq$$-HcX-sn;8vI`d4fyXE%p{QTh9)`p|42wew!M?Ey zGp0`A&>qP*Zo02~`IjzVOg^%d(zMeGllp^6y*K%9PetmV-p7cp&MzdiZw2mg5MPhWWI`bWQfKu4i{<&jwpHk;^j6FV4^GzFksjjF@Xtz5NZ)UNvd z!|U6hT)Y0Dmv#GPElHBms9V-A zf8iETViE&x<&GPgMa-nw|KRK8+g1n^9s+g10RV2o9UEiFP4j=zxh7NASe$j(+>+%P p4eHcgY{!K3e-&;phi+Z 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 Q)&Kwi07*qoM6N<$g7W-l@c;k- literal 0 HcmV?d00001 diff --git a/Cydia.app/Games.png b/Cydia.app/Games.png new file mode 100644 index 0000000000000000000000000000000000000000..6e0efafd9fd6285faac2bc4b7b7f1170e42870ad GIT binary patch literal 1587 zcmV-32F&@1P)e)rV5-&K*aEb&EN zQq>o?wzhC^aIhvx(uO2SmnFtFDWwe%g0d`K&iTK2QS9VJ@vPVD4W2%IT1l5wNnmSz z!>QNnzg^$h_*QSVr?%T|T)lb?7caemIEt`88eukbaddQqXP%h7taT~MHTHzF#$kP6wACQkmVVQqCl1= z$g>PWa0tP{OAg8?a$X=x;$>Cc$^eQa?=wch7z3pggfb99K?r$urx0AA$a1KPx?fed z(k=i1%QQD+S$PpiK?m}288^0>drx! z1R(_CEC-V%_`d(abUNKWi{_aC001SLk|aadH0Xu_0EpuRLEt0L^43}9&J4g9b1c(D zyWK&j-9eJ32!jxcqJVQ=J9hv|Nn4g>n5KzFqltnS2*VIg;3J9S_PGNPLi>y{5JDh? z03igLs-fHMB8tM*a|Zy*ON0=h1j@2Ri4p}bj)zm0UplK=kmuPI$8ofC1GstP=G#Ju3x;mMwj4N49Zszd!!*%swb1T#F2+gn)pG&( z(Yx>JJkNhENfODj98nx0KVCIBFEE=-PzpgU-T38dcct>DtvrhBj`Q=C&dP_^zI+v( z?g}(rgRUDG4u^QM{TR!Ihn3z648z1=XXl;I_J+T&qFb4iGHJt|yO>U<=ybZcas4{J zcKtdYJ$!`O(Gh%a34iIM)oQ`C?e(grIZ-hq=A0mn(lx2y2zYihA+_LT8c#FmRfBX2s@U;Q1ZEn5YYPbKm@H{6;5?tu_ z(eL+BtJT0HhCI*VEfzQ&AL8YB4Bz)b83knw5@oPV^B@R-;wes+?_sU=L3cT5P$nVCG7w5&S{59~L8IP)u4xE@pic<-=4l?Mc0dS$ zG)*y^PGLI^I-L$KzHt%FRtxLv>$tSGhVjcWo<4a3*L4y2J_ftHm`o;!q6nRC2U(ht z*9KTyfAbG7_C~+R^Sn2IW#GCq^m?n%H65*13sD$iHl1KJ+Q)c2#@uyL3IWTqP^;B< z;w1UYX&xtb;P&m?zf)^0w z@hQj{gDlHX6dAHCLsb;$nhH%*(P%VaT4s|mwniysXHGy-lu}j{{*|}h`j@II-|&}# zNy_6>5an?}3!a0&0xJLetl*Gk1@(H}wQc)Bnx0g3F>%uqamS1u<$Btr`uKrnRYz( z&;R_N^E^i=rT9FD_PKfoj2Hg;%qRW~hC*a>S+;KNX2};9vFfhx{a>AL+w>od&%9cQ zv%gqC9EbrXkONYH_gPKqy8hV!2qDn4Gj^*5m;*!rV-mmw&<~WR7Oj2oVd4!92q8FI zX-X+ByJE>_(7S${As zAEwWTX;~PCfo`1ZVk+}=UHfDJO4SxhDe+tnPpaq8w3Q3m8~NbP7iegX6H6p;%VmnW zY*Kpem5)7q|L;d83RS6Csox(}|o>yAePlo%W9qg-_` zG|-eoL$VFfDUFRXmOjbg@NuZR*6LfXd2uLHDSMu@r6&=Zn09;$MNQYnnd(rrR|Qfj zJSqRQcz(y-g>;J61@nowM(OR|LHB!I^bZ^(mmTHnx8Fu`)?5Oi2#G`sflw0z{k^DC z#((3AYgN~lZ9>-sLKEn^jwS?Bs_AJ+>7DK$H3>o~mVRNuyt@Yue8|!j*Rgfu2JZjK z{k)TL&*16bTlaG7s?}(!g6ZUl*bb|{{UciDcGA1AmrF0dOl7hek!WsWbN2_l@yhG0 zx%X~N*TZ!kjA*iDS{OE(xU`?ffxG^?WS|iEFQS-T7I=@_c@!?-WXu#`<6U^t{e*S$;XIzrTi1Fv5|(BVDj%VeTU181NT1g1i$k<<}JUOXmjgY zCB1b@PNvkO1{z|1Vomjg8yYDUOW466 z2lwq|!=E>hIZaQ4!1~`l$rq3hw3O6v+Ufug=4u>06GM`-u)W84_DFs8j(mHot<;py}kQBzY>p0)M*Szd6D1t zF?;4LGPw-FNEqRTc(?m);+I@KB@<5O9LPD?z`})L{FcS|_z)ArgE*Bl8CY@4)kKpE zIP&JRc*3KSEs~!Yr@paaT_K%*OeuxoNm)DbJnx=ZG=@|X%dkKQ`qG0W;tSaJ(lcCs z^XfB8vm9UE|6a2$+eQxmFo>czvs0Qp>jlY@ig^Eo1Rh^kvwMd{J#53=i{kH}@R_$`yF zR4CKhoGIjyQXzJ4-wuG3@<6<`wWE+P5()?DKi*GzFwOYbC^IjZg<<)qvx8W=#szJy z=#j{oVS64!M~^X_%}@oh*(`;T5w5%G2734Qu;=4mnpzrJbjcD5Bk4PpQX3Rt*rtW3 z32fl_v11(#jg9#IHi_0YlvIq3jdF1R0b1e->N}(O?EtBvG^Jzx6mof7r;6>j35J5$ z!4UC8g8qR4-hX=&fq>1(hK*>ZNjMs1=BznbreM5U>7VMb4Aao2dX85#rLIy^;z>ng zEQXL0P1o7i)5GD^K{DeL%;~(4a5RGL^I=;iuImvB2S_xxQFTjvv|}gFJ@YKO5Oj3T zMfgnW>l|GG)gE^M>5eyG#W;@E+_i> zcK8GSOPS=|fLfgvFzib2-fTMklyn@LTbeO+op>TaARMMHT1Rq5JAH>z9PR6)udk0{ zz5q&6bsQAX(AdbbWnUwnNDvN%u|okmIy{GJTkqIlXTGu3ZeCI03L(>H2cOJ5`JnhNfxLJ^xh0 zBy@dMu~4~h)Eix!%@t^BXrMWnBo>cP8#XNq)3VM1R!d2k7#k+Fe?OUQmQtniM-P4& z35TbHovK}iIQzmOYCv>dTX$k~Vtv@}e_ASa{m95Dq0nLKA`xQs^#tnbuq+GE@H~fd zrA#rCWjLKCpUaWY=O~n`M~bE5ccPI3Ib3q7%5a^mVVw&a+JqHiA zhHZOII28OrFg@C)oBjBMeoS3QDTM&avp>g&-a?VWF& zAHXz@+Koup^#RMW9@>{W{E#6;P-xo4e#>e%bbW>0h4?fOlR$J$!_ak1T`vet>$WVb+nDTfg%FsYi@-$!nx-K%F_qq* aI{php-VQ}7Y>lY^00005pGk9mnzaIrrY*{q3`My3IJVq-Wkw%Gu@cjes=XK9H`R4l- z-h1B9lJ9Fe5WZI*e(tSS&3iH6jbE87yFqC?bHk;5kG<=FuipPs?~+<&Rk0plP%Br~ zE$y$YF2unqiCCeHTb3lI?wkvR=Lz6#0P#-Wz~#67H0UiCmsYz97j*S^ZR_u@U)o(O zZHtSAA>m{l@6b5%M1vIc_mnZlp^YO9C50$>%^H8%9oG#l3Jfp2;@+=OlwGcAkMs<$ zn4j%ynw7yif|HXKTZ#JmmUe9|$MHp**RNSy?JBJ(7sEIT1FZMV&MDHYLm&h)5P0YD zLQpP+%!nL-IFbZ`Cr$Ng=Y2OYw+K-0sb3X^(bZ93M4=F|G+T}g+eB;niG!Fh3W(zf z0py8A=MJL`);XMqKnj9DBBUe?1f_C75DL;frx1l$FGw?oHm1)yw-(sH2w=26qjQa( z)s(Acs`Vtymdlpv*YamW2WP{gfWIrvxQRm0;E#KmrDde0plz-v$Wd@TBr2(cGKHaqpz<< zP=I#RkYGGxYbXVx-zc9O>5bE*$^ss zBppMVSklB`l>f+$Uw^u~2+(OXMy&UE?+L2uGuk!7lzsC zX-=G&ppz>aa~ad~ijC`fxbsu%SU=d!!;c^4^o-_;t-Wks)5GLkN|tHzT;rTr;Vj!1 z0h0Ms$BlL!=RE>}kYJ6&q?%?sVdsa}@QvGdkT}o$Oo#67GF{ao?PfxnDWV|enHNX7 z@8?Ija8(@<1w8cBTPOpUZ0M&}j>s~L$}M@Oz{|ah0BLh_%o%sgD1-G5Jb*{zs74XD ze`Y7m)bhLMk5VZ~aFTj|H(@A9(wyyEy1DI!jSSR_{A%AQAdy1u)O0`1&vVI1aR+u>3!i$jZTAi6@ z#-2-7^1wHDvhBhFdTRxCZSLXby{o9!N>u6~0!t$`IOkDTlVmALCm~4_thX13Ms7R@ z07#q7=R9DI#VCz27L{v;hq?%)qn+eLk)TwG*>u4G%U5;-uw+@4qsJHe%7MQ(dG+-Z zoH^5Eda{Kxjx*COq_Z?z9p>j7w3;o9GGQp9J&OR%nZx^>vs2c2tg%?Fan^Hebdoc3 zIRiZv;$pzm^ekWb^k&|8<0O0Ue1ZobIl%Q-uA`kn97mJ_P+HMdDYC4uL_xxlwrE0~I!3)X&Dj64fGX8ZNPW*Lpf>%ExyMF)`DmIiE8*IgL(pw9=>~CrdLhe&_J+ zdzPI8_;kNdo3qb&E3jITwG-N{7LBPX9(?eR$ex(Np+3I<$e-DC?GJeJ<E7-PB$1%KH&06@|> z{j&2UCb#G;$16izC~)BLNsb+vz-z|?-@1m|Z~Z8D-}5Xg_k=Ib{E%X@~1~~6A#t?_`?nQw1?9ro2=@E}bNC^l^r6T2W zl}8_cl@G2TptoLO@6KWFxNSQxJ^MOu9z8*`)1aphF5fi3XRqJN@Tz_w;_mM}$@th5 zQW&gJSZgVki-b{#$~8E4l-7S)ESd+FY`W{=I1X;{c0t>8 zIn+(9r^t^V+Q<40E6|x{^!PN}E?rCL4X+(I&TpPM$k>TVqEZANWEfB^l?g&gsZ^rV zO0dqHJvlbEanVF%v(6zO)d8s1>x5Ae?<`%FBBLW`xb+J^;;JjRux-mql2oz(z!<-L z;$=>ajn7U=Hp#Y?ctE<7Hq(5a!5DF`5&Pw4Hdl5|oE#RA4y5KxE~np_|w!Z<`m0YU_L z?~qaw7h?nhs}yIararmo1oAu^D?4wZVjNoI@ZO@W!D)lF4sUXL`)kpePEl*%QHwFvKq|Kkes8H8&JDSEZlIBRgmVzt3q zOI)o`s@IqqJA(iOEQAUWfj|ZUK@cIO#Cw5vqKRMvCr){9Cp><_nXEB4-%Uz7;RxO4um zX`)`SCOKfT`J-ujcEUBD(&r2N-vE2qINfV>mVgj==P<^0tg#Je?1YeV6wHWG`4Ov| zhgFuH(8<|ppS|#o1OGd~Pdk<5KQVgx_s-i>*67nts|jc4&RU(#pc*Z&U$_5n*!k*h xi-`z#mGM>Q?XS;!XYY2si@ud553#U+%t2SGHu?+HBdDu&`x=jm#3WlqG?-Y|{WKTgsHMchXWigiOK&+D;o% zAPf0G1DS+RU}snY*a3`fWJ|JaV@b9a+p;BD*435nm9Fmc-%mftHJ!<1rZb)CJ9FmD zoH=LCbKdv--t!(IrQ~bv>j*_6xQ>luSyZM{NWgV$JlDl>Z17yFme%08F1BNHJG32M!KtUmhEcWasnfx{hNz1pIy~Dk2mLWp4SiEes5e@%jFv zW-<{iUfj}Hv8ri#)hBxo&u9RS?UiR1G7Fih@t*_&p=zH$cx@mU{O4dOkPifdZ%3n% zwVI|4D~ia1Ixcj2|FExbqHg(;;kEiQ&9t3JU2PRJ^97ENjMLIwPyLD|)YmSdWlbIJ ztt&Y;JVDzxvSI}I)l);fxSgyd4YT}jOzBjJ{EEMKh-ng14e(=(>lV{EuW^r8cikX#z zgU8!;e)?s8^2Cuoe{ueUYuZ;&mdmApV_Ddad%Ui?>c`Q*(wk3@j@E3wbR8|L>zSI) zbGUDWg@q#Vc!XtDaWYdAU}VV7rb#>1ghhe+D%ArPRbZHw;a41*DtWr8vS#97zjs=# zSW>!iRm;TIYi=6!EOV~2d+7464}ST#*M94T-7{0C#(d1&CY;i@(-UV>RYshFu_6Pb z{pj8T!XLvH3T4-a>963c zLnG9t!t6hA41CoDgpDdZJjcb6&Q|~kA@08KE|xD%CHnjN*|~EU3xxuuQVGK_F--&8 zwsBpLefz#35{b~-+8VulYe#!aT~Zbc3s{zg>zcT>hfoYkM@M@3~j9`6d|!~ z8vte3r@JHf{>?)-8>T^j{{YEEf?}zNs;VTD2@=T!(P)%VC`2F_z~}cN0MB(P6c+gK z!;g6BrT;)z4OTWJa6Cz8_YoqoD4W|iFq4_bG<6nCC|MGp1|`G7m2%Mofk5!jm#pGEe1jltrr_+p$kK?)?LMRx9fs`I+&Yb3FKYxuUpM0E~ z@AxJw8>{K-J3((xKUGyV4EK*!PYEt5&V#nScBT9)Ii+qOll}NCdw>fDnSQu`xd1vzPYuo5{{D5RD`$ zmka1VKT04*BpPN}brl{8XLIF61(r(XwBx$OVo_456!BP`L?VHzs-)9tGSf4hJ2ypk zHcPQs#PvJ?uDkA99(?dVLZJ|`cnn2R&~=@j?jCeaBOa@vc~v|8!^0Hq6783+VPkt8 z*I$-Ekp@63fL1CSdvm$DuUDliSyod6QsTNEre!fUHjZhS7^Xogl_HUd6FYzEP%y}~ z*IdKcnQ=bdy&LIyNYBHvOh!gVXl-udnl{!(lou+rm5BcaY8Is7h6m31yg!Op-_>@aaD48|rZ#he#xX z5CYHh2m}H+u1g>oq@i&oMzKsJDp56s;mNE$kyKBNqvm+j)5gM+6} zb#@<}aa^b9O7g%gkP*-$;p_!~r@wu7=W{Q=_M2EN`as)7EyUw-01AZyb#*Iv^pS_@ zI?%=LJ$p${rO`BvL?XUeRH_;QzaQJSh(%)P4xC2-Zgl*=lx6D*3i^ghZ0}OTfhE=1bF!FyZ#$! z5y17NJUc!yIC<_I6BFb31AdlPrKqf|#OL!-C=|%&^O&YdG#W+Mb>`;ga9sygRZ)aM z5rUSMwcL5forHox`TggfeQ8(c5oTudY~Hd?oSuV$QIuDIy_dOsUIp9>0Gd!`cURX3 zx88B*$uEx_UU}lg2oF5)Ajw3Wcsx!x93~tNGdDL!p-?~wfubyC&g$wKVzDR<4Gq-P z)By0K7he3Jwzl@r&|ts5Vco^@VDCvRQ9)33vC0b=<&wPb#x3H_kGdpMN}`&g#$)j% zZ5OZq?ygUETMvKd5qaxvx62Pc{8-NB=A`YoQc5XZ*OldRSr!TfIX|D5rBX@$Pn(;c zmp}O7^P|CF;2RxVJCgnVecGv0quR%Ny0t^cXSJ@w8SUUeR=ejfZqTG$+*Di!@def4EteFg5h=Ud!(FRtv5{-_!QX1*pIobQ^BrWUP@$?9V+%z2*Ek_mN!rH~M-1TJhs>b~2*x8Zc zp`q=!-}aZqM<09q8!!Fj<&{RcsPy!7vt#?)G&Ze7Q#JDWxj9|e-D0Wa9qj2X@812{ z^wFbz{kCoH6G9wJBrC_Cd;a^@ruFOjXyYN{T;X8(U3}|Lft(*rT={W^?}LBv;DvVPy*&z)b!~2J};&8{>V*#!i1EP zgsO=4E3XmvJ@GxhJkrVWz9BKt`$aIDovw5oC*?YJ%JaM+(km&dmKH)}0>R+CKM-{` zY}(@e)&2kEZd{$hDbH}sq$HL4xY^{Qc@hm<~`O_iz|F-`E XIcx;(-(w_Z00000NkvXXu0mjf;7u{v literal 0 HcmV?d00001 diff --git a/Cydia.app/Networking.png b/Cydia.app/Networking.png new file mode 100644 index 0000000000000000000000000000000000000000..ee1f0a1df1e009828de17e02e1ccefef0e9bae7a GIT binary patch literal 2520 zcmV;}2`Bc6P)~6{R7#aZ4dh5KTxW3e;eTZNSE3kH?o8&;6X4Irn{8YxQ9WGK^jF)+K#U zdu#oF`@g<#ecu+&IsQMF{&`pOcQz28%EhXa=xJKt)XGuEU(#kra6 zg)bNZNGU#aU-9!eAU^)j1w4IZe5mIS_U$Mfyk#UWM*DK)d#=oJ-lmlr1%~6$)n%=#xqxLs&m5!t=I<7 z9iM+HUkrc$7x(qCV<3n26bC1IDff6Z+Jc(|8hkB1Th zV;$G3U6c^4H&doYb6j5OpaeMHJzodLIkLpkH5r}65_pRH?-=B+-6dW=vvTD5Q)}P< z)ZzZ8ZwioFyho2te?mnNHfb?BgHw3R+2zV zLSG|L3={)ypXg<@5@F2@-+XrVs}CIRe^!IJA;7b**B(B3Zs}m9H$?l2%t9kJSRv_T z4y`0g3S2$rQ3oTJq?)S3y+c7}D1$>AO@EVgLJmgA?F?tK2u zjnDk*?WL!02ypDhYri7_&sR7L-PF*XPcuB6GD4$Ioxj ziBp6HXB``@jNM~7e(=T$OKWXr78+D*n>_VjbB|mP@Lm$mu4Q}PIA8rp6ly#rky?@% zM%k`~`$_P9yi2}`Xtvxio)IE6btv#3C z2e42}4_jl=S}<7hdGPKb#s_-XH5gKF8=ide8kbgM3ZW*Dl5^KOoSE-1RP?!RB+pMT z*J*bhAKlZ3FCE9{8stJvy=l4cP(Sl44Nkt(K}y59Yw^x)4tQFON-2;|;w#C)op~O- zXP6(qwZ_+t1P(z4w9<@^jFxF-hDzj9$ZLLhVueEJ(KVJm;{}9+ z#cGVF1VRhuHz{lb2m)>VK$EsJdLqS%nL4k|G?-p&69yLTNdhehe1%d1Aq6E*5qgRP z<30T5y+cedH~E`quM&m|g{2@Rt&ZjVl{#r=5K<5YKAzUw%djWZZ%4V1{s?OIgy&8y zQ7nXLUlMpeP6)cjk&8S4B3}_3OAsgyjOQu!DD<*qpcrBu#HpbbXS5Q7_5`8}0>Su5 zFNK`9vaJewBJcDqV`ZBfSg3Z16H7O>2%+#ih3_dGk}y#8Zz*$UYan7Q|*4?0# zV4xV#R}6?kkB{vwW03sd^ahXpWR4&9C0n}FWHrA3PmL#)aA)oUo7Cb(ExXeShmsxFEF0RD*o}!T$lFZRp z3IRxsC50{{qo@2QDf2Jw6!?J1NH;2btHU@g`< zLLo^L!#mZ4^=?LQ-ouX+fu~t(8X_%dcMRQ5LYx?)K(TjMkvpgQ$QMhtp7}?w*L)wq zAAdZ0^|tZCv7wPZq}*!3##%DtSZ~JI%usJ9JoVZ-b4xLvlcbp=?pkbSkvJv?0>;Z8 z{dtc)BRO^shLj3Egn5FV;JbhEE5WIo0BkkuqhJ5pmnJ8MHU>t@C{LlKKmbF%K2pM4 zb9FYG3H44wqnonXNZD*Aq^V*5XpT=DDDv4~7+|bF$MR-OC$aPomMK=sYft>?pM04Q ztm^=_n)~c!ed*slj^gY$?6%qTP?3{B85OGg^-GTpc$%o4EB12TCv_txmxYw3)oT7WX7^oOURe<2&J>f|L))Z z{``rzo}o}W$KsFYT>a(uMBhIV$xz{JjwsBZedXlqPqf?i;otl8=Wm-D%Qxyx%8}&0 zsXU=4Sxp4_BtcP~N`=ECId@L)C4^E8qX# z3;#NEZg%31yZ0R&8y_66RKnguq-5j^93Y$^HX>_x;>N{`3zuJeu-xL$l4fa{!bV)BcdAT9tYLhSScZK5d1>g&z(XHQ+2TVJgeMn)^8fq_zQ zlnXp-Esc67URtVcE?%qFmKLh@&5cGU%7yK?n>LaptK!5}q_~R7njfr!ZBwzk_-H03 zzqkUl1=NHTV^Ya}&-Y4Uj7u}(=TrM1pwnK9PbOly^dk>B-wT~|`B3&9$& z0IXnL+s*#9{ZN2+Aq=po_k6i65X(Y{ULhz8A&OFpf|4@yJ?#gfr)4Ug)+*Cl#!`xo z5Tb!#1HlG}x)5~i%%jZ>36=lj2>`-l(|Gcwfx0000UYoJT~;EbR6VjX zAt(@#Al+!44|KyFFvC4zmhh&L zTs?pPC%^dVZ~uJ%539bi)fZnlUtavu#aDhjnbd=F`xJ;H2#6pUo*cw*TO8%BV|U!W z1!9IH#N-s2^6t03{QgS;c=P7vx6Xd*+@PihnjmOkGnsZrH6Z++w1clqV- zw}IhC2Ht!7#t$T9XqKZz56}7}%}H9cO$w5fm=^OU1tw+Nv}>VjSr6?E(2&t2p#0{|OYe-wHHiT7loTh3Dxv`i(^Bl7RT1r|hgk)r-Y@1Tf|c& zrAU_Lgx&xV?)dPKW->xUSRh80F3Z~0iIKA=X{!n+DyW0I?E-^o z9?Sp)%O~~zL!LbNCuP6S{-|NAm(ee?HtE(hQ*bxH5pVGcVx1tL!4Q+KON6p#R-%RRFE-I>!l$sMvDTf5sd9}dSrS_6>q z8j*A`s=~SRpXT1*?h#|%CYrCyk1*E+U_l0_F#&hS46fe1&f$|MoI|Li9c>1Xnn^O^ z-kGhSc}~B~Aa_Ct?Ub^}!rZ~sugp@Vm2DBh%!tX!@|;&rZxOPLqe-=yfx0@X%}I`+ zqU5R=AYF#(g5x>cg0FGo9T-Pd$VE{ROqGyjJby7h0^%Bg`wxfXgW;sv(tu_eUhd$j zKU>Gt|*{0+=Gfg1qKAcTNv1|n2V+zj9lqM0=zE07Qv zR)SBOd6vUkiM^CLYY zN8|DF0Afs)h73`m7aBsajjI-E_X)?l5V0JZ)^n=^sjUV?F`P%wj)seKEdgj!sx@Rd zN-{8fBLgB1mbyJ);TsX~u3)V_pqkODr78|IRWm*gfPL`v#rWD+3mRZT4=l}BxMHo? zY&agyK$aa4XIBFn0`8HjiId|1P}fZisw9-1yg|e9IqnhbJgn$@R-79jUJFnjScAMXulYD-&5QC{K&-M%f z6{S8J(JL}WqZo(d>ewp4Qk>+fU=5Eyc*It(pvc2)T4+zY(+WTY)qusO>kHiunA*^} z@%UgwAx@bE4pK^^$q6~|;lG|9#NjhSe*nWVvCg_<7ih>q1=j#LmKr=IW~ZWMdfF!u zIGPZ8C7C!6{{D}HqlP60mPTyl`SmLo20yf9xvDy5Ed7Cf3~Lq82tl$(&#U_n_p4t4 s&o)DDt;dExrccNcP{IGau20VX14+rGpF07*qoM6N<$g6h@GDgXcg literal 0 HcmV?d00001 diff --git a/Cydia.app/Repositories.png b/Cydia.app/Repositories.png new file mode 100644 index 0000000000000000000000000000000000000000..29c9db0df918020bcbed2c016ba2c1f91d6edabf GIT binary patch literal 2455 zcmV;I3263-P)D?Nz4yAWJ`6KK@Sgt3e%LE3|M#u$ z|JV0t5$7B}Z(KNg_60rFYAs2UDgfW8KZ2a@)BA=DO<(FM{)!NmoH(Yb& zmDkR{WN@I|*Vi3H5h!DD#-QD9H;%k>6E#@F3I!fd_~O z@g6V+)H+Z?Kq&_gI0&Vn^uyo)uyW`Hq_3E!a{`lj=X`04oud_{?HqHEG zg??z&+I4H|%~PNRaMZ$KO7egLgm{1f+y{twfGCL(rYV9r250Aka|6B8^Izd*K2QFpN)3=2<&G z27^XYsg$E6nVY6*cl0S_w6&;ID*TSy@3A$fW;a% z$&geimdqW5=?FhLc4}95SKrH(uC6=?0yyWWbFL@Lvc&*~dU|?#$(buS9Ug$Q7S=jg zXYtOv?=@C_R_z-1K+E?9!1Fn;`G{i%V0 zMLW8yRYnNuGRBmxwIySWs#GffNz-(DyPtlw9Bc%!IW6iyT0}J-C9|k&(v+2M6DpJ$v>`qobqS07Ov~39Yr|oR4d*VYG%2Q=nOvBg--rMUEoR z(be76A184)=bR@|9L0nHgmExJKnMZn9AU`87{IyDIp@Y&3jo2y#KeJ>D_6>Cne#k< z(>eD|&N&xCNNatg(aHcg6h#iL6tvbb#=$uYV;!O>N;wZw3cy+C9p@bEjFoaeWh#sZ z@ZN(l7CUFzbWc^Q)g?Q3?wo1$X0th;QW_a!80W0r=?HOhOyJaHj&?goQAkKBA+>^3 zQ(uwi)>>=15Tes;)LU$Du;#o6qh}^t7$AycD5U|A-l7maNs?sNTFja?Ywq&p%WoSQ z8QE7Zm#fQ{FJA?~bUK~1ueYZ$IoX+;+Y^{89WHUI0L5)(}vbn zEj9FtXC4`_*)%W_rJ-1}8wOD&V@fLI#K<6Qp0Gx5~ zUV|_TAsRSv;J}WVS+INeKVH20nrjZrG5==@^HAO;e0YTd+*d%-;aOlw9|GxFs$d>7xGvl}@ ziqp%Mefh3e_wE}`;`pN(0I<%%IR`=rNF0F#46ZGpq(u=KXl`JY0#^z|X(+8Bm4ams zj7sZIGYZTt1jH{X2E z#KeRnz?5|sIfRgqT0=+)Q4~{C&UqBhK`9MW284U~!Tz~Jq_x)!5E$c6%l%v&Y!zhJz)XgmqJVY|zCPP%U;n(c zRIVDMeY1YLK5=5~*wN$14;()+`p;&wdFZp|{9FXi4$e6xghT}J&U literal 0 HcmV?d00001 diff --git a/Cydia.app/Scripting.png b/Cydia.app/Scripting.png new file mode 100644 index 0000000000000000000000000000000000000000..d020f71adae7bf6ebb9377c6d43757f5501f821f GIT binary patch literal 1223 zcmV;&1UUPNP)Gi|y5|HCt-~T3lmTT100Gfxts~R#24{EET2Hoe+jz_wPiB;TmKU`D0bV&kNfC<3 zWGko57xR?^lq|t?fay&sMI;izG);oRAR>ZkngjxYdB@D`0;U<|&YfN^UHX}H`eRyKKj*@Q z3oKo_i~|P_5Rb)(nkJD*1QCeEVuZsHJg>;EUAxHTa&%tqBoeNeb9bL713n^}P$&{tTNMMuZC^xpZMix+>Qt*s5)cDR21I+;v{&dyF2FHUgq;6YBD_y*IgKt!mn zuI9mmK8%1uL^GSAR0V(@Kf9hsZEY>C>yl2VX>M+&y}g~fx;kE~tYl;aZ?0N}<2Wd#h{fWFQVb3b(%ak1z`y_>G&a)F z(J_`Ctx1?B=YKd)sv*USl`C-^X8|%Cmw^HTMu1Q-L~lcGCVv) zJZjR@)5GDzhiFKp`0|T3y1KeJe*8EH3=aOux$n<$?AS5fLSaf)&&vQJ_`XlRV6!N( zh?_TW(6WC&`FtLw6nppXQ&SU7O3y&WUaI*a*t*x!B zUHcZ+=m^I6GCda{5D1dZW@&Ezl$MtLY~K7KOMn^{hHI;x_3?%@bUu4qL2TcZ|Asj>r1eAbD`jDJ2geWGwUyrinCs!@ax&lcKC lF`#e<9zE)IU3Ylm=HJAz)k&C*!gl}w002ovPDHLkV1guZL-POt literal 0 HcmV?d00001 diff --git a/Cydia.app/Security.png b/Cydia.app/Security.png new file mode 100644 index 0000000000000000000000000000000000000000..b091a84fcf416e98861737575e66e083421ea4f9 GIT binary patch literal 1959 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 Ze*nqZAyPe*Srz~Q002ovPDHLkV1f!cmJa{` literal 0 HcmV?d00001 diff --git a/Cydia.app/Terminal Support.png b/Cydia.app/Terminal Support.png new file mode 100644 index 0000000000000000000000000000000000000000..864374cb159d21de0fef70c5c89872389d1b600c GIT binary patch literal 1649 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 iylEk-s%V-f0Dl83{>oc3!BkrS0000a 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 O0000^sm(8NpH7)|VxcVl82 zUyMuxKJ>*0B@}BkMQE|97?6QL1tD@1m^r|l;oSE=d+*POeFhF=Q3?fDva-+jW$(3q z-+!%de`kxyI3L{^3vasq%E4j^$rkI5@U6i?;d@Lvbe}3b-Y=arO9~_xJo@?~5q=li}hFt~V8X2UAAWc?A2{PCZhJ@I=6N6$cG8gv6R zVCpE^4Hyl9KtsTehK?kxzLECF#=o5YA+Y6!0-H8%dfYV4?XKtfp6m5&+xE-2)(`{% z6B84q=bnEtk*MrYqeHu4_U|A-2&d1(m1}Te3Ib(w;J8i95i|x`8!R34*}UpHzugUq zHdwM4)~**$?oXAMt!)gls#-7sL}dHRFTc`XDwXu>uTS_#CMTmcXb1v7zHiUl(r0|Y zXm0~%nhQ+8&fkG)fak-Ba{+(&YaK%g9cid}ijiUXWH-FIA3C$}n|I(_TGOS=G3pDt zfC!*kt?C^+enq)bk;|8-{9U_tSvt@JIwTfz!h`w08FqhxaMq(b73FtqSe%J!t3x|$Z!TH3>>;!! z2tzJiyyRw6?JAv_G4mHrbM-<5pagnT5QdRbW5bYfKmp}ODqG5R{85i|kJ z2*CH0PUjM9x4c$-|8_CdU1tYOGYCXkzute=dbcAExfHY~A(xD<*@O~XI-dP+G42VV z(eSIaa^bnXC%pBA60gQ==x&G340LB;bU47V;^X%Xpw+4duelAY_|U2a^mf8v52PH8 z(-s>lANtX4Pu-6V;A?N_l5NVQ9YQJwrU{k}mg#m{>7jx94gerw;_pB%rCDFl@bc)~?haL#P z_^Ud&KI45LBA7rg8t0n54-)I-h^|u z>l-UqR7&o%or41_`g>{{M|ut>30y>oPAO4b$Y(ALEbaO!eqn;g^VN?9;1{2F7Oi>W zb3a?$bLPoh{Hl%PLc>J}!FQXcR!3?0yg18BB1#N%<`;KWu*Os)#xF-d&$@rm>zF_spqBQY%630nkJ8=xl zMi~ZS5YTAUacdPkuS(6War9K_@Z@QC^<0dP_F*#5id8RrJm1OrYMN5HjN@pajAdEW zYE?|rijtTX)ryZ{#wpGg7qrH>1wcfEs4PbFs<^e15dG=WKusy7KD%KZ)6>(OJXxSC zmjfV~NO104iClXY5h0Oi$+H$6?mRk)>=OU)ByKGcY%n^^?}*+x!-dtwd`(cEef?> nH4p;9oNKLhv(%!s4gvlRQ~r%+LAn}A00000NkvXXu0mjfwLCzZ literal 0 HcmV?d00001 diff --git a/Cydia.app/Utilities.png b/Cydia.app/Utilities.png new file mode 100644 index 0000000000000000000000000000000000000000..2d7c31d88cf28b289ecd7b44b2c5441453b5b6ac GIT binary patch literal 2484 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 ykxa6so@^Z zU2Ifo8OML`nKM17GyS5aOlh}mO4}_`Xb`F?EDD&|3$qu-8_g1N6X1gEjjl#xVq&s4 z>VosTo;`#oMT=P;*JSV?@7H|L!9 z<9Yti|M_^|BZ43R;L4RNcl-MKk{ul#fe->A1d5`dC<@zshtEVJ5u0nAZ(QRz4yI{R ztyV>)QZXkdCl3Iq)SIFx!^vc_RoC_KyQx1<(RPX(o3869ih|=f0Gr`>1faFGl^Zv1 zu(-HLOG`_WrHw2!eglLohR?0<073`~g#we4lT1%fN8=FyP1C5=Y8*UxFeW7TaGA;< zuHm8}T?YNH@9z0-SVS$;MnPvcq zL;~BkDVNI;VgMPyfrs~a_1J#s$?&(2Kjcq=PuuWFOsSL-DJ4#=#^ZN+n#^rM_%@ zWmf^mfq(vkZ=_+QD~aPc*tSjX=1soutaE9t%*K&pF{519#kOr6$HDWwX9EBzm&=sP zWvbOGhG9^v)i4YL!!WqD?-+L~HE>;c?;XCi@*kY_M;Mg~uYY=%yyf!mLo)~=A|^xG zVOJDo`xsDFl^_VPZ9BH9(PvUheyzX6o0Yrldb~lKdxw`xK5LIQ>F-MN<8(h-GKp>5 zc%Fyv`;o;V^+Jdk1F;}1m&?>@H2{*yB&w=L)`S3Ls+*rwTKRcPn#Z{^rAKAXjr8(E zQzJb#76q`PD7da0DfT=sa>X+Nc%BzlDm>3aQ6djTO-hMTu`p5!b1N0TKF~=zuxW4a zz^<$i}uYpsMOqE9;0I$H8%&C@@{urM$Gnn=4CPm|sI5=w(b5*eeBo6l|iG zbFoYc*=T$M&#nVO5MUTa1Zb-ZJjdbm?SD~2aO>Df(!!>o)OdXJQD%5^hA zM_)HX!sp!bJ^amLtPF?LZySVCO48{xnM@|KJdsFX79R6{YY*NR4>FR;G~ElH?jPhr zs-4z_dAvRSB!y&fcR%{>{wSL)%c8ZlHD*8rz;PU=r>9w4TZ;fhx0~Z9V%BcGj6|t6 zF@Zlj8w-=`(K@da?Y;0^qNB&k9 zNY`~S3`0sOBNv1$gbGa43~bw0gb-qjl~U8R=#m<)cU>3H^RR83TCIlbx{44YvP5jX zyM0!hnwlCnO>-^?f&-xo>Tdb-{rmU7@1Gb zw(S?PXj=xvlL$-jBu%wcDm6AbIyx~lG&H(v*RIK>rKN8ci$x_otbE_6udmO_WHJ}l z*VpIg=jZQbv)Osi^Bw^K-~mCfjj|>HLI|O%YKxRo9~v4ubmq*NADlRG;+0~t*m>>R zH7v{G&Ye3=cRV2k_4RS;)G3+E>NZLdlxZQu93tpJ)_aP;WW zM0a<$W?5ExW@hH>?Ck8JOY?z--guCA`` zfq?-vl}bfbQ&rWdstF-bRh7-nO;%S|P2cykz!gPN-UXJ05S!U-);@do?DGNS^LeGG zrzh!oURqI + + Network Error + + + + +
+ +
Unable To Load
+ +
()
+ +
diff --git a/Cydia.mm b/Cydia.mm index 1f6e1755..8048418a 100644 --- a/Cydia.mm +++ b/Cydia.mm @@ -35,6 +35,13 @@ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#ifdef __OBJC2__ + #define UITextTraits UITextInputTraits + #define textTraits textInputTraits + #define setAutoCapsType setAutocapitalizationType + #define setAutoCorrectionType setAutocorrectionType +#endif + /* #include Directives {{{ */ #include #include @@ -406,7 +413,7 @@ class GSFont { /* Random Global Variables {{{ */ static const int PulseInterval_ = 50000; static const int ButtonBarHeight_ = 48; -static const float KeyboardTime_ = 0.4f; +static const float KeyboardTime_ = 0.3f; static const char * const SpringBoard_ = "/System/Library/LaunchDaemons/com.apple.SpringBoard.plist"; #ifndef Cydia_ @@ -447,6 +454,7 @@ bool reload_; static NSMutableDictionary *Metadata_; static NSMutableDictionary *Packages_; +static NSMutableDictionary *Sections_; static bool Changed_; static NSDate *now_; @@ -523,6 +531,12 @@ NSString *Simplify(NSString *title) { } /* }}} */ +bool isSectionVisible(NSString *section) { + NSDictionary *metadata = [Sections_ objectForKey:section]; + NSNumber *hidden = metadata == nil ? nil : [metadata objectForKey:@"Hidden"]; + return hidden == nil || ![hidden boolValue]; +} + /* Delegate Prototypes {{{ */ @class Package; @class Source; @@ -558,6 +572,7 @@ NSString *Simplify(NSString *title) { - (void) removePackage:(Package *)package; - (void) slideUp:(UIAlertSheet *)alert; - (void) distUpgrade; +- (void) updateData; @end /* }}} */ @@ -924,6 +939,7 @@ NSString *Scour(const char *field, const char *begin, const char *end) { NSString *website_; Address *sponsor_; Address *author_; + NSArray *tags_; NSArray *relationships_; } @@ -948,6 +964,7 @@ NSString *Scour(const char *field, const char *begin, const char *end) { - (BOOL) upgradableAndEssential:(BOOL)essential; - (BOOL) essential; - (BOOL) broken; +- (BOOL) visible; - (BOOL) half; - (BOOL) halfConfigured; @@ -968,6 +985,9 @@ NSString *Scour(const char *field, const char *begin, const char *end) { - (BOOL) matches:(NSString *)text; +- (bool) hasUsefulPurpose; +- (BOOL) hasTag:(NSString *)tag; + - (NSComparisonResult) compareByName:(Package *)package; - (NSComparisonResult) compareBySection:(Package *)package; - (NSComparisonResult) compareBySectionAndName:(Package *)package; @@ -1004,6 +1024,8 @@ NSString *Scour(const char *field, const char *begin, const char *end) { [sponsor_ release]; if (author_ != nil) [author_ release]; + if (tags_ != nil) + [tags_ release]; if (relationships_ != nil) [relationships_ release]; @@ -1055,6 +1077,9 @@ NSString *Scour(const char *field, const char *begin, const char *end) { NSString *author = Scour("Author", begin, end); if (author != nil) author_ = [[Address addressWithString:author] retain]; + NSString *tags = Scour("Tag", begin, end); + if (tags != nil) + tags_ = [[tags componentsSeparatedByString:@", "] retain]; } NSMutableDictionary *metadata = [Packages_ objectForKey:id_]; @@ -1156,6 +1181,11 @@ NSString *Scour(const char *field, const char *begin, const char *end) { return [database_ cache][iterator_].InstBroken(); } +- (BOOL) visible { + NSString *section = [self section]; + return [self hasUsefulPurpose] && (section == nil || isSectionVisible(section)); +} + - (BOOL) half { unsigned char current = iterator_->CurrentState; return current == pkgCache::State::HalfConfigured || current == pkgCache::State::HalfInstalled; @@ -1272,6 +1302,33 @@ NSString *Scour(const char *field, const char *begin, const char *end) { return NO; } +- (bool) hasUsefulPurpose { + if (tags_ == nil) + return true; + bool purpose(false); + + for (int i(0), e([tags_ count]); i != e; ++i) { + NSString *tag = [tags_ objectAtIndex:i]; + if ([tag hasPrefix:@"purpose::"]) { + bool purpose(false); + if ([tag isEqualToString:@"purpose::console"]) { + return true; + } else if ([tag isEqualToString:@"purpose::library"]) { + return true; + } else if ([tag isEqualToString:@"purpose::x"]) { + return true; + } else + purpose = true; + } + } + + return !purpose; +} + +- (BOOL) hasTag:(NSString *)tag { + return tags_ == nil ? NO : [tags_ containsObject:tag]; +} + - (NSComparisonResult) compareByName:(Package *)package { NSString *lhs = [self name]; NSString *rhs = [package name]; @@ -1376,7 +1433,7 @@ NSString *Scour(const char *field, const char *begin, const char *end) { NSString *section = [self section]; return [NSNumber numberWithBool:([self valid] && [self installed] == nil && ( - (name == nil || + (name == nil && [self visible] || section == nil && [name length] == 0 || [name isEqualToString:section]) ))]; @@ -1391,6 +1448,8 @@ NSString *Scour(const char *field, const char *begin, const char *end) { size_t count_; } +- (NSComparisonResult) compareByName:(Section *)section; +- (Section *) initWithName:(NSString *)name; - (Section *) initWithName:(NSString *)name row:(size_t)row; - (NSString *) name; - (size_t) row; @@ -1406,6 +1465,27 @@ NSString *Scour(const char *field, const char *begin, const char *end) { [super dealloc]; } +- (NSComparisonResult) compareByName:(Section *)section { + NSString *lhs = [self name]; + NSString *rhs = [section name]; + + if ([lhs length] != 0 && [rhs length] != 0) { + unichar lhc = [lhs characterAtIndex:0]; + unichar rhc = [rhs characterAtIndex:0]; + + if (isalpha(lhc) && !isalpha(rhc)) + return NSOrderedAscending; + else if (!isalpha(lhc) && isalpha(rhc)) + return NSOrderedDescending; + } + + return [lhs caseInsensitiveCompare:rhs]; +} + +- (Section *) initWithName:(NSString *)name { + return [self initWithName:name row:0]; +} + - (Section *) initWithName:(NSString *)name row:(size_t)row { if ((self = [super init]) != nil) { name_ = [name retain]; @@ -2625,8 +2705,10 @@ Pcre conffile_r("^'(.*)' '(.*)' ([01]) ([01])$"); UIImage *image = nil; if (NSString *icon = [package icon]) image = [UIImage imageAtPath:[icon substringFromIndex:6]]; - if (image == nil) if (NSString *icon = [source defaultIcon]) - image = [UIImage imageAtPath:[icon substringFromIndex:6]]; + if (image == nil) if (NSString *section = [package section]) + image = [UIImage applicationImageNamed:[Simplify(section) stringByAppendingString:@".png"]]; + /*if (image == nil) if (NSString *icon = [source defaultIcon]) + image = [UIImage imageAtPath:[icon substringFromIndex:6]];*/ if (image == nil) image = [UIImage applicationImageNamed:@"unknown.png"]; [icon_ setImage:image]; @@ -2724,24 +2806,29 @@ Pcre conffile_r("^'(.*)' '(.*)' ([01]) ([01])$"); } + (int) heightForPackage:(Package *)package { + NSString *tagline([package tagline]); + int height = tagline == nil || [tagline length] == 0 ? -15 : 0; #ifdef USE_BADGES if ([package hasMode] || [package half]) - return 96; + return height + 96; else #endif - return 73; + return height + 73; } @end /* }}} */ /* Section Cell {{{ */ @interface SectionCell : UITableCell { + NSString *section_; UITextLabel *name_; UITextLabel *count_; + UISwitchControl *switch_; + BOOL editing_; } - (id) init; -- (void) setSection:(Section *)section; +- (void) setSection:(Section *)section editing:(BOOL)editing; - (void) _setSelected:(float)fraction; - (void) setSelected:(BOOL)selected; @@ -2753,8 +2840,11 @@ Pcre conffile_r("^'(.*)' '(.*)' ([01]) ([01])$"); @implementation SectionCell - (void) dealloc { + if (section_ != nil) + [section_ release]; [name_ release]; [count_ release]; + [switch_ release]; [super dealloc]; } @@ -2763,7 +2853,7 @@ Pcre conffile_r("^'(.*)' '(.*)' ([01]) ([01])$"); GSFontRef bold = GSFontCreateWithName("Helvetica", kGSFontTraitBold, 22); GSFontRef small = GSFontCreateWithName("Helvetica", kGSFontTraitBold, 12); - name_ = [[UITextLabel alloc] initWithFrame:CGRectMake(48, 9, 250, 25)]; + name_ = [[UITextLabel alloc] initWithFrame:CGRectMake(0, 0, 0, 0)]; [name_ setBackgroundColor:Clear_]; [name_ setFont:bold]; @@ -2776,6 +2866,9 @@ Pcre conffile_r("^'(.*)' '(.*)' ([01]) ([01])$"); UIImageView *folder = [[[UIImageView alloc] initWithFrame:CGRectMake(8, 7, 32, 32)] autorelease]; [folder setImage:[UIImage applicationImageNamed:@"folder.png"]]; + switch_ = [[UISwitchControl alloc] initWithFrame:CGRectMake(218, 9, 60, 25)]; + [switch_ addTarget:self action:@selector(onSwitch:) forEvents:kUIControlEventMouseUpInside]; + [self addSubview:folder]; [self addSubview:name_]; [self addSubview:count_]; @@ -2787,15 +2880,46 @@ Pcre conffile_r("^'(.*)' '(.*)' ([01]) ([01])$"); } return self; } -- (void) setSection:(Section *)section { +- (void) onSwitch:(id)sender { + NSMutableDictionary *metadata = [Sections_ objectForKey:section_]; + if (metadata == nil) { + metadata = [NSMutableDictionary dictionaryWithCapacity:2]; + [Sections_ setObject:metadata forKey:section_]; + } + + Changed_ = true; + [metadata setObject:[NSNumber numberWithBool:([switch_ value] == 0)] forKey:@"Hidden"]; +} + +- (void) setSection:(Section *)section editing:(BOOL)editing { + if (editing != editing_) { + if (editing_) + [switch_ removeFromSuperview]; + else + [self addSubview:switch_]; + editing_ = editing; + } + + if (section_ != nil) { + [section_ release]; + section_ = nil; + } + if (section == nil) { [name_ setText:@"All Packages"]; [count_ setText:nil]; } else { - NSString *name = [section name]; - [name_ setText:(name == nil ? @"(No Section)" : name)]; + section_ = [section name]; + if (section_ != nil) + section_ = [section_ retain]; + [name_ setText:(section_ == nil ? @"(No Section)" : section_)]; [count_ setText:[NSString stringWithFormat:@"%d", [section count]]]; + + if (editing_) + [switch_ setValue:isSectionVisible(section_) animated:NO]; } + + [name_ setFrame:CGRectMake(48, 9, editing_ ? 165 : 250, 25)]; } - (void) _setSelected:(float)fraction { @@ -3027,7 +3151,7 @@ Pcre conffile_r("^'(.*)' '(.*)' ([01]) ([01])$"); } - (float) preferencesTable:(UIPreferencesTable *)table heightForRow:(int)row inGroup:(int)group withProposedHeight:(float)proposed { - if (description_ == nil || group != 0 || row != 1) + if (description_ == nil || group != 0 || row != ([package_ author] == nil ? 1 : 2)) return proposed; else return [description_ visibleTextRect].size.height + TextViewOffset_; @@ -3707,8 +3831,11 @@ Pcre conffile_r("^'(.*)' '(.*)' ([01]) ([01])$"); - (void) webView:(WebView *)sender didFailProvisionalLoadWithError:(NSError *)error forFrame:(WebFrame *)frame { if ([frame parentFrame] != nil) return; - [self setTitle:[error localizedDescription]]; [self _finishLoading]; + [self loadURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@?%@", + [[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"home" ofType:@"html"]] absoluteString], + [[error localizedDescription] stringByAddingPercentEscapes] + ]]]; } - (id) initWithBook:(RVBook *)book database:(Database *)database { @@ -4082,14 +4209,17 @@ Pcre conffile_r("^'(.*)' '(.*)' ([01]) ([01])$"); /* Install View {{{ */ @interface InstallView : RVPage { _transient Database *database_; - NSMutableArray *packages_; NSMutableArray *sections_; + NSMutableArray *filtered_; + UITransitionView *transition_; UITable *list_; UIView *accessory_; + BOOL editing_; } - (id) initWithBook:(RVBook *)book database:(Database *)database; - (void) reloadData; +- (void) resetView; @end @@ -4099,15 +4229,16 @@ Pcre conffile_r("^'(.*)' '(.*)' ([01]) ([01])$"); [list_ setDataSource:nil]; [list_ setDelegate:nil]; - [packages_ release]; [sections_ release]; + [filtered_ release]; + [transition_ release]; [list_ release]; [accessory_ release]; [super dealloc]; } - (int) numberOfRowsInTable:(UITable *)table { - return [sections_ count] + 1; + return editing_ ? [sections_ count] : [filtered_ count] + 1; } - (float) table:(UITable *)table heightForRow:(int)row { @@ -4117,12 +4248,19 @@ Pcre conffile_r("^'(.*)' '(.*)' ([01]) ([01])$"); - (UITableCell *) table:(UITable *)table cellForRow:(int)row column:(UITableColumn *)col reusing:(UITableCell *)reusing { if (reusing == nil) reusing = [[[SectionCell alloc] init] autorelease]; - [(SectionCell *)reusing setSection:(row == 0 ? nil : [sections_ objectAtIndex:(row - 1)])]; + [(SectionCell *)reusing setSection:(editing_ ? + [sections_ objectAtIndex:row] : + (row == 0 ? nil : [filtered_ objectAtIndex:(row - 1)]) + ) editing:editing_]; return reusing; } - (BOOL) table:(UITable *)table showDisclosureForRow:(int)row { - return YES; + return !editing_; +} + +- (BOOL) table:(UITable *)table canSelectRow:(int)row { + return !editing_; } - (void) tableRowSelected:(NSNotification *)notification { @@ -4139,7 +4277,7 @@ Pcre conffile_r("^'(.*)' '(.*)' ([01]) ([01])$"); name = nil; title = @"All Packages"; } else { - section = [sections_ objectAtIndex:(row - 1)]; + section = [filtered_ objectAtIndex:(row - 1)]; name = [section name]; if (name != nil) @@ -4167,11 +4305,14 @@ Pcre conffile_r("^'(.*)' '(.*)' ([01]) ([01])$"); if ((self = [super initWithBook:book]) != nil) { database_ = database; - packages_ = [[NSMutableArray arrayWithCapacity:16] retain]; sections_ = [[NSMutableArray arrayWithCapacity:16] retain]; + filtered_ = [[NSMutableArray arrayWithCapacity:16] retain]; - list_ = [[UITable alloc] initWithFrame:[self bounds]]; - [self addSubview:list_]; + transition_ = [[UITransitionView alloc] initWithFrame:[self bounds]]; + [self addSubview:transition_]; + + list_ = [[UITable alloc] initWithFrame:[transition_ bounds]]; + [transition_ transition:0 toView:list_]; UITableColumn *column = [[[UITableColumn alloc] initWithTitle:@"Name" @@ -4192,25 +4333,43 @@ Pcre conffile_r("^'(.*)' '(.*)' ([01]) ([01])$"); - (void) reloadData { NSArray *packages = [database_ packages]; - [packages_ removeAllObjects]; [sections_ removeAllObjects]; + [filtered_ removeAllObjects]; + + NSMutableArray *filtered = [NSMutableArray arrayWithCapacity:[packages count]]; + NSMutableDictionary *sections = [NSMutableDictionary dictionaryWithCapacity:32]; for (size_t i(0); i != [packages count]; ++i) { Package *package([packages objectAtIndex:i]); - if ([package valid] && [package installed] == nil) - [packages_ addObject:package]; + NSString *name([package section]); + + if (name != nil) { + Section *section([sections objectForKey:name]); + if (section == nil) { + section = [[[Section alloc] initWithName:name] autorelease]; + [sections setObject:section forKey:name]; + } + } + + if ([package valid] && [package installed] == nil && [package visible]) + [filtered addObject:package]; } - [packages_ sortUsingSelector:@selector(compareBySection:)]; + [sections_ addObjectsFromArray:[sections allValues]]; + [sections_ sortUsingSelector:@selector(compareByName:)]; + + [filtered sortUsingSelector:@selector(compareBySection:)]; Section *section = nil; - for (size_t offset = 0, count = [packages_ count]; offset != count; ++offset) { - Package *package = [packages_ objectAtIndex:offset]; + for (size_t offset = 0, count = [filtered count]; offset != count; ++offset) { + Package *package = [filtered objectAtIndex:offset]; NSString *name = [package section]; if (section == nil || name != nil && ![[section name] isEqualToString:name]) { - section = [[[Section alloc] initWithName:name row:offset] autorelease]; - [sections_ addObject:section]; + section = name == nil ? + [[[Section alloc] initWithName:nil] autorelease] : + [sections objectForKey:name]; + [filtered_ addObject:section]; } [section addToCount]; @@ -4219,18 +4378,38 @@ Pcre conffile_r("^'(.*)' '(.*)' ([01]) ([01])$"); [list_ reloadData]; } +- (void) resetView { + if (editing_) + [self _rightButtonClicked]; +} + - (void) resetViewAnimated:(BOOL)animated { [list_ resetViewAnimated:animated]; } +- (void) _rightButtonClicked { + if ((editing_ = !editing_)) + [list_ reloadData]; + else { + [delegate_ updateData]; + } + + [book_ setTitle:[self title] forPage:self]; + [book_ reloadButtonsForPage:self]; +} + - (NSString *) title { - return @"Install"; + return editing_ ? @"Section Visibility" : @"Install by Section"; } - (NSString *) backButtonTitle { return @"Sections"; } +- (NSString *) rightButtonTitle { + return [sections_ count] == 0 ? nil : editing_ ? @"Done" : @"Edit"; +} + - (UIView *) accessoryView { return accessory_; } @@ -4352,13 +4531,17 @@ Pcre conffile_r("^'(.*)' '(.*)' ([01]) ([01])$"); for (size_t i(0); i != [packages count]; ++i) { Package *package([packages objectAtIndex:i]); - if ([package installed] == nil && [package valid] || [package upgradableAndEssential:NO]) + + if ( + [package installed] == nil && [package valid] && [package visible] || + [package upgradableAndEssential:NO] + ) [packages_ addObject:package]; } [packages_ sortUsingSelector:@selector(compareForChanges:)]; - Section *upgradable = [[[Section alloc] initWithName:@"Available Upgrades" row:0] autorelease]; + Section *upgradable = [[[Section alloc] initWithName:@"Available Upgrades"] autorelease]; Section *section = nil; upgrades_ = 0; @@ -4661,7 +4844,7 @@ Pcre conffile_r("^'(.*)' '(.*)' ([01]) ([01])$"); 1, 38}, {17, 18}}; CGRect area; - area.origin.x = cnfrect.origin.x + cnfrect.size.width + 14; + area.origin.x = /*cnfrect.origin.x + cnfrect.size.width + 4 +*/ 10; area.origin.y = 30; area.size.width = @@ -4687,12 +4870,13 @@ Pcre conffile_r("^'(.*)' '(.*)' ([01]) ([01])$"); [field_ setPaddingTop:5]; #endif -#ifndef __OBJC2__ UITextTraits *traits = [field_ textTraits]; - [traits setEditingDelegate:self]; - [traits setReturnKeyType:6]; [traits setAutoCapsType:0]; [traits setAutoCorrectionType:1]; + [traits setReturnKeyType:6]; + +#ifndef __OBJC2__ + [traits setEditingDelegate:self]; #endif CGRect accrect = {{0, 6}, {6 + cnfrect.size.width + 6 + area.size.width + 6, area.size.height + 30}}; @@ -4700,11 +4884,11 @@ Pcre conffile_r("^'(.*)' '(.*)' ([01]) ([01])$"); accessory_ = [[UIView alloc] initWithFrame:accrect]; [accessory_ addSubview:field_]; - UIPushButton *configure = [[[UIPushButton alloc] initWithFrame:cnfrect] autorelease]; + /*UIPushButton *configure = [[[UIPushButton alloc] initWithFrame:cnfrect] autorelease]; [configure setShowPressFeedback:YES]; [configure setImage:[UIImage applicationImageNamed:@"advanced.png"]]; [configure addTarget:self action:@selector(configurePushed) forEvents:1]; - [accessory_ addSubview:configure]; + [accessory_ addSubview:configure];*/ } return self; } @@ -5001,6 +5185,11 @@ Pcre conffile_r("^'(.*)' '(.*)' ([01]) ([01])$"); [Metadata_ setObject:Packages_ forKey:@"Packages"]; } + if (Sections_ == nil) { + Sections_ = [[NSMutableDictionary alloc] initWithCapacity:32]; + [Metadata_ setObject:Sections_ forKey:@"Sections"]; + } + size_t changes(0); [essential_ removeAllObjects]; @@ -5031,6 +5220,21 @@ Pcre conffile_r("^'(.*)' '(.*)' ([01]) ([01])$"); [self removeApplicationBadge]; } + [self updateData]; + + if ([packages count] == 0); + else if (Loaded_) + [self _loaded]; + else { + Loaded_ = YES; + [book_ update]; + } + + /*[hud show:NO]; + [hud removeFromSuperview];*/ +} + +- (void) updateData { if (Changed_) { _assert([Metadata_ writeToFile:@"/var/lib/cydia/metadata.plist" atomically:YES] == YES); Changed_ = false; @@ -5047,17 +5251,6 @@ Pcre conffile_r("^'(.*)' '(.*)' ([01]) ([01])$"); [search_ reloadData]; [book_ reloadData]; - - if ([packages count] == 0); - else if (Loaded_) - [self _loaded]; - else { - Loaded_ = YES; - [book_ update]; - } - - /*[hud show:NO]; - [hud removeFromSuperview];*/ } - (void) reloadData { @@ -5250,7 +5443,8 @@ Pcre conffile_r("^'(.*)' '(.*)' ([01]) ([01])$"); if (tag == tag_) { [book_ resetViewAnimated:YES]; return; - } + } else if (tag_ == 2 && tag != 2) + [install_ resetView]; switch (tag) { case 1: [self _setHomePage]; break; @@ -5285,6 +5479,8 @@ Pcre conffile_r("^'(.*)' '(.*)' ([01]) ([01])$"); } } +#include "internals.h" + - (void) applicationWillSuspend { [database_ clean]; @@ -5339,7 +5535,7 @@ Pcre conffile_r("^'(.*)' '(.*)' ([01]) ([01])$"); @"install-dn.png", kUIButtonBarButtonSelectedInfo, [NSNumber numberWithInt:2], kUIButtonBarButtonTag, self, kUIButtonBarButtonTarget, - @"Install", kUIButtonBarButtonTitle, + @"Sections", kUIButtonBarButtonTitle, @"0", kUIButtonBarButtonType, nil], @@ -5434,6 +5630,16 @@ Pcre conffile_r("^'(.*)' '(.*)' ([01]) ([01])$"); [super applicationSuspend:event]; } +- (void) _animateSuspension:(BOOL)arg0 duration:(double)arg1 startTime:(double)arg2 scale:(float)arg3 { + if (hud_ == nil) + [super _animateSuspension:arg0 duration:arg1 startTime:arg2 scale:arg3]; +} + +- (void) _setSuspended:(BOOL)value { + if (hud_ == nil) + [super _setSuspended:value]; +} + - (void) applicationDidFinishLaunching:(id)unused { _assert(pkgInitConfig(*_config)); _assert(pkgInitSystem(*_config, _system)); @@ -5461,14 +5667,16 @@ Pcre conffile_r("^'(.*)' '(.*)' ([01]) ([01])$"); [progress_ resetView]; - /*if ( + if ( readlink("/Applications", NULL, 0) == -1 && errno == EINVAL || - readlink("/usr/share", NULL, 0) == -1 && errno == EINVAL || readlink("/Library/Ringtones", NULL, 0) == -1 && errno == EINVAL || - readlink("/Library/Wallpaper", NULL, 0) == -1 && errno == EINVAL + readlink("/Library/Wallpaper", NULL, 0) == -1 && errno == EINVAL || + readlink("/usr/include", NULL, 0) == -1 && errno == EINVAL || + readlink("/usr/libexec", NULL, 0) == -1 && errno == EINVAL || + readlink("/usr/share", NULL, 0) == -1 && errno == EINVAL ) { hud_ = [[UIProgressHUD alloc] initWithWindow:window_]; - [hud_ setText:@"Reorganizing\nOne Minute!\nPlease Wait...\nDO NOT STOP"]; + [hud_ setText:@"Reorganizing\n\nWill Restart When Done"]; [hud_ show:YES]; [underlay_ addSubview:hud_]; @@ -5479,7 +5687,7 @@ Pcre conffile_r("^'(.*)' '(.*)' ([01]) ([01])$"); toTarget:self withObject:nil ]; - } else*/ + } else [self finish]; } @@ -5635,8 +5843,10 @@ int main(int argc, char *argv[]) { if ((Metadata_ = [[NSMutableDictionary alloc] initWithContentsOfFile:@"/var/lib/cydia/metadata.plist"]) == NULL) Metadata_ = [[NSMutableDictionary alloc] initWithCapacity:2]; - else + else { Packages_ = [Metadata_ objectForKey:@"Packages"]; + Sections_ = [Metadata_ objectForKey:@"Sections"]; + } if (access("/User", F_OK) != 0) system("/usr/libexec/cydia/firmware.sh"); diff --git a/Library/free.sh b/Library/free.sh index b18b9fd5..703d3027 100755 --- a/Library/free.sh +++ b/Library/free.sh @@ -1,10 +1,14 @@ #!/bin/bash for dir in \ - /usr/share \ /Applications \ /Library/Wallpaper \ /Library/Ringtones \ + /usr/include \ + /usr/libexec \ + /usr/share \ ; do . /usr/libexec/cydia/move.sh "$@" "${dir}" done + +sync diff --git a/Library/move.sh b/Library/move.sh index 635c1539..abfe2edf 100755 --- a/Library/move.sh +++ b/Library/move.sh @@ -42,7 +42,7 @@ function mv_() { } function shift_() { - dir=$1 + dir=${1%/} if [[ -d ${dir} && ! -h ${dir} ]]; then used=$(du -bs "${dir}") -- 2.45.2