Loading core/java/android/app/notification.aconfig +10 −0 Original line number Diff line number Diff line Loading @@ -72,6 +72,16 @@ flag { } } flag { name: "modes_ui_tile_reactivates_last" namespace: "systemui" description: "The secondary target on the Modes tile activates the last-manually-activated mode, instead of DND" bug: "405988332" metadata { purpose: PURPOSE_BUGFIX } } flag { name: "modes_hsum" namespace: "systemui" Loading core/java/android/service/notification/ZenModeConfig.java +64 −13 Original line number Diff line number Diff line Loading @@ -311,6 +311,7 @@ public class ZenModeConfig implements Parcelable { private static final String RULE_ATT_LEGACY_SUPPRESSED_EFFECTS = "legacySuppressedEffects"; private static final String RULE_ATT_CONDITION_OVERRIDE = "conditionOverride"; private static final String RULE_ATT_LAST_ACTIVATION = "lastActivation"; private static final String RULE_ATT_LAST_MANUAL_ACTIVATION = "lastManualActivation"; private static final String DEVICE_EFFECT_DISPLAY_GRAYSCALE = "zdeDisplayGrayscale"; private static final String DEVICE_EFFECT_SUPPRESS_AMBIENT_DISPLAY = Loading Loading @@ -1208,6 +1209,10 @@ public class ZenModeConfig implements Parcelable { if (Flags.modesCleanupImplicit()) { rt.lastActivation = safeInstant(parser, RULE_ATT_LAST_ACTIVATION, null); } if (Flags.modesUiTileReactivatesLast()) { rt.lastManualActivation = safeInstant(parser, RULE_ATT_LAST_MANUAL_ACTIVATION, null); } } return rt; Loading Loading @@ -1269,6 +1274,10 @@ public class ZenModeConfig implements Parcelable { if (Flags.modesCleanupImplicit()) { writeXmlAttributeInstant(out, RULE_ATT_LAST_ACTIVATION, rule.lastActivation); } if (Flags.modesUiTileReactivatesLast()) { writeXmlAttributeInstant(out, RULE_ATT_LAST_MANUAL_ACTIVATION, rule.lastManualActivation); } } } Loading Loading @@ -2639,6 +2648,18 @@ public class ZenModeConfig implements Parcelable { @FlaggedApi(Flags.FLAG_MODES_CLEANUP_IMPLICIT) public Instant lastActivation; /** * Last time at which the rule was manually activated (whether as a user action in * Settings or SystemUI, or from the owner package with * {@link Condition#SOURCE_USER_ACTION}). If {@code null}, the rule has never been manually * activated since its creation. * * <p>Note that this was previously untracked, so it will also be {@code null} for rules * created before we started tracking and never activated since. */ @Nullable public Instant lastManualActivation; public ZenRule() { } public ZenRule(Parcel source) { Loading Loading @@ -2681,6 +2702,11 @@ public class ZenModeConfig implements Parcelable { lastActivation = Instant.ofEpochMilli(source.readLong()); } } if (Flags.modesUiTileReactivatesLast()) { if (source.readInt() == 1) { lastManualActivation = Instant.ofEpochMilli(source.readLong()); } } } } Loading Loading @@ -2744,26 +2770,28 @@ public class ZenModeConfig implements Parcelable { dest.writeInt(userModifiedFields); dest.writeInt(zenPolicyUserModifiedFields); dest.writeInt(zenDeviceEffectsUserModifiedFields); if (deletionInstant != null) { dest.writeInt(1); dest.writeLong(deletionInstant.toEpochMilli()); } else { dest.writeInt(0); } writeInstantToParcel(dest, deletionInstant); if (Flags.modesUi()) { dest.writeInt(disabledOrigin); dest.writeInt(legacySuppressedEffects); dest.writeInt(conditionOverride); if (Flags.modesCleanupImplicit()) { if (lastActivation != null) { writeInstantToParcel(dest, lastActivation); } if (Flags.modesUiTileReactivatesLast()) { writeInstantToParcel(dest, lastManualActivation); } } } private static void writeInstantToParcel(Parcel dest, @Nullable Instant instant) { if (instant != null) { dest.writeInt(1); dest.writeLong(lastActivation.toEpochMilli()); dest.writeLong(instant.toEpochMilli()); } else { dest.writeInt(0); } } } } @Override public String toString() { Loading Loading @@ -2817,6 +2845,9 @@ public class ZenModeConfig implements Parcelable { if (Flags.modesCleanupImplicit()) { sb.append(",lastActivation=").append(lastActivation); } if (Flags.modesUiTileReactivatesLast()) { sb.append(",lastManualActivation=").append(lastManualActivation); } } return sb.append(']').toString(); Loading Loading @@ -2899,6 +2930,10 @@ public class ZenModeConfig implements Parcelable { finalEquals = finalEquals && Objects.equals(other.lastActivation, lastActivation); } if (Flags.modesUiTileReactivatesLast()) { finalEquals = finalEquals && Objects.equals(other.lastManualActivation, lastManualActivation); } } return finalEquals; Loading @@ -2907,7 +2942,15 @@ public class ZenModeConfig implements Parcelable { @Override public int hashCode() { if (Flags.modesUi()) { if (Flags.modesCleanupImplicit()) { if (Flags.modesCleanupImplicit() && Flags.modesUiTileReactivatesLast()) { return Objects.hash(enabled, snoozing, name, zenMode, conditionId, condition, component, configurationActivity, pkg, id, enabler, zenPolicy, zenDeviceEffects, allowManualInvocation, iconResName, triggerDescription, type, userModifiedFields, zenPolicyUserModifiedFields, zenDeviceEffectsUserModifiedFields, deletionInstant, disabledOrigin, legacySuppressedEffects, conditionOverride, lastActivation, lastManualActivation); } else if (Flags.modesCleanupImplicit() && !Flags.modesUiTileReactivatesLast()) { return Objects.hash(enabled, snoozing, name, zenMode, conditionId, condition, component, configurationActivity, pkg, id, enabler, zenPolicy, zenDeviceEffects, allowManualInvocation, iconResName, Loading @@ -2915,6 +2958,14 @@ public class ZenModeConfig implements Parcelable { zenPolicyUserModifiedFields, zenDeviceEffectsUserModifiedFields, deletionInstant, disabledOrigin, legacySuppressedEffects, conditionOverride, lastActivation); } else if (!Flags.modesCleanupImplicit() && Flags.modesUiTileReactivatesLast()) { return Objects.hash(enabled, snoozing, name, zenMode, conditionId, condition, component, configurationActivity, pkg, id, enabler, zenPolicy, zenDeviceEffects, allowManualInvocation, iconResName, triggerDescription, type, userModifiedFields, zenPolicyUserModifiedFields, zenDeviceEffectsUserModifiedFields, deletionInstant, disabledOrigin, legacySuppressedEffects, conditionOverride, lastManualActivation); } else { return Objects.hash(enabled, snoozing, name, zenMode, conditionId, condition, component, configurationActivity, pkg, id, enabler, zenPolicy, Loading packages/SettingsLib/src/com/android/settingslib/notification/modes/TestModeBuilder.java +8 −1 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ import android.service.notification.ZenPolicy; import androidx.annotation.DrawableRes; import androidx.annotation.Nullable; import java.time.Instant; import java.util.concurrent.atomic.AtomicInteger; public class TestModeBuilder { Loading Loading @@ -204,6 +205,11 @@ public class TestModeBuilder { return this; } public TestModeBuilder setLastManualActivation(@Nullable Instant lastManualActivation) { mConfigZenRule.lastManualActivation = lastManualActivation; return this; } public TestModeBuilder makeManualDnd() { mIsManualDnd = true; // Set the "fixed" properties of a DND mode. Other things, such as policy/filter may be set Loading @@ -220,7 +226,8 @@ public class TestModeBuilder { public ZenMode build() { if (mIsManualDnd) { return ZenMode.manualDndMode(mRule, mConfigZenRule.condition != null && mConfigZenRule.condition.state == Condition.STATE_TRUE); && mConfigZenRule.condition.state == Condition.STATE_TRUE, mConfigZenRule.lastManualActivation); } else { return new ZenMode(mId, mRule, mConfigZenRule); } Loading packages/SettingsLib/src/com/android/settingslib/notification/modes/ZenMode.java +40 −10 Original line number Diff line number Diff line Loading @@ -53,6 +53,7 @@ import androidx.annotation.Nullable; import com.google.common.base.Strings; import com.google.common.collect.ImmutableList; import java.time.Instant; import java.util.Comparator; import java.util.Objects; Loading Loading @@ -130,6 +131,7 @@ public class ZenMode implements Parcelable { private final AutomaticZenRule mRule; private final Kind mKind; private final Status mStatus; private final @Nullable Instant mLastManualActivation; /** * Initializes a {@link ZenMode}, mainly based on the information from the Loading @@ -143,7 +145,8 @@ public class ZenMode implements Parcelable { @NonNull ZenModeConfig.ZenRule zenRuleExtraData) { this(id, rule, ZenModeConfig.isImplicitRuleId(id) ? Kind.IMPLICIT : Kind.NORMAL, computeStatus(zenRuleExtraData)); computeStatus(zenRuleExtraData), zenRuleExtraData.lastManualActivation); } private static Status computeStatus(@NonNull ZenModeConfig.ZenRule zenRuleExtraData) { Loading @@ -162,12 +165,14 @@ public class ZenMode implements Parcelable { } } static ZenMode manualDndMode(AutomaticZenRule manualRule, boolean isActive) { static ZenMode manualDndMode(AutomaticZenRule manualRule, boolean isActive, @Nullable Instant lastManualActivation) { return new ZenMode( MANUAL_DND_MODE_ID, manualRule, Kind.MANUAL_DND, isActive ? Status.ENABLED_AND_ACTIVE : Status.ENABLED); isActive ? Status.ENABLED_AND_ACTIVE : Status.ENABLED, lastManualActivation); } /** Loading @@ -186,19 +191,22 @@ public class ZenMode implements Parcelable { .setIconResId(iconResId) .setManualInvocationAllowed(true) .build(); return new ZenMode(TEMP_NEW_MODE_ID, rule, Kind.NORMAL, Status.ENABLED); return new ZenMode(TEMP_NEW_MODE_ID, rule, Kind.NORMAL, Status.ENABLED, null); } private ZenMode(String id, @NonNull AutomaticZenRule rule, Kind kind, Status status) { private ZenMode(String id, @NonNull AutomaticZenRule rule, Kind kind, Status status, @Nullable Instant lastManualActivation) { mId = id; mRule = rule; mKind = kind; mStatus = status; mLastManualActivation = lastManualActivation; } /** Creates a deep copy of this object. */ public ZenMode copy() { return new ZenMode(mId, new AutomaticZenRule.Builder(mRule).build(), mKind, mStatus); return new ZenMode(mId, new AutomaticZenRule.Builder(mRule).build(), mKind, mStatus, mLastManualActivation); } @NonNull Loading Loading @@ -230,6 +238,19 @@ public class ZenMode implements Parcelable { return mStatus; } /** * Last time at which the mode was manually activated (whether as a user action in * Settings or SystemUI, or from the owner package with {@code Condition.SOURCE_USER_ACTION}). * If {@code null}, the rule has never been manually activated since its creation. * * <p>Note that this was previously untracked, so it will also be {@code null} for rules * created before we started tracking and never activated since. */ @Nullable public Instant getLastManualActivation() { return mLastManualActivation; } @NonNull public Owner getOwner() { return new Owner(mRule.getPackageName(), mRule.getConfigurationActivity(), Loading Loading @@ -503,17 +524,19 @@ public class ZenMode implements Parcelable { && mId.equals(other.mId) && mRule.equals(other.mRule) && mKind.equals(other.mKind) && mStatus.equals(other.mStatus); && mStatus.equals(other.mStatus) && Objects.equals(mLastManualActivation, other.mLastManualActivation); } @Override public int hashCode() { return Objects.hash(mId, mRule, mKind, mStatus); return Objects.hash(mId, mRule, mKind, mStatus, mLastManualActivation); } @Override public String toString() { return mId + " (" + mKind + ", " + mStatus + ") -> " + mRule; return mId + " (" + mKind + ", " + mStatus + ") -> " + mRule + " (lastManualActivation=" + mLastManualActivation + ")"; } @Override Loading @@ -527,6 +550,12 @@ public class ZenMode implements Parcelable { dest.writeParcelable(mRule, 0); dest.writeString(mKind.name()); dest.writeString(mStatus.name()); if (mLastManualActivation != null) { dest.writeBoolean(true); dest.writeLong(mLastManualActivation.toEpochMilli()); } else { dest.writeBoolean(false); } } public static final Creator<ZenMode> CREATOR = new Creator<ZenMode>() { Loading @@ -537,7 +566,8 @@ public class ZenMode implements Parcelable { checkNotNull(in.readParcelable(AutomaticZenRule.class.getClassLoader(), AutomaticZenRule.class)), Kind.valueOf(in.readString()), Status.valueOf(in.readString())); Status.valueOf(in.readString()), in.readBoolean() ? Instant.ofEpochMilli(in.readLong()) : null); } @Override Loading packages/SettingsLib/src/com/android/settingslib/notification/modes/ZenModesBackend.java +2 −1 Original line number Diff line number Diff line Loading @@ -135,7 +135,8 @@ public class ZenModesBackend { .setInterruptionFilter(dndInterruptionFilter) .build(); return ZenMode.manualDndMode(manualDndRule, config.isManualActive()); return ZenMode.manualDndMode(manualDndRule, config.isManualActive(), manualRule.lastManualActivation); } public void updateMode(ZenMode mode) { Loading Loading
core/java/android/app/notification.aconfig +10 −0 Original line number Diff line number Diff line Loading @@ -72,6 +72,16 @@ flag { } } flag { name: "modes_ui_tile_reactivates_last" namespace: "systemui" description: "The secondary target on the Modes tile activates the last-manually-activated mode, instead of DND" bug: "405988332" metadata { purpose: PURPOSE_BUGFIX } } flag { name: "modes_hsum" namespace: "systemui" Loading
core/java/android/service/notification/ZenModeConfig.java +64 −13 Original line number Diff line number Diff line Loading @@ -311,6 +311,7 @@ public class ZenModeConfig implements Parcelable { private static final String RULE_ATT_LEGACY_SUPPRESSED_EFFECTS = "legacySuppressedEffects"; private static final String RULE_ATT_CONDITION_OVERRIDE = "conditionOverride"; private static final String RULE_ATT_LAST_ACTIVATION = "lastActivation"; private static final String RULE_ATT_LAST_MANUAL_ACTIVATION = "lastManualActivation"; private static final String DEVICE_EFFECT_DISPLAY_GRAYSCALE = "zdeDisplayGrayscale"; private static final String DEVICE_EFFECT_SUPPRESS_AMBIENT_DISPLAY = Loading Loading @@ -1208,6 +1209,10 @@ public class ZenModeConfig implements Parcelable { if (Flags.modesCleanupImplicit()) { rt.lastActivation = safeInstant(parser, RULE_ATT_LAST_ACTIVATION, null); } if (Flags.modesUiTileReactivatesLast()) { rt.lastManualActivation = safeInstant(parser, RULE_ATT_LAST_MANUAL_ACTIVATION, null); } } return rt; Loading Loading @@ -1269,6 +1274,10 @@ public class ZenModeConfig implements Parcelable { if (Flags.modesCleanupImplicit()) { writeXmlAttributeInstant(out, RULE_ATT_LAST_ACTIVATION, rule.lastActivation); } if (Flags.modesUiTileReactivatesLast()) { writeXmlAttributeInstant(out, RULE_ATT_LAST_MANUAL_ACTIVATION, rule.lastManualActivation); } } } Loading Loading @@ -2639,6 +2648,18 @@ public class ZenModeConfig implements Parcelable { @FlaggedApi(Flags.FLAG_MODES_CLEANUP_IMPLICIT) public Instant lastActivation; /** * Last time at which the rule was manually activated (whether as a user action in * Settings or SystemUI, or from the owner package with * {@link Condition#SOURCE_USER_ACTION}). If {@code null}, the rule has never been manually * activated since its creation. * * <p>Note that this was previously untracked, so it will also be {@code null} for rules * created before we started tracking and never activated since. */ @Nullable public Instant lastManualActivation; public ZenRule() { } public ZenRule(Parcel source) { Loading Loading @@ -2681,6 +2702,11 @@ public class ZenModeConfig implements Parcelable { lastActivation = Instant.ofEpochMilli(source.readLong()); } } if (Flags.modesUiTileReactivatesLast()) { if (source.readInt() == 1) { lastManualActivation = Instant.ofEpochMilli(source.readLong()); } } } } Loading Loading @@ -2744,26 +2770,28 @@ public class ZenModeConfig implements Parcelable { dest.writeInt(userModifiedFields); dest.writeInt(zenPolicyUserModifiedFields); dest.writeInt(zenDeviceEffectsUserModifiedFields); if (deletionInstant != null) { dest.writeInt(1); dest.writeLong(deletionInstant.toEpochMilli()); } else { dest.writeInt(0); } writeInstantToParcel(dest, deletionInstant); if (Flags.modesUi()) { dest.writeInt(disabledOrigin); dest.writeInt(legacySuppressedEffects); dest.writeInt(conditionOverride); if (Flags.modesCleanupImplicit()) { if (lastActivation != null) { writeInstantToParcel(dest, lastActivation); } if (Flags.modesUiTileReactivatesLast()) { writeInstantToParcel(dest, lastManualActivation); } } } private static void writeInstantToParcel(Parcel dest, @Nullable Instant instant) { if (instant != null) { dest.writeInt(1); dest.writeLong(lastActivation.toEpochMilli()); dest.writeLong(instant.toEpochMilli()); } else { dest.writeInt(0); } } } } @Override public String toString() { Loading Loading @@ -2817,6 +2845,9 @@ public class ZenModeConfig implements Parcelable { if (Flags.modesCleanupImplicit()) { sb.append(",lastActivation=").append(lastActivation); } if (Flags.modesUiTileReactivatesLast()) { sb.append(",lastManualActivation=").append(lastManualActivation); } } return sb.append(']').toString(); Loading Loading @@ -2899,6 +2930,10 @@ public class ZenModeConfig implements Parcelable { finalEquals = finalEquals && Objects.equals(other.lastActivation, lastActivation); } if (Flags.modesUiTileReactivatesLast()) { finalEquals = finalEquals && Objects.equals(other.lastManualActivation, lastManualActivation); } } return finalEquals; Loading @@ -2907,7 +2942,15 @@ public class ZenModeConfig implements Parcelable { @Override public int hashCode() { if (Flags.modesUi()) { if (Flags.modesCleanupImplicit()) { if (Flags.modesCleanupImplicit() && Flags.modesUiTileReactivatesLast()) { return Objects.hash(enabled, snoozing, name, zenMode, conditionId, condition, component, configurationActivity, pkg, id, enabler, zenPolicy, zenDeviceEffects, allowManualInvocation, iconResName, triggerDescription, type, userModifiedFields, zenPolicyUserModifiedFields, zenDeviceEffectsUserModifiedFields, deletionInstant, disabledOrigin, legacySuppressedEffects, conditionOverride, lastActivation, lastManualActivation); } else if (Flags.modesCleanupImplicit() && !Flags.modesUiTileReactivatesLast()) { return Objects.hash(enabled, snoozing, name, zenMode, conditionId, condition, component, configurationActivity, pkg, id, enabler, zenPolicy, zenDeviceEffects, allowManualInvocation, iconResName, Loading @@ -2915,6 +2958,14 @@ public class ZenModeConfig implements Parcelable { zenPolicyUserModifiedFields, zenDeviceEffectsUserModifiedFields, deletionInstant, disabledOrigin, legacySuppressedEffects, conditionOverride, lastActivation); } else if (!Flags.modesCleanupImplicit() && Flags.modesUiTileReactivatesLast()) { return Objects.hash(enabled, snoozing, name, zenMode, conditionId, condition, component, configurationActivity, pkg, id, enabler, zenPolicy, zenDeviceEffects, allowManualInvocation, iconResName, triggerDescription, type, userModifiedFields, zenPolicyUserModifiedFields, zenDeviceEffectsUserModifiedFields, deletionInstant, disabledOrigin, legacySuppressedEffects, conditionOverride, lastManualActivation); } else { return Objects.hash(enabled, snoozing, name, zenMode, conditionId, condition, component, configurationActivity, pkg, id, enabler, zenPolicy, Loading
packages/SettingsLib/src/com/android/settingslib/notification/modes/TestModeBuilder.java +8 −1 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ import android.service.notification.ZenPolicy; import androidx.annotation.DrawableRes; import androidx.annotation.Nullable; import java.time.Instant; import java.util.concurrent.atomic.AtomicInteger; public class TestModeBuilder { Loading Loading @@ -204,6 +205,11 @@ public class TestModeBuilder { return this; } public TestModeBuilder setLastManualActivation(@Nullable Instant lastManualActivation) { mConfigZenRule.lastManualActivation = lastManualActivation; return this; } public TestModeBuilder makeManualDnd() { mIsManualDnd = true; // Set the "fixed" properties of a DND mode. Other things, such as policy/filter may be set Loading @@ -220,7 +226,8 @@ public class TestModeBuilder { public ZenMode build() { if (mIsManualDnd) { return ZenMode.manualDndMode(mRule, mConfigZenRule.condition != null && mConfigZenRule.condition.state == Condition.STATE_TRUE); && mConfigZenRule.condition.state == Condition.STATE_TRUE, mConfigZenRule.lastManualActivation); } else { return new ZenMode(mId, mRule, mConfigZenRule); } Loading
packages/SettingsLib/src/com/android/settingslib/notification/modes/ZenMode.java +40 −10 Original line number Diff line number Diff line Loading @@ -53,6 +53,7 @@ import androidx.annotation.Nullable; import com.google.common.base.Strings; import com.google.common.collect.ImmutableList; import java.time.Instant; import java.util.Comparator; import java.util.Objects; Loading Loading @@ -130,6 +131,7 @@ public class ZenMode implements Parcelable { private final AutomaticZenRule mRule; private final Kind mKind; private final Status mStatus; private final @Nullable Instant mLastManualActivation; /** * Initializes a {@link ZenMode}, mainly based on the information from the Loading @@ -143,7 +145,8 @@ public class ZenMode implements Parcelable { @NonNull ZenModeConfig.ZenRule zenRuleExtraData) { this(id, rule, ZenModeConfig.isImplicitRuleId(id) ? Kind.IMPLICIT : Kind.NORMAL, computeStatus(zenRuleExtraData)); computeStatus(zenRuleExtraData), zenRuleExtraData.lastManualActivation); } private static Status computeStatus(@NonNull ZenModeConfig.ZenRule zenRuleExtraData) { Loading @@ -162,12 +165,14 @@ public class ZenMode implements Parcelable { } } static ZenMode manualDndMode(AutomaticZenRule manualRule, boolean isActive) { static ZenMode manualDndMode(AutomaticZenRule manualRule, boolean isActive, @Nullable Instant lastManualActivation) { return new ZenMode( MANUAL_DND_MODE_ID, manualRule, Kind.MANUAL_DND, isActive ? Status.ENABLED_AND_ACTIVE : Status.ENABLED); isActive ? Status.ENABLED_AND_ACTIVE : Status.ENABLED, lastManualActivation); } /** Loading @@ -186,19 +191,22 @@ public class ZenMode implements Parcelable { .setIconResId(iconResId) .setManualInvocationAllowed(true) .build(); return new ZenMode(TEMP_NEW_MODE_ID, rule, Kind.NORMAL, Status.ENABLED); return new ZenMode(TEMP_NEW_MODE_ID, rule, Kind.NORMAL, Status.ENABLED, null); } private ZenMode(String id, @NonNull AutomaticZenRule rule, Kind kind, Status status) { private ZenMode(String id, @NonNull AutomaticZenRule rule, Kind kind, Status status, @Nullable Instant lastManualActivation) { mId = id; mRule = rule; mKind = kind; mStatus = status; mLastManualActivation = lastManualActivation; } /** Creates a deep copy of this object. */ public ZenMode copy() { return new ZenMode(mId, new AutomaticZenRule.Builder(mRule).build(), mKind, mStatus); return new ZenMode(mId, new AutomaticZenRule.Builder(mRule).build(), mKind, mStatus, mLastManualActivation); } @NonNull Loading Loading @@ -230,6 +238,19 @@ public class ZenMode implements Parcelable { return mStatus; } /** * Last time at which the mode was manually activated (whether as a user action in * Settings or SystemUI, or from the owner package with {@code Condition.SOURCE_USER_ACTION}). * If {@code null}, the rule has never been manually activated since its creation. * * <p>Note that this was previously untracked, so it will also be {@code null} for rules * created before we started tracking and never activated since. */ @Nullable public Instant getLastManualActivation() { return mLastManualActivation; } @NonNull public Owner getOwner() { return new Owner(mRule.getPackageName(), mRule.getConfigurationActivity(), Loading Loading @@ -503,17 +524,19 @@ public class ZenMode implements Parcelable { && mId.equals(other.mId) && mRule.equals(other.mRule) && mKind.equals(other.mKind) && mStatus.equals(other.mStatus); && mStatus.equals(other.mStatus) && Objects.equals(mLastManualActivation, other.mLastManualActivation); } @Override public int hashCode() { return Objects.hash(mId, mRule, mKind, mStatus); return Objects.hash(mId, mRule, mKind, mStatus, mLastManualActivation); } @Override public String toString() { return mId + " (" + mKind + ", " + mStatus + ") -> " + mRule; return mId + " (" + mKind + ", " + mStatus + ") -> " + mRule + " (lastManualActivation=" + mLastManualActivation + ")"; } @Override Loading @@ -527,6 +550,12 @@ public class ZenMode implements Parcelable { dest.writeParcelable(mRule, 0); dest.writeString(mKind.name()); dest.writeString(mStatus.name()); if (mLastManualActivation != null) { dest.writeBoolean(true); dest.writeLong(mLastManualActivation.toEpochMilli()); } else { dest.writeBoolean(false); } } public static final Creator<ZenMode> CREATOR = new Creator<ZenMode>() { Loading @@ -537,7 +566,8 @@ public class ZenMode implements Parcelable { checkNotNull(in.readParcelable(AutomaticZenRule.class.getClassLoader(), AutomaticZenRule.class)), Kind.valueOf(in.readString()), Status.valueOf(in.readString())); Status.valueOf(in.readString()), in.readBoolean() ? Instant.ofEpochMilli(in.readLong()) : null); } @Override Loading
packages/SettingsLib/src/com/android/settingslib/notification/modes/ZenModesBackend.java +2 −1 Original line number Diff line number Diff line Loading @@ -135,7 +135,8 @@ public class ZenModesBackend { .setInterruptionFilter(dndInterruptionFilter) .build(); return ZenMode.manualDndMode(manualDndRule, config.isManualActive()); return ZenMode.manualDndMode(manualDndRule, config.isManualActive(), manualRule.lastManualActivation); } public void updateMode(ZenMode mode) { Loading