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