add am_pm statusbar clock choice to toolbox
Change-Id: Ib4d63f6218ccec553415139ebaf5d35ee4bca7a2
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index b5211d4..c2ee1a6 100644
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -2374,6 +2374,15 @@
*/
public static final String STATUSBAR_BATT_STYLE = "statusbar_batt_style";
+ /**
+ * Statusbar clock am/pm style
+ * 0 - Normal
+ * 1 - Small
+ * 2 - Gone
+ * @hide
+ */
+ public static final String STATUSBAR_CLOCK_AM_PM_STYLE = "statusbar_clock_am_pm_style";
+
/**
* Show or hide power menu options
* 1 = hide reboot menu
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/Clock.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/Clock.java
index bff6cda..94181d0 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/Clock.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/Clock.java
@@ -17,14 +17,19 @@
package com.android.systemui.statusbar.policy;
import android.content.BroadcastReceiver;
+import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.res.Resources;
import android.content.res.TypedArray;
+import android.database.ContentObserver;
import android.graphics.Canvas;
import android.graphics.Typeface;
import android.graphics.drawable.Drawable;
+import android.net.Uri;
+import android.os.Handler;
+import android.provider.Settings;
import android.text.Spannable;
import android.text.SpannableStringBuilder;
import android.text.format.DateFormat;
@@ -56,6 +61,9 @@
private String mClockFormatString;
private SimpleDateFormat mClockFormat;
private Locale mLocale;
+ private int mAmPmStyle;
+ private SettingsObserver mObserver = null;
+ private ContentResolver mCr;
private static final int AM_PM_STYLE_NORMAL = 0;
private static final int AM_PM_STYLE_SMALL = 1;
@@ -79,6 +87,9 @@
protected void onAttachedToWindow() {
super.onAttachedToWindow();
+ mCr = getContext().getContentResolver();
+ updateAmPm(); //Initialize mAmPmStyle
+
if (!mAttached) {
mAttached = true;
IntentFilter filter = new IntentFilter();
@@ -90,6 +101,9 @@
filter.addAction(Intent.ACTION_USER_SWITCHED);
getContext().registerReceiver(mIntentReceiver, filter, null, getHandler());
+
+ mObserver = new SettingsObserver(getHandler());
+ mObserver.observe();
}
// NOTE: It's safe to do these after registering the receiver since the receiver always runs
@@ -107,6 +121,8 @@
super.onDetachedFromWindow();
if (mAttached) {
getContext().unregisterReceiver(mIntentReceiver);
+ mObserver.stop();
+ mObserver = null;
mAttached = false;
}
}
@@ -137,6 +153,7 @@
setText(getSmallTime());
}
+
private final CharSequence getSmallTime() {
Context context = getContext();
boolean is24 = DateFormat.is24HourFormat(context);
@@ -153,7 +170,7 @@
* add dummy characters around it to let us find it again after
* formatting and change its size.
*/
- if (AM_PM_STYLE != AM_PM_STYLE_NORMAL) {
+ if (mAmPmStyle != AM_PM_STYLE_NORMAL) {
int a = -1;
boolean quoted = false;
for (int i = 0; i < format.length(); i++) {
@@ -185,15 +202,15 @@
}
String result = sdf.format(mCalendar.getTime());
- if (AM_PM_STYLE != AM_PM_STYLE_NORMAL) {
+ if (mAmPmStyle != AM_PM_STYLE_NORMAL) {
int magic1 = result.indexOf(MAGIC1);
int magic2 = result.indexOf(MAGIC2);
if (magic1 >= 0 && magic2 > magic1) {
SpannableStringBuilder formatted = new SpannableStringBuilder(result);
- if (AM_PM_STYLE == AM_PM_STYLE_GONE) {
+ if (mAmPmStyle == AM_PM_STYLE_GONE) {
formatted.delete(magic1, magic2+1);
} else {
- if (AM_PM_STYLE == AM_PM_STYLE_SMALL) {
+ if (mAmPmStyle == AM_PM_STYLE_SMALL) {
CharacterStyle style = new RelativeSizeSpan(0.7f);
formatted.setSpan(style, magic1, magic2,
Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
@@ -208,5 +225,45 @@
return result;
}
+
+ private class SettingsObserver extends ContentObserver {
+ public SettingsObserver(Handler handler) {
+ super(handler);
+ }
+
+ public void observe() {
+ mCr.registerContentObserver(Settings.System.getUriFor(
+ Settings.System.STATUSBAR_CLOCK_AM_PM_STYLE), false, this);
+ mCr.registerContentObserver(Settings.System.getUriFor(
+ Settings.System.DISABLE_TOOLBOX), false, this);
+ }
+
+ public void stop() {
+ mCr.unregisterContentObserver(this);
+ }
+
+ @Override
+ public void onChange(boolean selfChange) {
+ onChange(selfChange, null);
+ }
+
+ @Override
+ public void onChange(boolean selfChange, Uri uri) {
+ updateAmPm();
+ updateClock();
+ }
+ }
+
+ private void updateAmPm() {
+ if (Settings.System.getInt(mCr, Settings.System.DISABLE_TOOLBOX, 0) != 1) {
+ mAmPmStyle = Settings.System.getInt(mCr,
+ Settings.System.STATUSBAR_CLOCK_AM_PM_STYLE, AM_PM_STYLE);
+ } else {
+ mAmPmStyle = AM_PM_STYLE;
+ }
+ mClockFormatString = "";
+ }
+
+
}