1c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato/* 2c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato * Copyright (C) 2006 The Android Open Source Project 3c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato * 4c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato * Licensed under the Apache License, Version 2.0 (the "License"); 5c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato * you may not use this file except in compliance with the License. 6c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato * You may obtain a copy of the License at 7c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato * 8c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato * http://www.apache.org/licenses/LICENSE-2.0 9c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato * 10c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato * Unless required by applicable law or agreed to in writing, software 11c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato * distributed under the License is distributed on an "AS IS" BASIS, 12c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato * See the License for the specific language governing permissions and 14c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato * limitations under the License. 15c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato */ 16c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato 17fd52b18d9bf3cd62c7a07058536e9f97db65beeaJoe Onoratopackage com.android.systemui.statusbar.phone; 18c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato 19c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onoratoimport android.content.BroadcastReceiver; 20c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onoratoimport android.content.Context; 21c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onoratoimport android.content.Intent; 22c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onoratoimport android.content.IntentFilter; 2318ac7826ae037990551e8dae6870affaaca0599fDaniel Sandlerimport android.text.TextUtils; 24c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onoratoimport android.util.AttributeSet; 25c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onoratoimport android.util.Slog; 26c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onoratoimport android.view.View; 27c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onoratoimport android.widget.TextView; 28c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato 29a639b311e93ad14d9ee5c2b2c215ed2d86c32d2aWink Savilleimport com.android.internal.telephony.TelephonyIntents; 30a639b311e93ad14d9ee5c2b2c215ed2d86c32d2aWink Saville 31c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onoratoimport java.text.SimpleDateFormat; 32c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onoratoimport java.util.Calendar; 33c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onoratoimport java.util.TimeZone; 34c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato 35c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onoratoimport com.android.internal.R; 36c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato 37c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato/** 38c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato * This widget display an analogic clock with two hands for hours and 39c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato * minutes. 40c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato */ 41c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onoratopublic class CarrierLabel extends TextView { 42c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato private boolean mAttached; 43c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato 44c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato public CarrierLabel(Context context) { 45c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato this(context, null); 46c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato } 47c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato 48c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato public CarrierLabel(Context context, AttributeSet attrs) { 49c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato this(context, attrs, 0); 50c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato } 51c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato 52c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato public CarrierLabel(Context context, AttributeSet attrs, int defStyle) { 53c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato super(context, attrs, defStyle); 54c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato updateNetworkName(false, null, false, null); 55c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato } 56c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato 57c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato @Override 58c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato protected void onAttachedToWindow() { 59c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato super.onAttachedToWindow(); 60c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato 61c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato if (!mAttached) { 62c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato mAttached = true; 63c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato IntentFilter filter = new IntentFilter(); 64a639b311e93ad14d9ee5c2b2c215ed2d86c32d2aWink Saville filter.addAction(TelephonyIntents.SPN_STRINGS_UPDATED_ACTION); 65c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato getContext().registerReceiver(mIntentReceiver, filter, null, getHandler()); 66c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato } 67c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato } 68c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato 69c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato @Override 70c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato protected void onDetachedFromWindow() { 71c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato super.onDetachedFromWindow(); 72c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato if (mAttached) { 73c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato getContext().unregisterReceiver(mIntentReceiver); 74c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato mAttached = false; 75c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato } 76c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato } 77c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato 78c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato private final BroadcastReceiver mIntentReceiver = new BroadcastReceiver() { 79c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato @Override 80c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato public void onReceive(Context context, Intent intent) { 81c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato String action = intent.getAction(); 82a639b311e93ad14d9ee5c2b2c215ed2d86c32d2aWink Saville if (TelephonyIntents.SPN_STRINGS_UPDATED_ACTION.equals(action)) { 83a639b311e93ad14d9ee5c2b2c215ed2d86c32d2aWink Saville updateNetworkName(intent.getBooleanExtra(TelephonyIntents.EXTRA_SHOW_SPN, false), 84a639b311e93ad14d9ee5c2b2c215ed2d86c32d2aWink Saville intent.getStringExtra(TelephonyIntents.EXTRA_SPN), 85a639b311e93ad14d9ee5c2b2c215ed2d86c32d2aWink Saville intent.getBooleanExtra(TelephonyIntents.EXTRA_SHOW_PLMN, false), 86a639b311e93ad14d9ee5c2b2c215ed2d86c32d2aWink Saville intent.getStringExtra(TelephonyIntents.EXTRA_PLMN)); 87c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato } 88c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato } 89c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato }; 90c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato 91c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato void updateNetworkName(boolean showSpn, String spn, boolean showPlmn, String plmn) { 92c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato if (false) { 93c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato Slog.d("CarrierLabel", "updateNetworkName showSpn=" + showSpn + " spn=" + spn 94c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato + " showPlmn=" + showPlmn + " plmn=" + plmn); 95c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato } 9618ac7826ae037990551e8dae6870affaaca0599fDaniel Sandler final String str; 9718ac7826ae037990551e8dae6870affaaca0599fDaniel Sandler // match logic in KeyguardStatusViewManager 9818ac7826ae037990551e8dae6870affaaca0599fDaniel Sandler final boolean plmnValid = showPlmn && !TextUtils.isEmpty(plmn); 9918ac7826ae037990551e8dae6870affaaca0599fDaniel Sandler final boolean spnValid = showSpn && !TextUtils.isEmpty(spn); 10018ac7826ae037990551e8dae6870affaaca0599fDaniel Sandler if (plmnValid && spnValid) { 10118ac7826ae037990551e8dae6870affaaca0599fDaniel Sandler str = plmn + "|" + spn; 10218ac7826ae037990551e8dae6870affaaca0599fDaniel Sandler } else if (plmnValid) { 10318ac7826ae037990551e8dae6870affaaca0599fDaniel Sandler str = plmn; 10418ac7826ae037990551e8dae6870affaaca0599fDaniel Sandler } else if (spnValid) { 10518ac7826ae037990551e8dae6870affaaca0599fDaniel Sandler str = spn; 106c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato } else { 10718ac7826ae037990551e8dae6870affaaca0599fDaniel Sandler str = ""; 108c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato } 10918ac7826ae037990551e8dae6870affaaca0599fDaniel Sandler setText(str); 110c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato } 111c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato 112a639b311e93ad14d9ee5c2b2c215ed2d86c32d2aWink Saville 113c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato} 114c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato 115c91460d2c3a6ad51cdc455abcc540bf887bc6785Joe Onorato 116