Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 96faf5c8 authored by Julia Reynolds's avatar Julia Reynolds Committed by Android Git Automerger
Browse files

am a762c210: Merge "Add \'until next alarm\' option to QS zen panel." into mnc-dr-dev

* commit 'a762c210':
  Add 'until next alarm' option to QS zen panel.
parents b01a963a a762c210
Loading
Loading
Loading
Loading
+48 −23
Original line number Original line Diff line number Diff line
@@ -41,6 +41,7 @@ import org.xmlpull.v1.XmlSerializer;
import java.io.IOException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Locale;
import java.util.Locale;
import java.util.Objects;
import java.util.Objects;
import java.util.UUID;
import java.util.UUID;
@@ -68,6 +69,7 @@ public class ZenModeConfig implements Parcelable {
    public static final int[] MINUTE_BUCKETS = generateMinuteBuckets();
    public static final int[] MINUTE_BUCKETS = generateMinuteBuckets();
    private static final int SECONDS_MS = 1000;
    private static final int SECONDS_MS = 1000;
    private static final int MINUTES_MS = 60 * SECONDS_MS;
    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 int ZERO_VALUE_MS = 10 * SECONDS_MS;


    private static final boolean DEFAULT_ALLOW_CALLS = true;
    private static final boolean DEFAULT_ALLOW_CALLS = true;
@@ -652,40 +654,68 @@ public class ZenModeConfig implements Parcelable {
            boolean shortVersion) {
            boolean shortVersion) {
        final long now = System.currentTimeMillis();
        final long now = System.currentTimeMillis();
        final long millis = minutesFromNow == 0 ? ZERO_VALUE_MS : minutesFromNow * MINUTES_MS;
        final long millis = minutesFromNow == 0 ? ZERO_VALUE_MS : minutesFromNow * MINUTES_MS;
        return toTimeCondition(context, now + millis, minutesFromNow, now, userHandle,
        return toTimeCondition(context, now + millis, minutesFromNow, userHandle, shortVersion);
                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) {
            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) {
        if (minutes < 60) {
            // display as minutes
            // display as minutes
            num = 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;
                    : 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;
                    : 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
            // display as hours
            num =  Math.round(minutes / 60f);
            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;
                    : 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;
                    : 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);
        final Uri id = toCountdownConditionId(time);
        return new Condition(id, summary, line1, line2, 0, Condition.STATE_TRUE,
        return new Condition(id, summary, line1, line2, 0, Condition.STATE_TRUE,
                Condition.FLAG_RELEVANT_NOW);
                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 ====
    // ==== Built-in system conditions ====


    public static final String SYSTEM_AUTHORITY = "android";
    public static final String SYSTEM_AUTHORITY = "android";
@@ -883,11 +913,6 @@ public class ZenModeConfig implements Parcelable {
        return UUID.randomUUID().toString().replace("-", "");
        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,
    public static String getConditionSummary(Context context, ZenModeConfig config,
            int userHandle, boolean shortVersion) {
            int userHandle, boolean shortVersion) {
        return getConditionLine(context, config, userHandle, false /*useLine1*/, shortVersion);
        return getConditionLine(context, config, userHandle, false /*useLine1*/, shortVersion);
@@ -906,8 +931,8 @@ public class ZenModeConfig implements Parcelable {
            if (time > 0) {
            if (time > 0) {
                final long now = System.currentTimeMillis();
                final long now = System.currentTimeMillis();
                final long span = time - now;
                final long span = time - now;
                c = toTimeCondition(context,
                c = toTimeCondition(context, time, Math.round(span / (float) MINUTES_MS),
                        time, Math.round(span / (float) MINUTES_MS), now, userHandle, shortVersion);
                        userHandle, shortVersion);
            }
            }
            final String rt = c == null ? "" : useLine1 ? c.line1 : c.summary;
            final String rt = c == null ? "" : useLine1 ? c.line1 : c.summary;
            return TextUtils.isEmpty(rt) ? "" : rt;
            return TextUtils.isEmpty(rt) ? "" : rt;
+3 −0
Original line number Original line Diff line number Diff line
@@ -4036,6 +4036,9 @@
    <!-- Zen mode condition - line two: ending time. [CHAR LIMIT=NONE] -->
    <!-- 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>
    <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] -->
    <!-- Zen mode condition: no exit criteria. [CHAR LIMIT=NONE] -->
    <string name="zen_mode_forever">Until you turn this off</string>
    <string name="zen_mode_forever">Until you turn this off</string>


+1 −0
Original line number Original line Diff line number Diff line
@@ -2088,6 +2088,7 @@
  <java-symbol type="string" name="zen_mode_default_events_name" />
  <java-symbol type="string" name="zen_mode_default_events_name" />
  <java-symbol type="array" name="config_system_condition_providers" />
  <java-symbol type="array" name="config_system_condition_providers" />
  <java-symbol type="string" name="muted_by" />
  <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_day" />
  <java-symbol type="string" name="select_year" />
  <java-symbol type="string" name="select_year" />
+0 −1
Original line number Original line Diff line number Diff line
@@ -27,7 +27,6 @@ public interface ZenModeController {
    void removeCallback(Callback callback);
    void removeCallback(Callback callback);
    void setZen(int zen, Uri conditionId, String reason);
    void setZen(int zen, Uri conditionId, String reason);
    int getZen();
    int getZen();
    void requestConditions(boolean request);
    ZenRule getManualRule();
    ZenRule getManualRule();
    ZenModeConfig getConfig();
    ZenModeConfig getConfig();
    long getNextAlarm();
    long getNextAlarm();
+0 −9
Original line number Original line Diff line number Diff line
@@ -120,15 +120,6 @@ public class ZenModeControllerImpl implements ZenModeController {
        return mSetupObserver.isDeviceProvisioned() && mSetupObserver.isUserSetup();
        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
    @Override
    public ZenRule getManualRule() {
    public ZenRule getManualRule() {
        return mConfig == null ? null : mConfig.manualRule;
        return mConfig == null ? null : mConfig.manualRule;
Loading