Pull the carrier name display in the windowshade out into its own view.

Change-Id: I76ea5e72288245b69273c76a470b54eaec890361
This commit is contained in:
Joe Onorato
2010-06-01 08:18:17 -07:00
parent 1a86dd10c1
commit c91460d2c3
3 changed files with 122 additions and 65 deletions

View File

@@ -33,7 +33,7 @@
android:paddingRight="3dp"
android:background="@drawable/shade_header_background"
>
<LinearLayout
<com.android.systemui.statusbar.CarrierLabel
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
@@ -41,25 +41,10 @@
android:layout_marginLeft="5dp"
android:layout_gravity="center_vertical"
android:paddingBottom="1dp"
android:orientation="vertical"
>
<TextView android:id="@+id/plmnLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="?android:attr/textColorSecondary"
android:paddingLeft="4dp"
/>
<TextView android:id="@+id/spnLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="?android:attr/textColorSecondary"
android:paddingLeft="4dp"
/>
</LinearLayout>
android:paddingLeft="4dp"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="?android:attr/textColorSecondary"
/>
<TextView android:id="@+id/clear_all_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"

View File

@@ -0,0 +1,117 @@
/*
* Copyright (C) 2006 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.systemui.statusbar;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.provider.Telephony;
import android.util.AttributeSet;
import android.util.Slog;
import android.view.View;
import android.widget.TextView;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.TimeZone;
import com.android.internal.R;
/**
* This widget display an analogic clock with two hands for hours and
* minutes.
*/
public class CarrierLabel extends TextView {
private boolean mAttached;
public CarrierLabel(Context context) {
this(context, null);
}
public CarrierLabel(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public CarrierLabel(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
updateNetworkName(false, null, false, null);
}
@Override
protected void onAttachedToWindow() {
super.onAttachedToWindow();
if (!mAttached) {
mAttached = true;
IntentFilter filter = new IntentFilter();
filter.addAction(Telephony.Intents.SPN_STRINGS_UPDATED_ACTION);
getContext().registerReceiver(mIntentReceiver, filter, null, getHandler());
}
}
@Override
protected void onDetachedFromWindow() {
super.onDetachedFromWindow();
if (mAttached) {
getContext().unregisterReceiver(mIntentReceiver);
mAttached = false;
}
}
private final BroadcastReceiver mIntentReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (Telephony.Intents.SPN_STRINGS_UPDATED_ACTION.equals(action)) {
updateNetworkName(intent.getBooleanExtra(Telephony.Intents.EXTRA_SHOW_SPN, false),
intent.getStringExtra(Telephony.Intents.EXTRA_SPN),
intent.getBooleanExtra(Telephony.Intents.EXTRA_SHOW_PLMN, false),
intent.getStringExtra(Telephony.Intents.EXTRA_PLMN));
}
}
};
void updateNetworkName(boolean showSpn, String spn, boolean showPlmn, String plmn) {
if (false) {
Slog.d("CarrierLabel", "updateNetworkName showSpn=" + showSpn + " spn=" + spn
+ " showPlmn=" + showPlmn + " plmn=" + plmn);
}
StringBuilder str = new StringBuilder();
boolean something = false;
if (showPlmn && plmn != null) {
str.append(plmn);
something = true;
}
if (showSpn && spn != null) {
if (something) {
str.append(' ');
}
str.append(spn);
something = true;
}
if (something) {
setText(str.toString());
} else {
setText(com.android.internal.R.string.lockscreen_carrier_default);
}
}
}

View File

@@ -43,7 +43,6 @@ import android.os.Binder;
import android.os.Handler;
import android.os.Message;
import android.os.SystemClock;
import android.provider.Telephony;
import android.util.Slog;
import android.view.Display;
import android.view.Gravity;
@@ -138,8 +137,6 @@ public class PhoneStatusBarService extends StatusBarService {
View mExpandedContents;
// top bar
TextView mNoNotificationsTitle;
TextView mSpnLabel;
TextView mPlmnLabel;
TextView mClearButton;
// drag bar
CloseDragHandle mCloseView;
@@ -246,8 +243,6 @@ public class PhoneStatusBarService extends StatusBarService {
mNoNotificationsTitle = (TextView)expanded.findViewById(R.id.noNotificationsTitle);
mClearButton = (TextView)expanded.findViewById(R.id.clear_all_button);
mClearButton.setOnClickListener(mClearButtonListener);
mSpnLabel = (TextView)expanded.findViewById(R.id.spnLabel);
mPlmnLabel = (TextView)expanded.findViewById(R.id.plmnLabel);
mScrollView = (ScrollView)expanded.findViewById(R.id.scroll);
mNotificationLinearLayout = expanded.findViewById(R.id.notificationLinearLayout);
@@ -276,18 +271,11 @@ public class PhoneStatusBarService extends StatusBarService {
setAreThereNotifications();
mDateView.setVisibility(View.INVISIBLE);
// before we register for broadcasts
mPlmnLabel.setText(com.android.internal.R.string.lockscreen_carrier_default);
mPlmnLabel.setVisibility(View.VISIBLE);
mSpnLabel.setText("");
mSpnLabel.setVisibility(View.GONE);
// receive broadcasts
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_CONFIGURATION_CHANGED);
filter.addAction(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
filter.addAction(Intent.ACTION_SCREEN_OFF);
filter.addAction(Telephony.Intents.SPN_STRINGS_UPDATED_ACTION);
context.registerReceiver(mBroadcastReceiver, filter);
}
@@ -1372,45 +1360,12 @@ public class PhoneStatusBarService extends StatusBarService {
|| Intent.ACTION_SCREEN_OFF.equals(action)) {
//collapse();
}
else if (Telephony.Intents.SPN_STRINGS_UPDATED_ACTION.equals(action)) {
updateNetworkName(intent.getBooleanExtra(Telephony.Intents.EXTRA_SHOW_SPN, false),
intent.getStringExtra(Telephony.Intents.EXTRA_SPN),
intent.getBooleanExtra(Telephony.Intents.EXTRA_SHOW_PLMN, false),
intent.getStringExtra(Telephony.Intents.EXTRA_PLMN));
}
else if (Intent.ACTION_CONFIGURATION_CHANGED.equals(action)) {
updateResources();
}
}
};
void updateNetworkName(boolean showSpn, String spn, boolean showPlmn, String plmn) {
if (false) {
Slog.d(TAG, "updateNetworkName showSpn=" + showSpn + " spn=" + spn
+ " showPlmn=" + showPlmn + " plmn=" + plmn);
}
boolean something = false;
if (showPlmn) {
mPlmnLabel.setVisibility(View.VISIBLE);
if (plmn != null) {
mPlmnLabel.setText(plmn);
} else {
mPlmnLabel.setText(com.android.internal.R.string.lockscreen_carrier_default);
}
} else {
mPlmnLabel.setText("");
mPlmnLabel.setVisibility(View.GONE);
}
if (showSpn && spn != null) {
mSpnLabel.setText(spn);
mSpnLabel.setVisibility(View.VISIBLE);
something = true;
} else {
mSpnLabel.setText("");
mSpnLabel.setVisibility(View.GONE);
}
}
/**
* Reload some of our resources when the configuration changes.
*