SignalClusterView.java revision 28f89d40ee7bab93cf7b783f92dbb18bdc43e473
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;
2128f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandlerimport android.util.Slog;
222e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertsonimport android.view.View;
232e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertsonimport android.view.ViewGroup;
242e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertsonimport android.widget.ImageView;
252e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertsonimport android.widget.LinearLayout;
262e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertsonimport android.widget.TextView;
272e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson
282e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertsonimport com.android.systemui.statusbar.policy.NetworkController;
292e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson
302e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertsonimport com.android.systemui.R;
312e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson
322e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertsonpublic class SignalClusterView
332e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson        extends LinearLayout
342e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson        implements NetworkController.SignalCluster {
352e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson
3628f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler    static final boolean DEBUG = false;
3728f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler    static final String TAG = "SignalClusterView";
3828f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler
392e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson    NetworkController mNC;
402e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson
4128f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler    private boolean mWifiVisible = false;
4228f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler    private int mWifiStrengthId = 0, mWifiActivityId = 0;
4328f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler    private boolean mMobileVisible = false;
4428f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler    private int mMobileStrengthId = 0, mMobileActivityId = 0, mMobileTypeId = 0;
4528f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler
462e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson    ViewGroup mWifiGroup, mMobileGroup;
472e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson    ImageView mWifi, mMobile, mWifiActivity, mMobileActivity, mMobileType;
482e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson
492e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson    public SignalClusterView(Context context) {
502e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson        this(context, null);
512e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson    }
522e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson
532e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson    public SignalClusterView(Context context, AttributeSet attrs) {
542e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson        this(context, attrs, 0);
552e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson    }
562e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson
572e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson    public SignalClusterView(Context context, AttributeSet attrs, int defStyle) {
582e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson        super(context, attrs, defStyle);
592e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson    }
602e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson
612e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson    public void setNetworkController(NetworkController nc) {
6228f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler        if (DEBUG) Slog.d(TAG, "NetworkController=" + nc);
632e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson        mNC = nc;
642e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson    }
652e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson
662e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson    @Override
672e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson    protected void onAttachedToWindow() {
682e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson        super.onAttachedToWindow();
692e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson
702e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson        mWifiGroup      = (ViewGroup) findViewById(R.id.wifi_combo);
712e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson        mWifi           = (ImageView) findViewById(R.id.wifi_signal);
722e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson        mWifiActivity   = (ImageView) findViewById(R.id.wifi_inout);
732e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson        mMobileGroup    = (ViewGroup) findViewById(R.id.mobile_combo);
742e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson        mMobile         = (ImageView) findViewById(R.id.mobile_signal);
752e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson        mMobileActivity = (ImageView) findViewById(R.id.mobile_inout);
762e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson        mMobileType     = (ImageView) findViewById(R.id.mobile_type);
7728f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler
7828f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler        apply();
792e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson    }
802e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson
812e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson    @Override
822e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson    protected void onDetachedFromWindow() {
8328f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler        mWifiGroup      = null;
8428f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler        mWifi           = null;
8528f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler        mWifiActivity   = null;
8628f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler        mMobileGroup    = null;
8728f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler        mMobile         = null;
8828f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler        mMobileActivity = null;
8928f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler        mMobileType     = null;
9028f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler
912e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson        super.onDetachedFromWindow();
922e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson    }
932e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson
942e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson    public void setWifiIndicators(boolean visible, int strengthIcon, int activityIcon) {
9528f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler        mWifiVisible = visible;
9628f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler        mWifiStrengthId = strengthIcon;
9728f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler        mWifiActivityId = activityIcon;
9828f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler
9928f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler        apply();
10028f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler    }
10128f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler
10228f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler    public void setMobileDataIndicators(boolean visible, int strengthIcon, int activityIcon,
10328f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler            int typeIcon) {
10428f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler        mMobileVisible = visible;
10528f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler        mMobileStrengthId = strengthIcon;
10628f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler        mMobileActivityId = activityIcon;
10728f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler        mMobileTypeId = typeIcon;
10828f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler
10928f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler        apply();
11028f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler    }
11128f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler
11228f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler    // Run after each indicator change.
11328f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler    private void apply() {
1142e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson        if (mWifiGroup == null) return;
1152e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson
11628f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler        if (mWifiVisible) {
1172e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson            mWifiGroup.setVisibility(View.VISIBLE);
11828f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler            mWifi.setImageResource(mWifiStrengthId);
11928f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler            mWifiActivity.setImageResource(mWifiActivityId);
1202e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson        } else {
1212e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson            mWifiGroup.setVisibility(View.GONE);
1222e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson        }
1232e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson
12428f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler        if (DEBUG) Slog.d(TAG,
12528f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler                String.format("wifi: %s sig=%d act=%d",
12628f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler                    (mWifiVisible ? "VISIBLE" : "GONE"),
12728f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler                    mWifiStrengthId, mWifiActivityId));
1282e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson
12928f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler        if (mMobileVisible) {
1302e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson            mMobileGroup.setVisibility(View.VISIBLE);
13128f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler            mMobile.setImageResource(mMobileStrengthId);
13228f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler            mMobileActivity.setImageResource(mMobileActivityId);
13328f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler            mMobileType.setImageResource(mMobileTypeId);
1342e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson        } else {
1352e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson            mMobileGroup.setVisibility(View.GONE);
1362e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson        }
13728f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler
13828f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler        if (DEBUG) Slog.d(TAG,
13928f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler                String.format("mobile: %s sig=%d act=%d typ=%d",
14028f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler                    (mMobileVisible ? "VISIBLE" : "GONE"),
14128f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler                    mMobileStrengthId, mMobileActivityId, mMobileTypeId));
14228f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler
14328f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler        mMobileType.setVisibility(
14428f89d40ee7bab93cf7b783f92dbb18bdc43e473Daniel Sandler                !mWifiVisible ? View.VISIBLE : View.GONE);
1452e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson    }
1462e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson}
1472e347429dfcd03b0827c7506ba6305ab0d1f4951Christian Robertson
148