From 1dd3a077a293bf3ac4e61e91dcc3dfc99487acd4 Mon Sep 17 00:00:00 2001 From: Romain Guy Date: Thu, 16 Jul 2009 13:21:01 -0700 Subject: [PATCH] New gestures UI. --- AndroidManifest.xml | 3 +- res/drawable/{btn_circle.xml => btn_add.xml} | 14 +- res/drawable/btn_circle_disable.png | Bin 938 -> 0 bytes res/drawable/btn_circle_disable_focused.png | Bin 1436 -> 0 bytes res/drawable/btn_circle_normal.png | Bin 1249 -> 0 bytes res/drawable/btn_circle_pressed.png | Bin 1613 -> 0 bytes res/drawable/btn_circle_selected.png | Bin 1645 -> 0 bytes res/drawable/btn_g.xml | 26 +++ res/drawable/btn_list.xml | 26 +++ res/drawable/g_normal.png | Bin 0 -> 1408 bytes res/drawable/g_pressed.png | Bin 0 -> 1784 bytes res/drawable/g_selected.png | Bin 0 -> 1794 bytes res/drawable/gestures_background.xml | 27 ++-- res/drawable/gestures_frame.9.png | Bin 0 -> 6582 bytes res/drawable/ic_btn_round_plus.png | Bin 526 -> 0 bytes res/drawable/list_normal.png | Bin 0 -> 1183 bytes res/drawable/list_pressed.png | Bin 0 -> 1563 bytes res/drawable/list_selected.png | Bin 0 -> 1603 bytes res/drawable/plus_normal.png | Bin 0 -> 1218 bytes res/drawable/plus_pressed.png | Bin 0 -> 1564 bytes res/drawable/plus_selected.png | Bin 0 -> 1599 bytes res/drawable/texture_paper.jpg | Bin 989 -> 0 bytes res/layout/gestures.xml | 120 +++++++------- res/layout/gestures_settings.xml | 6 +- res/layout/list_category.xml | 18 +++ res/layout/list_checkbox_2lines.xml | 60 +++++++ res/values/colors.xml | 3 +- res/values/styles.xml | 5 - .../android/launcher/GesturesActivity.java | 148 +++++++++++++++++- src/com/android/launcher/GesturesPanel.java | 25 ++- src/com/android/launcher/Launcher.java | 143 ++++++++--------- 31 files changed, 453 insertions(+), 171 deletions(-) rename res/drawable/{btn_circle.xml => btn_add.xml} (64%) delete mode 100644 res/drawable/btn_circle_disable.png delete mode 100644 res/drawable/btn_circle_disable_focused.png delete mode 100644 res/drawable/btn_circle_normal.png delete mode 100644 res/drawable/btn_circle_pressed.png delete mode 100644 res/drawable/btn_circle_selected.png create mode 100644 res/drawable/btn_g.xml create mode 100644 res/drawable/btn_list.xml create mode 100644 res/drawable/g_normal.png create mode 100644 res/drawable/g_pressed.png create mode 100644 res/drawable/g_selected.png mode change 100755 => 100644 res/drawable/gestures_background.xml create mode 100644 res/drawable/gestures_frame.9.png delete mode 100644 res/drawable/ic_btn_round_plus.png create mode 100644 res/drawable/list_normal.png create mode 100644 res/drawable/list_pressed.png create mode 100644 res/drawable/list_selected.png create mode 100644 res/drawable/plus_normal.png create mode 100644 res/drawable/plus_pressed.png create mode 100644 res/drawable/plus_selected.png delete mode 100644 res/drawable/texture_paper.jpg create mode 100644 res/layout/list_category.xml create mode 100644 res/layout/list_checkbox_2lines.xml diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 72e486b7f4..7bdc9cfa80 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -94,7 +94,8 @@ + android:label="@string/gestures_activity" + android:theme="@android:style/Theme.Light.NoTitleBar" /> - + android:drawable="@drawable/plus_normal" /> + android:drawable="@drawable/plus_pressed" /> + android:drawable="@drawable/plus_selected" /> - - + android:drawable="@drawable/plus_normal" /> diff --git a/res/drawable/btn_circle_disable.png b/res/drawable/btn_circle_disable.png deleted file mode 100644 index 33b74a66c07f360cd4590aff32f83aaf3e1db888..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 938 zcmV;b16BNqP)Ch-*X{PkvQZF$g)4+z8j?#1k$eZtgP<&%n<7wHTycBK6`QjsyY$my%E1#l=M)S6~l^$KdB=mkUVI zlh(DkxcE_NDQeUw^-T=Ml3mAw)6>%*dU|@?YSk&~n;68BC5C@MGQoj?0k7Iclre&g z*>J?#XJ%&lEEY?v+G4~Y7BMBoU{2M%BODG3yrv$;>R{|AN6bAwJ|1v597bMZ#3Ck} zQJxfYpePuPs$(G%J7Q>>gfRs2qJgoB)W2^*YOO}WD>gsB`R4P5FEkz7s5wqd42j(fHqut$I z)klpnju=x`L5*!}Y#c=*5!D_9>YEtElD)KM*E_PjynGgoMinm~)F<^#jK}wu-0fR0 z(g=1mokK%Iip-%02M2f9d7a~M5A5TA+3X0url_tV4L+8R~%FH|AGyi(-d#iP*+ zBl^b1#$4Ef>HU7c!Rz(v+S=NFixvt6F`Z89lF8%)D!RD6y-lwIz9GIg8l|Si9_`Zo zw244?+3M5APG7TmkLuHRMDnTKw&G&k7iXH7CZ>sLVw#w8?Uw)p01hp0ZAtpRSO5S3 M07*qoM6N<$f@yNRPyhe` diff --git a/res/drawable/btn_circle_disable_focused.png b/res/drawable/btn_circle_disable_focused.png deleted file mode 100644 index 005ad8dcaeaeb6f245fe6090282ac10fbdc1c78d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1436 zcmV;N1!MY&P)c(T!WGpB|q7gCE#i?;IF(fW7#z*uI7o#yVGg+3HEt@WT#06u50k<&z zkd4P8ZgIK}feDnBcU$^`zFWVq^fH`VU$n+QdXg_U_uSs^_q(U}-t(PH`Tc(Ke{57z zEGd>0i{>PX62pdpkV2$Dh#&;P!)^#CgdJiL!UhaSvG0FT#0hIAj1pOI$}RI6~P+nsaI!D@&TQ zgo}>|iBk~?z(qu+S(o%$Ti@;TE$62%LDx(qBN$c;q|#n_R9x}VbEOAVV&itc-zAIX zp7BsZtHzOj`QQ)3hfWPRZUA>7W-*XrziObL-cyTaQUpIJY1y zFj)n;Htd(VrGvky>x+EH2l#){DH>bgs`v$+gG&EFZsfk^BgJW5i-0 zmGa^Pr25G7?BNXmosk+(t?BwD_pRPo{>sOuj#d?#uk7UZ4HT`-&1LP6Q{ z@Jg_mrA2dz62sgm6@c>XdAJEBCKGz>>HgpeW{Jv_Ffqu@agd4ZP+}6=>tuYvSKFdw zd74Q?!`$46(S9f1_>xd!Jp3{BAJvYWn4kLh{eJh&?{ZV3Meb3SE>1CtlET~^2bqBi zDTLUPoun9Xmcn4H8bzYSFgM3RCbC0`nGBwk=@l`{SZ2b+AUDTBCbC0`8Ah!9ac(DT zrnfp#VyklpnTAkevnP8s18!Opu;+W0~Ph^=!yQxZVxREyu$=;Yx<^}N2}r`g}E?iU>yJqWFa$b z*#qX2$JL~L*u(zH^<__A*;z7tX7gI5FbC#ZDL#RLEM!Jfk6}}Pa6xy zaV;Z<=VFePrwno<16k27MhadpCwo7vmhWSHmb{hKkw9h~D{ku0DI+U~l)BF1qS4lR z?(YjMMtJhcPkSuKPN>PZz@La^`Bw5;IeF>8c6K-G)tCNboyeD1X0xh#tg@mx8>2EU zNtfqU3B1u6n?@nCj%8-e_EvLGAJ_CWJACM}{@h75IScIDYgzEBw&sx9&l;3_%7pqY ze4itxY0ASB+lE~1_4nI#r>{}CX zZpEKpcTe?y^9N~zE?k9&EvKUT+JmD9o3b4$vh|H8@+&rFc$Mo!j!Y@Br}39d7viBr zwndV%Fz*!4-7?U+<3DR}bZf{}I5ZS)l;ZIj3U6d3L@va-VD%~GO0D3$HxDs|RrLK< q+sQAANwK6@QYR;sZopj1nGv5j7+lgpe3yMT#IF z#!?rgK-VqHZlTJD=a_rVFwV@*E<@wPPI59ccV_N6bMEKwmv(%7Z2LbRX(?eTVJTs} zNlP>PoeOvp$Of_iC*Tmz9s)5S0^A2eK-5g7C$uCeEEhNr6buXuTrVvxea7qc7G`B- z|T*w|Pr1U>I`I-fG* zLM#@$2Z2A-*Vp&s_7`A9&%s26YbaHxndZMwh@dMn> z0UM_g_B2p6H8s^yTwGjfMoc`BD=RC3nwpv(TuuYOB_pf=s0{=H?-UgkT~@xAs5oW4 zyk1>hov*B{d>^-yqW_r|#*y~Q3N5{x1 zHVV4J>~bVNDq#u^yOFSi-QC>>E|<&wD4J6C*=RKSfZRsH_Cldh1Vi{AVaj>T>dw!4 z*o-`rliWr#{~y6%FsyV+>6~m{HPmaP-aG16kk{lSw~?^l=jZ1`T4Y*_x89;|RIc?C zp`^`H6a{p)Mx#|a6%L2@5Swmwc6NS` z;#ilQtkg%{+sxu`lB`hT@CCs|xZvh4Xd{=#v_6N+a00000 LNkvXXu0mjfjPhEW diff --git a/res/drawable/btn_circle_pressed.png b/res/drawable/btn_circle_pressed.png deleted file mode 100644 index 8f40afdfcb30cf7e2f014bba7c03ff2372d539e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1613 zcmV-T2D15yP)O9+s$JUDLZP5BfU(#pSbXq@2cJwxgAYVWFfk@Rm>3gDPIgERpe zO{!3+W=pBXluE%;yR==}?sjH(uIJ3&p|jJSooNdR4?D@1{kb#e`|i2to_o$v&N+D$ zFGe2GD|tMS;}1%y)93O5C4gdpACL?1im@nQ8ZZF}0mcAfCq|7K!oA3eJPxQp zw0+v#RQuG5veH$)HU9jp;+$+ZiY2p=Sa>2l7aF-Ub1OJ7KHU1jnNIk7NZ__pB5G8b z#$yG58bIy& zggpUhJpIk~{o5M~H~YLKkEn5y5Ty$v260q3rU}!)Tx2Fn?p^4aytwP_3tz$L?|^@n zBdiLrt+(U3cb~5E){=OP5H&V03dL|@;W7PF7Y9+}a+5y>qrv)?U%r6BF2LYYgkdZ- z_nqEyaDAD(io_M7c?zKka(I+!HmT+{4K9gX9gYpw?E38p44e_M=U5o-v{x^Ezwyw< zC*1)OQw*M3geappeQD8iZi!s}E7rg1wabTL^artnlZ092v1d;nt=_j`9Sv}KmZ(Yu zbj=CK;4}pwJA{&WMt>e`p-r@n9LQyx$HY|$*z!Vyr%nX}1dNk7#*>;Np6onFQ^Xwu z$0x!9Igkr*4e+;}u+8nqDqhKzqCPImgvVnRfzEBj(S@J-hKMslU2&2t#eK-N=fKca zJ7Fs^S2YG`r7A}V#unF712^R>o@Pg;*qKS<5};bl#z|v9!WF6&-2Yh#3w+dC{7j)& z&Qs+%!ZGO0N%a1A^MB@@XcR@0{}UU5!lVnmJP$cPZVUaKPT0D-O1eswql7Cc%(#qJ z;w;2Eo)yGcKp3{VXrZ zDnjmbF}7l59?4e~4j$te0=9yh8kuPUbz=J2w8%peRo zkvp9*H!eFDC(m+(5hubht0j1-S&LcN+~hQm`aLv{bkYN{|z|)0NiK zqZ54AxRdl0#zopn`ppg1j~P7uv&I8H!Kqcfmcqua-{$uSWAoeEDsZ@s2W`DACJ$U1 zXQBkR6n5jv^;np?T##n45`Znu=zN}JB=vVISlqAK)NJF?(f z=$ahW{CGs{2JG!TR?)PziWP807nev>+*pfoOGP5snU)q%6qP)rdr+NfIxvKd@NvK? z(Y-tFk_xdQ0km`+uGrC3@9}d*x$ikG=JcZ>Wj!VeLN@OyDoLcXSDt7&G;|(r=n##_ z(?KaR`1;8&40{KJp^}aQa5g>wQ%`h_x(G;<+GQf;eDTsV8hXkyAN>1 z=&7X&(_?NmcIDWt0P5a(qo}f>+LIk9ld?)nn5VdaX$3)ON{x+-sdE3YGS_oWj(mCI zE;bo|0xpUQbySb32O-S(as>;z_1GT($^dJ`lIM$i!eWVT0fqtn0PKRstzM=)2x0n_ zErj5EF`w|LB*qlskr`1jpwP%--;dGE>-3DUjIfNbjIf7u{V%`(GZqttrg%w600000 LNkvXXu0mjfZ21U! diff --git a/res/drawable/btn_circle_selected.png b/res/drawable/btn_circle_selected.png deleted file mode 100644 index c74fac227a2381ea347e0ee4930b0f60cd00645e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1645 zcmV-z29o)SP)r` z9p1gOv7)f7tkAXI<92$o9ikgASPDk`v;M&B==9=5&&c%X!Ojc6z}Lf|A<$T=j;Nl} zB4T-A~=MAO?_N*r}05+U(Wx@eIEQPaT@Q6zue3HCM}^?nK$Tms#^AFvA0bG;|( z-l;9JRgo}4NhCUaF@jhz?2*Vz$*%!#^6Fh;VjteLOO-?bzT+IQcD~!7*TF>)4ZL4wb#x{1~fdfn~yi z0m8yT!Xl^;D9i<)B@-F1!{4F}v;{WNHu^wcN!KxcRARF4suCJlU`34-4k6QWi5WB2 zBw{o^gp_|TLDZxO*;OSrpfAt>Us5c=wsjpW+Up|0Y!-~b-Ag>#bx=_l{fuO>0Q&Ka zLh^HxKq$buGNf$uweQqaUox;lPx;(5h`J+HIHfjKt?~vW-^TQvP&Rc<1JyC2c zmT?G!d?qqEZsg+LNfJ29Zzv{k0+?p-6(#7CZ*^D9z)H(=s7DTg5fGE$T~4rESuJ4+ zBNqFv{6qjK0Am1+KKVXunqvip4wAzVDh!HPL?_i&ftp1TULwE&82UutR$y+ojXLE3 zK!u1JvHJx|3WyOS3YgnTo#@*NOq3hSs z#w=w#Y1ta0mN4J$Ex70teOr~*{>de_j2AOSBwj@Kt{1zvImAf+n>eXUh~g7`TY*gt z`k0^Duo6%=T}wD>05JPMfep3V0Q(^H$;)t4u-o1VX@Q8a#@J9`M1vC^kSMo_wv`%9 zAc{}$Z3T9t^UCtTbVyjy;Iz9^jA_PgT>8&O8LtyGAT3fV6#7D+=-Vp!2eGQWJW6L? z*_>5I2yRR2CeDnTx3SXD&QTg)QRtR@WgbCAOYK1Hu#?L-r5Rqy4kl|xo(FXdzhBy( zOQj4sgcXJyU$ru`1&*4RKRnqfL`%pJ$vm@#DnA;-JretXv&q`G-$5;1|HxZjZ*rAU z0rpIY8pF+8PO%mtvg{ zp);A87mQYm7+vy)4I`bF|sfT@*&Lc2J8APPfxbu8f9(|H3MVeB=300malC1I1hAN11KhZ@_SsdDGbP@l1g z93581^n0lx$0)a_4Ij)v0Xn2#hx~J|e%6Dn+jqPX@!d~fxenA0+H>-?>fJ9l6?pO; zf}I&6#|#xLrLmF1WS<6@*!YDzsCjH^i#s0a4x4!rr*Q!5wPI(hOCRi<)mUCETK84K+KEvo}FRyHV zJSVeyLzbh|kxDYZmwr-Qn9zKM1>^nPiWn)&iy-nH diff --git a/res/drawable/btn_g.xml b/res/drawable/btn_g.xml new file mode 100644 index 0000000000..d033b438f3 --- /dev/null +++ b/res/drawable/btn_g.xml @@ -0,0 +1,26 @@ + + + + + + + + + diff --git a/res/drawable/btn_list.xml b/res/drawable/btn_list.xml new file mode 100644 index 0000000000..84a033ef8c --- /dev/null +++ b/res/drawable/btn_list.xml @@ -0,0 +1,26 @@ + + + + + + + + + diff --git a/res/drawable/g_normal.png b/res/drawable/g_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..2ae97036b026a267fd0e77de7186960d3c1c9ad1 GIT binary patch literal 1408 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 literal 0 HcmV?d00001 diff --git a/res/drawable/gestures_background.xml b/res/drawable/gestures_background.xml old mode 100755 new mode 100644 index 34ec05145e..59c11dc606 --- a/res/drawable/gestures_background.xml +++ b/res/drawable/gestures_background.xml @@ -1,20 +1,19 @@ - - + diff --git a/res/drawable/gestures_frame.9.png b/res/drawable/gestures_frame.9.png new file mode 100644 index 0000000000000000000000000000000000000000..c5f5640632afa1f008a312095eef507b70aab69f GIT binary patch literal 6582 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 p4#-vF6a?vVfh literal 0 HcmV?d00001 diff --git a/res/drawable/ic_btn_round_plus.png b/res/drawable/ic_btn_round_plus.png deleted file mode 100644 index 1ec8a956abd8553fe4aa9ef89e484261c1cdbced..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 526 zcmV+p0`dKcP)M0=r(H!Qin zQ4iA$!x^JaVxPqXA86AX7;p1QN&cbShOGi{5imY9v-3lM28rtn=V4U6#czHA>_WYRPbox%K?ig(m=7Wy|UF5 zxK~E|kb#;zi=}=M2bO~VhRRAwZb_I0nEpyqFa=XE1ye8uQ!oYlTlp4X0EjV>gx4b+ Q$^ZZW07*qoM6N<$f|9b`bpQYW diff --git a/res/drawable/list_normal.png b/res/drawable/list_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..ee05949c76d24cab88c36d97b970812796d55390 GIT binary patch literal 1183 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 literal 0 HcmV?d00001 diff --git a/res/drawable/plus_pressed.png b/res/drawable/plus_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..872f092a86a48be4b978bf84cbed199e8d63792e GIT binary patch literal 1564 zcmV+%2IKjOP)SZWak6#}IwB5lQ@66puDhQt!Frb)B4$!>NtbMN)snKRitvoo7jb|FXx{@KaS z@0oMYy_B>IY*i3Y$W;p;}QbO?m(qRX{DF$|wp+ONz^TZtvIGRrJ%-9J0?DPY2U~_y}7<@dlsZw~v<7B=Wd}9ZxNgqnn2SXqaZnbX5E=;*_ z^!TE8e&kR$4DYn+cg$cqm>I;06&`eQjO&g?VkD*-`SEfZ#>aZ;oWoGA6q_QdUjR9FlIz0!G1Tn6&@ZkpsU@CFRo}P zvt10;0;9WHLf7+49NTDt;q5mx8w_;J4XPcpHkk0|?Pv;f91hz$nHSvu+PAV(&Y+e-DC9ghQ>;M}1(R!{KrF zwyW^wYtP1Z`2I(qhJH`F&sjJPq7Z%!WW8WX6^kfLL3w#9w!@`DJ7iM61;w(2^6$rz zYech~N@eNg=@g?Dc(YdT$t|erSx*SvUmyDTrlj>N`D`1=_gRz(zQ|qHP z7{lw*n_MjqMFtgxm$>7Tt-x1JaB|FBL)5lL-N1sfNA=}1)daH`Yo!8?dHJQ%htzn& z-u=DgLb{vLxx^AHojiW}FnD0C;Pn|{sdmiB022adeShw!iO+g*Pkm5BaKkpZ$;X5EimpM$iusDzwF1@;u#Rd%sNCB#~Aj< ze6YkRN%)T86JW9DkDgOsS})B3|MPS0>C$zU)~dQldvN5Khyzm;#hJgv?ZIrS!wY-C zA|+4bR^onjfkTPQw`uH?){{;YOwxt?`AdbHJMQS}VEEcgwNMBayt08SagPgACTsB= zJAWyEQ}rDzcJ(a+RSKxJ-BYN?emVK*_)yO5l#*6TvKdmoU-4GhmgQ;^e9P?DMZ*oTROR zFHzH|+sNbwUt z>E7s#J4u1Af_@&gpv9PrOj6&53bqN-v?Y}xD62_eDp{6jSFu3njz6o(syybRCwC# zna^t+britgcV>1s?q=6)8@fp}wn;0MVw;MG5~>G_7pp`;TF{H2AP63+P|-g?1bZ+C zr5E+!MX7jDY>-y;phX&5tQL!wkQ!2{sWuzZ>~3~v=KJ-%nK#+*%+6*P-Gw0elD9j* z-)G-@^WOV@Ba~9G5r+XAbZmnCZ@?`25JE&@Qz#jfJ5Z8c`T-6~3FS6Q6-5Ro=!LXm zK>JYkquh&aG;*w%t=Fj!ul^Yr{}R*Gt<6gH9)50z(HG2^h(zhDqn)kj@@mIKm}dzRv9dSQheEe8QL?*Y6u2q3Ot>tn;8~#Fp94w$R|^PoJi zNV)#*eLLnN`g_l5#L`#dA${}m5`e3fj5P>_JfY}IU8oVu=gL#Qn z3nkNG%O!)rZ*DQ^)DViq#yGQE$3A7mVioS$n&j;ox>Lo!G$I-|^jQOC)LL2$UFp|& zFH>mM=%G$0%L{h8YD%AsN1TAE9v>J z2FBytxjSKe)PQ`(jJ29;`(OiE10@9y45vcpizOGIk%WEyH^cpm@b$HFrRg;jlA$y( z8x?Qs#dgK{chvw{VY%%3&(@uc`$Dz@rl%+^R33Ze0DS!AxmcyU2NI$E-~O~?uY2Z+ zgP>NX8sdy~t`7$F_b@c}B(B0+uRa^A@coZI3GFw#&bf9LWLyUX?O04`P@+yKi!)GN zoQYLH`g#Y-mt)P1GWYhjInn6^3yM@I##VA8-pHw4gs1{2XTq$^4H7%1Wn%0a^ z&TVC}BtntUt0^L7D6S--i=w zV5VEwO0bX~<3->pCEd1?=e}GG-h1;6KM~Jg0J)rPZ?0sR-ed%<^tvTUden50M=;DM|m$&`%yRv=Y*1RgKlR8LY+U7Ze~#W+J(il;8Bz(QTBfD z+T;5V+*jDLbD%fd*|iJbjkYV~r{B%Yzwq|yOT0AjIm#@`GBP;KS5SUHnd8--3Npz6Ot4$i4AYOYmD(ttx_5fvPH~`9(Eo+XkrXMb^ xiyB>kio(h8v?u6nH~%xT3APEgvBp0F3;?zVb@In(&u9Pu002ovPDHLkV1gV-?p*)? literal 0 HcmV?d00001 diff --git a/res/drawable/texture_paper.jpg b/res/drawable/texture_paper.jpg deleted file mode 100644 index 27f4fd66761587f56156ebda7bffdecb7666aee2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 989 zcmex=>NCNTpS!+d;+|@e7w8@f;>Qyk4KPSNLWNzh+jfNN=iaP zSxHGrSse}-IXO5uxj4BwIl1|`dAa!n`G7!B7;J#Bgdjf<2ug^Fi-?Gbi-ELDNhvBS zC@RABtN%a1AjrY6fMEeMqY?v?AS1IN*4%x-t+c{Y?-=yg)?7uEG|F6*_olOPjx9(rbc#EsTY=YpjBRt~j zZ-SO{TLv&NEvmR^u<2d@tFASz?V3&chbER~6}?b9bSBi-vDmQvr^?)=y{YN<&-`<| z>Pi4A^Q3=Iq#=eI{i9u7J&F`b#MsgCAfzxAKp7;G4mVDR>z_4DAV zS5uCauTTnnwybjbl+Z_ul(w^2o0=s()nZ+)f9YGoLOrnp^$8_MzIAJxX&IiHtzCIt zDMz$r)tB-$9O`y5U7IJrzV2udR&eR7@9PwHlTVi%Ekhm%&oG{v$@nm0J?8?&N46iL z9hZrHn(Ml!`2x?bZ~JGgzjR4!QhsjhFNfV?qRTa;c2)b$kDekWIwyEaJXfE6_VkwD zA)mTtSL()RZk)&TRM+M~LxY~H_%HQ43-(8bl=%y6@HPtEDDYP$n(KniMXPC#mNGtg zqRO=JzNpdaOApt@i#+@`Yt9O-AHH^l=5>q{i$6p=oVugCpLOnaoea&*e`(Ibht*%+5|Hag@)^YCgRa{$xH`~0e4NcE{)$}~|wdAjP TQ?270ZpFqgGg=o=|NkZcMTcg} diff --git a/res/layout/gestures.xml b/res/layout/gestures.xml index c9ea2a5a7f..a22ce0674f 100644 --- a/res/layout/gestures.xml +++ b/res/layout/gestures.xml @@ -14,83 +14,89 @@ limitations under the License. --> - + + android:layout_height="fill_parent" + + android:paddingLeft="13dip" + android:paddingRight="13dip" + + android:orientation="vertical" + android:background="@drawable/gestures_background"> - - + android:layout_height="wrap_content" + + android:paddingTop="13dip" + android:paddingBottom="13dip"> + - - - + android:maxLines="1" + android:singleLine="true" + android:drawablePadding="6dip" + + android:visibility="gone" /> + + - + + android:paddingTop="15dip" + android:paddingBottom="13dip"> + + + + + + diff --git a/res/layout/gestures_settings.xml b/res/layout/gestures_settings.xml index 4b1976f5c7..d32b3ec840 100644 --- a/res/layout/gestures_settings.xml +++ b/res/layout/gestures_settings.xml @@ -14,9 +14,7 @@ limitations under the License. --> - + - + diff --git a/res/layout/list_category.xml b/res/layout/list_category.xml new file mode 100644 index 0000000000..1e8d04c577 --- /dev/null +++ b/res/layout/list_category.xml @@ -0,0 +1,18 @@ + + + + diff --git a/res/layout/list_checkbox_2lines.xml b/res/layout/list_checkbox_2lines.xml new file mode 100644 index 0000000000..ed80c5ff9b --- /dev/null +++ b/res/layout/list_checkbox_2lines.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + diff --git a/res/values/colors.xml b/res/values/colors.xml index e1b4843191..9b9700f4a3 100644 --- a/res/values/colors.xml +++ b/res/values/colors.xml @@ -26,5 +26,6 @@ #FCCC #F444 - #FFFFFF00 + #ff0563c1 + #ff848484 diff --git a/res/values/styles.xml b/res/values/styles.xml index 5319bb0993..6f4365fe32 100644 --- a/res/values/styles.xml +++ b/res/values/styles.xml @@ -61,9 +61,4 @@ 10dip - - diff --git a/src/com/android/launcher/GesturesActivity.java b/src/com/android/launcher/GesturesActivity.java index 844392dc2e..24775ffe31 100644 --- a/src/com/android/launcher/GesturesActivity.java +++ b/src/com/android/launcher/GesturesActivity.java @@ -26,8 +26,11 @@ import android.widget.TextView; import android.widget.AdapterView; import android.widget.Toast; import android.widget.EditText; +import android.widget.BaseAdapter; +import android.widget.CheckBox; import android.content.Context; import android.content.DialogInterface; +import android.content.SharedPreferences; import android.content.res.Resources; import android.view.View; import android.view.ViewGroup; @@ -40,18 +43,22 @@ import android.graphics.Bitmap; import android.graphics.drawable.Drawable; import android.graphics.drawable.BitmapDrawable; import android.text.TextUtils; +import android.database.DataSetObserver; import java.util.Comparator; import java.util.HashMap; import java.util.Collections; import java.util.Map; -public class GesturesActivity extends ListActivity { +public class GesturesActivity extends ListActivity implements AdapterView.OnItemClickListener { private static final int MENU_ID_RENAME = 1; private static final int MENU_ID_REMOVE = 2; private static final int DIALOG_RENAME_GESTURE = 1; + static final String PREFERENCES_NAME = "gestures"; + static final String PREFERENCES_HOME_KEY = "gestures.home"; + // Type: long (id) private static final String GESTURES_INFO_ID = "gestures.info_id"; @@ -66,6 +73,7 @@ public class GesturesActivity extends ListActivity { private Dialog mRenameDialog; private EditText mInput; private ApplicationInfo mCurrentRenameInfo; + private SharedPreferences mPreferences; @Override protected void onCreate(Bundle savedInstanceState) { @@ -74,13 +82,16 @@ public class GesturesActivity extends ListActivity { setContentView(R.layout.gestures_settings); mAdapter = new GesturesAdapter(this); - setListAdapter(mAdapter); + setListAdapter(new GesturesSettingsAdapter(mAdapter)); + getListView().setOnItemClickListener(this); mStore = Launcher.getGestureLibrary(); mEmpty = (TextView) findViewById(android.R.id.empty); mTask = (GesturesLoadTask) new GesturesLoadTask().execute(); registerForContextMenu(getListView()); + + mPreferences = getSharedPreferences(PREFERENCES_NAME, MODE_PRIVATE); } @Override @@ -127,10 +138,12 @@ public class GesturesActivity extends ListActivity { super.onCreateContextMenu(menu, v, menuInfo); AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo; - menu.setHeaderTitle(((TextView) info.targetView).getText()); + if (info.position > 2) { + menu.setHeaderTitle(((TextView) info.targetView).getText()); - menu.add(0, MENU_ID_RENAME, 0, R.string.gestures_rename); - menu.add(0, MENU_ID_REMOVE, 0, R.string.gestures_delete); + menu.add(0, MENU_ID_RENAME, 0, R.string.gestures_rename); + menu.add(0, MENU_ID_REMOVE, 0, R.string.gestures_delete); + } } @Override @@ -252,6 +265,14 @@ public class GesturesActivity extends ListActivity { Toast.makeText(this, R.string.gestures_delete_success, Toast.LENGTH_SHORT).show(); } + public void onItemClick(AdapterView parent, View view, int position, long id) { + if (position == 1) { + final CheckBox checkBox = (CheckBox) view.findViewById(R.id.checkbox); + checkBox.toggle(); + mPreferences.edit().putBoolean(PREFERENCES_HOME_KEY, checkBox.isChecked()).commit(); + } + } + private class GesturesLoadTask extends AsyncTask { private int mThumbnailSize; private int mThumbnailInset; @@ -346,4 +367,121 @@ public class GesturesActivity extends ListActivity { return convertView; } } + + private class GesturesSettingsAdapter extends BaseAdapter { + private static final int FIXED_CHILDREN_COUNT = 3; + + private static final int VIEW_TYPE_SEPARATOR = 0; + private static final int VIEW_TYPE_CHECKBOX = 1; + + private final GesturesAdapter mAdapter; + private final LayoutInflater mInflater; + + public GesturesSettingsAdapter(GesturesAdapter adapter) { + mAdapter = adapter; + mInflater = adapter.mInflater; + adapter.registerDataSetObserver(new DataSetObserver() { + @Override + public void onChanged() { + notifyDataSetChanged(); + } + + @Override + public void onInvalidated() { + notifyDataSetInvalidated(); + } + }); + } + + public int getCount() { + return FIXED_CHILDREN_COUNT + mAdapter.getCount(); + } + + public Object getItem(int position) { + if (position < FIXED_CHILDREN_COUNT) { + return String.valueOf(position); + } + return mAdapter.getItem(position - FIXED_CHILDREN_COUNT); + } + + public long getItemId(int position) { + return position; + } + + @Override + public int getItemViewType(int position) { + if (position < FIXED_CHILDREN_COUNT) { + switch (position) { + case 0: + case 2: + return VIEW_TYPE_SEPARATOR; + case 1: + return VIEW_TYPE_CHECKBOX; + } + } + return 2 + super.getItemViewType(position); + } + + @Override + public int getViewTypeCount() { + return 2 + mAdapter.getViewTypeCount(); + } + + @Override + public boolean areAllItemsEnabled() { + return false; + } + + @Override + public boolean isEnabled(int position) { + return position != 0 && position != 2; + } + + public View getView(int position, View convertView, ViewGroup parent) { + if (position < FIXED_CHILDREN_COUNT) { + // NOTE: Don't bother with ViewHolders here, we only have 3 items and + // the list is likely to not be very long + switch (position) { + case 0: + convertView = createHeader(convertView, parent, + R.string.gestures_group_settings); + break; + case 1: + convertView = createSetting(convertView, parent, + R.string.gestures_preference_hotkey_title, + R.string.gestures_preference_hotkey_summary); + break; + case 2: + convertView = createHeader(convertView, parent, + R.string.gestures_group_gestures); + break; + } + return convertView; + } + return mAdapter.getView(position - FIXED_CHILDREN_COUNT, convertView, parent); + } + + private View createSetting(View convertView, ViewGroup parent, + int title, int summary) { + + if (convertView == null) { + convertView = mInflater.inflate(R.layout.list_checkbox_2lines, parent, false); + } + + ((TextView) convertView.findViewById(R.id.title)).setText(title); + ((TextView) convertView.findViewById(R.id.summary)).setText(summary); + ((CheckBox) convertView.findViewById(R.id.checkbox)).setChecked( + mPreferences.getBoolean(PREFERENCES_HOME_KEY, false)); + + return convertView; + } + + private View createHeader(View convertView, ViewGroup parent, int text) { + if (convertView == null) { + convertView = mInflater.inflate(R.layout.list_category, parent, false); + } + ((TextView) convertView).setText(text); + return convertView; + } + } } diff --git a/src/com/android/launcher/GesturesPanel.java b/src/com/android/launcher/GesturesPanel.java index 33dc1028fc..2d8647d98f 100644 --- a/src/com/android/launcher/GesturesPanel.java +++ b/src/com/android/launcher/GesturesPanel.java @@ -16,12 +16,12 @@ package com.android.launcher; -import android.widget.RelativeLayout; +import android.widget.LinearLayout; import android.content.Context; import android.util.AttributeSet; import android.view.KeyEvent; -public class GesturesPanel extends RelativeLayout { +public class GesturesPanel extends LinearLayout { public GesturesPanel(Context context) { super(context); } @@ -37,7 +37,26 @@ public class GesturesPanel extends RelativeLayout { @Override public boolean dispatchKeyEvent(KeyEvent event) { - if (event.getKeyCode() == KeyEvent.KEYCODE_BACK && + final int keyCode = event.getKeyCode(); + + switch (keyCode) { + case KeyEvent.KEYCODE_VOLUME_UP: + case KeyEvent.KEYCODE_VOLUME_DOWN: + case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE: + case KeyEvent.KEYCODE_MUTE: + case KeyEvent.KEYCODE_HEADSETHOOK: + case KeyEvent.KEYCODE_MEDIA_STOP: + case KeyEvent.KEYCODE_MEDIA_NEXT: + case KeyEvent.KEYCODE_MEDIA_PREVIOUS: + case KeyEvent.KEYCODE_MEDIA_REWIND: + case KeyEvent.KEYCODE_MEDIA_FAST_FORWARD: + case KeyEvent.KEYCODE_CAMERA: + case KeyEvent.KEYCODE_CALL: + case KeyEvent.KEYCODE_SEARCH: + return ((Launcher) mContext).getWorkspace().getRootView().dispatchKeyEvent(event); + } + + if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) { ((Launcher) mContext).hideGesturesPanel(); diff --git a/src/com/android/launcher/Launcher.java b/src/com/android/launcher/Launcher.java index 000ce14850..21b69491a2 100644 --- a/src/com/android/launcher/Launcher.java +++ b/src/com/android/launcher/Launcher.java @@ -32,6 +32,7 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.IntentFilter; +import android.content.SharedPreferences; import android.content.Intent.ShortcutIconResource; import android.content.pm.ActivityInfo; import android.content.pm.PackageManager; @@ -79,7 +80,7 @@ import android.widget.TextView; import android.widget.Toast; import android.widget.ImageView; import android.widget.PopupWindow; -import android.widget.ViewSwitcher; +import android.widget.Button; import android.appwidget.AppWidgetManager; import android.appwidget.AppWidgetProviderInfo; import android.gesture.GestureOverlayView; @@ -233,13 +234,14 @@ public final class Launcher extends Activity implements View.OnClickListener, On private View mGesturesPanel; private GestureOverlayView mGesturesOverlay; - private ViewSwitcher mGesturesPrompt; private ImageView mGesturesAdd; private PopupWindow mGesturesWindow; private Launcher.GesturesProcessor mGesturesProcessor; private Gesture mCurrentGesture; private GesturesAction mGesturesAction; private boolean mHideGesturesPanel; + private TextView mGesturesPrompt; + private Button mGesturesSend; @Override protected void onCreate(Bundle savedInstanceState) { @@ -605,7 +607,7 @@ public final class Launcher extends Activity implements View.OnClickListener, On mWorkspace.post(new Runnable() { public void run() { showGesturesPanel(false); - mGesturesProcessor.matchGesture(gesture, false); + mGesturesProcessor.matchGesture(gesture); mWorkspace.post(new Runnable() { public void run() { if (gesture != null) { @@ -667,22 +669,26 @@ public final class Launcher extends Activity implements View.OnClickListener, On mGesturesPanel = mInflater.inflate(R.layout.gestures, mDragLayer, false); final View gesturesPanel = mGesturesPanel; - mGesturesPrompt = (ViewSwitcher) gesturesPanel.findViewById(R.id.gestures_actions); mGesturesAction = new GesturesAction(); - mGesturesPrompt.getChildAt(0).setOnClickListener(mGesturesAction); - mGesturesPrompt.getChildAt(1).setOnClickListener(mGesturesAction); - + mGesturesPrompt = (TextView) gesturesPanel.findViewById(R.id.gestures_prompt); + mGesturesSend = (Button) gesturesPanel.findViewById(R.id.gestures_action); + mGesturesSend.setOnClickListener(mGesturesAction); + mGesturesAdd = (ImageView) gesturesPanel.findViewById(R.id.gestures_add); final ImageView gesturesAdd = mGesturesAdd; - gesturesAdd.setAlpha(128); - gesturesAdd.setEnabled(false); gesturesAdd.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { createGesture(); } }); + gesturesPanel.findViewById(R.id.gestures_list).setOnClickListener(new View.OnClickListener() { + public void onClick(View v) { + startActivity(new Intent(Launcher.this, GesturesActivity.class)); + } + }); + mGesturesOverlay = (GestureOverlayView) gesturesPanel.findViewById(R.id.gestures_overlay); mGesturesProcessor = new GesturesProcessor(); @@ -976,17 +982,34 @@ public final class Launcher extends Activity implements View.OnClickListener, On if ((intent.getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) { - if (mGesturesPanel != null && mDragLayer.getWindowVisibility() == View.VISIBLE && - (mDragLayer.hasWindowFocus() || - (mGesturesWindow != null && mGesturesWindow.isShowing()))) { + // TODO: This really should not be done here every time + final SharedPreferences preferences = + getSharedPreferences(GesturesActivity.PREFERENCES_NAME, MODE_PRIVATE); + final boolean homeKey = preferences.getBoolean( + GesturesActivity.PREFERENCES_HOME_KEY, false); - SearchManager searchManager = - (SearchManager) getSystemService(Context.SEARCH_SERVICE); + if (!homeKey) { + if (!mWorkspace.isDefaultScreenShowing()) { + mWorkspace.moveToDefaultScreen(); + } - if (!searchManager.isVisible()) { - onHomeKeyPressed(); + if (mGesturesWindow == null || mGesturesWindow.isShowing()) { + hideGesturesPanel(); + } + } else { + if (mGesturesPanel != null && mDragLayer.getWindowVisibility() == View.VISIBLE + && (mDragLayer.hasWindowFocus() || (mGesturesWindow != null + && mGesturesWindow.isShowing()))) { + + SearchManager searchManager = + (SearchManager) getSystemService(Context.SEARCH_SERVICE); + + if (!searchManager.isVisible()) { + onHomeKeyPressed(); + } } } + closeDrawer(); final View v = getWindow().peekDecorView(); @@ -1016,8 +1039,7 @@ public final class Launcher extends Activity implements View.OnClickListener, On private void showGesturesPanel(boolean animate) { resetGesturesPrompt(); - mGesturesAdd.setEnabled(false); - mGesturesAdd.setAlpha(128); + mGesturesAdd.setVisibility(View.GONE); mGesturesOverlay.clear(false); @@ -1027,12 +1049,13 @@ public final class Launcher extends Activity implements View.OnClickListener, On window = mGesturesWindow; window.setFocusable(true); window.setTouchable(true); - window.setBackgroundDrawable(null); + window.setBackgroundDrawable(getResources().getDrawable( + android.R.drawable.screen_background_dark)); window.setContentView(mGesturesPanel); } else { window = mGesturesWindow; } - window.setAnimationStyle(animate ? com.android.internal.R.style.Animation_SlidingCard : 0); + window.setAnimationStyle(animate ? com.android.internal.R.style.Animation_Toast : 0); final int[] xy = new int[2]; final DragLayer dragLayer = mDragLayer; @@ -1045,31 +1068,23 @@ public final class Launcher extends Activity implements View.OnClickListener, On private void resetGesturesPrompt() { mGesturesAction.intent = null; - final TextView prompt = (TextView) mGesturesPrompt.getCurrentView(); - prompt.setText(R.string.gestures_instructions); - prompt.setCompoundDrawablesWithIntrinsicBounds(null, null, null, null); - prompt.setClickable(false); + mGesturesPrompt.setText(R.string.gestures_instructions); + mGesturesPrompt.setVisibility(View.VISIBLE); + mGesturesSend.setVisibility(View.GONE); } - private void resetGesturesNextPrompt() { + private void setGestureUnknown() { mGesturesAction.intent = null; - setGesturesNextPrompt(null, getString(R.string.gestures_instructions)); - mGesturesPrompt.getNextView().setClickable(false); + mGesturesPrompt.setText(R.string.gestures_unknown); + mGesturesPrompt.setVisibility(View.VISIBLE); + mGesturesSend.setVisibility(View.GONE); } - private void setGesturesNextPrompt(Drawable icon, CharSequence title) { - final TextView prompt = (TextView) mGesturesPrompt.getNextView(); - prompt.setText(title); - prompt.setCompoundDrawablesWithIntrinsicBounds(icon, null, null, null); - prompt.setClickable(true); - mGesturesPrompt.showNext(); - } - - private void setGesturesPrompt(Drawable icon, CharSequence title) { - final TextView prompt = (TextView) mGesturesPrompt.getCurrentView(); - prompt.setText(title); - prompt.setCompoundDrawablesWithIntrinsicBounds(icon, null, null, null); - prompt.setClickable(true); + private void setGestureAction(Drawable icon, CharSequence title) { + mGesturesPrompt.setVisibility(View.GONE); + mGesturesSend.setVisibility(View.VISIBLE); + mGesturesSend.setText(title); + mGesturesSend.setCompoundDrawablesWithIntrinsicBounds(icon, null, null, null); } void hideGesturesPanel() { @@ -1080,7 +1095,7 @@ public final class Launcher extends Activity implements View.OnClickListener, On if (mGesturesWindow != null) { final PopupWindow popupWindow = mGesturesWindow; popupWindow.setAnimationStyle(animate ? - com.android.internal.R.style.Animation_SlidingCard : 0); + com.android.internal.R.style.Animation_Toast : 0); popupWindow.update(); popupWindow.dismiss(); } @@ -1270,10 +1285,10 @@ public final class Launcher extends Activity implements View.OnClickListener, On .setIcon(com.android.internal.R.drawable.ic_menu_notifications) .setAlphabeticShortcut('N'); - final Intent gestures = new Intent(this, GesturesActivity.class); + // TODO: Remove menu.add(0, MENU_GESTURES, 0, R.string.menu_gestures) - .setIcon(com.android.internal.R.drawable.ic_menu_compose).setAlphabeticShortcut('G') - .setIntent(gestures); + .setIcon(com.android.internal.R.drawable.ic_menu_compose) + .setAlphabeticShortcut('G'); final Intent settings = new Intent(android.provider.Settings.ACTION_SETTINGS); settings.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | @@ -1311,6 +1326,9 @@ public final class Launcher extends Activity implements View.OnClickListener, On case MENU_NOTIFICATIONS: showNotifications(); return true; + case MENU_GESTURES: + showGesturesPanel(); + return true; } return super.onOptionsItemSelected(item); @@ -2509,11 +2527,10 @@ public final class Launcher extends Activity implements View.OnClickListener, On //noinspection PointlessBooleanExpression,ConstantConditions if (!CONFIG_GESTURES_IMMEDIATE_MODE) { overlay.removeCallbacks(mMatcher); - resetGesturesNextPrompt(); + resetGesturesPrompt(); } - mGesturesAdd.setAlpha(128); - mGesturesAdd.setEnabled(false); + mGesturesAdd.setVisibility(View.GONE); } public void onGesture(GestureOverlayView overlay, MotionEvent event) { @@ -2529,7 +2546,7 @@ public final class Launcher extends Activity implements View.OnClickListener, On overlay.clear(false); if (mGesturesAction.intent != null) { mGesturesAction.intent = null; - setGesturesNextPrompt(null, getString(R.string.gestures_unknown)); + setGestureAction(null, getString(R.string.gestures_unknown)); } } else { mMatcher.run(); @@ -2542,7 +2559,7 @@ public final class Launcher extends Activity implements View.OnClickListener, On overlay.clear(false); if (mGesturesAction.intent != null) { mGesturesAction.intent = null; - setGesturesNextPrompt(null, getString(R.string.gestures_unknown)); + setGestureAction(null, getString(R.string.gestures_unknown)); } } else { overlay.postDelayed(mMatcher, GesturesConstants.MATCH_DELAY); @@ -2551,12 +2568,7 @@ public final class Launcher extends Activity implements View.OnClickListener, On } void matchGesture(Gesture gesture) { - matchGesture(gesture, true); - } - - void matchGesture(Gesture gesture, boolean animate) { - mGesturesAdd.setAlpha(255); - mGesturesAdd.setEnabled(true); + mGesturesAdd.setVisibility(View.VISIBLE); if (gesture != null) { final ArrayList predictions = sLibrary.recognize(gesture); @@ -2575,38 +2587,27 @@ public final class Launcher extends Activity implements View.OnClickListener, On ApplicationInfo info = sModel.queryGesture(Launcher.this, prediction.name); if (info != null) { - updatePrompt(info, animate); + updatePrompt(info); } } } if (!match){ mGesturesAction.intent = null; - if (animate) { - setGesturesNextPrompt(null, getString(R.string.gestures_unknown)); - } else { - setGesturesPrompt(null, getString(R.string.gestures_unknown)); - } + setGestureUnknown(); } } } private void updatePrompt(ApplicationInfo info) { - updatePrompt(info, true); - } - - private void updatePrompt(ApplicationInfo info, boolean animate) { + // TODO: BRING BACK if (mGesturesAction.intent != null && info.intent.toUri(0).equals(mGesturesAction.intent.toUri(0)) && - info.title.equals(((TextView) mGesturesPrompt.getCurrentView()).getText())) { + info.title.equals(mGesturesSend.getText())) { return; } - if (animate) { - setGesturesNextPrompt(info.icon, info.title); - } else { - setGesturesPrompt(info.icon, info.title); - } + setGestureAction(info.icon, info.title); mGesturesAction.intent = info.intent; }