summaryrefslogtreecommitdiffstats
path: root/packages
diff options
context:
space:
mode:
authorThomas Schachtner <thomas.schachtner@gmail.com>2011-08-06 00:42:49 +0200
committerSteve Kondik <shade@chemlab.org>2011-10-28 21:33:31 -0700
commit2ce85e989e66da91dc3c082fbe9bdf030fbd20f5 (patch)
tree960cf3edc60ca6b7af530c1a40ae62d16627a76c /packages
parent8c556d9f4d2e561fb2ab730498dafc94b0e8679c (diff)
downloadframeworks_base-2ce85e989e66da91dc3c082fbe9bdf030fbd20f5.zip
frameworks_base-2ce85e989e66da91dc3c082fbe9bdf030fbd20f5.tar.gz
frameworks_base-2ce85e989e66da91dc3c082fbe9bdf030fbd20f5.tar.bz2
hiding dBm display when in airplane mode
showing -oo (infinity) when no signal Change-Id: I59242a960326e7e6d4518db2ec7140370f14590b
Diffstat (limited to 'packages')
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/CmSignalText.java72
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/StatusBarPolicy.java48
2 files changed, 87 insertions, 33 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/CmSignalText.java b/packages/SystemUI/src/com/android/systemui/statusbar/CmSignalText.java
index b1ab86d..d70e1cb 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/CmSignalText.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/CmSignalText.java
@@ -32,6 +32,7 @@ import android.text.style.RelativeSizeSpan;
import android.util.AttributeSet;
import android.view.View;
import android.widget.TextView;
+import com.android.systemui.R;
import java.util.Calendar;
import java.util.TimeZone;
@@ -54,6 +55,8 @@ public class CmSignalText extends TextView {
private static int style;
+ private int mPhoneState;
+
Handler mHandler;
public CmSignalText(Context context) {
@@ -61,12 +64,29 @@ public class CmSignalText extends TextView {
}
+ private boolean mPhoneSignalHidden;
+
public CmSignalText(Context context, AttributeSet attrs) {
super(context, attrs);
mHandler = new Handler();
SettingsObserver settingsObserver = new SettingsObserver(mHandler);
settingsObserver.observe();
+ // load config to determine if CmSignalText should be hidden
+ try {
+ mPhoneSignalHidden = context.getResources().getBoolean(
+ R.bool.config_statusbar_hide_phone_signal);
+ } catch (Exception e) {
+ mPhoneSignalHidden = false;
+ }
+
+ // hide phone_signal icon if hidden
+ if (mPhoneSignalHidden) {
+ this.setVisibility(GONE);
+ } else {
+ this.setVisibility(VISIBLE);
+ }
+
updateSettings();
}
@@ -97,6 +117,7 @@ public class CmSignalText extends TextView {
String action = intent.getAction();
if (action.equals(Intent.ACTION_SIGNAL_DBM_CHANGED)) {
dBm = intent.getIntExtra("dbm", 0);
+ mPhoneState = intent.getIntExtra("signal_status", StatusBarPolicy.PHONE_SIGNAL_IS_NORMAL);
}
updateSettings();
}
@@ -120,35 +141,60 @@ public class CmSignalText extends TextView {
}
}
+ private String getSignalLevelString(int dBm) {
+ if (mPhoneState == StatusBarPolicy.PHONE_SIGNAL_IS_NULL || dBm == 0) {
+ return "-\u221e"; // -oo ('minus infinity')
+ }
+ return Integer.toString(dBm);
+ }
+
private void updateSettings() {
updateSignalText();
-
}
final void updateSignalText() {
style = Settings.System.getInt(getContext().getContentResolver(),
Settings.System.STATUS_BAR_CM_SIGNAL_TEXT, STYLE_HIDE);
- if (style == STYLE_SHOW) {
- this.setVisibility(View.VISIBLE);
-
- String result = Integer.toString(dBm);
-
- setText(result + " ");
+ if (mPhoneState == StatusBarPolicy.PHONE_SIGNAL_IS_AIRPLANE_MODE) {
+ setVisibility(View.GONE);
+ } else if (style == STYLE_SHOW) {
+ setVisibility(View.VISIBLE);
+ setText(getSignalLevelString(dBm) + " ");
} else if (style == STYLE_SHOW_DBM) {
- this.setVisibility(View.VISIBLE);
-
- String result = Integer.toString(dBm) + " dBm ";
-
+ String result = getSignalLevelString(dBm) + " dBm";
SpannableStringBuilder formatted = new SpannableStringBuilder(result);
int start = result.indexOf("d");
-
CharacterStyle style = new RelativeSizeSpan(0.7f);
formatted.setSpan(style, start, start + 3, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
+ setVisibility(View.VISIBLE);
setText(formatted);
} else {
- this.setVisibility(View.GONE);
+ setVisibility(View.GONE);
}
}
+
+ /*
+ * Phone listener to update signal information
+ */
+ private PhoneStateListener mPhoneStateListener = new PhoneStateListener() {
+ @Override
+ public void onSignalStrengthsChanged(SignalStrength signalStrength) {
+ if (signalStrength != null) {
+ ASU = signalStrength.getGsmSignalStrength();
+ dBm = -113 + (2 * ASU);
+ } else {
+ // When signal strenth is null, let's set the values below to zero,
+ // this showns then -oo in the status bar display
+ ASU = 0;
+ dBm = 0;
+ }
+
+ // update text if it's visible
+ if (mAttached) {
+ updateSignalText();
+ }
+ }
+ };
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarPolicy.java b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarPolicy.java
index c4dcfff..ec572e7 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarPolicy.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarPolicy.java
@@ -117,6 +117,9 @@ public class StatusBarPolicy {
// phone
private TelephonyManager mPhone;
private int mPhoneSignalIconId;
+ public static final int PHONE_SIGNAL_IS_AIRPLANE_MODE = 1;
+ public static final int PHONE_SIGNAL_IS_NULL = 2;
+ public static final int PHONE_SIGNAL_IS_NORMAL = 0;
//***** Signal strength icons
//GSM/UMTS
@@ -672,9 +675,7 @@ public class StatusBarPolicy {
}
// hide phone_signal icon if hidden
- if (mPhoneSignalHidden) {
- mService.setIconVisibility("phone_signal", false);
- }
+ mService.setIconVisibility("phone_signal", !mPhoneSignalHidden && !mShowCmSignal);
// register for phone state notifications.
((TelephonyManager)mContext.getSystemService(Context.TELEPHONY_SERVICE))
@@ -1128,12 +1129,6 @@ public class StatusBarPolicy {
}
private final void updateSignalStrength() {
- updateSignalStrengthDbm();
- if (mShowCmSignal) {
- mService.setIconVisibility("phone_signal", false);
- return;
- }
-
int iconLevel = -1;
int[] iconList;
@@ -1143,14 +1138,26 @@ public class StatusBarPolicy {
if (Settings.System.getInt(mContext.getContentResolver(),
Settings.System.AIRPLANE_MODE_ON, 0) == 1) {
mPhoneSignalIconId = R.drawable.stat_sys_signal_flightmode;
+ updateSignalStrengthDbm(PHONE_SIGNAL_IS_AIRPLANE_MODE);
+ // show the icon depening on mPhoneSignalHidden (and regardless of
+ // the value of CmShowCmSignal)
+ mService.setIconVisibility("phone_signal", !mPhoneSignalHidden);
} else {
mPhoneSignalIconId = R.drawable.stat_sys_signal_null;
+ updateSignalStrengthDbm(PHONE_SIGNAL_IS_NULL);
+ // set phone_signal visibility false if hidden
+ // and hide it if CmSignalText is used
+ mService.setIconVisibility("phone_signal", !mPhoneSignalHidden && !mShowCmSignal);
}
mService.setIcon("phone_signal", mPhoneSignalIconId, 0);
- // set phone_signal visibility false if hidden
- if (mPhoneSignalHidden) {
- mService.setIconVisibility("phone_signal", false);
- }
+ return;
+ }
+
+ // calculate and update the dBm value of the signal strength
+ updateSignalStrengthDbm(PHONE_SIGNAL_IS_NORMAL);
+ if (mShowCmSignal) {
+ // if we show the dBm value, hide the standard icon and quit this method.
+ mService.setIconVisibility("phone_signal", false);
return;
}
@@ -1255,7 +1262,7 @@ public class StatusBarPolicy {
return (levelEvdoDbm < levelEvdoSnr) ? levelEvdoDbm : levelEvdoSnr;
}
- public void updateSignalStrengthDbm() {
+ public void updateSignalStrengthDbm(int phoneSignalStatus) {
int dBm = -1;
if(!mSignalStrength.isGsm()) {
@@ -1270,6 +1277,7 @@ public class StatusBarPolicy {
Intent dbmIntent = new Intent(Intent.ACTION_SIGNAL_DBM_CHANGED);
dbmIntent.putExtra("dbm", dBm);
+ dbmIntent.putExtra("signal_status", phoneSignalStatus);
mContext.sendBroadcast(dbmIntent);
}
@@ -1648,7 +1656,7 @@ public class StatusBarPolicy {
}
}
- private void updateSettings(){
+ private void updateSettings() {
ContentResolver resolver = mContext.getContentResolver();
int statusBarBattery = Settings.System.getInt(resolver,
@@ -1661,13 +1669,13 @@ public class StatusBarPolicy {
mService.setIconVisibility("battery", false);
}
- //0 will hide the cmsignaltext and show the signal bars
- mShowCmSignal = Settings.System.getInt(mContext.getContentResolver(),
- Settings.System.STATUS_BAR_CM_SIGNAL_TEXT, 0) != 0;
- mService.setIconVisibility("phone_signal", !mShowCmSignal);
-
mShowHeadset = (Settings.System.getInt(resolver,
Settings.System.STATUS_BAR_HEADSET, 1) == 1);
mService.setIconVisibility("headset", mShowHeadset && mHeadsetPlugged);
+
+ // 0 will hide the cmsignaltext and show the signal bars
+ mShowCmSignal = Settings.System.getInt(mContext.getContentResolver(),
+ Settings.System.STATUS_BAR_CM_SIGNAL_TEXT, 0) != 0;
+ mService.setIconVisibility("phone_signal", !mPhoneSignalHidden && !mShowCmSignal);
}
}