From 764b4da4a8c3e2aecbfd5d7209c5d30cecac75d2 Mon Sep 17 00:00:00 2001 From: Daniel Sandler Date: Tue, 24 Aug 2010 16:24:35 -0400 Subject: [PATCH] System bar improvements. - Updated artwork for buttons and signal/battery meters. - Layout change: meters on either side of clock - RSSI for mobile data. The algorithm is more or less the same as the one used in the phone status bar. Note that mobile data is only shown if Wi-Fi is unavailable. Bug: 2924643 Change-Id: Idaa0c52422db4a63616475bde96626d1953830b4 --- .../drawable-hdpi/notification_dragger.png | Bin 2022 -> 0 bytes .../SystemUI/res/drawable-mdpi/battery_0.png | Bin 181 -> 186 bytes .../SystemUI/res/drawable-mdpi/battery_10.png | Bin 0 -> 200 bytes .../res/drawable-mdpi/battery_100.png | Bin 184 -> 249 bytes .../SystemUI/res/drawable-mdpi/battery_25.png | Bin 193 -> 224 bytes .../SystemUI/res/drawable-mdpi/battery_5.png | Bin 0 -> 200 bytes .../SystemUI/res/drawable-mdpi/battery_50.png | Bin 186 -> 234 bytes .../SystemUI/res/drawable-mdpi/battery_75.png | Bin 177 -> 222 bytes .../drawable-mdpi/notification_dragger.png | Bin 3495 -> 0 bytes .../SystemUI/res/drawable-mdpi/signal_0.png | Bin 165 -> 320 bytes .../SystemUI/res/drawable-mdpi/signal_100.png | Bin 192 -> 376 bytes .../SystemUI/res/drawable-mdpi/signal_25.png | Bin 205 -> 381 bytes .../SystemUI/res/drawable-mdpi/signal_50.png | Bin 179 -> 385 bytes .../SystemUI/res/drawable-mdpi/signal_75.png | Bin 188 -> 384 bytes .../res/drawable-mdpi/signal_scan1.png | Bin 0 -> 381 bytes .../res/drawable-mdpi/signal_scan2.png | Bin 0 -> 386 bytes .../res/drawable-mdpi/signal_scan3.png | Bin 0 -> 383 bytes .../res/drawable-mdpi/signal_scan4.png | Bin 0 -> 383 bytes .../drawable-mdpi/status_bar_back_pressed.png | Bin 398 -> 3215 bytes .../status_bar_expand_default.png | Bin 363 -> 344 bytes .../status_bar_expand_pressed.png | Bin 363 -> 2807 bytes .../drawable-mdpi/status_bar_home_pressed.png | Bin 376 -> 3373 bytes .../status_bar_recent_pressed.png | Bin 350 -> 3060 bytes .../SystemUI/res/drawable-mdpi/wifi_0.png | Bin 0 -> 186 bytes .../SystemUI/res/drawable-mdpi/wifi_100.png | Bin 0 -> 199 bytes .../SystemUI/res/drawable-mdpi/wifi_25.png | Bin 0 -> 205 bytes .../SystemUI/res/drawable-mdpi/wifi_50.png | Bin 0 -> 202 bytes .../SystemUI/res/drawable-mdpi/wifi_75.png | Bin 0 -> 206 bytes .../SystemUI/res/drawable-mdpi/wifi_scan1.png | Bin 0 -> 205 bytes .../SystemUI/res/drawable-mdpi/wifi_scan2.png | Bin 0 -> 211 bytes .../SystemUI/res/drawable-mdpi/wifi_scan3.png | Bin 0 -> 200 bytes .../SystemUI/res/drawable-mdpi/wifi_scan4.png | Bin 0 -> 205 bytes packages/SystemUI/res/drawable/battery.xml | 8 +- packages/SystemUI/res/drawable/signal.xml | 1 - .../SystemUI/res/drawable/signal_scan.xml | 29 ++ packages/SystemUI/res/drawable/wifi.xml | 29 ++ packages/SystemUI/res/drawable/wifi_scan.xml | 29 ++ .../SystemUI/res/layout-xlarge/status_bar.xml | 4 +- .../res/layout-xlarge/status_bar_center.xml | 23 +- .../res/layout-xlarge/sysbar_panel_system.xml | 8 +- .../SystemUI/res/values-xlarge/strings.xml | 54 ++++ .../statusbar/tablet/SystemPanel.java | 273 ++++++++++++++++-- .../tablet/TabletStatusBarService.java | 13 +- 43 files changed, 418 insertions(+), 53 deletions(-) delete mode 100644 packages/SystemUI/res/drawable-hdpi/notification_dragger.png create mode 100644 packages/SystemUI/res/drawable-mdpi/battery_10.png create mode 100644 packages/SystemUI/res/drawable-mdpi/battery_5.png delete mode 100644 packages/SystemUI/res/drawable-mdpi/notification_dragger.png create mode 100644 packages/SystemUI/res/drawable-mdpi/signal_scan1.png create mode 100644 packages/SystemUI/res/drawable-mdpi/signal_scan2.png create mode 100644 packages/SystemUI/res/drawable-mdpi/signal_scan3.png create mode 100644 packages/SystemUI/res/drawable-mdpi/signal_scan4.png create mode 100644 packages/SystemUI/res/drawable-mdpi/wifi_0.png create mode 100644 packages/SystemUI/res/drawable-mdpi/wifi_100.png create mode 100644 packages/SystemUI/res/drawable-mdpi/wifi_25.png create mode 100644 packages/SystemUI/res/drawable-mdpi/wifi_50.png create mode 100644 packages/SystemUI/res/drawable-mdpi/wifi_75.png create mode 100644 packages/SystemUI/res/drawable-mdpi/wifi_scan1.png create mode 100644 packages/SystemUI/res/drawable-mdpi/wifi_scan2.png create mode 100644 packages/SystemUI/res/drawable-mdpi/wifi_scan3.png create mode 100644 packages/SystemUI/res/drawable-mdpi/wifi_scan4.png create mode 100644 packages/SystemUI/res/drawable/signal_scan.xml create mode 100644 packages/SystemUI/res/drawable/wifi.xml create mode 100644 packages/SystemUI/res/drawable/wifi_scan.xml diff --git a/packages/SystemUI/res/drawable-hdpi/notification_dragger.png b/packages/SystemUI/res/drawable-hdpi/notification_dragger.png deleted file mode 100644 index 71b55072d9b8492ecdea4c29b2851622a0db66d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2022 zcmV002t}1^@s6I8J)%00009a7bBm000ie z000ie0hKEb8vp^Pu{DSbk4_M?q0`P5K8^;rZOl0BriD z&qw7C$#2T(`(Kr%=E==Ih=O`dojxspNq$5AtNeNon6v~<@Q=s=dRu-g(V}@l{)YT{ z`Jwzr`LztN>Si$}IlFCEpFrM{e<;5y|3Xe+|H!u{E!p>!{B`*&azGLMRn^^yz&8Cp zuDZA7AIsmAe=7e>{+Il&yv#~qX|`l6tN*_I6ZzNjYjObGY%+j3JSTrw{+^sH{7QaZ zeoKB&Zlhl^7D&MQK>mmPiu_Q0r`uQcldTfgGn(CN@>k`oI$6UO;%tf;!1?pC{2lp6 zav+gim*v07@5rMW7<1>Et^S0Zd(N%0!@dfZ=Da%C34*hT@<};ct~KDXwVsuejbskj zl+;B7gkiX30lWxNJNtDznYjia5LTW3DS<==`CgaDjCvLh_d##{F`;hgo6KZ;a!p&j zDi(FUw(0=@h1=q_pS5M%rmg25P(I6u!NA7!Px~`jB`j9mZUBte3&=Wxu(qe89y6>9 zlUW4f)h9rM>Otti$`;c7dMkPhyMM+iv1~$f4c3Fu>pNx&^$xrTmipMQVR7DNdfH63 zN>~nvk{}q%5PB209Rc=1DTT6*9!t&uxNt-gO z%q%8NU^YYWeJrDn=R-lG<-?~xfD!{+5Ll&F35%fY1YuY$2x};@Ot-FG_sQWN4|r!+ z+qc`yQdYuZf(F2~A#fcngB3Na>+qeDZ3ryd0_s9#mO;5xe8;Q@EL%uxeQw2VxYwCw zB8Eg@y?_jW(puW~v^)ot+jt97W_sF8wruq#ciib917#_}V}_Llj?QNm*M?OdOXUCr z;tYrYS_o0cbz84TCk$BpHl%;_1~#UxIGp}rJXyTb=P?V*XO=#{x0bp5+*f7@ z2G9%08cM9ES=X$8#%&m3Ma}Hjm6^q44T0e8y&$Zkv~CDkgoVz)hT8PT-RW5+ECXOd z4v6u30ap`Ntw05_TC0d_ZJU6gxjM(LaI2yyEL>ISV)=si%c3!X|gx-vIfkk_= z&>tNl+%ixMS_#Vl7{@_4FrGz=TCOp-S>N6NN&Qe}-B-?hRSBz|Dr21ni;Th04b3fP z7J9TpdNh-*asX!wr6CPv%h&_nnZ-72Ka^(uPXwQA;{)v&zsOxqdLgW%vDp0&R3l|Hv9(eHI;5ume+>oEY(V`H?2MH_F! z>=l+(r&E7aXI2juAX;+kFi~}^aogfgy7yEO!pF&gO9KXq!)~}1f6N9i$)t~BW;{nWeHH$u_jM2 zK2r!PLeuTmV$g9LZUxCjYzHhdtMsD-omUy4czu`moEeAjaXjlm;~90%AoUG`UK2&$%fDqE9}b+95q$Y{%9jeD9wbo5dc}3UZ|VIvJFMQfFz`*T heTF0nVy;W!FkonT&K3PYXUkQPfTydU%Q~loCIF=*EF!Nq_$T z-*3pQRl#@Uyu=3PIE650VQcTEThR`GBxgS|?s~Pc)I$ztaD0e0swsi BHTnPm diff --git a/packages/SystemUI/res/drawable-mdpi/battery_10.png b/packages/SystemUI/res/drawable-mdpi/battery_10.png new file mode 100644 index 0000000000000000000000000000000000000000..a739f50ae7229fc11c0c0b9028adaae6beca2a74 GIT binary patch literal 200 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1GS)MMAAr-gY+&IYDV8FwA!EIOfWs9|!OT-oDi5~QJ^}4@b zwdFwb9HE(!Zs&s7_<=eQ;J})OUl(rYef_uT@#UX6Uq6|3e&tYSxnTIvm>r=A#QNav a$H>NzDaRYF^J_ymNW|0C&t;ucLK6UM-9EJd literal 0 HcmV?d00001 diff --git a/packages/SystemUI/res/drawable-mdpi/battery_100.png b/packages/SystemUI/res/drawable-mdpi/battery_100.png index 588a74b16eefb3e92bf3487b87e566a45e85b722..9a66db388161a0a09afd9d3bbbde04c014d40a2a 100644 GIT binary patch delta 219 zcmdnN_>)nwGr-TCmrII^fq{Y7)59eQNE?7K2OE$KXZqPbQBk9Qwx^3@NX4x;H+;Do z6a?BH&is%SyQuW;s?zB%3MPMH77`QoP~6L$`y{xg==;iCo}bQ)afJsbL-cX*rjaCng0FUywdO9t)FL# vUr1TczsQh()6&mg#_Y)Ef!IG%#2DEaMAgjVZ3Lf&fF!Nj`C} z9vwJvV8eVy&NH32&YoysUZPW+%MkR{!->7&m2787_vM@gQOpWg`*n^TGN@=^5U^I@ zHZbH#GFTzY-gS-L;f_bsJm!o)>?$jcvK!oC6i8r5^%3c|*ne{=&^887S3j3^P6)GbyWS-q}aji!hWw)^cOoQfZQEZOOyDQdY~$A}-O9{~=;GhRIz zS$v~kJm02jzx1oScb4QYKe4K@^v&iqJ1!pBF0|3H=r8j|t8>;IlPwY2K&*yv2_tR; XhW!mF!Nq_$T z->=WCwS)7>c8Lwli3;1Cgm3#a-AZ=&BR2a{y!g-Wi#bI%F>rdC98Blg!Dub^b;*j< zr=A#QNav a$H>MISH~Ou;?bqOAQ4YjKbLh*2~7Y!NIz2m literal 0 HcmV?d00001 diff --git a/packages/SystemUI/res/drawable-mdpi/battery_50.png b/packages/SystemUI/res/drawable-mdpi/battery_50.png index 94d7eca5535e06132c73a1e79d5420763a9194db..7088066b88b3d313268295f73f73db7844f1127a 100644 GIT binary patch delta 204 zcmdnR_=-`nGr-TCmrII^fq{Y7)59eQNE?7K2OE$KXZqPbQBkA5$J50zq~g|_8;)Gf z1_G=B%b#S$RyDrc8+twNKq~+AX*oxfIwX`HNuN-9DEvuc)65f=<>Bkx%Re#!%|L)1 z+6rsue69bT`M59kXJU=sGllop)%%{zE?>}7Sf{P^H2Cv8_cQ#fC)hvbcc}~yIoWF!Nq_$T z-*3pQwS)D@e8~;WnhMiggsr=M6Hgh1vnot&&@ofbDre>^c6=p!p+#>4182!`+vATd zJat~3e-yx76k|I}!tXfa!8((D%EE^g*cSIGi!-oDFvztFuFbSKQwg+>!PC{xWt~$( F699HvGCKeO diff --git a/packages/SystemUI/res/drawable-mdpi/battery_75.png b/packages/SystemUI/res/drawable-mdpi/battery_75.png index 3cb35910bdc2cc7c002e07b6f162bf75b7099b66..d4cfb6f3ba75319e3c528d32286ad43f224ddf8c 100644 GIT binary patch delta 192 zcmdnUc#l!BGr-TCmrII^fq{Y7)59eQNE?7K2OE$KXZqPbQBkA5!PCVtq~g|_D;qf* z3)GbyWSv@bQi-+6{HS{Maec1Up)=6n;NNpu6P%{!ZP|tAprA@r3 z#IkPziEpM?7{}kA>mYYv+v0$IJL}swnrls1FJIZd(_iG|?^YyjAm*txp$%e;3^mg0 U)~uE;{R9&7boFyt=akR{04=ROQ2+n{ delta 146 zcmcb|xRFt@Gr-TCmrII^fq{Y7)59eQNUH-eD+e2pJa+sm$3#Vqj9^a}$B>F!Nq_$T zua{!hy1{hhyu^lvDXHst9ahOj=J;L7bCb!EZMagGbj9iFe|O=clq88G30DfAFo`MH wb*p`o?El5AGUG2phqPxv|GICC4h@V9ML8n3;*PLS0$Ri1>FVdQ&MBb@0G#GCXaE2J diff --git a/packages/SystemUI/res/drawable-mdpi/notification_dragger.png b/packages/SystemUI/res/drawable-mdpi/notification_dragger.png deleted file mode 100644 index fad1f3226c6db495b51157241b22f92d9799365f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3495 zcmV;Y4OsGtP)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0008gNklN1yn z!~nN}XYx$f0dNPnB?_nKJ^)?;4|f5^F5LSZcmuouTmte0cnzEZcayyx@Dg|noC2%b zKpxA@K1puf0FMO3DR3{@I|4TW4;+j27Oif<-cb~=zztD8Ue|ylU;wU*e9FE--h1G1 zp&mOUyD5At$a|BK4I=MqyVhitApEcy*>r|gfDB?)*9s7m`IZ;CQ4}2`_dKW#B#1J( zd@#wZ;$DNuS1oWPMBg#V`w(#`$B~VIS+!!3oNI;1?Q+%#Kp%0WI@x`6>sH}_QO+4# zvdDDPPT|O0_?^h!wP2B;gjgTBoyL*Al{{i1Wt{?41JXyX)hT~->3PJ?)wD;6n*-;jxLX{}{jb1kQoC>lrB61i52YhJo* zjawu{qwJf)Z`XoFOd%nTg)=6OG}Di0%KC^yP64u(i)gC))fy|eg+;0Y3CYtHqMB7o zl#T4G4#dx7_EPnma>UejEni58W1;%(#Ui$ao;}X$PAO3+3?DX14yx86TE!xMi>TFv zMf?nqNfs2c{}B*P^z3u3E(Nmpky|!VqSyjQY@tM%rj3hxl3iwYQy9>ddXkZg`EPX~ zrCSd(=k(D4;;_ZJ)?^VM$xNZ$T|ANB6_B~cOIt%SfT-?Txm))$ZWmjvI@!;G-;xi8 zjFM}44h4&hyXZ-}g>Ll;cnACdz9w#V4txZ@0iQE2I0D~+U%*cx{=W~{7XB9Hh>L%8 z_M+4#xug@|KJZ@T={g3U0$+d+0=^26csddknVBKI%S>FV0BK_Ff5Nc`@}Jh<0RWUH V@llbPKnVZ<002ovPDHLkV1j%ec~}4d diff --git a/packages/SystemUI/res/drawable-mdpi/signal_0.png b/packages/SystemUI/res/drawable-mdpi/signal_0.png index cf436ad2adcb4148f5c70b9ba4e1e6bd9bcc122d..ff2727bc64cd638cae8670b931cbb92cadaa680c 100644 GIT binary patch literal 320 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}trX+877l!}s{b%+Ad7K3vk;OpT z1B~5HX4`=T%L*LRfizez!?|}o;UHO07srr@!*8z{ayck+FkI+bcRkZOLHFW?U;6_- z#E1yWTg-It>J{1}4^+#*a6r}JZfNvQd13kA@8@gCoUpS73p4CL!qU5pE&lrOl@>-o4U!-mg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h Q+JM~U>FVdQ&MBb@05iQ>E&u=k delta 135 zcmX@Ww3Jb?Gr-TCmrII^fq{Y7)59eQNUH-eD+e2pJa+sm$7Fs+jTm=N7srr_TSE@UVZ=LH)HL-KfD|ZxZ|I( zaIBciV8vL%^n&FA=K^5|^#(tN*vbPejz5*6b)q_ofbLK&ag8WRNi0dVN-jzTQVd20 zh6cI@7P>~JA%@0QCMH&frn&|uRt5&mkGWQ$Xvob^$xN$6XfO#eGO#iIgL{VVD0id-E Mp00i_>zopr0C>JL3jhEB diff --git a/packages/SystemUI/res/drawable-mdpi/signal_25.png b/packages/SystemUI/res/drawable-mdpi/signal_25.png index 69c643f59de857149479aa2be76c7455fed7eda5..a415596db1727b11c0a8a26b6d9569cabbf37a3f 100644 GIT binary patch literal 381 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTCwj^(N7l!{JxM1({$v_d#0*}aI zAngIhZYQ(tK!Rljj_E)ete@fByPj|$r_s~JF(l*O+Z%>l4F&?Nf#Ejuwq1)md(Usr zylm-95gdHn#&eZE$-fkuX&I8Ygq>pnK2($YDqiOEyz=7Ujd9U?{v^Mgciw)#emxV@ zi$k+58JV)w8~hmNGFUN|Fuh>8z_~!!AzbbQ!xATfXw64wRe+9BEpd$~Nl7e8wMs5Z z1yT$~28IT@1{S(TrXhyLRwgD^hNij(CRPRp&5yZOplHa=PsvQHL})MxF*2|+G_*1{ zhiJIJQ~D54gCxj?;QX|b^2DN42FH~Aq*MjZ+{Ezopr E0KPwRB>(^b delta 176 zcmey%be2)EGr-TCmrII^fq{Y7)59eQNUH-eD+e2pJa+sm$7CNyjrx2~7srr_TS-21 ziu4*A8x`jl4F&?N7kevga@X#iwRdiX z?e(xAjwC~!GbLUV{%`O;eP+cS2Yvy(=*R6F`)@4QU4Pv7Xwka2Z<*uIyC1n@D_?(Z z`hRAo7qiTZnOLs)G0bJKVk}{L!E%9ffv|&m!#bM>Y>WHEqB(3&9tAo`wZt`|BqgyV z)hf9t6-Y4{85kPq8d&HWnT8k|TbYa>QWZRN6Vp?JQWH}u3s0un02MKKy85}S Ib4q9e02)Sic>n+a delta 149 zcmZo<-pr`j8Q|y6%O%Cdz`(%k>ERLtq}73#m4gjP9y|V(V{!naMpme&i(^Q|tt6j0 zMShKqjf^dc4-W6iIn2#t;c)57XWk4a_J&vd4+73{AIZu{O79Fk&2)s*A*Me^Qo!2i z0o&JzBOff!&0smca7Aj8#F2z6g-@6o7?>F>wD?yXGjQ1ow28sf)z4*}Q$iB}$RRWA diff --git a/packages/SystemUI/res/drawable-mdpi/signal_75.png b/packages/SystemUI/res/drawable-mdpi/signal_75.png index 9650dfa2046898cf5f24b8090eeb098cd9dcd9af..e176f37f4dfeef951254447f8f0d9d3d908b3124 100644 GIT binary patch literal 384 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTCwj^(N7l!{JxM1({$v_d#0*}aI zAngIhZYQ(tK!Rljj_E)ete@fByPj|$r^VC7F(l*O+Z%>l4F&?N7kevga@X#iwRdiX z?RB$=8y!5{#<4C>?B856GS)J`z|4Xd?K88Je{*?SczN)~IoZ{}58Qw6e&mmZ{NIIt zyft8`T zm4P8dgZ+=l7@!78kPX54X(i=}MX3yqDfvmM3ZA)%>8U}fi7AzZCsS>JiWody{an^L HB{Ts5XV7=z delta 158 zcmZo*-ovQa8Q|y6%O%Cdz`(%k>ERLtq}73#m4gjP9y|V(W3oS^Msb{{i(^Q|tt6j0 zMe7ny0OO=(^Zxg%UEv71-{8EKdBUxJ9k!6u9fvbC6}~x&B_v54 zNw`w@gh?zw%2~MD!NFfy>OX_rR{jkuj?Pgg&e IbxsLQ0D}89g#Z8m diff --git a/packages/SystemUI/res/drawable-mdpi/signal_scan1.png b/packages/SystemUI/res/drawable-mdpi/signal_scan1.png new file mode 100644 index 0000000000000000000000000000000000000000..f64b9cc2813340622a91c6a7855e9d1ea47f3426 GIT binary patch literal 381 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTCwj^(N7l!{JxM1({$v_d#0*}aI zAngIhZYQ(tK!Rljj_E)ete@fByPj|$r_s~JF(l*O+Z%>l4F&?Nf#Ejuwq1)md(Usr zylm-95gdHn#&eZE$-fkuX&I8Ygq>pnK2($YDqiOEyz=7Ujd9U?{v^Mgciw)#emxV@ zi$k+58JV)w8~hmNGFUN|Fuh>8z_~!!AzbbQ!xATfXw64wRe+9BEpd$~Nl7e8wMs5Z z1yT$~28IT@1{S(TrXhyLRwgD^hNij(CRPRp&5yZOplHa=PsvQHL})MxF*2|+wzM)f zf@nBqbv6K~K@wy`aDG}zd16s2gJVj5QmTSyZen_BP-_4h|x0iQ0YctIJIH`o)~T zoad6`Vpw_7$35k5e2JG!$;{U;8JS+-L-o>f?|iqv{`rE42T8sEQ&RW( z=a+Z~hS-ni=P)qt6n0Q=@MDcpt3+rp2{AIT zGO@5Sv4m*gV0_01)F276Aviy+q&%@GmBBG3KPgqgGdD3kH7GSPrLyp3str&PgQu&X J%Q~loCIE}6d1n9s literal 0 HcmV?d00001 diff --git a/packages/SystemUI/res/drawable-mdpi/signal_scan3.png b/packages/SystemUI/res/drawable-mdpi/signal_scan3.png new file mode 100644 index 0000000000000000000000000000000000000000..a4c0689047a81e987f20bab79292658ba5c27d3a GIT binary patch literal 383 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTCwj^(N7l!{JxM1({$v_d#0*}aI zAngIhZYQ(tK!Rljj_E)ete@fByPj|$r`glRF(l*O+Z!7>8yo~!1H*OvgOj6;&4q6l z`?|7Bz&I#ff^)1HU#IVm6RtIr7}3Cbd&g(b zyj-h}1ce}zkW{@B^)q}^(!zJnlT&EGhdyk5`0!rI?tAh3KED2ad&jezbLN~mF7)>E zr+Np5*a{#Q(XfSD+7b($6PB=H00)|WTsUjG?;`K8CaQE zTA5lvH1x{#NdYxTf@}!RPb(=;EJ|f?Ovz75Rq)JBOiv9;O-!jQJeg_(RK(!v>gTe~ HDWM4fe1UmK literal 0 HcmV?d00001 diff --git a/packages/SystemUI/res/drawable-mdpi/status_bar_back_pressed.png b/packages/SystemUI/res/drawable-mdpi/status_bar_back_pressed.png index 5c578022412aa46a28fcdb291d5d8f26e62701ff..a2527b3cdd9c47343f6e7d9b40adc22f5e41a274 100644 GIT binary patch delta 3174 zcmV-s44Lze1CJSyNPi45Nkl49egFIa$MM_W{MKsIHnC}%*fuS#xFuQrmVZ)mYYMo=nDBFm{0g$g zfG>P6v=<7$f@~${F62ymrR#FYU01q{`yG78tKabZ@p#OiGi+l%-U5)=q=q*KzHQqc z@K%Ym{5d6E0X*bAo!TffBI4fEr1_Lei+WE}B27C5yqZ#L z8j*98k$*4(UWyudO!^pQG64t26{)M=Flyo==S4IXy$0edWVQ`Db!>%+MU)zel9^50 zG!DEFlFyzvT}wy=(E}-fLukbK1GXO#e1a&H&~c+UElNF_pC)wo#t0yB#-`dx%!UZW z0SS_FfY~|K!4J2z)<#@&Wi*<18GdrrUx9&tA8mCt`R_ooLK5yXT@T`#WX#M)&R5Af);0j zp=Mf%@x!{QRV~cOswIio5Ib+7ut^aoM9Hpf??5ezZ>X>UXh&5EgHAE3>BPFPYg?hJSzvxd%RUjyy{;RRM~4y@ch?3Z^i&S}(Px0a=BG zlBuha-~-2xA3w9SwDeQhT>xO$9z1;bec1mWN*w(Fv_QVnbz@3E7(!!T%2nDXwonX9 zsO40M4qJ%5R;dm9zT&=zR!*#(2I>C{!Gln*?d5C;{G6+0QU#A-j)K!H4wEZTU%Q@1JeJwfZw=t=gxOQ1G_UId8+lPM27Y+j-c%6 zG{R8W$<)x~V9iaj=7ejFp#6h%T~S{TCUBVby)qmNidqFJ3uK{j1h^ zd8d?sHYAWDcPd!5!nxs@#l??Dd!u)@cedZYdHu$^W@{l4@?eT#`?)w}6t4j}kt?rg z3`VLCfx8mWYjZrb90*z zLN~l!vg80LQ==+HU1=Nf4E{Js14fA{gDM^ELv zzyqwYmg4ogd=Dm2D^M*HEbDSz?~=})+qc)3S5_jF2cMfgID2kxer|JnYkNbBHd%v6 zuQy#20zoEh8GqO9yIZ&R_V)g`xVZQdkT?Z_;l+*hjSEP0Jebbelup1S$>!{yP&MsX2*VR8T$T|mgTTt^% zcr(XH)Sml8RaHOVEO#Qo%a<793fc<%hURn*@0_V&%a(O&MAzgjKSxoD8_N}V)|CjS2Z`&YrKzm5r`Cvm4uPr?)6 zYEf=n_bnl1>R(H!nHonPc(Epjix)3`BPHt}tbd!VV-?K<6bJ)?m*G~(UEkC$zkBH~ zppi`GHde>)dSmzO$g~2s=vZ3;QwZu!)`Cn83iPe8HmEUZNURm)S&d8_tR4=bmNM+z zT<>sR$YLgW!cW*-r-L^igL7N;0WAx%n)tJo z0)J)(p;K)b(7x0$+H@n=9WZQg6osL6O{VIduU1~btA#Gl4V;V64Z1wf3OL4`WV*NEFf`_ zK4w}PeM{E0;cKSgIW78xDHb$c12RS_*{%JkWQCu7*61X@!cJ^4+HO##pMUsfYBn_Q zgaS3X(3zxqi-C#MsarLnIzTHEBy19)z^0SozptRASGCY)Ay5Vy;Gq)^+w9R3N`tk~ zd!B&P!%j>`g6L2KW|>tbQO{`L>EaktaqG>DhrCS&0<9|x8QcUP*nvLX`{%@W+ z`zFle-ec?0E3jxL(+puVhPjFN+`lZ5Uiph{Gn<3wq+_R7w;n66GCOy1{Qj!VuP#TFkn;4S2nv2{+VVzYP^puX`7&qV2;T>*P1 zIR5N}rL9 Y;qQ~U15pQ8&jg8hy85}Sb4q9e0Pi=80ssI2 diff --git a/packages/SystemUI/res/drawable-mdpi/status_bar_expand_default.png b/packages/SystemUI/res/drawable-mdpi/status_bar_expand_default.png index b2a94b649b587530fef1f0e556f42850c2f7011b..ce649260b951f9fc20c1c4439b67484fb293166d 100644 GIT binary patch delta 281 zcmaFObc1PvM?J$YPZ!6Kid%1{8S*t7@VIimny@js|H8zL?g=R=Z#G(e)zT*`N&7PLUrFcXLNjc8ocdjLVD7zVy4nXKMuW` zbysb}juqE#yJw&3SC+H;=;mi OkeH{dpUXO@geCxs;(dw$ delta 300 zcmcb?^qOgcM?E92r;B4q#jQ6p?D<<1c#cjzdGX@Kk8a1LW%E-?p8T%oT(|eik%#|0 z92@Ucdo~NIz7O~Ge&fs$d)g@WF%ttE{77%;^IyE*Y3DnKhm|&`#oH}4HFItSpRvhO z^vY8-vp;FtpKZ)AC3m~={>*8=OPM=7e<$9$^k;E>6oXOv{u%d6raynhBoOSrz2h`z zqS1`!f8}tG$;$qtAn^Dp!)`ZIHMI{@Tc)@z|I74x zcGUW-Q!cITRr>AM$6>itljS2rN}XlE>#dt+<>e}!+5GY8lfxUQsyt;~;F>Sks}<_) pv-tJLaw(AGRpCAWGPqu99$?Vfzj(e)w_F)W!qe5yWt~$(696C~fL8zj diff --git a/packages/SystemUI/res/drawable-mdpi/status_bar_expand_pressed.png b/packages/SystemUI/res/drawable-mdpi/status_bar_expand_pressed.png index b2a94b649b587530fef1f0e556f42850c2f7011b..c63c42690213842d780f9a6bf43f57943cf98f42 100644 GIT binary patch delta 2763 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 diff --git a/packages/SystemUI/res/drawable-mdpi/status_bar_home_pressed.png b/packages/SystemUI/res/drawable-mdpi/status_bar_home_pressed.png index f219dedc85f073a4499bae389a0d2f8173e3be85..9e64fe89024b4e85c44ee6cd13a5738f2a4d6f0f 100644 GIT binary patch delta 3333 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 P00000NkvXXu0mjf7yw)q delta 313 zcmZ20^@C}GM?IsIr;B4q#jQ6tF7h5y5MjM=&BDRGpr!ACM&ARDybFRd3zZF;lr5ax z9WH!#yfzGF1r_*-Ib|NI6imJg#HVwZf%?0|3jLg zHBzI;nWuB3-J?q~AH07s95P{j($cT+irMRsyTJ1-hQ1Hkf^QhkeaIGA!_fKRzCaGc z$q$+=+zos(7e5%Xh$k%LOh5Ty;^98l2X?~C4m984ijA#LyD;&exKpwJ75%CSnNgZk zITL=0S(QlZgWPSzkb8P!BH!IlW%-}28&1bUJj1|{aK2$V12cnTvFNkcbNyvN!k(^v JF6*2UngG`%gNXnD diff --git a/packages/SystemUI/res/drawable-mdpi/status_bar_recent_pressed.png b/packages/SystemUI/res/drawable-mdpi/status_bar_recent_pressed.png index 4dd8dc72597b914d5038da3dd5bed8fc911985cc..350a3e9e76554e652a2c68c21034751d69adc659 100644 GIT binary patch delta 3018 zcmV;*3pMoK0`wPn-&;0P&lA|#tQHjCgu?Agq{r;2)?Iz3~-9iQ8M`}Xbr zs_Ls}yT1F2Uw(btwo0q<>b=YMg!i{j$4_`G$F{yz+3&sf&VT2&+IYY9)_9-(_#eFr zFMlDTEA473H~$lD_vk4HQn`8(OSHE`}9>0H|K?`XTVMz_@$ZwXkJ#efu~ z08ZdzD+2QOyy#Wr8Y%?A7C8vGO27gTbR^si9vjHH^j=W}E(PeV@oDsnM&g$4f{WaW zjrMspIuYo-Zhv;;;sP)d#^Zu?6{L0(LM=t0-CA_4>G_4tK$j5c3ZDf*!!IZbbb>OP zXx=P^dY-(10rGEvfdbNfbqig9J4PhI3((s5MhQFvHi6seTcf*0oO*IW zR=|`1K=faP>qH^?9+QATkeeAv0K4|dS_GW03FK$3Lahr{{=8+W%;}IsMOSx)dh+WhXo+sw$ z!2+ODh5bkrC{%IEc$%5`wxSVxzmmKytRfeZl^xz_<34e6B6)*_2m#1*55}7rk$PjT zb2x2o>8#;Z*)uWPHUzLQs>kAp;B|h`i0;D4ZCuFW9POF}HACefu6={z<7Nl_oXbT!5FnmOz(& zd+j&tS=H>tB?Y-H)hr)T4fC5>%V@2md4FL@UBf$Wo%8ea@1LH&@`JkG_S)BGmCBUf zLPV&+Kl+JLoLPyp6l)Sqm>Tt14_vMZg$UTi;c$5W^70Z6mzU%6a2T|O%S+lG_}GDt zUDE!6_u=N**|$zlQ8Z-+*}rga0kmVrKK&88aCrqq8LWUdK0_UxIZ2!3u)<_!7Jr|~ z+~+EjIWJ$xZ}b}Sp04k7N{XD-U{bPgw+YS<&f<&tiR(*l;C{!UkV}Ksp}cl}{$t7o zubV%3JaA6q>FKFwl;Va;w)R4D9hokALMw9p?sbY|J;%d|_!!4u>P$x%2tA?%cim>nOKP0`tNG zfeHNI!isGH4pFxYKcq6Gcg>`9j0*zmAL`JYK;U84{VFgyf)=ALfGR`det!~zBT-f- zI}$4=MH9$*0dP^SY`1*E;Ch5LZVoEIl`cY?F*wyrBZ6AfROz0IHjBlyEcJeF2wW-b zFM6HfR?tLdQBV>ceUG`17<}DfY*_s!EMOWh9vy<`1Q@6){Mwsue*1Ih=ijZf&WLPZ z)b%rvtc6WVvS*uu?t3tk|Zv`w_H69WrTr9A)a zvkxCUc<@)PHa9EYWV8}f4GxouOT`KF#V>yeZr;2poFH(5>Zle7dWlaAFEto-j9u`G z_HADTs1QwsPYZ0xK7R;=Dz2)$)p%7ksZrRJcCqD7smv<3MAUGuAC8A1p_qY5x|C}d zoA=~-kuI~AQw~yCcLCfAjKGBeD_xtXYH_rqggza4=$OPO1||9j>n3M-W$sU^aJ{3< z7$qex8)#{mB}*V%!jHKX#4^)=a7!954%{fr`4ZL&3MKh;9)EXqwpy34YhBtDpw_j7 zWC2zSIJY@ugVziJT&8Ygv4;5!z_fyd-0TCKm2gQg*4wheDv@EiSo|BKKbP1!E@1ZJ@{pg3TB1DK0t!7 z_D30VeWOrIqdxIpt!wz^L?H&-!7^^1mRZ|bmcg7?x|*;E^g*JK);E;Y{`2JV$A20U zaUfdGu?ix-mj!V@5FaQr)T1>CA%xu6Mj;$4#LUe{eSdR;kkUaZI}y-Y09Oh%F=JK$ z7=@mP$Q{ttB2poUA4|0$6e9Xyq7C1eSS=bOXYCcs%G0ak$Xz*cP0xvw?8bH6XVy7- zcMVJBn*;!LZcexsUWGzKxdC-wC5rZWeT-Y=Na~l7H&RTv6>y@}&cfIs#9sC)@T7OsKJ7 zWZYQ+|IZg&V0by4>w7EMB1w7om#hI}u@2?0AHDtd7i9V@1Kb{SPal)ZvgcnmUX+4u z;l24n>IKT)3GzgD*Mmoe8T*)kFM=p_RLEfz8WQS3DB*K@^R4gDM1Lg=$DS6Ez8}J0Hf^Hir>b=VO^dtCqR-;w zk}e2=1uZzid*CIB;r~IQl1Q{zA)MK1Wk9ctb&`*`56oF76Q^9un5T;Oy3Ibb`mk*?bK7S^J zYrmQ$ghDZmF4Ko!Y5~`KNdh?V67Hbm_biOV@GI3#4J^^4|}ZsN|tEhR13jA0kfy(C1K0A+ShOMC%$k*boAk``s!} zS~%M9esCUbC{*f<{V4^ki6Bp_)_(^XW)oPZ)S-Rbx>W!@wCc>U2!*7IXcB@7`!GLf zZd`gbw*qUtaV#z2y!PJ&CTpto6EQi${YZc2GYm=aN^*l3;4XA>OHA-$5gjdZNuWZY zxMx*CDt}~<((*t&7mMPq#G@;m)VD}fa>=m>vGB-!Vxg0V(Cil&KLt#=x0n!D%ZPn0a3Q7za5qLz&mvUglU`Sa_^$v10JN~+&%FhB761SM M07*qoM6N<$f>j222}{_9*%x?a8U^n( zJY$^S*r4(2dEaA4g_=Jq4NvC0jxu9nfPe>I7+j`2ZK<`{QN_8-FD57BL&8Z@IcLk6 zD=*y1n>uCQ&K}OU^EY;dGCt7VQIHxW(w%#|yf@mAwW9v2Nx1Vdf%vejTf7JS<5Iu; z_q6)T`u(Q|lQ+-1&qoiKHr-fm8hT>+!@0?;n0}nB=hBxX<1 isG}JeVk9LV=pSGRYh748Qb9eDeI0NJi1Wi zzPvMs&519{#-~r+JoShXs0RUlXfLp1KYq0+N9$d2|90lh-}ed}INp-Rhfo1xC3x*( ZU}o^sREj=5;rM@$h^MQc%Q~loCIJ7$J?j7f literal 0 HcmV?d00001 diff --git a/packages/SystemUI/res/drawable-mdpi/wifi_25.png b/packages/SystemUI/res/drawable-mdpi/wifi_25.png new file mode 100644 index 0000000000000000000000000000000000000000..0e389a7c19e148ebc1d16fd443a714a9a4f7ea9a GIT binary patch literal 205 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1G`JOJ0Ar-gY+}Oz3;K0Lrp?k-KW{cLRZ`mNdWtM^OT1FjURpZ81nEKo^{hR)$&vkg>a@059X;E(bLDsQ=W_)P9Bw%;gQN<` dJfLpLD#5VaPasAiS_DQOnIHV=LTm(4- zS>IVl>wAY=7;XMC2dD!X{NPB4`@ZMhw$z?$jm!TUU(Q{Z|I7KM4Z}PMWK|3d59T*G aH!w0(PMfy2clMGSAW2VGKbLh*2~7Z4lRX3g literal 0 HcmV?d00001 diff --git a/packages/SystemUI/res/drawable-mdpi/wifi_75.png b/packages/SystemUI/res/drawable-mdpi/wifi_75.png new file mode 100644 index 0000000000000000000000000000000000000000..dd2d7dcb86410808e64f9243522843c2b8cde0e9 GIT binary patch literal 206 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1G1)eUBAr-gY+}Oz3U?AXdan6nj%@(aoe@EE3ZMQ&V$| z2`mNdWtM^OT1FjURpZ81nEKo^{hR)$&vkg>a@059X;E(bLDsQ=W_)P9Bw%;gQN<` dJfLpLD#5VaPas l)OMd?L?{KZY9={1Ffz2;3q&U`Y}pPH@pScbS?83{1OWZfL2>{9 literal 0 HcmV?d00001 diff --git a/packages/SystemUI/res/drawable-mdpi/wifi_scan3.png b/packages/SystemUI/res/drawable-mdpi/wifi_scan3.png new file mode 100644 index 0000000000000000000000000000000000000000..4c2a9e1b7b6f5713332003832fdc2b703596ec5b GIT binary patch literal 200 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1GS)MMAAr-gYT;9mrV8Fw2U`DS*i>Ag+bye>aK{F%WMV$hn z5B6<5IIkrV-$e}oIT Z3>eH6CaldjtVsdMdAj9^rO?dCD8FziexNP{I1tbH*EN65tG8*#SAV{|>G{v%P3N2~6dTxu?TQhq ez^wUC1QHnB6$PTF#b*5liFmsDxvX!T literal 0 HcmV?d00001 diff --git a/packages/SystemUI/res/drawable/battery.xml b/packages/SystemUI/res/drawable/battery.xml index f4a720d17a1fc..3bc0c74ee1ffe 100644 --- a/packages/SystemUI/res/drawable/battery.xml +++ b/packages/SystemUI/res/drawable/battery.xml @@ -20,12 +20,8 @@ - - - - - - + + diff --git a/packages/SystemUI/res/drawable/signal.xml b/packages/SystemUI/res/drawable/signal.xml index 5aa211af6729e..7367418a1114c 100644 --- a/packages/SystemUI/res/drawable/signal.xml +++ b/packages/SystemUI/res/drawable/signal.xml @@ -24,6 +24,5 @@ - diff --git a/packages/SystemUI/res/drawable/signal_scan.xml b/packages/SystemUI/res/drawable/signal_scan.xml new file mode 100644 index 0000000000000..fe2199263222a --- /dev/null +++ b/packages/SystemUI/res/drawable/signal_scan.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + diff --git a/packages/SystemUI/res/drawable/wifi.xml b/packages/SystemUI/res/drawable/wifi.xml new file mode 100644 index 0000000000000..6e63af6126721 --- /dev/null +++ b/packages/SystemUI/res/drawable/wifi.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + diff --git a/packages/SystemUI/res/drawable/wifi_scan.xml b/packages/SystemUI/res/drawable/wifi_scan.xml new file mode 100644 index 0000000000000..5888d0e170e12 --- /dev/null +++ b/packages/SystemUI/res/drawable/wifi_scan.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + diff --git a/packages/SystemUI/res/layout-xlarge/status_bar.xml b/packages/SystemUI/res/layout-xlarge/status_bar.xml index ffb1571a44c10..481bcde0a500a 100644 --- a/packages/SystemUI/res/layout-xlarge/status_bar.xml +++ b/packages/SystemUI/res/layout-xlarge/status_bar.xml @@ -101,8 +101,8 @@ diff --git a/packages/SystemUI/res/layout-xlarge/status_bar_center.xml b/packages/SystemUI/res/layout-xlarge/status_bar_center.xml index 775fea00d6938..5bf83162c90e9 100644 --- a/packages/SystemUI/res/layout-xlarge/status_bar_center.xml +++ b/packages/SystemUI/res/layout-xlarge/status_bar_center.xml @@ -18,8 +18,8 @@ diff --git a/packages/SystemUI/res/layout-xlarge/sysbar_panel_system.xml b/packages/SystemUI/res/layout-xlarge/sysbar_panel_system.xml index 273674f2ce47d..36c6388ec10f0 100644 --- a/packages/SystemUI/res/layout-xlarge/sysbar_panel_system.xml +++ b/packages/SystemUI/res/layout-xlarge/sysbar_panel_system.xml @@ -92,8 +92,10 @@ android:layout_alignParentLeft="true" > @@ -129,8 +131,10 @@ android:layout_alignParentRight="true" > diff --git a/packages/SystemUI/res/values-xlarge/strings.xml b/packages/SystemUI/res/values-xlarge/strings.xml index 4aa4b4731939f..3c59c9288ef83 100644 --- a/packages/SystemUI/res/values-xlarge/strings.xml +++ b/packages/SystemUI/res/values-xlarge/strings.xml @@ -20,4 +20,58 @@ Clear all + + + + + + Battery: %d%% + + + + + no internet connection + + + + + Wi-Fi: %s + + + + + Wi-Fi: connected + + + + + Wi-Fi: connecting… + + + + + Mobile data: connected + + + + + Mobile data: connecting… + diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/SystemPanel.java b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/SystemPanel.java index a03393b8a90fc..dfa2d10ae3588 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/SystemPanel.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/SystemPanel.java @@ -45,6 +45,7 @@ import android.os.ServiceManager; import android.provider.Settings; import android.telephony.PhoneStateListener; import android.telephony.ServiceState; +import android.telephony.SignalStrength; import android.telephony.TelephonyManager; import android.util.AttributeSet; import android.util.Slog; @@ -66,11 +67,18 @@ import android.widget.Toast; import java.util.List; +import com.android.internal.telephony.IccCard; +import com.android.internal.telephony.TelephonyIntents; +import com.android.internal.telephony.cdma.EriInfo; +import com.android.internal.telephony.cdma.TtyIntent; + import com.android.systemui.statusbar.*; import com.android.systemui.R; public class SystemPanel extends LinearLayout { private static final String TAG = "SystemPanel"; + private static final boolean DEBUG = TabletStatusBarService.DEBUG; + private static final boolean DEBUG_SIGNAL = true; private static final int MINIMUM_BACKLIGHT = android.os.Power.BRIGHTNESS_DIM + 5; private static final int MAXIMUM_BACKLIGHT = android.os.Power.BRIGHTNESS_ON; @@ -93,7 +101,22 @@ public class SystemPanel extends LinearLayout { private final AudioManager mAudioManager; private final WifiManager mWifiManager; + private final TelephonyManager mPhone; + // state trackers for telephony code + IccCard.State mSimState = IccCard.State.READY; + int mPhoneState = TelephonyManager.CALL_STATE_IDLE; + int mDataState = TelephonyManager.DATA_DISCONNECTED; + ServiceState mServiceState; + SignalStrength mSignalStrength; + + // state for the meters + boolean mWifiEnabled, mWifiConnected; + int mWifiLevel; + String mWifiSsid; + + boolean mDataEnabled, mDataConnected, mDataRoaming; + int mDataLevel; private BroadcastReceiver mReceiver = new BroadcastReceiver() { @Override @@ -107,18 +130,154 @@ public class SystemPanel extends LinearLayout { || action.equals(WifiManager.WIFI_STATE_CHANGED_ACTION) || action.equals(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION) || action.equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) { - updateWifi(intent); + updateWifiState(intent); + } else if (action.equals(TelephonyIntents.ACTION_SIM_STATE_CHANGED)) { + updateSimState(intent); } } }; - boolean mWifiEnabled, mWifiConnected; - int mWifiLevel; - String mWifiSsid; + private final void updateSimState(Intent intent) { + String stateExtra = intent.getStringExtra(IccCard.INTENT_KEY_ICC_STATE); + if (IccCard.INTENT_VALUE_ICC_ABSENT.equals(stateExtra)) { + mSimState = IccCard.State.ABSENT; + } + else if (IccCard.INTENT_VALUE_ICC_READY.equals(stateExtra)) { + mSimState = IccCard.State.READY; + } + else if (IccCard.INTENT_VALUE_ICC_LOCKED.equals(stateExtra)) { + final String lockedReason = intent.getStringExtra(IccCard.INTENT_KEY_LOCKED_REASON); + if (IccCard.INTENT_VALUE_LOCKED_ON_PIN.equals(lockedReason)) { + mSimState = IccCard.State.PIN_REQUIRED; + } + else if (IccCard.INTENT_VALUE_LOCKED_ON_PUK.equals(lockedReason)) { + mSimState = IccCard.State.PUK_REQUIRED; + } + else { + mSimState = IccCard.State.NETWORK_LOCKED; + } + } else { + mSimState = IccCard.State.UNKNOWN; + } + updateDataState(); + } - private void updateWifi(Intent intent) { - if (TabletStatusBarService.DEBUG) - Slog.d(TabletStatusBarService.TAG, "updateWifi: " + intent); + private boolean isCdma() { + return (mSignalStrength != null) && !mSignalStrength.isGsm(); + } + + private boolean isEvdo() { + return ( (mServiceState != null) + && ((mServiceState.getRadioTechnology() + == ServiceState.RADIO_TECHNOLOGY_EVDO_0) + || (mServiceState.getRadioTechnology() + == ServiceState.RADIO_TECHNOLOGY_EVDO_A) + || (mServiceState.getRadioTechnology() + == ServiceState.RADIO_TECHNOLOGY_EVDO_B))); + } + + private boolean hasService() { + if (mServiceState != null) { + switch (mServiceState.getState()) { + case ServiceState.STATE_OUT_OF_SERVICE: + case ServiceState.STATE_POWER_OFF: + return false; + default: + return true; + } + } else { + return false; + } + } + + private int getCdmaLevel() { + if (mSignalStrength == null) return 0; + final int cdmaDbm = mSignalStrength.getCdmaDbm(); + final int cdmaEcio = mSignalStrength.getCdmaEcio(); + int levelDbm = 0; + int levelEcio = 0; + + if (cdmaDbm >= -75) levelDbm = 4; + else if (cdmaDbm >= -85) levelDbm = 3; + else if (cdmaDbm >= -95) levelDbm = 2; + else if (cdmaDbm >= -100) levelDbm = 1; + else levelDbm = 0; + + // Ec/Io are in dB*10 + if (cdmaEcio >= -90) levelEcio = 4; + else if (cdmaEcio >= -110) levelEcio = 3; + else if (cdmaEcio >= -130) levelEcio = 2; + else if (cdmaEcio >= -150) levelEcio = 1; + else levelEcio = 0; + + return (levelDbm < levelEcio) ? levelDbm : levelEcio; + } + + private int getEvdoLevel() { + if (mSignalStrength == null) return 0; + int evdoDbm = mSignalStrength.getEvdoDbm(); + int evdoSnr = mSignalStrength.getEvdoSnr(); + int levelEvdoDbm = 0; + int levelEvdoSnr = 0; + + if (evdoDbm >= -65) levelEvdoDbm = 4; + else if (evdoDbm >= -75) levelEvdoDbm = 3; + else if (evdoDbm >= -90) levelEvdoDbm = 2; + else if (evdoDbm >= -105) levelEvdoDbm = 1; + else levelEvdoDbm = 0; + + if (evdoSnr >= 7) levelEvdoSnr = 4; + else if (evdoSnr >= 5) levelEvdoSnr = 3; + else if (evdoSnr >= 3) levelEvdoSnr = 2; + else if (evdoSnr >= 1) levelEvdoSnr = 1; + else levelEvdoSnr = 0; + + return (levelEvdoDbm < levelEvdoSnr) ? levelEvdoDbm : levelEvdoSnr; + } + + private void updateDataState() { + mDataConnected = hasService() && (mDataState == TelephonyManager.DATA_CONNECTED); + + if (isCdma()) { + // these functions return a value from 0 to 4, inclusive + if ((mPhoneState == TelephonyManager.CALL_STATE_IDLE) && isEvdo()){ + mDataLevel = getEvdoLevel() * 25; + } else { + mDataLevel = getCdmaLevel() * 25; + } + } else { + // GSM + + int asu = (mSignalStrength == null) ? 0 : mSignalStrength.getGsmSignalStrength(); + + // asu on [0,31]; 99 = unknown + // Android has historically shown anything >=12 as "full" + // XXX: tune this based on Industry Best Practices(TM) + if (asu <= 2 || asu == 99) mDataLevel = 0; + else mDataLevel = (int)(((float)Math.max(asu, 15) / 15) * 100); + + mDataRoaming = mPhone.isNetworkRoaming(); + + mDataConnected = mDataConnected + && (mSimState == IccCard.State.READY || mSimState == IccCard.State.UNKNOWN); + } + + if (DEBUG_SIGNAL || DEBUG) { + Slog.d(TAG, "updateDataState: connected=" + mDataConnected + + " level=" + mDataLevel + + " isEvdo=" + isEvdo() + + " isCdma=" + isCdma() + + " mPhoneState=" + mPhoneState + + " mDataState=" + mDataState + ); + } + + refreshSignalMeters(); + } + + private void updateWifiState(Intent intent) { + if (DEBUG) + Slog.d(TAG, "updateWifiState: " + intent); final String action = intent.getAction(); final boolean wasConnected = mWifiConnected; @@ -142,8 +301,8 @@ public class SystemPanel extends LinearLayout { if (mWifiConnected && !wasConnected) { WifiInfo info = mWifiManager.getConnectionInfo(); - if (TabletStatusBarService.DEBUG) - Slog.d(TabletStatusBarService.TAG, "updateWifi: just connected: info=" + info); + if (DEBUG) + Slog.d(TAG, "updateWifiState: just connected: info=" + info); if (info != null) { // grab the initial signal strength @@ -164,22 +323,40 @@ public class SystemPanel extends LinearLayout { } } - if (!mWifiEnabled) { - mWifiSsid = "disabled"; - mWifiLevel = 0; - } else if (!mWifiConnected) { - mWifiSsid = "disconnected"; - mWifiLevel = 0; - } else if (mWifiSsid == null) { - mWifiSsid = "unknown"; + refreshSignalMeters(); + } + + // figure out what to show: first wifi, then 3G, then nothing + void refreshSignalMeters() { + if (mSignalMeter == null) return; // no UI yet + + Context ctxt = getContext(); + + String text = null; + int level = 0; + + if (mWifiConnected) { + if (mWifiSsid == null) { + text = ctxt.getString(R.string.system_panel_signal_meter_wifi_nossid); + } else { + text = ctxt.getString(R.string.system_panel_signal_meter_wifi_ssid_format, + mWifiSsid); + } + level = mWifiLevel; + } else if (mDataConnected) { + text = ctxt.getString(R.string.system_panel_signal_meter_data_connected); + level = mDataLevel; + } else { + text = ctxt.getString(R.string.system_panel_signal_meter_disconnected); + level = 0; } - mSignalMeter.setImageResource(R.drawable.signal); - mSignalMeter.setImageLevel(mWifiLevel); - mSignalText.setText(String.format("Wi-Fi: %s", mWifiSsid)); // XXX: localize + mSignalMeter.setImageResource(mWifiConnected ? R.drawable.wifi : R.drawable.signal); + mSignalMeter.setImageLevel(level); + mSignalText.setText(text); // hack for now - mBar.setWifiMeter(mWifiLevel); + mBar.setSignalMeter(level, mWifiConnected); } public void setBar(TabletStatusBarService bar) { @@ -192,7 +369,8 @@ public class SystemPanel extends LinearLayout { mBatteryMeter.setImageResource(plugged ? R.drawable.battery_charging : R.drawable.battery); mBatteryMeter.setImageLevel(level); - mBatteryText.setText(String.format("Battery: %d%%", level)); + mBatteryText.setText(getContext() + .getString(R.string.system_panel_battery_meter_format, level)); // hack for now mBar.setBatteryMeter(level, plugged); @@ -208,13 +386,21 @@ public class SystemPanel extends LinearLayout { // get notified of phone state changes TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); - telephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_SERVICE_STATE); + telephonyManager.listen(mPhoneStateListener, + PhoneStateListener.LISTEN_SERVICE_STATE + | PhoneStateListener.LISTEN_SIGNAL_STRENGTHS + | PhoneStateListener.LISTEN_CALL_STATE + | PhoneStateListener.LISTEN_DATA_CONNECTION_STATE + | PhoneStateListener.LISTEN_DATA_ACTIVITY); // wifi status info mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); - // audio status notifications + // audio status mAudioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE); + + // mobile data + mPhone = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE); } public void onAttachedToWindow() { @@ -259,6 +445,7 @@ public class SystemPanel extends LinearLayout { } }); + // register for broadcasts IntentFilter filter = new IntentFilter(); filter.addAction(AudioManager.RINGER_MODE_CHANGED_ACTION); filter.addAction(Intent.ACTION_BATTERY_CHANGED); @@ -266,8 +453,9 @@ public class SystemPanel extends LinearLayout { filter.addAction(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION); filter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION); filter.addAction(WifiManager.RSSI_CHANGED_ACTION); + filter.addAction(TelephonyIntents.ACTION_SIM_STATE_CHANGED); getContext().registerReceiver(mReceiver, filter); - + mBatteryMeter = (ImageView)findViewById(R.id.battery_meter); mBatteryMeter.setImageResource(R.drawable.battery); mBatteryMeter.setImageLevel(0); @@ -277,6 +465,8 @@ public class SystemPanel extends LinearLayout { mBatteryText = (TextView)findViewById(R.id.battery_info); mSignalText = (TextView)findViewById(R.id.signal_info); + + refreshSignalMeters(); } public void onDetachedFromWindow() { @@ -362,11 +552,42 @@ public class SystemPanel extends LinearLayout { PhoneStateListener mPhoneStateListener = new PhoneStateListener() { @Override public void onServiceStateChanged(ServiceState serviceState) { - Slog.d(TAG, "phone service state changed: " + serviceState.getState()); + if (DEBUG_SIGNAL || DEBUG) { + Slog.d(TAG, "phone service state changed: " + serviceState.getState()); + } + mServiceState = serviceState; mAirplaneMode = serviceState.getState() == ServiceState.STATE_POWER_OFF; if (mAirplaneButton != null) { mAirplaneButton.setAlpha(mAirplaneMode ? 0xFF : 0x7F); } + updateDataState(); + } + @Override + public void onSignalStrengthsChanged(SignalStrength signalStrength) { + if (DEBUG_SIGNAL || DEBUG) { + Slog.d(TAG, "onSignalStrengthsChanged: " + signalStrength); + } + mSignalStrength = signalStrength; + updateDataState(); + } + @Override + public void onCallStateChanged(int state, String incomingNumber) { + mPhoneState = state; + // In cdma, if a voice call is made, RSSI should switch to 1x. + if (isCdma()) { + updateDataState(); + } + } + + @Override + public void onDataConnectionStateChanged(int state, int networkType) { + if (DEBUG_SIGNAL || DEBUG) { + Slog.d(TAG, "onDataConnectionStateChanged: state=" + state + + " type=" + networkType); + } + mDataState = state; +// updateDataNetType(networkType); + updateDataState(); } }; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBarService.java b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBarService.java index 18b9b4187ae37..087671ac78144 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBarService.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBarService.java @@ -212,10 +212,15 @@ public class TabletStatusBarService extends StatusBarService { mBatteryMeter.setImageLevel(level); } - public void setWifiMeter(int level) { - if (DEBUG) Slog.d(TAG, "wifi=" + level); - mSignalMeter.setImageResource(R.drawable.signal); - mSignalMeter.setImageLevel(level); + public void setSignalMeter(int level, boolean isWifi) { + if (DEBUG) Slog.d(TAG, "signal=" + level); + if (level < 0) { + mSignalMeter.setImageResource(isWifi ? R.drawable.wifi_scan : R.drawable.signal_scan); + mSignalMeter.setImageLevel(0); + } else { + mSignalMeter.setImageResource(isWifi ? R.drawable.wifi : R.drawable.signal); + mSignalMeter.setImageLevel(level); + } } public void addIcon(String slot, int index, int viewIndex, StatusBarIcon icon) {