am f1b897e8: am e648c5f1: Merge "Zen: Add warning text if total silence will eat the next alarm." into mnc-dev
* commit 'f1b897e8b5793430a1c28e66df7e4d346cd9a9a4': Zen: Add warning text if total silence will eat the next alarm.
This commit is contained in:
@@ -97,4 +97,15 @@
|
||||
android:orientation="vertical"
|
||||
android:paddingBottom="@dimen/zen_mode_condition_detail_bottom_padding" />
|
||||
|
||||
|
||||
<TextView
|
||||
android:id="@+id/zen_alarm_warning"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="18dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:textDirection="locale"
|
||||
android:lineSpacingMultiplier="1.20029"
|
||||
android:textAppearance="@style/TextAppearance.QS.Warning" />
|
||||
|
||||
</com.android.systemui.volume.ZenModePanel>
|
||||
|
||||
@@ -1044,4 +1044,17 @@
|
||||
<string name="regrettable_lack_of_easter_egg">
|
||||
¯\\_(ツ)_/¯
|
||||
</string>
|
||||
|
||||
<!-- Warning text when an alarm might be silenced by Do Not Disturb [CHAR LIMIT=NONE] -->
|
||||
<string name="zen_alarm_warning_indef">You won\'t hear your next alarm <xliff:g id="when" example="at 7:00 AM">%1$s</xliff:g> unless you turn this off before then</string>
|
||||
|
||||
<!-- Warning text when an alarm might be silenced by Do Not Disturb due to a time-based condition [CHAR LIMIT=NONE] -->
|
||||
<string name="zen_alarm_warning">You won\'t hear your next alarm <xliff:g id="when" example="at 7:00 AM">%1$s</xliff:g></string>
|
||||
|
||||
<!-- Alarm template for near alarms [CHAR LIMIT=25] -->
|
||||
<string name="alarm_template">at <xliff:g id="when" example="7:00 AM">%1$s</xliff:g></string>
|
||||
|
||||
<!-- Alarm template for far alarms [CHAR LIMIT=25] -->
|
||||
<string name="alarm_template_far">on <xliff:g id="when" example="Fri 7:00 AM">%1$s</xliff:g></string>
|
||||
|
||||
</resources>
|
||||
|
||||
@@ -142,6 +142,11 @@
|
||||
<item name="android:textSize">14sp</item>
|
||||
</style>
|
||||
|
||||
<style name="TextAppearance.QS.Warning">
|
||||
<item name="android:textSize">14sp</item>
|
||||
<item name="android:textColor">@color/system_warning_color</item>
|
||||
</style>
|
||||
|
||||
<style name="TextAppearance.QS.DetailButton">
|
||||
<item name="android:textSize">@dimen/qs_detail_button_text_size</item>
|
||||
<item name="android:textColor">@color/qs_detail_button</item>
|
||||
|
||||
@@ -35,6 +35,7 @@ import android.service.notification.Condition;
|
||||
import android.service.notification.ZenModeConfig;
|
||||
import android.service.notification.ZenModeConfig.ZenRule;
|
||||
import android.text.TextUtils;
|
||||
import android.text.format.DateFormat;
|
||||
import android.util.ArraySet;
|
||||
import android.util.AttributeSet;
|
||||
import android.util.Log;
|
||||
@@ -57,6 +58,7 @@ import com.android.systemui.statusbar.policy.ZenModeController;
|
||||
import java.io.FileDescriptor;
|
||||
import java.io.PrintWriter;
|
||||
import java.util.Arrays;
|
||||
import java.util.Locale;
|
||||
import java.util.Objects;
|
||||
|
||||
public class ZenModePanel extends LinearLayout {
|
||||
@@ -96,6 +98,7 @@ public class ZenModePanel extends LinearLayout {
|
||||
private View mZenIntroductionConfirm;
|
||||
private View mZenIntroductionCustomize;
|
||||
private LinearLayout mZenConditions;
|
||||
private TextView mZenAlarmWarning;
|
||||
|
||||
private Callback mCallback;
|
||||
private ZenModeController mController;
|
||||
@@ -176,6 +179,7 @@ public class ZenModePanel extends LinearLayout {
|
||||
});
|
||||
|
||||
mZenConditions = (LinearLayout) findViewById(R.id.zen_conditions);
|
||||
mZenAlarmWarning = (TextView) findViewById(R.id.zen_alarm_warning);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -436,6 +440,40 @@ public class ZenModePanel extends LinearLayout {
|
||||
: R.string.zen_silence_introduction);
|
||||
mZenIntroductionCustomize.setVisibility(zenImportant ? VISIBLE : GONE);
|
||||
}
|
||||
final String warning = computeAlarmWarningText(zenNone);
|
||||
mZenAlarmWarning.setVisibility(warning != null ? VISIBLE : GONE);
|
||||
mZenAlarmWarning.setText(warning);
|
||||
}
|
||||
|
||||
private String computeAlarmWarningText(boolean zenNone) {
|
||||
if (!zenNone) {
|
||||
return null;
|
||||
}
|
||||
final long now = System.currentTimeMillis();
|
||||
final long nextAlarm = mController.getNextAlarm();
|
||||
if (nextAlarm < now) {
|
||||
return null;
|
||||
}
|
||||
int warningRes = 0;
|
||||
if (mSessionExitCondition == null || isForever(mSessionExitCondition)) {
|
||||
warningRes = R.string.zen_alarm_warning_indef;
|
||||
} else {
|
||||
final long time = ZenModeConfig.tryParseCountdownConditionId(mSessionExitCondition.id);
|
||||
if (time > now && nextAlarm < time) {
|
||||
warningRes = R.string.zen_alarm_warning;
|
||||
}
|
||||
}
|
||||
if (warningRes == 0) {
|
||||
return null;
|
||||
}
|
||||
final boolean soon = (nextAlarm - now) < 24 * 60 * 60 * 1000;
|
||||
final boolean is24 = DateFormat.is24HourFormat(mContext, ActivityManager.getCurrentUser());
|
||||
final String skeleton = soon ? (is24 ? "Hm" : "hma") : (is24 ? "EEEHm" : "EEEhma");
|
||||
final String pattern = DateFormat.getBestDateTimePattern(Locale.getDefault(), skeleton);
|
||||
final CharSequence formattedTime = DateFormat.format(pattern, nextAlarm);
|
||||
final int templateRes = soon ? R.string.alarm_template : R.string.alarm_template_far;
|
||||
final String template = getResources().getString(templateRes, formattedTime);
|
||||
return getResources().getString(warningRes, template);
|
||||
}
|
||||
|
||||
private static Condition parseExistingTimeCondition(Context context, Condition condition) {
|
||||
|
||||
Reference in New Issue
Block a user