Loading core/java/android/service/notification/ZenModeConfig.java +48 −23 Original line number Diff line number Diff line Loading @@ -41,6 +41,7 @@ import org.xmlpull.v1.XmlSerializer; import java.io.IOException; import java.util.ArrayList; import java.util.Calendar; import java.util.GregorianCalendar; import java.util.Locale; import java.util.Objects; import java.util.UUID; Loading Loading @@ -68,6 +69,7 @@ public class ZenModeConfig implements Parcelable { public static final int[] MINUTE_BUCKETS = generateMinuteBuckets(); private static final int SECONDS_MS = 1000; private static final int MINUTES_MS = 60 * SECONDS_MS; private static final int DAY_MINUTES = 24 * 60; private static final int ZERO_VALUE_MS = 10 * SECONDS_MS; private static final boolean DEFAULT_ALLOW_CALLS = true; Loading Loading @@ -652,40 +654,68 @@ public class ZenModeConfig implements Parcelable { boolean shortVersion) { final long now = System.currentTimeMillis(); final long millis = minutesFromNow == 0 ? ZERO_VALUE_MS : minutesFromNow * MINUTES_MS; return toTimeCondition(context, now + millis, minutesFromNow, now, userHandle, shortVersion); return toTimeCondition(context, now + millis, minutesFromNow, userHandle, shortVersion); } public static Condition toTimeCondition(Context context, long time, int minutes, long now, public static Condition toTimeCondition(Context context, long time, int minutes, int userHandle, boolean shortVersion) { final int num, summaryResId, line1ResId; final int num; String summary, line1, line2; final CharSequence formattedTime = getFormattedTime(context, time, userHandle); final Resources res = context.getResources(); if (minutes < 60) { // display as minutes num = minutes; summaryResId = shortVersion ? R.plurals.zen_mode_duration_minutes_summary_short int summaryResId = shortVersion ? R.plurals.zen_mode_duration_minutes_summary_short : R.plurals.zen_mode_duration_minutes_summary; line1ResId = shortVersion ? R.plurals.zen_mode_duration_minutes_short summary = res.getQuantityString(summaryResId, num, num, formattedTime); int line1ResId = shortVersion ? R.plurals.zen_mode_duration_minutes_short : R.plurals.zen_mode_duration_minutes; } else { line1 = res.getQuantityString(line1ResId, num, num, formattedTime); line2 = res.getString(R.string.zen_mode_until, formattedTime); } else if (minutes < DAY_MINUTES) { // display as hours num = Math.round(minutes / 60f); summaryResId = shortVersion ? R.plurals.zen_mode_duration_hours_summary_short int summaryResId = shortVersion ? R.plurals.zen_mode_duration_hours_summary_short : R.plurals.zen_mode_duration_hours_summary; line1ResId = shortVersion ? R.plurals.zen_mode_duration_hours_short summary = res.getQuantityString(summaryResId, num, num, formattedTime); int line1ResId = shortVersion ? R.plurals.zen_mode_duration_hours_short : R.plurals.zen_mode_duration_hours; line1 = res.getQuantityString(line1ResId, num, num, formattedTime); line2 = res.getString(R.string.zen_mode_until, formattedTime); } else { // display as day/time summary = line1 = line2 = res.getString(R.string.zen_mode_until, formattedTime); } final String skeleton = DateFormat.is24HourFormat(context, userHandle) ? "Hm" : "hma"; final String pattern = DateFormat.getBestDateTimePattern(Locale.getDefault(), skeleton); final CharSequence formattedTime = DateFormat.format(pattern, time); final Resources res = context.getResources(); final String summary = res.getQuantityString(summaryResId, num, num, formattedTime); final String line1 = res.getQuantityString(line1ResId, num, num, formattedTime); final String line2 = res.getString(R.string.zen_mode_until, formattedTime); final Uri id = toCountdownConditionId(time); return new Condition(id, summary, line1, line2, 0, Condition.STATE_TRUE, Condition.FLAG_RELEVANT_NOW); } public static Condition toNextAlarmCondition(Context context, long now, long alarm, int userHandle) { final CharSequence formattedTime = getFormattedTime(context, alarm, userHandle); final Resources res = context.getResources(); final String line1 = res.getString(R.string.zen_mode_alarm, formattedTime); final Uri id = toCountdownConditionId(alarm); return new Condition(id, "", line1, "", 0, Condition.STATE_TRUE, Condition.FLAG_RELEVANT_NOW); } private static CharSequence getFormattedTime(Context context, long time, int userHandle) { String skeleton = "EEE " + (DateFormat.is24HourFormat(context, userHandle) ? "Hm" : "hma"); GregorianCalendar now = new GregorianCalendar(); GregorianCalendar endTime = new GregorianCalendar(); endTime.setTimeInMillis(time); if (now.get(Calendar.YEAR) == endTime.get(Calendar.YEAR) && now.get(Calendar.MONTH) == endTime.get(Calendar.MONTH) && now.get(Calendar.DATE) == endTime.get(Calendar.DATE)) { skeleton = DateFormat.is24HourFormat(context, userHandle) ? "Hm" : "hma"; } final String pattern = DateFormat.getBestDateTimePattern(Locale.getDefault(), skeleton); return DateFormat.format(pattern, time); } // ==== Built-in system conditions ==== public static final String SYSTEM_AUTHORITY = "android"; Loading Loading @@ -883,11 +913,6 @@ public class ZenModeConfig implements Parcelable { return UUID.randomUUID().toString().replace("-", ""); } public static String getConditionLine1(Context context, ZenModeConfig config, int userHandle, boolean shortVersion) { return getConditionLine(context, config, userHandle, true /*useLine1*/, shortVersion); } public static String getConditionSummary(Context context, ZenModeConfig config, int userHandle, boolean shortVersion) { return getConditionLine(context, config, userHandle, false /*useLine1*/, shortVersion); Loading @@ -906,8 +931,8 @@ public class ZenModeConfig implements Parcelable { if (time > 0) { final long now = System.currentTimeMillis(); final long span = time - now; c = toTimeCondition(context, time, Math.round(span / (float) MINUTES_MS), now, userHandle, shortVersion); c = toTimeCondition(context, time, Math.round(span / (float) MINUTES_MS), userHandle, shortVersion); } final String rt = c == null ? "" : useLine1 ? c.line1 : c.summary; return TextUtils.isEmpty(rt) ? "" : rt; Loading core/res/res/values/strings.xml +3 −0 Original line number Diff line number Diff line Loading @@ -4036,6 +4036,9 @@ <!-- Zen mode condition - line two: ending time. [CHAR LIMIT=NONE] --> <string name="zen_mode_until">Until <xliff:g id="formattedTime" example="10:00 PM">%1$s</xliff:g></string> <!-- Zen mode condition - line one: Until next alarm. [CHAR LIMIT=NONE] --> <string name="zen_mode_alarm">Until <xliff:g id="formattedTime" example="10:00 PM">%1$s</xliff:g> (next alarm)</string> <!-- Zen mode condition: no exit criteria. [CHAR LIMIT=NONE] --> <string name="zen_mode_forever">Until you turn this off</string> Loading core/res/res/values/symbols.xml +1 −0 Original line number Diff line number Diff line Loading @@ -2083,6 +2083,7 @@ <java-symbol type="string" name="zen_mode_default_events_name" /> <java-symbol type="array" name="config_system_condition_providers" /> <java-symbol type="string" name="muted_by" /> <java-symbol type="string" name="zen_mode_alarm" /> <java-symbol type="string" name="select_day" /> <java-symbol type="string" name="select_year" /> Loading packages/SystemUI/src/com/android/systemui/statusbar/policy/ZenModeController.java +0 −1 Original line number Diff line number Diff line Loading @@ -27,7 +27,6 @@ public interface ZenModeController { void removeCallback(Callback callback); void setZen(int zen, Uri conditionId, String reason); int getZen(); void requestConditions(boolean request); ZenRule getManualRule(); ZenModeConfig getConfig(); long getNextAlarm(); Loading packages/SystemUI/src/com/android/systemui/statusbar/policy/ZenModeControllerImpl.java +0 −9 Original line number Diff line number Diff line Loading @@ -120,15 +120,6 @@ public class ZenModeControllerImpl implements ZenModeController { return mSetupObserver.isDeviceProvisioned() && mSetupObserver.isUserSetup(); } @Override public void requestConditions(boolean request) { mRequesting = request; mNoMan.requestZenModeConditions(mListener, request ? Condition.FLAG_RELEVANT_NOW : 0); if (!mRequesting) { mConditions.clear(); } } @Override public ZenRule getManualRule() { return mConfig == null ? null : mConfig.manualRule; Loading Loading
core/java/android/service/notification/ZenModeConfig.java +48 −23 Original line number Diff line number Diff line Loading @@ -41,6 +41,7 @@ import org.xmlpull.v1.XmlSerializer; import java.io.IOException; import java.util.ArrayList; import java.util.Calendar; import java.util.GregorianCalendar; import java.util.Locale; import java.util.Objects; import java.util.UUID; Loading Loading @@ -68,6 +69,7 @@ public class ZenModeConfig implements Parcelable { public static final int[] MINUTE_BUCKETS = generateMinuteBuckets(); private static final int SECONDS_MS = 1000; private static final int MINUTES_MS = 60 * SECONDS_MS; private static final int DAY_MINUTES = 24 * 60; private static final int ZERO_VALUE_MS = 10 * SECONDS_MS; private static final boolean DEFAULT_ALLOW_CALLS = true; Loading Loading @@ -652,40 +654,68 @@ public class ZenModeConfig implements Parcelable { boolean shortVersion) { final long now = System.currentTimeMillis(); final long millis = minutesFromNow == 0 ? ZERO_VALUE_MS : minutesFromNow * MINUTES_MS; return toTimeCondition(context, now + millis, minutesFromNow, now, userHandle, shortVersion); return toTimeCondition(context, now + millis, minutesFromNow, userHandle, shortVersion); } public static Condition toTimeCondition(Context context, long time, int minutes, long now, public static Condition toTimeCondition(Context context, long time, int minutes, int userHandle, boolean shortVersion) { final int num, summaryResId, line1ResId; final int num; String summary, line1, line2; final CharSequence formattedTime = getFormattedTime(context, time, userHandle); final Resources res = context.getResources(); if (minutes < 60) { // display as minutes num = minutes; summaryResId = shortVersion ? R.plurals.zen_mode_duration_minutes_summary_short int summaryResId = shortVersion ? R.plurals.zen_mode_duration_minutes_summary_short : R.plurals.zen_mode_duration_minutes_summary; line1ResId = shortVersion ? R.plurals.zen_mode_duration_minutes_short summary = res.getQuantityString(summaryResId, num, num, formattedTime); int line1ResId = shortVersion ? R.plurals.zen_mode_duration_minutes_short : R.plurals.zen_mode_duration_minutes; } else { line1 = res.getQuantityString(line1ResId, num, num, formattedTime); line2 = res.getString(R.string.zen_mode_until, formattedTime); } else if (minutes < DAY_MINUTES) { // display as hours num = Math.round(minutes / 60f); summaryResId = shortVersion ? R.plurals.zen_mode_duration_hours_summary_short int summaryResId = shortVersion ? R.plurals.zen_mode_duration_hours_summary_short : R.plurals.zen_mode_duration_hours_summary; line1ResId = shortVersion ? R.plurals.zen_mode_duration_hours_short summary = res.getQuantityString(summaryResId, num, num, formattedTime); int line1ResId = shortVersion ? R.plurals.zen_mode_duration_hours_short : R.plurals.zen_mode_duration_hours; line1 = res.getQuantityString(line1ResId, num, num, formattedTime); line2 = res.getString(R.string.zen_mode_until, formattedTime); } else { // display as day/time summary = line1 = line2 = res.getString(R.string.zen_mode_until, formattedTime); } final String skeleton = DateFormat.is24HourFormat(context, userHandle) ? "Hm" : "hma"; final String pattern = DateFormat.getBestDateTimePattern(Locale.getDefault(), skeleton); final CharSequence formattedTime = DateFormat.format(pattern, time); final Resources res = context.getResources(); final String summary = res.getQuantityString(summaryResId, num, num, formattedTime); final String line1 = res.getQuantityString(line1ResId, num, num, formattedTime); final String line2 = res.getString(R.string.zen_mode_until, formattedTime); final Uri id = toCountdownConditionId(time); return new Condition(id, summary, line1, line2, 0, Condition.STATE_TRUE, Condition.FLAG_RELEVANT_NOW); } public static Condition toNextAlarmCondition(Context context, long now, long alarm, int userHandle) { final CharSequence formattedTime = getFormattedTime(context, alarm, userHandle); final Resources res = context.getResources(); final String line1 = res.getString(R.string.zen_mode_alarm, formattedTime); final Uri id = toCountdownConditionId(alarm); return new Condition(id, "", line1, "", 0, Condition.STATE_TRUE, Condition.FLAG_RELEVANT_NOW); } private static CharSequence getFormattedTime(Context context, long time, int userHandle) { String skeleton = "EEE " + (DateFormat.is24HourFormat(context, userHandle) ? "Hm" : "hma"); GregorianCalendar now = new GregorianCalendar(); GregorianCalendar endTime = new GregorianCalendar(); endTime.setTimeInMillis(time); if (now.get(Calendar.YEAR) == endTime.get(Calendar.YEAR) && now.get(Calendar.MONTH) == endTime.get(Calendar.MONTH) && now.get(Calendar.DATE) == endTime.get(Calendar.DATE)) { skeleton = DateFormat.is24HourFormat(context, userHandle) ? "Hm" : "hma"; } final String pattern = DateFormat.getBestDateTimePattern(Locale.getDefault(), skeleton); return DateFormat.format(pattern, time); } // ==== Built-in system conditions ==== public static final String SYSTEM_AUTHORITY = "android"; Loading Loading @@ -883,11 +913,6 @@ public class ZenModeConfig implements Parcelable { return UUID.randomUUID().toString().replace("-", ""); } public static String getConditionLine1(Context context, ZenModeConfig config, int userHandle, boolean shortVersion) { return getConditionLine(context, config, userHandle, true /*useLine1*/, shortVersion); } public static String getConditionSummary(Context context, ZenModeConfig config, int userHandle, boolean shortVersion) { return getConditionLine(context, config, userHandle, false /*useLine1*/, shortVersion); Loading @@ -906,8 +931,8 @@ public class ZenModeConfig implements Parcelable { if (time > 0) { final long now = System.currentTimeMillis(); final long span = time - now; c = toTimeCondition(context, time, Math.round(span / (float) MINUTES_MS), now, userHandle, shortVersion); c = toTimeCondition(context, time, Math.round(span / (float) MINUTES_MS), userHandle, shortVersion); } final String rt = c == null ? "" : useLine1 ? c.line1 : c.summary; return TextUtils.isEmpty(rt) ? "" : rt; Loading
core/res/res/values/strings.xml +3 −0 Original line number Diff line number Diff line Loading @@ -4036,6 +4036,9 @@ <!-- Zen mode condition - line two: ending time. [CHAR LIMIT=NONE] --> <string name="zen_mode_until">Until <xliff:g id="formattedTime" example="10:00 PM">%1$s</xliff:g></string> <!-- Zen mode condition - line one: Until next alarm. [CHAR LIMIT=NONE] --> <string name="zen_mode_alarm">Until <xliff:g id="formattedTime" example="10:00 PM">%1$s</xliff:g> (next alarm)</string> <!-- Zen mode condition: no exit criteria. [CHAR LIMIT=NONE] --> <string name="zen_mode_forever">Until you turn this off</string> Loading
core/res/res/values/symbols.xml +1 −0 Original line number Diff line number Diff line Loading @@ -2083,6 +2083,7 @@ <java-symbol type="string" name="zen_mode_default_events_name" /> <java-symbol type="array" name="config_system_condition_providers" /> <java-symbol type="string" name="muted_by" /> <java-symbol type="string" name="zen_mode_alarm" /> <java-symbol type="string" name="select_day" /> <java-symbol type="string" name="select_year" /> Loading
packages/SystemUI/src/com/android/systemui/statusbar/policy/ZenModeController.java +0 −1 Original line number Diff line number Diff line Loading @@ -27,7 +27,6 @@ public interface ZenModeController { void removeCallback(Callback callback); void setZen(int zen, Uri conditionId, String reason); int getZen(); void requestConditions(boolean request); ZenRule getManualRule(); ZenModeConfig getConfig(); long getNextAlarm(); Loading
packages/SystemUI/src/com/android/systemui/statusbar/policy/ZenModeControllerImpl.java +0 −9 Original line number Diff line number Diff line Loading @@ -120,15 +120,6 @@ public class ZenModeControllerImpl implements ZenModeController { return mSetupObserver.isDeviceProvisioned() && mSetupObserver.isUserSetup(); } @Override public void requestConditions(boolean request) { mRequesting = request; mNoMan.requestZenModeConditions(mListener, request ? Condition.FLAG_RELEVANT_NOW : 0); if (!mRequesting) { mConditions.clear(); } } @Override public ZenRule getManualRule() { return mConfig == null ? null : mConfig.manualRule; Loading