am eba075e5: am 338bc5a4: Merge "Zen: Update condition text for current condition." into lmp-mr1-dev automerge: 1a68ba6
* commit 'eba075e5db77966f942c2fb504be7543c69b1f19': Zen: Update condition text for current condition.
This commit is contained in:
@@ -244,7 +244,7 @@ public class ZenModePanel extends LinearLayout {
|
||||
}
|
||||
|
||||
private void setExitCondition(Condition exitCondition) {
|
||||
if (sameConditionId(mExitCondition, exitCondition)) return;
|
||||
if (Objects.equals(mExitCondition, exitCondition)) return;
|
||||
mExitCondition = exitCondition;
|
||||
refreshExitConditionText();
|
||||
updateWidgets();
|
||||
|
||||
@@ -260,9 +260,11 @@ public class ConditionProviders extends ManagedServices {
|
||||
for (int i = 0; i < N; i++) {
|
||||
final Condition c = conditions[i];
|
||||
final ConditionRecord r = getRecordLocked(c.id, info.component);
|
||||
final Condition oldCondition = r.condition;
|
||||
final boolean conditionUpdate = oldCondition != null && !oldCondition.equals(c);
|
||||
r.info = info;
|
||||
r.condition = c;
|
||||
// if manual, exit zen if false (or failed)
|
||||
// if manual, exit zen if false (or failed), update if true (and changed)
|
||||
if (r.isManual) {
|
||||
if (c.state == Condition.STATE_FALSE || c.state == Condition.STATE_ERROR) {
|
||||
final boolean failed = c.state == Condition.STATE_ERROR;
|
||||
@@ -275,6 +277,10 @@ public class ConditionProviders extends ManagedServices {
|
||||
"manualConditionExit");
|
||||
unsubscribeLocked(r);
|
||||
r.isManual = false;
|
||||
} else if (c.state == Condition.STATE_TRUE && conditionUpdate) {
|
||||
if (DEBUG) Slog.d(TAG, "Current condition updated, still true. old="
|
||||
+ oldCondition + " new=" + c);
|
||||
setZenModeCondition(c, "conditionUpdate");
|
||||
}
|
||||
}
|
||||
// if automatic, exit zen if false (or failed), enter zen if true
|
||||
@@ -559,7 +565,7 @@ public class ConditionProviders extends ManagedServices {
|
||||
// enter downtime, or update mode if reconfigured during an active downtime
|
||||
if (inDowntime && (mode == Global.ZEN_MODE_OFF || downtimeCurrent) && config != null) {
|
||||
final Condition condition = mDowntime.createCondition(config.toDowntimeInfo(),
|
||||
Condition.STATE_TRUE);
|
||||
config.sleepNone, Condition.STATE_TRUE);
|
||||
mZenModeHelper.setZenMode(downtimeMode, "downtimeEnter");
|
||||
setZenModeCondition(condition, "downtime");
|
||||
}
|
||||
|
||||
@@ -122,7 +122,8 @@ public class DowntimeConditionProvider extends ConditionProviderService {
|
||||
if (DEBUG) Slog.d(TAG, "onRequestConditions relevance=" + relevance);
|
||||
if ((relevance & Condition.FLAG_RELEVANT_NOW) != 0) {
|
||||
if (isInDowntime() && mConfig != null) {
|
||||
notifyCondition(createCondition(mConfig.toDowntimeInfo(), Condition.STATE_TRUE));
|
||||
notifyCondition(createCondition(mConfig.toDowntimeInfo(), mConfig.sleepNone,
|
||||
Condition.STATE_TRUE));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -135,7 +136,7 @@ public class DowntimeConditionProvider extends ConditionProviderService {
|
||||
final int state = mConfig.toDowntimeInfo().equals(downtime) && isInDowntime()
|
||||
? Condition.STATE_TRUE : Condition.STATE_FALSE;
|
||||
if (DEBUG) Slog.d(TAG, "notify condition state: " + Condition.stateToString(state));
|
||||
notifyCondition(createCondition(downtime, state));
|
||||
notifyCondition(createCondition(downtime, mConfig.sleepNone, state));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -157,14 +158,22 @@ public class DowntimeConditionProvider extends ConditionProviderService {
|
||||
return mDowntimeMode != Global.ZEN_MODE_OFF;
|
||||
}
|
||||
|
||||
public Condition createCondition(DowntimeInfo downtime, int state) {
|
||||
public Condition createCondition(DowntimeInfo downtime, boolean orAlarm, int state) {
|
||||
if (downtime == null) return null;
|
||||
final Uri id = ZenModeConfig.toDowntimeConditionId(downtime);
|
||||
final String skeleton = DateFormat.is24HourFormat(mContext) ? "Hm" : "hma";
|
||||
final Locale locale = Locale.getDefault();
|
||||
final String pattern = DateFormat.getBestDateTimePattern(locale, skeleton);
|
||||
final long time = getTime(System.currentTimeMillis(), downtime.endHour, downtime.endMinute);
|
||||
final String formatted = new SimpleDateFormat(pattern, locale).format(new Date(time));
|
||||
final long now = System.currentTimeMillis();
|
||||
long endTime = getTime(now, downtime.endHour, downtime.endMinute);
|
||||
if (orAlarm) {
|
||||
final AlarmClockInfo nextAlarm = mTracker.getNextAlarm();
|
||||
final long nextAlarmTime = nextAlarm != null ? nextAlarm.getTriggerTime() : 0;
|
||||
if (nextAlarmTime > now && nextAlarmTime < endTime) {
|
||||
endTime = nextAlarmTime;
|
||||
}
|
||||
}
|
||||
final String formatted = new SimpleDateFormat(pattern, locale).format(new Date(endTime));
|
||||
final String summary = mContext.getString(R.string.downtime_condition_summary, formatted);
|
||||
final String line1 = mContext.getString(R.string.downtime_condition_line_one);
|
||||
return new Condition(id, summary, line1, formatted, 0, state, Condition.FLAG_RELEVANT_NOW);
|
||||
@@ -302,6 +311,11 @@ public class DowntimeConditionProvider extends ConditionProviderService {
|
||||
|
||||
private void onEvaluateNextAlarm(AlarmClockInfo nextAlarm, long wakeupTime, boolean booted) {
|
||||
if (!booted) return; // we don't know yet
|
||||
// update condition description if we're in downtime (mode = none)
|
||||
if (isInDowntime() && mConfig != null && mConfig.sleepNone) {
|
||||
notifyCondition(createCondition(mConfig.toDowntimeInfo(), true /*orAlarm*/,
|
||||
Condition.STATE_TRUE));
|
||||
}
|
||||
if (nextAlarm == null) return; // not fireable
|
||||
if (DEBUG) Slog.d(TAG, "onEvaluateNextAlarm " + mTracker.formatAlarmDebug(nextAlarm));
|
||||
if (System.currentTimeMillis() > wakeupTime) {
|
||||
@@ -336,6 +350,10 @@ public class DowntimeConditionProvider extends ConditionProviderService {
|
||||
} else if (Intent.ACTION_TIMEZONE_CHANGED.equals(action)) {
|
||||
if (DEBUG) Slog.d(TAG, "timezone changed to " + TimeZone.getDefault());
|
||||
mCalendar.setTimeZone(TimeZone.getDefault());
|
||||
mFiredAlarms.clear();
|
||||
} else if (Intent.ACTION_TIME_CHANGED.equals(action)) {
|
||||
if (DEBUG) Slog.d(TAG, "time changed to " + now);
|
||||
mFiredAlarms.clear();
|
||||
} else {
|
||||
if (DEBUG) Slog.d(TAG, action + " fired at " + now);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user