From 4752e7d1a9ff83d946890b0020de091f4346a7ae Mon Sep 17 00:00:00 2001 From: Winson Chung Date: Tue, 20 Nov 2012 17:06:04 -0800 Subject: [PATCH] Removing the plus page when we reach the max number of allowable widgets. (Bug 7564782) - Also adding feedback on the plus page (Bug 7500328) Change-Id: Iddd09b7a3d5347a43bc040052114879cbaecccd9 --- core/res/res/drawable-hdpi/kg_add_widget.png | Bin 971 -> 970 bytes .../drawable-hdpi/kg_add_widget_disabled.png | Bin 0 -> 1066 bytes .../drawable-hdpi/kg_add_widget_pressed.png | Bin 0 -> 1004 bytes core/res/res/drawable-mdpi/kg_add_widget.png | Bin 776 -> 788 bytes .../drawable-mdpi/kg_add_widget_disabled.png | Bin 0 -> 832 bytes .../drawable-mdpi/kg_add_widget_pressed.png | Bin 0 -> 809 bytes core/res/res/drawable-xhdpi/kg_add_widget.png | Bin 1214 -> 1228 bytes .../drawable-xhdpi/kg_add_widget_disabled.png | Bin 0 -> 1351 bytes .../drawable-xhdpi/kg_add_widget_pressed.png | Bin 0 -> 1251 bytes .../drawable/keyguard_add_widget_button.xml | 21 ++++++++++ core/res/res/layout/keyguard_add_widget.xml | 2 +- .../impl/keyguard/KeyguardHostView.java | 25 +++++------ .../impl/keyguard/KeyguardWidgetPager.java | 39 +++++++++++++++--- .../policy/impl/keyguard/PagedView.java | 2 + 14 files changed, 68 insertions(+), 21 deletions(-) create mode 100644 core/res/res/drawable-hdpi/kg_add_widget_disabled.png create mode 100644 core/res/res/drawable-hdpi/kg_add_widget_pressed.png create mode 100644 core/res/res/drawable-mdpi/kg_add_widget_disabled.png create mode 100644 core/res/res/drawable-mdpi/kg_add_widget_pressed.png create mode 100644 core/res/res/drawable-xhdpi/kg_add_widget_disabled.png create mode 100644 core/res/res/drawable-xhdpi/kg_add_widget_pressed.png create mode 100644 core/res/res/drawable/keyguard_add_widget_button.xml diff --git a/core/res/res/drawable-hdpi/kg_add_widget.png b/core/res/res/drawable-hdpi/kg_add_widget.png index 723d97a3a981689a440614c03a8944207882532e..68971a58c5ac40a0945532f06a111fc52d54b75a 100644 GIT binary patch delta 601 zcmX@jeu{m;I*I}7mtUVe+XnH z3V&b>iulFG=A9cPxv?`M)8mfVNsn1A4_?@wJN4^Sb=PkG?&3tfGd@peyxTY9iQgpc zi~rY5exvd;Ak_Z3`0MXk-}kEYPl}PUU3u<}_ayPquZEUgH}8J8m~10yJM-U(xJl`u zTWw#zJ8fw*G0JbXrB%mfmGa3k61Ee?iZ<_Fe|FNE-gz$Et5vS2TiVQxs?%%a|$t6#nK?7sU~;lK>Lw8@2x zlDt_yulAjLx@_g|qRY=)CqHD8j00-*`TDix@2V=Rs?EirTW6*ecU6~u&zkf+_|ECc zoJl@lvyaSBIL0#b)#8(0<@;w9#IIld>a1tC`~5j}77uMEe@Fq^4py=7n2m((0gfv( zY^xdsR~VjGogBz0uHGVbS^TZSzKrWd#%djgjy*_*Ua5Z>{r=t8i_Si0Cr`e}q>1h` z5I+@Yv+7NG+m?S_@|#uWyZbL}l~uVpQ?+vblh-dYw@g^O>X+H-ReM$RA3rXOe5-cT zW74enm+zuI<Z@;H)av!s-0=mS$Bo-?MAnE8pe%VMJ_shauO5U*YF$<_)lKbJ1=DVH`|k8p|yT~$z|UctLVF#`7hi5N&DpNRkvoB zevk6=TQco()}-g2M&6$kPWE0D&Qz4XyVuUUsQQaaRD|kI)6*wkUilPls4_W`(RFeI zqnM)hV)h^IWs~2;ZrC^R$-fth>!nPe9bZ*de=n)rp3h)ef8^wkjAFtP!YxvhcdgIf z`7-K{@-%+aXIoPye_#}!e4mLmI(YBAf{@Vl?)hcwR+UY9<5Rf)U7Y8qqOR&nBgY=j zBp-p~CJEsqGZcbrO(S2v3m1Nuy?fQYx!Ws#J^M15^ZCpcb&%vS7DF`-(`O%FFuE-` z_U0mUk3(;zuH@tgOyX)+X8gOb?r9p_9FWouL!i-4f2Z#|`|h5M?U5@sGbdkQ(wuyN zNk4f)bP0l+XkK DRm1_R diff --git a/core/res/res/drawable-hdpi/kg_add_widget_disabled.png b/core/res/res/drawable-hdpi/kg_add_widget_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..f24cf6423ff944f5a32551513aeca1878fbe57c3 GIT binary patch literal 1066 zcmeAS@N?(olHy`uVBq!ia0vp^#XvlZgAGiUuK`jl>5jgR3=A9lx&I`x0{M)^LGDfr z>(0r%1acITJ%W507^+km7#f-x7=Hc-(m?T20|tgy2@DKYGZ+}e^C!h0bpxtpOY(Mi zVfYV%3-&Ib3>4uk@Q4K3$1M!Pj105pNH8!k%X_*whE&{od)F{KI$WmhQGULV_T=9KN7vMDrFpxudKAIqvP-2zwfiwwhMlYd|moW!#r#4eV^r* z&!%mzoR_}&=Gmy%aj!$IHfL|W7U|-mx70`Z(dTR3C1qQ$S%3cdXLXF%&Z|{D=X9qA z?K>wpFkJ8@BQq3^u^6g#7&`WFCiw^?H%SOnNoa!SYsUE}3SItuo%gz2IcfXX z6Wwh+GlQ(+)`soh_qyu-_xtPy%k($nvYx|K?Q2Z9<~L{=F3NAYJgN^RaIcY(?D+0+yigAhR$ko?QhxmpjoseU@j^+-Z1&m9FH3$^ul-u)@@7lia{i)8 zLBDd1X5Nu+dk9QLRln_@eg5gU_G{SdrB&-E75}T=7_q13^TB$?4E2_id(TL;1M`n+ ziEBhjN@7W>RdP`(kYX@0Ff`ING}JY)2r)FXGBUL?HUhG(3=Cx6Ds!M{$jwj5OsmAL UA$P;zopr0G>p#1ONa4 literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-hdpi/kg_add_widget_pressed.png b/core/res/res/drawable-hdpi/kg_add_widget_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..55112ca7ea9a53134745f742b3f72a7387dbf102 GIT binary patch literal 1004 zcmeAS@N?(olHy`uVBq!ia0vp^#XvlZgAGiUuK`jl>5jgR3=A9lx&I`x0{M)^LGDfr z>(0r%1acITJ%W507^+km7#f-x7=Hc-(m?T20|tgy2@DKYGZ+}e^C!h0bpxtpOY(Mi zVfYV%3-&Ib3>4uk@Q4K3$1M!Pj105pNH8!kJ@j;O45_&F_O4;}l>&ygkKdg%UBv~h zGSUh!9o(^FcdB5F>{VZH`_^?*DkIS|*U%?-6bifJ+Dn#;#H)2 z((9$`tkXZ2NuLYz4D;5%ct_3imDX>p(<_wxo@rcq@13QQNHGDR4T2GW&cb;@zJqg*Hc!$Y)e<3_d4+Y zwSN9xJHMZOIa~RiWUD_s46@E-zGPGlNY0xs7r!t2JXVs}1rpWOVr1~?os-^Gfcde7{m$Xf`XHF^)ope?u-h2JU zn7A*wf0w?x{mXsQZ_jOB`j;lw_zm0Xkxq!^40 z42^UR4RsAHLJZBUj7+Rdjeu+`0|QeB$Bif&a`RI%(<*UmaFPAV3)H~i>FVdQ&MBb@ E0Fs}Ivj6}9 literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-mdpi/kg_add_widget.png b/core/res/res/drawable-mdpi/kg_add_widget.png index 5b0a5a485450be80e68261a6722ca4926126eb63..136ae174041061801d72835eb1f916fb3bf38926 100644 GIT binary patch delta 604 zcmeBRo5D6>ay=8Lr;B4q#jUq@?Yl$*Mch6Xch3~v!Sw&Z3nmuFiJoc&>UsyBO6*`& zX6EH#@ii%8Iw)vZ#<-~YdP0blY>xe^1#zc;wu;*1$?lSKEe|heEcq^1z`cXRC*!ha z0neUwtJb}{$Nr9)J=@=G$Mevy2~6)2*3=j7-o4)Uz|^hkHx=vIg*R;fCSsj(pVuyB z!-RuQY}}GMBr+~!#0yu1h4P#8mwdN<@a$Ie-zVB=W-Ml1y_Nk&+LnaHXE#?f_Z>@6 zY;NTdGm1D-4`D^UlD&TXz;D)TKTFPSR6nqq_1ZoznX|DeD-+(Y%Ici_%Q)*O|^zx(!G?;4SB+g8oXlY8+_`JCCCoq9Tji@aH*U+w(3{<+L&8e;$bYjO#*FE;U>hq|CX;sl80#{H}|;)M0z|GlsfxRBxBBvbbN;VtJs zz3a&h7?zsI>JHgYm5<*1kKY>0oUitP^+VCyOt$L>7O(pC;q~+7yTpH66>xsvdVem{ z@zAe=53HYgIP&ds?aH4#i%C|*BE- My85}Sb4q9e0QCg|UH||9 delta 616 zcmbQj*1ov;ULWbYpqz!<%+*4)(lsm)%oNZRhNi&azk)OYct$ zR|VB4*?Je%zdfn;ec7sc`krz}Bd&kkvAcho%IvM`J6+AZCpB-aU%tbYZ|?zTwq_nS zNggAK6oV596AmggI}#(ncU|tmq|2+SHtxP~*MIY0&1)hxttc8VB*^$Wgt!+H7CG6O3=IUA5}+-PU(@CuiJV^S;O8Lf}ESyXOClPrh8bwc1mT z=hpvYHmZuvj+PJa6*7kj>6_4f1qS^NEpwy9K3fAaR$WuJAE_pDj9zW#sRs@?sMf@iER zn)oC+wARLZ()|x*4(u#TBDEM87*tDKBT7;dOH!?pi&B9UgOP!uk*=Yku7O#Ip@o&9 onUxWcZDD0#;3+33H2FG{tOB}(h4Zp?K$93eUHx3vIVCg!0RB`7lK=n! diff --git a/core/res/res/drawable-mdpi/kg_add_widget_disabled.png b/core/res/res/drawable-mdpi/kg_add_widget_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..02e0f0ecc26081eabb7c48ea3829916ab9a96186 GIT binary patch literal 832 zcmeAS@N?(olHy`uVBq!ia0vp^K0ut#!3HE({aJDkNU@|l`Z_W&Z0zU$lgJ9>GZqKA zJ29*~C-V}>QAqX(@?~JCQe|LhXl7ve`5#CF#Y+ts7+xhXFj&oCU=Yur6o1qWsFp3s z+ueoXKL{?^yL>WGgtNdSvY3H^TNs2H8D`CqU|?V}^>lFzskrs_&i*dpK#8`G-+MNP zC+PoR7gt;&%rd()kz4w!{hv!S-bT zYpXge{51DYD5=Ucnt7+Y6hF2CHZr_p zF%UlJLn34AH{-_VOQ*QcW-mI&uX0zidPDq*!McIn(X#Z!x)PBQ^H zG}yT6^3@HwQQX&Tnr3pODb46iPy;ctbS2Iws?GcI-yH7wwR<^>rWD&rRd>`s zwLK#D^Hyo>cDd>U zJ9emj+iE{|`IKv?pMKh`@|U4>R-|U;%jv-M$Dmr`8c~vxSdwa$T$Bo=7>o=IjdTqS zbqy>+49%>JOs$NKfNU!R1DUtV94H!c^HVa@DsgMb-7tF#Py>UftDnm{r-UW|(1kr6 literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-mdpi/kg_add_widget_pressed.png b/core/res/res/drawable-mdpi/kg_add_widget_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..34a7aaa535a281733d7fe603e32ad8a56dd89a33 GIT binary patch literal 809 zcmeAS@N?(olHy`uVBq!ia0vp^K0ut#!3HE({aJDkNU@|l`Z_W&Z0zU$lgJ9>GZqKA zJ29*~C-V}>QAqX(@?~JCQe|LhXl7ve`5#CF#Y+ts7+xhXFj&oCU=Yur6o1qWsFp3s z+ueoXKL{?^yL>WGgtNdSvY3H^TNs2H8D`CqU|?X9^K@|xskrs_?*6VT0W$6%Hy2)Y z-*AGtV^MTYoWq8Ij);y2mm{J({1a0b#&YTEY!OaY+@y4kasGiM(c_2gd3IRT&E)>x zH^;xS`?P+$Cx`LmnYImyQGU$V8$Ua=U#n$JdvMg|+v>lGQRf)=8%}Rk&%WXNK(k;y zb6&!l`oi29(+>0Ph^U?-|e zW$xsTS!;Vkf8QY|Hf~9slnoOOf*Dt$HtfB{oO3B^!?kBO_cBH&!z7?8rdA#QD)?dF z0lWEr5!F0&04a-e23<{OhpIH}?Y7 z_8+=;F8O~-ZQ_h+w+}33s-CZ1xL|41R11X$ef2f54C_R0)dRIGyw_Q8Eu z^z_ zX5-)XY`qbO=K+(CYKdz^NlIc#s#S7PDv)9@GB7mKH8j*Uum~|UvobQVGBpCStqcrI h9UM2JXvob^$xN%nt-(e1CofO~gQu&X%Q~loCIGppIE?@R literal 0 HcmV?d00001 diff --git a/core/res/res/drawable-xhdpi/kg_add_widget.png b/core/res/res/drawable-xhdpi/kg_add_widget.png index 9c84de2e1d40a29b2aaf880146115be49dc651fa..ca48be2793dfaf51a515145b4257e2959d5ccba7 100644 GIT binary patch delta 653 zcmV;80&@Mn3CszQlz+iVL_t(|+U?!3ikwvdhT-p+Adw(qu@Dffw6IXT01GcbJM9Bn zc_n%QVw+O1Fvu2`xdG8m2pC9VW8s2gBiS4avre)svm*O>W`^e}&z#~bUjBvUXJ+IA zbIwz7~``fdG5)y>y0_*o5?1! zw^lFWAUzY=(dsoEq+7`*vKy<{aFA{$o5-MHBqHN~Ad>+D6O(`gO_PuTC>GaO57=>c z#u)c5yENx~FUbe1$L=amlK}%0lYj#k2D0tE)OiJyaRDzk+ojiwA0;_nJ>r}P|MK4b zBzISjeaf{Y@2?(lW~U+>W87Um;=dSU+|S>k?Swh!^Vy-u{JEr)Ap#RKyY$c48*|P( zt4Eyk$xO+wOGrfI}dY0Rt10fCCo| zvhBRIcm+hZo!76gfRnKU9S@hjn0Oc6o^#$_J!0Q^l9Ry!Hj^I$8IzC$HGkb%WOMZp z4$^6|iR_QnYdA>1C!5HAUcH8c^f1{(_TB0=9Guf6KO~#T?j`wU^(qd^S7VHaNixn( z=A17k`6$WTtJksDPLmvuF}^-K80T-yIp0b0VUm|tuVwH2l;ra<#;;Ewj*D*2Ij<)< zN^*1cYWBk8Bqw8xlZ!t53kcV|T*+lnzPpo91RWGOR53O>GB!FgHZ3qXIxsNLKfH#M nfdm~OI8-qzX+F delta 608 zcmV-m0-ycN3BC!Clz+2HL_t(|+U?!3iriHI#o=?aTWmlgC=o106ijU?R)U>DpTP&o z(^!dMBR0Z<7OAuoOGyzhmL^uaT#IC!ID}o19PiBVedV27oZ`oSmSLG0d4W0S?Idp` zISX8GCix@D!!gE_-519{ZqE5il24Poy?QkV=_1K@N$!s^=2YhJ@5ttyZzlOH$?erk zIe0%O`D%=DktC-{GUvRNUl2Ioz>O@AJ$fy$; zbt1dkTs`0zi0o>Ys|OqdlaT`}23^fRExrVkfB_#6w@+V8ypQhAIq$9>ap*kBlaT>! zlfMBMe{K`mTs?%NbeU`;d$M{BN9oUG8`-1PYdA{3CELh;S-pm%bD3vdZ6fSB)5{BtzOMRm`NV*#GZqKA zJ29*~C-V}>QAqX(@?~JCQe|LhXl7ve`5#CF#Y+ts7+xhXFj&oCU=Yur6o1qWsFp3s z+ueoXKL{?^yL>WGgtNdSvY3H^TNs2H8D`Cq09t3`>EaktaqI0}!)}>Wnd2Y-zsXgZ zYhboTn~*W&al_L(bC&n9h@@YBzm`)}j!-M^omJb5yG z?N;++ai?z0;yL`G?0V_-{5v~7K7RP{;igqtL7`iB@2=kZ{TM(Zhuvn68iPtjm0-?4jasIy%x3G>YIYurLC(r zPk!_1M)nPl@KxuOnp@U+rTpP{ahr3ZLs+s5h~xmw>;GHB=PRkd$#bLxC3b(*%4Z`XUF&wc^ulGr@)9b_xx;t8b zjlX@$G23nXt>g2qb-!Odc<^BN^Sj%#_6wEQ)YyD$QMW+#QS6#t+XUf`H%X^Avga_7 z5CO4goV)cKPUt=R_!_^bw|m9=>?w-M-k!Gk=Gu+rYpm4=KEi>?ZLZt3V{(VwqQd67 zetQl|m-QjGeQRFtia!>2_*v#!+f`QGZ`wDqZ!DY^9UW~SYTK7%HTNDcXIkD>diUIWx?b(h?c2ZK7QQ~e^mC2fe7?g4TUV{?v7NKkz(;NJ;=OzK zE>7S3Q{0?=o|VPcgP@{GwZt`|BqgyV)hf9t6-Y4{85kPr8XD>vScDjwSs9sH85;rF lRt5$#ZGZqKA zJ29*~C-V}>QAqX(@?~JCQe|LhXl7ve`5#CF#Y+ts7+xhXFj&oCU=Yur6o1qWsFp3s z+ueoXKL{?^yL>WGgtNdSvY3H^TNs2H8D`CqU|?Xr;pyTSQgQ3;-HqL|OBs%Re4f>+ zrI9Cl&oSnRV@%VEdglxK7tH2cH+PQAF7DX5TMqMDm7UPjJF4jIc(Bij?d1aJcE0j? z&3m8Oc=9;qESJSW*t{<9~}umAl2 zj}P8-AI&N@J~>zAeNWuksU=gM{8qWYX8PriFK3@uj$UK-UiGKaNs}tg@O#ZF<=0NX z%$yYCJ?UtcvFc9g#zIRwuTNKBc4wcTXYcvx(u>qHr*?N=eReoS`X>8gaYOI->bFni z^~D|5**h~wxjOZWRNBj}DbkWAG1dPVe3cgarCjOkv6>jDZuH8Z{6|wbo0f=->0S$@3I_o^U^pb68-V*<+n$RRoWN3&-r}1-sZc( z$-Nho&+nM`37k@3fbszP%6(pNne$K*jQ0w=$zDj?E=gfN9XEig)uD_f5TTwqMMivDE#f z*(Q1S^@(MDlWjb>GzA!GpDw{e)=W*lg_5EMOCw&d{(jVjXO5Ae9n`Cy>s~d z?^{^ZCvCh{Gv~==mHeK#(^EfdoSY6+zuy07v-sSYHD>ziGbin_t1=Bg6z?fFzyI}> z`#WbvopSSI*b2<}swJ)wB`Jv|saDBFsX&Us$iUD@*U(Vcz#_!Z%*x2b%G3zRwlXj< hb#UB>q9HdwB{QuOw+0v4pS(Z~44$rjF6*2UngAyNB#{6B literal 0 HcmV?d00001 diff --git a/core/res/res/drawable/keyguard_add_widget_button.xml b/core/res/res/drawable/keyguard_add_widget_button.xml new file mode 100644 index 0000000000000..c26f81dd9d66c --- /dev/null +++ b/core/res/res/drawable/keyguard_add_widget_button.xml @@ -0,0 +1,21 @@ + + + + + + + + diff --git a/core/res/res/layout/keyguard_add_widget.xml b/core/res/res/layout/keyguard_add_widget.xml index db166ac015eab..d043fdbf6e84b 100644 --- a/core/res/res/layout/keyguard_add_widget.xml +++ b/core/res/res/layout/keyguard_add_widget.xml @@ -36,7 +36,7 @@ android:layout_height="wrap_content" android:layout_gravity="center" android:padding="24dp" - android:src="@drawable/kg_add_widget" + android:src="@drawable/keyguard_add_widget_button" android:contentDescription="@string/keyguard_accessibility_add_widget"/> diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardHostView.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardHostView.java index 84f3d61cd0169..11ed5bc8bdb4b 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardHostView.java +++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardHostView.java @@ -271,7 +271,7 @@ public class KeyguardHostView extends KeyguardViewBase { addWidgetsFromSettings(); if (numWidgets() >= MAX_WIDGETS) { - setAddWidgetEnabled(false); + mAppWidgetContainer.setAddWidgetEnabled(false); } checkAppWidgetConsistency(); mSwitchPageRunnable.run(); @@ -365,15 +365,12 @@ public class KeyguardHostView extends KeyguardViewBase { @Override public void onAddView(View v) { if (numWidgets() >= MAX_WIDGETS) { - setAddWidgetEnabled(false); + mAppWidgetContainer.setAddWidgetEnabled(false); } - }; + } @Override public void onRemoveView(View v, boolean deletePermanently) { - if (numWidgets() < MAX_WIDGETS) { - setAddWidgetEnabled(true); - } if (deletePermanently) { final int appWidgetId = ((KeyguardWidgetFrame) v).getContentAppWidgetId(); if (appWidgetId != AppWidgetManager.INVALID_APPWIDGET_ID && @@ -382,6 +379,13 @@ public class KeyguardHostView extends KeyguardViewBase { } } } + + @Override + public void onRemoveViewAnimationCompleted() { + if (numWidgets() < MAX_WIDGETS) { + mAppWidgetContainer.setAddWidgetEnabled(true); + } + } }; public void userActivity() { @@ -1055,15 +1059,6 @@ public class KeyguardHostView extends KeyguardViewBase { return widgetCount; } - - private void setAddWidgetEnabled(boolean clickable) { - View addWidget = mAppWidgetContainer.findViewById(R.id.keyguard_add_widget); - if (addWidget != null) { - View addWidgetButton = addWidget.findViewById(R.id.keyguard_add_widget_view); - addWidgetButton.setEnabled(clickable); - } - } - private void addDefaultWidgets() { LayoutInflater inflater = LayoutInflater.from(mContext); inflater.inflate(R.layout.keyguard_transport_control_view, this, true); diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardWidgetPager.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardWidgetPager.java index 5b00dd23e21e3..b4fe0c7aaca48 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardWidgetPager.java +++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardWidgetPager.java @@ -72,6 +72,11 @@ public class KeyguardWidgetPager extends PagedView implements PagedView.PageSwit private int mWidgetToResetAfterFadeOut; protected boolean mShowingInitialHints = false; + // A temporary handle to the Add-Widget view + private View mAddWidgetView; + private int mLastWidthMeasureSpec; + private int mLastHeightMeasureSpec; + // Bouncer private int mBouncerZoomInOutDuration = 250; private float BOUNCER_SCALE_FACTOR = 0.67f; @@ -239,6 +244,7 @@ public class KeyguardWidgetPager extends PagedView implements PagedView.PageSwit public void onUserActivityTimeoutChanged(); public void onAddView(View v); public void onRemoveView(View v, boolean deletePermanently); + public void onRemoveViewAnimationCompleted(); } public void addWidget(View widget) { @@ -258,6 +264,13 @@ public class KeyguardWidgetPager extends PagedView implements PagedView.PageSwit }); } + @Override + public void onRemoveViewAnimationCompleted() { + if (mCallbacks != null) { + mCallbacks.onRemoveViewAnimationCompleted(); + } + } + public void onAddView(View v, final int index) { final int appWidgetId = ((KeyguardWidgetFrame) v).getContentAppWidgetId(); final int[] pagesRange = new int[mTempVisiblePagesRange.length]; @@ -597,12 +610,10 @@ public class KeyguardWidgetPager extends PagedView implements PagedView.PageSwit mHasMeasure = false; } - @Override - protected void onLayout(boolean changed, int left, int top, int right, int bottom) { - super.onLayout(changed, left, top, right, bottom); - } - protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + mLastWidthMeasureSpec = widthMeasureSpec; + mLastHeightMeasureSpec = heightMeasureSpec; + int maxChallengeTop = -1; View parent = (View) getParent(); boolean challengeShowing = false; @@ -814,6 +825,24 @@ public class KeyguardWidgetPager extends PagedView implements PagedView.PageSwit } } + void setAddWidgetEnabled(boolean enabled) { + if (mAddWidgetView != null && enabled) { + addView(mAddWidgetView, 0); + // We need to force measure the PagedView so that the calls to update the scroll + // position below work + measure(mLastWidthMeasureSpec, mLastHeightMeasureSpec); + // Bump up the current page to account for the addition of the new page + setCurrentPage(mCurrentPage + 1); + mAddWidgetView = null; + } else if (mAddWidgetView == null && !enabled) { + View addWidget = findViewById(com.android.internal.R.id.keyguard_add_widget); + if (addWidget != null) { + mAddWidgetView = addWidget; + removeView(addWidget); + } + } + } + boolean isAddPage(int pageIndex) { View v = getChildAt(pageIndex); return v != null && v.getId() == com.android.internal.R.id.keyguard_add_widget; diff --git a/policy/src/com/android/internal/policy/impl/keyguard/PagedView.java b/policy/src/com/android/internal/policy/impl/keyguard/PagedView.java index 0b06306419c01..33c2456180c37 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/PagedView.java +++ b/policy/src/com/android/internal/policy/impl/keyguard/PagedView.java @@ -1588,6 +1588,7 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc //public abstract void onFlingToDelete(View v); public abstract void onRemoveView(View v, boolean deletePermanently); + public abstract void onRemoveViewAnimationCompleted(); public abstract void onAddView(View v, int index); private void resetTouchState() { @@ -2383,6 +2384,7 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc public void run() { mDeferringForDelete = false; onEndReordering(); + onRemoveViewAnimationCompleted(); } }; zoomIn(onCompleteRunnable);