SignalClusterView.java revision 3128f12f216ef481b5d03892b35706cfeec26d7c
12e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson/*
22e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson * Copyright (C) 2011 The Android Open Source Project
32e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson *
42e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson * Licensed under the Apache License, Version 2.0 (the "License");
52e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson * you may not use this file except in compliance with the License.
62e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson * You may obtain a copy of the License at
72e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson *
82e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson *      http://www.apache.org/licenses/LICENSE-2.0
92e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson *
102e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson * Unless required by applicable law or agreed to in writing, software
112e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson * distributed under the License is distributed on an "AS IS" BASIS,
122e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
132e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson * See the License for the specific language governing permissions and
142e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson * limitations under the License.
152e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson */
162e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson
172e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertsonpackage com.android.systemui.statusbar;
182e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson
192e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertsonimport android.content.Context;
202e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertsonimport android.util.AttributeSet;
21cd686b5b6d4166b510df8e32138479a9559bc117John Spurlockimport android.util.Log;
222e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertsonimport android.view.View;
232e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertsonimport android.view.ViewGroup;
242f7dfa7afdaada78c46bd6fd7e307656ba3dd66aJohn Spurlockimport android.view.accessibility.AccessibilityEvent;
252e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertsonimport android.widget.ImageView;
262e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertsonimport android.widget.LinearLayout;
272e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson
282e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertsonimport com.android.systemui.R;
29af8d6c44f06d2f8baac2c5774a9efdae3fc36797John Spurlockimport com.android.systemui.statusbar.policy.NetworkControllerImpl;
303128f12f216ef481b5d03892b35706cfeec26d7cJason Monkimport com.android.systemui.statusbar.policy.SecurityController;
312e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson
325ccff81a642844138b144ad2cc339eba188812a0Daniel Sandler// Intimately tied to the design of res/layout/signal_cluster_view.xml
332e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertsonpublic class SignalClusterView
342f7dfa7afdaada78c46bd6fd7e307656ba3dd66aJohn Spurlock        extends LinearLayout
353128f12f216ef481b5d03892b35706cfeec26d7cJason Monk        implements NetworkControllerImpl.SignalCluster,
363128f12f216ef481b5d03892b35706cfeec26d7cJason Monk        SecurityController.SecurityControllerCallback {
372e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson
3828f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler    static final String TAG = "SignalClusterView";
39b3eb89190c4bb4ebbe676328cd37830d50e6ed3eJohn Spurlock    static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
402f7dfa7afdaada78c46bd6fd7e307656ba3dd66aJohn Spurlock
41af8d6c44f06d2f8baac2c5774a9efdae3fc36797John Spurlock    NetworkControllerImpl mNC;
423128f12f216ef481b5d03892b35706cfeec26d7cJason Monk    SecurityController mSC;
432e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson
443128f12f216ef481b5d03892b35706cfeec26d7cJason Monk    private boolean mVpnVisible = false;
4528f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler    private boolean mWifiVisible = false;
46fcc901c10bffdfb9c6b31e676dec36b47d949979John Spurlock    private int mWifiStrengthId = 0;
4728f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler    private boolean mMobileVisible = false;
48fcc901c10bffdfb9c6b31e676dec36b47d949979John Spurlock    private int mMobileStrengthId = 0, mMobileTypeId = 0;
495ccff81a642844138b144ad2cc339eba188812a0Daniel Sandler    private boolean mIsAirplaneMode = false;
50061d43c2386dd8222448bb1bec017bf9a2367a4eAndrew Flynn    private int mAirplaneIconId = 0;
51bcf6ef0b82c1daea43e03b8ad5af319ed324242aDaniel Sandler    private String mWifiDescription, mMobileDescription, mMobileTypeDescription;
5214339c9edc2675d4757d572006625c2641db5653John Spurlock    private boolean mRoaming;
5328f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler
542e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson    ViewGroup mWifiGroup, mMobileGroup;
553128f12f216ef481b5d03892b35706cfeec26d7cJason Monk    ImageView mVpn, mWifi, mMobile, mMobileType, mAirplane;
565172dc2f36f9c417befd0957ce2ae20f9d083a88Jorim Jaggi    View mWifiAirplaneSpacer;
572e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson
582e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson    public SignalClusterView(Context context) {
592e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson        this(context, null);
602e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson    }
612e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson
622e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson    public SignalClusterView(Context context, AttributeSet attrs) {
632e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson        this(context, attrs, 0);
642e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson    }
652e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson
662e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson    public SignalClusterView(Context context, AttributeSet attrs, int defStyle) {
672e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson        super(context, attrs, defStyle);
682e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson    }
692e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson
70af8d6c44f06d2f8baac2c5774a9efdae3fc36797John Spurlock    public void setNetworkController(NetworkControllerImpl nc) {
71cd686b5b6d4166b510df8e32138479a9559bc117John Spurlock        if (DEBUG) Log.d(TAG, "NetworkController=" + nc);
722e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson        mNC = nc;
732e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson    }
742e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson
753128f12f216ef481b5d03892b35706cfeec26d7cJason Monk    public void setSecurityController(SecurityController sc) {
763128f12f216ef481b5d03892b35706cfeec26d7cJason Monk        if (DEBUG) Log.d(TAG, "SecurityController=" + sc);
773128f12f216ef481b5d03892b35706cfeec26d7cJason Monk        mSC = sc;
783128f12f216ef481b5d03892b35706cfeec26d7cJason Monk        mSC.addCallback(this);
793128f12f216ef481b5d03892b35706cfeec26d7cJason Monk        mVpnVisible = mSC.isVpnEnabled();
803128f12f216ef481b5d03892b35706cfeec26d7cJason Monk    }
813128f12f216ef481b5d03892b35706cfeec26d7cJason Monk
822e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson    @Override
832e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson    protected void onAttachedToWindow() {
842e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson        super.onAttachedToWindow();
852e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson
863128f12f216ef481b5d03892b35706cfeec26d7cJason Monk        mVpn            = (ImageView) findViewById(R.id.vpn);
872e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson        mWifiGroup      = (ViewGroup) findViewById(R.id.wifi_combo);
882e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson        mWifi           = (ImageView) findViewById(R.id.wifi_signal);
892e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson        mMobileGroup    = (ViewGroup) findViewById(R.id.mobile_combo);
902e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson        mMobile         = (ImageView) findViewById(R.id.mobile_signal);
912e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson        mMobileType     = (ImageView) findViewById(R.id.mobile_type);
92061d43c2386dd8222448bb1bec017bf9a2367a4eAndrew Flynn        mAirplane       = (ImageView) findViewById(R.id.airplane);
935172dc2f36f9c417befd0957ce2ae20f9d083a88Jorim Jaggi        mWifiAirplaneSpacer =         findViewById(R.id.wifi_airplane_spacer);
9428f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler
9528f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler        apply();
962e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson    }
972e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson
982e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson    @Override
992e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson    protected void onDetachedFromWindow() {
1003128f12f216ef481b5d03892b35706cfeec26d7cJason Monk        mVpn            = null;
10128f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler        mWifiGroup      = null;
10228f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler        mWifi           = null;
10328f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler        mMobileGroup    = null;
10428f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler        mMobile         = null;
10528f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler        mMobileType     = null;
106061d43c2386dd8222448bb1bec017bf9a2367a4eAndrew Flynn        mAirplane       = null;
10728f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler
1082e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson        super.onDetachedFromWindow();
1092e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson    }
1102e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson
1113128f12f216ef481b5d03892b35706cfeec26d7cJason Monk    // From SecurityController.
1123128f12f216ef481b5d03892b35706cfeec26d7cJason Monk    @Override
1133128f12f216ef481b5d03892b35706cfeec26d7cJason Monk    public void onStateChanged() {
1143128f12f216ef481b5d03892b35706cfeec26d7cJason Monk        post(new Runnable() {
1153128f12f216ef481b5d03892b35706cfeec26d7cJason Monk            @Override
1163128f12f216ef481b5d03892b35706cfeec26d7cJason Monk            public void run() {
1173128f12f216ef481b5d03892b35706cfeec26d7cJason Monk                mVpnVisible = mSC.isVpnEnabled();
1183128f12f216ef481b5d03892b35706cfeec26d7cJason Monk                apply();
1193128f12f216ef481b5d03892b35706cfeec26d7cJason Monk            }
1203128f12f216ef481b5d03892b35706cfeec26d7cJason Monk        });
1213128f12f216ef481b5d03892b35706cfeec26d7cJason Monk    }
1223128f12f216ef481b5d03892b35706cfeec26d7cJason Monk
123061d43c2386dd8222448bb1bec017bf9a2367a4eAndrew Flynn    @Override
124b3eb89190c4bb4ebbe676328cd37830d50e6ed3eJohn Spurlock    public void setWifiIndicators(boolean visible, int strengthIcon, String contentDescription) {
12528f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler        mWifiVisible = visible;
12628f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler        mWifiStrengthId = strengthIcon;
127bcf6ef0b82c1daea43e03b8ad5af319ed324242aDaniel Sandler        mWifiDescription = contentDescription;
12828f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler
12928f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler        apply();
13028f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler    }
13128f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler
132061d43c2386dd8222448bb1bec017bf9a2367a4eAndrew Flynn    @Override
133b3eb89190c4bb4ebbe676328cd37830d50e6ed3eJohn Spurlock    public void setMobileDataIndicators(boolean visible, int strengthIcon, int typeIcon,
13414339c9edc2675d4757d572006625c2641db5653John Spurlock            String contentDescription, String typeContentDescription, boolean roaming) {
13528f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler        mMobileVisible = visible;
13628f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler        mMobileStrengthId = strengthIcon;
13728f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler        mMobileTypeId = typeIcon;
138bcf6ef0b82c1daea43e03b8ad5af319ed324242aDaniel Sandler        mMobileDescription = contentDescription;
139bcf6ef0b82c1daea43e03b8ad5af319ed324242aDaniel Sandler        mMobileTypeDescription = typeContentDescription;
14014339c9edc2675d4757d572006625c2641db5653John Spurlock        mRoaming = roaming;
14128f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler
14228f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler        apply();
14328f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler    }
14428f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler
145061d43c2386dd8222448bb1bec017bf9a2367a4eAndrew Flynn    @Override
146061d43c2386dd8222448bb1bec017bf9a2367a4eAndrew Flynn    public void setIsAirplaneMode(boolean is, int airplaneIconId) {
1475ccff81a642844138b144ad2cc339eba188812a0Daniel Sandler        mIsAirplaneMode = is;
148061d43c2386dd8222448bb1bec017bf9a2367a4eAndrew Flynn        mAirplaneIconId = airplaneIconId;
149061d43c2386dd8222448bb1bec017bf9a2367a4eAndrew Flynn
150061d43c2386dd8222448bb1bec017bf9a2367a4eAndrew Flynn        apply();
1515ccff81a642844138b144ad2cc339eba188812a0Daniel Sandler    }
1525ccff81a642844138b144ad2cc339eba188812a0Daniel Sandler
1532f7dfa7afdaada78c46bd6fd7e307656ba3dd66aJohn Spurlock    @Override
1542f7dfa7afdaada78c46bd6fd7e307656ba3dd66aJohn Spurlock    public boolean dispatchPopulateAccessibilityEvent(AccessibilityEvent event) {
1552f7dfa7afdaada78c46bd6fd7e307656ba3dd66aJohn Spurlock        // Standard group layout onPopulateAccessibilityEvent() implementations
1562f7dfa7afdaada78c46bd6fd7e307656ba3dd66aJohn Spurlock        // ignore content description, so populate manually
15724e028e0ec533cb7304296118a73bdc03870d10dDaniel Sandler        if (mWifiVisible && mWifiGroup != null && mWifiGroup.getContentDescription() != null)
1582f7dfa7afdaada78c46bd6fd7e307656ba3dd66aJohn Spurlock            event.getText().add(mWifiGroup.getContentDescription());
15924e028e0ec533cb7304296118a73bdc03870d10dDaniel Sandler        if (mMobileVisible && mMobileGroup != null && mMobileGroup.getContentDescription() != null)
1602f7dfa7afdaada78c46bd6fd7e307656ba3dd66aJohn Spurlock            event.getText().add(mMobileGroup.getContentDescription());
1612f7dfa7afdaada78c46bd6fd7e307656ba3dd66aJohn Spurlock        return super.dispatchPopulateAccessibilityEvent(event);
1622f7dfa7afdaada78c46bd6fd7e307656ba3dd66aJohn Spurlock    }
1632f7dfa7afdaada78c46bd6fd7e307656ba3dd66aJohn Spurlock
1644662611f3757bd9210f252c095f2bef278fa2043Fabrice Di Meglio    @Override
1654662611f3757bd9210f252c095f2bef278fa2043Fabrice Di Meglio    public void onRtlPropertiesChanged(int layoutDirection) {
1664662611f3757bd9210f252c095f2bef278fa2043Fabrice Di Meglio        super.onRtlPropertiesChanged(layoutDirection);
1674662611f3757bd9210f252c095f2bef278fa2043Fabrice Di Meglio
1684662611f3757bd9210f252c095f2bef278fa2043Fabrice Di Meglio        if (mWifi != null) {
1694662611f3757bd9210f252c095f2bef278fa2043Fabrice Di Meglio            mWifi.setImageDrawable(null);
1704662611f3757bd9210f252c095f2bef278fa2043Fabrice Di Meglio        }
1714662611f3757bd9210f252c095f2bef278fa2043Fabrice Di Meglio
1724662611f3757bd9210f252c095f2bef278fa2043Fabrice Di Meglio        if (mMobile != null) {
1734662611f3757bd9210f252c095f2bef278fa2043Fabrice Di Meglio            mMobile.setImageDrawable(null);
1744662611f3757bd9210f252c095f2bef278fa2043Fabrice Di Meglio        }
175fcc901c10bffdfb9c6b31e676dec36b47d949979John Spurlock
1764662611f3757bd9210f252c095f2bef278fa2043Fabrice Di Meglio        if (mMobileType != null) {
1774662611f3757bd9210f252c095f2bef278fa2043Fabrice Di Meglio            mMobileType.setImageDrawable(null);
1784662611f3757bd9210f252c095f2bef278fa2043Fabrice Di Meglio        }
1794662611f3757bd9210f252c095f2bef278fa2043Fabrice Di Meglio
1804662611f3757bd9210f252c095f2bef278fa2043Fabrice Di Meglio        if(mAirplane != null) {
1814662611f3757bd9210f252c095f2bef278fa2043Fabrice Di Meglio            mAirplane.setImageDrawable(null);
1824662611f3757bd9210f252c095f2bef278fa2043Fabrice Di Meglio        }
1834662611f3757bd9210f252c095f2bef278fa2043Fabrice Di Meglio
1844662611f3757bd9210f252c095f2bef278fa2043Fabrice Di Meglio        apply();
1854662611f3757bd9210f252c095f2bef278fa2043Fabrice Di Meglio    }
1864662611f3757bd9210f252c095f2bef278fa2043Fabrice Di Meglio
1870d266899da8f612194a8393ec69c4fd870f2f45cJorim Jaggi    @Override
1880d266899da8f612194a8393ec69c4fd870f2f45cJorim Jaggi    public boolean hasOverlappingRendering() {
1890d266899da8f612194a8393ec69c4fd870f2f45cJorim Jaggi        return false;
1900d266899da8f612194a8393ec69c4fd870f2f45cJorim Jaggi    }
1910d266899da8f612194a8393ec69c4fd870f2f45cJorim Jaggi
19228f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler    // Run after each indicator change.
19328f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler    private void apply() {
1942e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson        if (mWifiGroup == null) return;
1952e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson
1963128f12f216ef481b5d03892b35706cfeec26d7cJason Monk        mVpn.setVisibility(mVpnVisible ? View.VISIBLE : View.GONE);
1973128f12f216ef481b5d03892b35706cfeec26d7cJason Monk        if (DEBUG) Log.d(TAG, String.format("vpn: %s", mVpnVisible ? "VISIBLE" : "GONE"));
19828f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler        if (mWifiVisible) {
19928f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler            mWifi.setImageResource(mWifiStrengthId);
200bcf6ef0b82c1daea43e03b8ad5af319ed324242aDaniel Sandler            mWifiGroup.setContentDescription(mWifiDescription);
201cda096ebf3fac67daf36e775547c2a337374927bFabrice Di Meglio            mWifiGroup.setVisibility(View.VISIBLE);
2022e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson        } else {
2032e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson            mWifiGroup.setVisibility(View.GONE);
2042e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson        }
2052e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson
206cd686b5b6d4166b510df8e32138479a9559bc117John Spurlock        if (DEBUG) Log.d(TAG,
207fcc901c10bffdfb9c6b31e676dec36b47d949979John Spurlock                String.format("wifi: %s sig=%d",
20828f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler                    (mWifiVisible ? "VISIBLE" : "GONE"),
209fcc901c10bffdfb9c6b31e676dec36b47d949979John Spurlock                    mWifiStrengthId));
2102e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson
211061d43c2386dd8222448bb1bec017bf9a2367a4eAndrew Flynn        if (mMobileVisible && !mIsAirplaneMode) {
21228f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler            mMobile.setImageResource(mMobileStrengthId);
21328f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler            mMobileType.setImageResource(mMobileTypeId);
214bcf6ef0b82c1daea43e03b8ad5af319ed324242aDaniel Sandler            mMobileGroup.setContentDescription(mMobileTypeDescription + " " + mMobileDescription);
215cda096ebf3fac67daf36e775547c2a337374927bFabrice Di Meglio            mMobileGroup.setVisibility(View.VISIBLE);
2162e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson        } else {
2172e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson            mMobileGroup.setVisibility(View.GONE);
2182e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson        }
21928f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler
220061d43c2386dd8222448bb1bec017bf9a2367a4eAndrew Flynn        if (mIsAirplaneMode) {
221061d43c2386dd8222448bb1bec017bf9a2367a4eAndrew Flynn            mAirplane.setImageResource(mAirplaneIconId);
2228afcd149970c79054a3a16377834aa0aec35eee0Fabrice Di Meglio            mAirplane.setVisibility(View.VISIBLE);
223061d43c2386dd8222448bb1bec017bf9a2367a4eAndrew Flynn        } else {
224061d43c2386dd8222448bb1bec017bf9a2367a4eAndrew Flynn            mAirplane.setVisibility(View.GONE);
225061d43c2386dd8222448bb1bec017bf9a2367a4eAndrew Flynn        }
226061d43c2386dd8222448bb1bec017bf9a2367a4eAndrew Flynn
2275172dc2f36f9c417befd0957ce2ae20f9d083a88Jorim Jaggi        if (mIsAirplaneMode && mWifiVisible) {
2285172dc2f36f9c417befd0957ce2ae20f9d083a88Jorim Jaggi            mWifiAirplaneSpacer.setVisibility(View.VISIBLE);
2295ccff81a642844138b144ad2cc339eba188812a0Daniel Sandler        } else {
2305172dc2f36f9c417befd0957ce2ae20f9d083a88Jorim Jaggi            mWifiAirplaneSpacer.setVisibility(View.GONE);
2315ccff81a642844138b144ad2cc339eba188812a0Daniel Sandler        }
2325ccff81a642844138b144ad2cc339eba188812a0Daniel Sandler
233cd686b5b6d4166b510df8e32138479a9559bc117John Spurlock        if (DEBUG) Log.d(TAG,
234fcc901c10bffdfb9c6b31e676dec36b47d949979John Spurlock                String.format("mobile: %s sig=%d typ=%d",
23528f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler                    (mMobileVisible ? "VISIBLE" : "GONE"),
236fcc901c10bffdfb9c6b31e676dec36b47d949979John Spurlock                    mMobileStrengthId, mMobileTypeId));
23728f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler
23814339c9edc2675d4757d572006625c2641db5653John Spurlock        mMobileType.setVisibility(!mWifiVisible || mRoaming ? View.VISIBLE : View.GONE);
2392e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson    }
2402e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson}
2412e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson
242