diff options
author | Thomas Schachtner <thomas.schachtner@gmail.com> | 2011-08-06 00:42:49 +0200 |
---|---|---|
committer | Steve Kondik <shade@chemlab.org> | 2011-10-28 21:33:31 -0700 |
commit | 2ce85e989e66da91dc3c082fbe9bdf030fbd20f5 (patch) | |
tree | 960cf3edc60ca6b7af530c1a40ae62d16627a76c /packages | |
parent | 8c556d9f4d2e561fb2ab730498dafc94b0e8679c (diff) | |
download | frameworks_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.java | 72 | ||||
-rw-r--r-- | packages/SystemUI/src/com/android/systemui/statusbar/StatusBarPolicy.java | 48 |
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); } } |