Close ZenModeScheduleRuleSettingsActivity when rule is deleted
This fixes an issue where the ZenRuleButtonsPreferenceController was redirecting to the rule list, but the container fragment was still trying to refresh the rule, leading to a "rule not found" toast. This also makes the transition look nicer, as it's a "back" instead of a "forward" animation now. Fixes: 244103559 Test: Manually on phone & tablet Change-Id: Ie26511dcaec4c7976f488936cdc6d417110ca1b1
This commit is contained in:
@@ -48,6 +48,7 @@ public abstract class ZenModeRuleSettingsBase extends ZenModeSettingsBase {
|
|||||||
protected boolean mDisableListeners;
|
protected boolean mDisableListeners;
|
||||||
protected AutomaticZenRule mRule;
|
protected AutomaticZenRule mRule;
|
||||||
protected String mId;
|
protected String mId;
|
||||||
|
private boolean mRuleRemoved;
|
||||||
|
|
||||||
protected ZenAutomaticRuleHeaderPreferenceController mHeader;
|
protected ZenAutomaticRuleHeaderPreferenceController mHeader;
|
||||||
protected ZenRuleButtonsPreferenceController mActionButtons;
|
protected ZenRuleButtonsPreferenceController mActionButtons;
|
||||||
@@ -162,6 +163,10 @@ public abstract class ZenModeRuleSettingsBase extends ZenModeSettingsBase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private boolean refreshRuleOrFinish() {
|
private boolean refreshRuleOrFinish() {
|
||||||
|
if (mRuleRemoved && getActivity() != null) {
|
||||||
|
getActivity().finish();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
mRule = getZenRule();
|
mRule = getZenRule();
|
||||||
if (DEBUG) Log.d(TAG, "mRule=" + mRule);
|
if (DEBUG) Log.d(TAG, "mRule=" + mRule);
|
||||||
mHeader.setRule(mRule);
|
mHeader.setRule(mRule);
|
||||||
@@ -196,4 +201,8 @@ public abstract class ZenModeRuleSettingsBase extends ZenModeSettingsBase {
|
|||||||
}
|
}
|
||||||
mDisableListeners = false;
|
mDisableListeners = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void onRuleRemoved() {
|
||||||
|
mRuleRemoved = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -39,11 +39,11 @@ public class ZenRuleButtonsPreferenceController extends AbstractZenModePreferenc
|
|||||||
implements PreferenceControllerMixin {
|
implements PreferenceControllerMixin {
|
||||||
public static final String KEY = "zen_action_buttons";
|
public static final String KEY = "zen_action_buttons";
|
||||||
|
|
||||||
private final PreferenceFragmentCompat mFragment;
|
private final ZenModeRuleSettingsBase mFragment;
|
||||||
private String mId;
|
private String mId;
|
||||||
private AutomaticZenRule mRule;
|
private AutomaticZenRule mRule;
|
||||||
|
|
||||||
public ZenRuleButtonsPreferenceController(Context context, PreferenceFragmentCompat fragment,
|
public ZenRuleButtonsPreferenceController(Context context, ZenModeRuleSettingsBase fragment,
|
||||||
Lifecycle lc) {
|
Lifecycle lc) {
|
||||||
super(context, KEY, lc);
|
super(context, KEY, lc);
|
||||||
mFragment = fragment;
|
mFragment = fragment;
|
||||||
@@ -106,12 +106,7 @@ public class ZenRuleButtonsPreferenceController extends AbstractZenModePreferenc
|
|||||||
mBackend.removeZenRule(id);
|
mBackend.removeZenRule(id);
|
||||||
mMetricsFeatureProvider.action(mContext,
|
mMetricsFeatureProvider.action(mContext,
|
||||||
SettingsEnums.ACTION_ZEN_DELETE_RULE_OK);
|
SettingsEnums.ACTION_ZEN_DELETE_RULE_OK);
|
||||||
new SubSettingLauncher(mContext)
|
mFragment.onRuleRemoved();
|
||||||
.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
|
|
||||||
.setDestination(ZenModeAutomationSettings.class.getName())
|
|
||||||
.setSourceMetricsCategory(MetricsProto.MetricsEvent
|
|
||||||
.NOTIFICATION_ZEN_MODE_AUTOMATION)
|
|
||||||
.launch();
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user