From 96fe98d0c0bf9a3126da0e14d05463220ac276ab Mon Sep 17 00:00:00 2001 From: John Spurlock Date: Wed, 27 Aug 2014 09:36:02 -0400 Subject: [PATCH] StatusBar: Add new icon slot for cast status. Bug:17275998 Change-Id: I7e80b3d76480fc2fdcb3aa5d445d895829d341d0 --- core/res/res/values/config.xml | 1 + .../drawable-hdpi/ic_qs_cast_available.png | Bin 1324 -> 0 bytes .../drawable-hdpi/ic_qs_cast_connected.png | Bin 1395 -> 0 bytes .../drawable-mdpi/ic_qs_cast_available.png | Bin 959 -> 0 bytes .../drawable-mdpi/ic_qs_cast_connected.png | Bin 1012 -> 0 bytes .../drawable-xhdpi/ic_qs_cast_available.png | Bin 855 -> 0 bytes .../drawable-xhdpi/ic_qs_cast_connected.png | Bin 802 -> 0 bytes .../drawable-xxhdpi/ic_qs_cast_available.png | Bin 1326 -> 0 bytes .../drawable-xxhdpi/ic_qs_cast_connected.png | Bin 1355 -> 0 bytes .../SystemUI/res/drawable/stat_sys_cast.xml | 25 ++++++++++++ packages/SystemUI/res/values/strings.xml | 3 ++ .../statusbar/phone/DemoStatusIcons.java | 5 +++ .../statusbar/phone/PhoneStatusBar.java | 2 +- .../statusbar/phone/PhoneStatusBarPolicy.java | 36 +++++++++++++++++- 14 files changed, 70 insertions(+), 2 deletions(-) delete mode 100644 packages/SystemUI/res/drawable-hdpi/ic_qs_cast_available.png delete mode 100644 packages/SystemUI/res/drawable-hdpi/ic_qs_cast_connected.png delete mode 100644 packages/SystemUI/res/drawable-mdpi/ic_qs_cast_available.png delete mode 100644 packages/SystemUI/res/drawable-mdpi/ic_qs_cast_connected.png delete mode 100644 packages/SystemUI/res/drawable-xhdpi/ic_qs_cast_available.png delete mode 100644 packages/SystemUI/res/drawable-xhdpi/ic_qs_cast_connected.png delete mode 100644 packages/SystemUI/res/drawable-xxhdpi/ic_qs_cast_available.png delete mode 100644 packages/SystemUI/res/drawable-xxhdpi/ic_qs_cast_connected.png create mode 100644 packages/SystemUI/res/drawable/stat_sys_cast.xml diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index 4f0757cade5ab..af213ba06f567 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -26,6 +26,7 @@ ime sync_failing sync_active + cast location bluetooth nfc diff --git a/packages/SystemUI/res/drawable-hdpi/ic_qs_cast_available.png b/packages/SystemUI/res/drawable-hdpi/ic_qs_cast_available.png deleted file mode 100644 index f256fbbb246af80301e4e63756fb51a45659aea4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1324 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTCmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f-TA0 z-G$*l2rk&Wd@@jkv%n*=7)X17vD?XPI|c^kKb|g*AsP4H-i%(cG+BcE!~N~oxAPd! zbUYN}6FAGrS8}<=$>npD^g0A5b3d)o5LqcGc(^sW(D6}|MHF ztJkpl{H@bRKi5>(R-eE3+bKJ3?aXh%tG`FT|6TXK>fiZ~weyZL>0V%ZdpX1*G<5e_ zUdvMUvkvz&ma&OFJfP@)<7m8Tf2!ZK8?CoDGVWh&o8gz9xTn{?K;~G$6^5+c@lzgO zx?__wOQU7M@;_VVBqy8OAAWSfw{96{sUCxF&*Q>32Tn9d$P0d}V_Y?7w%V1VdE(`d z1asUCt*mxkKf7|(Dl@eW7L0F>Ia{9p?Yd4pBRtfUqkaYBmS?vN+p{bICdbb0V_3pwF!OQ$4^>J1|JOUKXP)ZWIydEq z@1EAH7P}d9GFHmS%C4PX?id<6`G=YPR?pJat1jKJHVFv}-O8f>z`v$l_r|K}tkezRV=j1~<*B%7^X<&D0yzD8k*_4Tm zD}ibL!|TUlCVoC$u>M2)XCarpb|MOHE(ePw!ya8psaU<^l-QyTmTdCRqST+aGacFT zYT3avj5|bLZ}iG=ZmN>IZhG(SrgWLzffw$y|NgxF*aj!DsMOHV?t+OMzRz!MQQyFs z|5)+j+7}$TF|!}*IyEz&y{5cK_~RUd*}6MIEp!9J?lo#pei@}?{@Cx~m$g%_9bgct zlKh@x)BAp-+4I{@($m#DjGmi6;Mx1aL_lEaOSJ&^`Jxq~>0G^2D&)-{98KBPd%U1( zU+{^Zwe@djBptKRZZM4L_`H$t_^Z^1(uET1PVLoyXfpB3vBIu`7wIi#)-TW0e(ZKr zPCWPdRX~J!51-Jsy>Tv!I%VdI^zpbq@|Kx$z$3NM@!~Xr@W|K-O^SxJ_<7DhT?|8)fZ_%w$ zQS#MRt=)6thD-a8xonryA9mFIlc|3l`>)HcCaTK3dDl%d)m+V&>rU+3UEq4ozHxPM zs!K+#<$Qa;;8z^M){L`T&)(}@{AE$_{uTRvy*cy#?z8{QrLud(-X|p+eQxtei@i8M zrtkiTQm?AQc^lOjOIqs_&R^#-{8hLA$}^kF9yYtqQu~Y2r8GgS*I( gC#5QQ<|d}62BjvZR2H601(jM1p00i_>zopr0N?UPs{jB1 diff --git a/packages/SystemUI/res/drawable-hdpi/ic_qs_cast_connected.png b/packages/SystemUI/res/drawable-hdpi/ic_qs_cast_connected.png deleted file mode 100644 index b946ec9029f757b6a6173b90fabb0cc391261320..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1395 zcmV-(1&sQMP)Px#AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy24YJ`L;(K){{a7>y{D4^000SaNLh0L002k;002k;M#*bF000C- zNklHWRHZz&Oi~GNso5@TP$u#pK^M}iw zciw&Pp8q-boO|vY=%I%m)-^H!NsD9!hgScJf}q(0eL#P~848$*I_4JUKn-{vI0jq< zD&5w!h2j<960if92C_&XuKPasLmpf-Ph5wn+d}bp3z{`^Qf%+Qh zUIzw&uYs>vBBA8VylB=WUII3;c5zX)(pOBNEtVq?QM2;ZH72mE$5%=qx8jvGA`nqp z^?;(|e@8$~ec{neAWQnW^*|&Nh|&HN@S7Enfh&_KByyM1b5{5i@C9%Ou-o#oTO?Zk z@6%jI0$Dbn6>9*J>c9`cIfC`ez_-8y1dq+RFGQhNk~AP`Owvh72Z1{Y-bi=dy}(1j zxCzxMNPOg0=w4upm8t{hfid7C;7@|ZKL^eNCx9m@h$ot}P~8gM1-t`X0Ny0jK@d(s zPZ3UT@!76=qC}`W&H{fVvdr?$z+pm6+()o_1$YnGPa`{ZjYNrXV0i@C4(zhRKhmgs zW`WxYRpDV8h1SQwGqgA*bq$hY+aT$2Nf#6_>n2H~9#e7us^v9x4sos{p5utG>yjoV z4OyO*B=t#pSkev}Ilc;f0_+4vZ1Ix4aR7Kf@x)QW-chCt8(xWU-W??@o9}?<2wx>2 z94lV{hOK-&;vE8B^l$w8FBYcQ)wUHA$Y_)jI|*s>Jn*RH6?71h*)WcEm!QzO5h^Af?9`8|2*X9^pO0lxxU9qpe2k2%I~B-BCM ze0`cwS_3=?d`aWbvj;fitaJdlh0cFRilxs8VUHquAg=egT!s@%A5SbWZ3`pmHd{Jc z<`pe0F`ECnx-N(%@wAyu5_0@-GUglKoAUK`_Y;KO`--o(x{v!t1*n)%r`x=NGKE|^ zn7BHg#Ad8aiSTte-oHv?gV{*qkC3W~0+1Y4dsqsY*J&$rHJ2Ez?q#jU_pIN;I>Ns@ zYl!r-lJQRf001R)MObuXVRU6WV{&C-bY%cCFflYOFf%PNH&ih>Ix{gkF*q$SH##sd zC!h+f0000bbVXQnWMOn=I&E)cX=ZrrIx;pbFgQ9eFnzKC zL;wH)8FWQhbW?9;ba!ELWdK2BZ(?O2No`?gWm08fWO;GPWjp`?002ovPDHLkV1mLg BP+9;0 diff --git a/packages/SystemUI/res/drawable-mdpi/ic_qs_cast_available.png b/packages/SystemUI/res/drawable-mdpi/ic_qs_cast_available.png deleted file mode 100644 index b1e984c7c0a09b67c9bf59786c707a54cb684a4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 959 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UV>C6dj$D1FjT2AFf_CjA5L~c#`DCC7XMsm#F_88EW4Dvpb_@(m{hlt4ArXh)UU%#WO%-APaKHL}T430M zr5&xVx=xb|CaQGRJ#%w$@=)UTk#L=`Y{}GhLI-^xxW()=6hHJrC+0|tz{6HALBT@9 zEo*u^y1h3md{$p956ML&z&m|XYcld1%IPO)`xpYTQ{|C8siF#~L z=f7Onpz*I9ck)rrvMFho^xy5?exUTu0j8Z?*B0_G|G>EK zu=fux`EZ5{I;S_SeWAJZ_qQooYBgN93k;fi6T4$X|8CNl9iiL(`6k2tyv7mW<il;tsTxyb$=yTd0@`lCx3qYF?@JWCTwYF^?~P+f&XvZsNXSfiG8;Enk--% zRV{IiC`m~yNwrEYN(E93Mh1o^x(3F&hUOuLmR2T~R>qdP2If`<20!J3g-|r)=BH$) zRibOKure}+XyA{&?*P;w39=zLKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MJ0|BQbco L`njxgN@xNARsxcU diff --git a/packages/SystemUI/res/drawable-mdpi/ic_qs_cast_connected.png b/packages/SystemUI/res/drawable-mdpi/ic_qs_cast_connected.png deleted file mode 100644 index ceda1bb6398a1e4beaf800c58bf8d6b9d2f87dad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1012 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UV>C6dj$D1FjT2AFf_CjA5L~c#`DCC7XMsm#F_88EW4Dvpb_@(mM?75|Ln02poo?OZ8z|DYzxa7ox1u1g zkm4*)4UW#9fHNKGhOOmBCp-L{7GC05>LM~lNR^YTHRA$jFO%Wiq$55}5+CJ`o!LA8 z(HiCSb%nCU&lhc&Go~*;jmfao_CUZuY1Kt^$!4 z4EIbw+azdxV6dUV~Nu6Wf(*4!2LdUBR%{K|S-0aen~6gXj!a zANFOY915S4CP~-x=k7e`l&$U`@M_(8<`q|TJc??S-NBLCFCHHl_*uJ?T?=Y4HpG zmOKkHy-Rk-XZ6izJYn&{b??G;9fzl}%kvm?JJs)PGj_Gzpt;9@%|Wt)Zx4$Y!|jIN z1C9@jHc0Pa)nV~t{@w8SK==dhqo15bXRzBS|CQ-K-T3n1y?-*V-hO;np!e>z)AdQu z{TTbEE_&a&H}1Lf1_P;ALSGAgUIjm2-TBL)L_8^O`^%{^A@@ac)-O8mbYT|b3$xU} z_iofo%{;lJ%BbY{qn|6STw`VCoU{oJsna+qRBB&fm~@pjhW#9qdqZ4;>z4M3?6;KN z-zfOroZ1v~Vu^^%F22OC7#SFv=o%R78k&a~T3Q(!S{YjC8kk!d7^pAcT7#k? zH$NpatrDuiNY}_P#K6MJ#L~*hOc%&7FsR+c=mOLr39=zLKdq!Zu_%?nF(p4KRlzei bF+DXXH8G{K@MJ0|_c3_7`njxgN@xNA-^iW_ diff --git a/packages/SystemUI/res/drawable-xhdpi/ic_qs_cast_available.png b/packages/SystemUI/res/drawable-xhdpi/ic_qs_cast_available.png deleted file mode 100644 index 47be502e0a313bf788e0a6af899f0c17cd9dd89b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 855 zcmV-d1E~CoP)t!Ai3o7VBDfiN%0_~luOBjkYsAeW#%+^Fh%4+&16zY->}XV?CpwZ6;Rxni*xWZC)!88;O`1yBK002M$5Pytkc z%v#>P5Qbr@YvV$pkkb{Q0;m8gKx`0@Ib~p?}Gfac7v~+`iawOK3<`s~ae|k4V4|Ky5RQi^c7!VzZ?62)W>^mEU_yx;+YEbyGEQGBwGQa35Hik--~iOexSfKv@FTH> z5D(hF#0^?y|2M^KjYc?`)GQIz0iO`T6hR$u#f&KR)AIWY2caD!O?IO9(!{C8<-W-BbiE~d@gxdx7GB1sO4tOKVW4&WEi5zf!||UDD-$IE0dF}PjLZFK^oDVg6nK5oa@nS?sP6gd~2 z{=fve^N!yT*&>mB_H38&FwB}i?4#BGZ@qv|gnh8nx^@^=IDSjyfF!aGPdPl5c+x7L zzr%o}RDzqGf6w#*J#NPI^a`%kC$$u=meU{G+MW4u7;4SCJ@=_gTp^St)0d+vfC``j hr~oQJhV7RC0{}Mx%o`F3L81Tv002ovPDHLkV1f++dqMyJ diff --git a/packages/SystemUI/res/drawable-xhdpi/ic_qs_cast_connected.png b/packages/SystemUI/res/drawable-xhdpi/ic_qs_cast_connected.png deleted file mode 100644 index 4b12809b9c967aebf00761282324a0e617fcb6f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 802 zcmV+-1Ks?IP)UOY(TL8yZuX@~IQNm2^B1VIqeC5k0V&=$%=(L#y@mS{xc zr6Poa4%+yA@SY4mes6~bY3I%Se(*tO<~zUH`RvS_+2{GbpGtChB0vO)01+SpM1Tko z0U|&ItXJHPcp^XqhyW2#t^m)`ll4V_2-tW5zC-u82oM1xKm>>Y5g-CYfCwl@z#ecM zoB zE(%Z|`VeRa=fFu&UE&}=K?itF*4KkKT80w>Qc3{BPS6FWeS7@_1HdEuHiAXJauxh6 zVcV?&4C>^v;A4pc-Upk=eof$yO9Hlph)~;m!Cy<$2h5ew>5_mI{Vm@C=Rw*cq8Th$ z8V@r0N3IB<^#yc;40BR-plE5HBiUWxhl>JC&4CMygdN~5lV8?@U@&{dWdUZi9|2Wl z=UOd@);Kee&O}|nL+~x6aUN_X4USkw`}UAQ^?y;;V^Dolr@>SGt#kE^d17=kxdrBm ziM)UyO2oXS!CjJ7?*Q+aT!+g7%s@A0Y0^rvr^CNLzkWt2u#NWZe*xyF`{>F_~k5|5xp|5dZ)H07*qoM6N<$g04GKrvLx| diff --git a/packages/SystemUI/res/drawable-xxhdpi/ic_qs_cast_available.png b/packages/SystemUI/res/drawable-xxhdpi/ic_qs_cast_available.png deleted file mode 100644 index 8e225af212efb52ad3a89f471a002e9de416716a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1326 zcmV+}1=0G6P)>d z2!J900-y+h04M?=0Ez$zfFb|_pa_5fC;}h=iU0_JN+N*S@Lu>OL-l{;d?+7_#kSxe zmIux)aTo}Xgu63z#Q>lHjE6XgH){PUs7 zO2RUxpDau8EqDmSn7k^eJ$yteQ@A6;nY=PI6}}FyhpRBGi2+E{ZHII4mjv!r7M=&+ zfZH;(aaKX7Y&QQ>f|k|GOMhJjb&lhn(x$iu&w_U`#0iw4fRT&CP3_gX_cIZm1lJC5 zUs;BB!d;cuQO#wj3y}k)_X97&k4@pZ@aus0p8+3+D>KwZkc0u@8@vfWHis9(Ujqyq z3?FB5F2X7Z5WeHE3T_9V4lpFDXF>&r+>!&Z&Py$SN9q0#g8VkX_~$xNOCM>eu7qsr zqm%Mjm|p^7NW!Vwb0k0javR6p@IJtJ=eS26yaK+Yyk1c)$F-xC*KJ+G(7Tr)>G5=c zH%P(-j9qXGzm*B@2KzPY()FyN0_FgjB@^KLfRG8-bX+U%?w+u#bsf<&s~*E2UlNvU zr@{{bVT|LtY`8D{%5jbCCH5(HQxmF!YU$wZfGatY^C0+>Ph~WP01}t%ici5cEU!yN zHO{BvSqs-B08azpHOlMp2UQRFyz-u&nREWmWLTY#Pmmeu*SF3ZG_2=Wv1Y} zy{Bc#k{6bTgYN@1u!+8z%vF(6SMe0MB&X zLjWz}5@ZIE4Ug9e^}Wx%dg~3DNf&hDwrRX$84KSMWGq>t(G(nxD)*zuJiW;>^@mdQ z{=l}RWmo`8rL?W22fEPT8;Tpe)~$*QJ~L{oCCD;fz#k> z4hWxd7^;)5P134fV0mqmo+TzV(N$GJeNbMXsnq8H`N;W3_yr&=gv(nXe9{m;I_^6k zu5LL0Sh?HRBQ58%!jy!o=?#+1h{hHOveTXJxNlYEJ&H7GuVdU$%lXq`0`OOz;H!XO ztKSd!yfdYYH9d2day7>?rV(uFx=L&OYuEsYq+^+-Dm9!bA zSzgO@jFTB)s(&v##)Rr4j`4IuGcXG(S>DaIU2+}eeX3d+X3h`Gm{#~bWeC8W4@MZy z|Ax;v#&xlbd0@G|B3z#U%o=4mf6+0<_AJ@e{cIQ(01^I8`I0pQC;}h=iU0_JA^-xQ k2!H@60w4gY5c(s)0NWlP*l#qAf&c&j07*qoM6N<$f@Akup#T5? diff --git a/packages/SystemUI/res/drawable-xxhdpi/ic_qs_cast_connected.png b/packages/SystemUI/res/drawable-xxhdpi/ic_qs_cast_connected.png deleted file mode 100644 index 937202bdf809db5162c45aefd140d562c3ed7fb0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1355 zcmZ|P|3A|S0LSsqeD+1l3{ke}frs)f$w`+l!_4=_WVW+9jEy>WV?*(EtEo+})gL+YS6i z5xKqZ3*#)egS+6&yxsMFar&th3C0+6if1b^zhQkrkwe$Z%^1I9=kN7ZHLW>r-NQR}HTw2@x;j3j}ZvTo{F2inB0#0X^Pb~VAi zK5yF)s4f7Sh>n!Mt>b(vY)=YajSHL6Ejvxa)RgDb6Q?L=V2@IFSfN%8m`VXLBV2Gk zZPP->pZ28)^)cRA;rKLsZ{QBdG<+<|){^G&5QF$$8Fo`@hKlcPs4@&e1j(@S6z zUQ786VW*uZzJj~aCP=NE6^mr0GeR49RT@Yw3A*uHV-dqJw$Rcw&h> zk~>yG^@oZc22bCkyty_vFnJm->IDWIJO^L<++1tPJ*qtI(l@9OLX1r11ZSq?Tp!G! z|0&w=HKW9&-}dgSVb{)8JK~W7jNjIGQ<5@bK0&99Z;xq3RXV+LbL8c1?Z57U@VGjRWm?LYt&}D4+eQ zL!=~DZwV6eI^%n$!Wo{npuW`?E*bQZnbW(KYCFUQ{AAhHQ=7Rmwx3$=;*E;^+Dh27 zRTpQnhu6DjyGhEqc8kt`3}0U57~DQ&Xx+SPt{5AJ5>WEqPA`{0%fk`EJwC{X>Z!UIRsFDT%{J#v9a}b)qvhtlxx(*^_`yByyXR4Ec9GLnKst;XX diff --git a/packages/SystemUI/res/drawable/stat_sys_cast.xml b/packages/SystemUI/res/drawable/stat_sys_cast.xml new file mode 100644 index 0000000000000..c9e65e029ed22 --- /dev/null +++ b/packages/SystemUI/res/drawable/stat_sys_cast.xml @@ -0,0 +1,25 @@ + + + + + diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml index 120af1deefaed..0fe389a7d77ba 100644 --- a/packages/SystemUI/res/values/strings.xml +++ b/packages/SystemUI/res/values/strings.xml @@ -392,6 +392,9 @@ Ringer silent. + + @string/quick_settings_casting + Dismiss %s. diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DemoStatusIcons.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DemoStatusIcons.java index 936479beadc3a..c5d06b94a1156 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DemoStatusIcons.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DemoStatusIcons.java @@ -120,6 +120,11 @@ public class DemoStatusIcons extends LinearLayout implements DemoMode { : 0; updateSlot("speakerphone", null, iconId); } + String cast = args.getString("cast"); + if (cast != null) { + int iconId = cast.equals("cast") ? R.drawable.stat_sys_cast : 0; + updateSlot("cast", null, iconId); + } } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java index 95232d4f6cb08..f662b3d9c6e32 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java @@ -562,7 +562,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, addNavigationBar(); // Lastly, call to the icon policy to install/update all the icons. - mIconPolicy = new PhoneStatusBarPolicy(mContext); + mIconPolicy = new PhoneStatusBarPolicy(mContext, mCastController); mSettingsObserver.onChange(false); // set up mHeadsUpObserver.onChange(true); // set up diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java index bd52cd39282f0..237b78272b47a 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java @@ -33,6 +33,8 @@ import android.util.Log; import com.android.internal.telephony.IccCardConstants; import com.android.internal.telephony.TelephonyIntents; import com.android.systemui.R; +import com.android.systemui.statusbar.policy.CastController; +import com.android.systemui.statusbar.policy.CastController.CastDevice; /** * This class contains all of the policy about which icons are installed in the status @@ -46,6 +48,7 @@ public class PhoneStatusBarPolicy { private static final boolean SHOW_SYNC_ICON = false; private static final String SLOT_SYNC_ACTIVE = "sync_active"; + private static final String SLOT_CAST = "cast"; private static final String SLOT_BLUETOOTH = "bluetooth"; private static final String SLOT_TTY = "tty"; private static final String SLOT_ZEN = "zen"; @@ -56,6 +59,7 @@ public class PhoneStatusBarPolicy { private final Context mContext; private final StatusBarManager mService; private final Handler mHandler = new Handler(); + private final CastController mCast; // Assume it's all good unless we hear otherwise. We don't always seem // to get broadcasts that it *is* there. @@ -98,8 +102,9 @@ public class PhoneStatusBarPolicy { } }; - public PhoneStatusBarPolicy(Context context) { + public PhoneStatusBarPolicy(Context context, CastController cast) { mContext = context; + mCast = cast; mService = (StatusBarManager)context.getSystemService(Context.STATUS_BAR_SERVICE); // listen for broadcasts @@ -151,6 +156,11 @@ public class PhoneStatusBarPolicy { mService.setIcon(SLOT_VOLUME, R.drawable.stat_sys_ringer_vibrate, 0, null); mService.setIconVisibility(SLOT_VOLUME, false); updateVolumeZen(); + + // cast + mService.setIcon(SLOT_CAST, R.drawable.stat_sys_cast, 0, null); + mService.setIconVisibility(SLOT_CAST, false); + mCast.addCallback(mCastCallback); } public void setZenMode(int zen) { @@ -287,4 +297,28 @@ public class PhoneStatusBarPolicy { mService.setIconVisibility(SLOT_TTY, false); } } + + private void updateCast() { + boolean isCasting = false; + for (CastDevice device : mCast.getCastDevices()) { + if (device.state == CastDevice.STATE_CONNECTING + || device.state == CastDevice.STATE_CONNECTED) { + isCasting = true; + break; + } + } + if (DEBUG) Log.v(TAG, "updateCast: isCasting: " + isCasting); + if (isCasting) { + mService.setIcon(SLOT_CAST, R.drawable.stat_sys_cast, 0, + mContext.getString(R.string.accessibility_casting)); + } + mService.setIconVisibility(SLOT_CAST, isCasting); + } + + private final CastController.Callback mCastCallback = new CastController.Callback() { + @Override + public void onCastDevicesChanged() { + updateCast(); + } + }; }