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