diff --git a/res/drawable/ic_zen_mode_action_change_icon.xml b/res/drawable/ic_zen_mode_action_change_icon.xml
deleted file mode 100644
index 4cf4167314a..00000000000
--- a/res/drawable/ic_zen_mode_action_change_icon.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 6d976ba5d92..fd02785108d 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -8043,8 +8043,11 @@
Delete
+
+ Rename
+
- Delete mode
+ Delete
Delete \"%1$s\" mode?
@@ -9451,17 +9454,8 @@
Change to always interrupt
-
- Rename
-
-
- Change icon
-
-
- Change icon
-
- Rename
+ Edit mode
Add mode
diff --git a/res/xml/modes_rule_settings.xml b/res/xml/modes_rule_settings.xml
index 5be206e6dd0..0c687b2aa50 100644
--- a/res/xml/modes_rule_settings.xml
+++ b/res/xml/modes_rule_settings.xml
@@ -28,10 +28,6 @@
android:selectable="false"
android:layout="@layout/modes_activation_button"/>
-
-
diff --git a/src/com/android/settings/notification/modes/ZenModeActionsPreferenceController.java b/src/com/android/settings/notification/modes/ZenModeActionsPreferenceController.java
deleted file mode 100644
index c3f38d02063..00000000000
--- a/src/com/android/settings/notification/modes/ZenModeActionsPreferenceController.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright (C) 2024 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.notification.modes;
-
-import static android.provider.Settings.EXTRA_AUTOMATIC_ZEN_RULE_ID;
-
-import android.content.Context;
-import android.os.Bundle;
-
-import androidx.annotation.NonNull;
-import androidx.preference.Preference;
-
-import com.android.settings.R;
-import com.android.settings.core.SubSettingLauncher;
-import com.android.settingslib.notification.modes.ZenMode;
-import com.android.settingslib.widget.ActionButtonsPreference;
-
-class ZenModeActionsPreferenceController extends AbstractZenModePreferenceController {
-
- ZenModeActionsPreferenceController(@NonNull Context context, @NonNull String key) {
- super(context, key);
- }
-
- @Override
- void updateState(Preference preference, @NonNull ZenMode zenMode) {
- ActionButtonsPreference buttonsPreference = (ActionButtonsPreference) preference;
-
- // TODO: b/346278854 - Add rename action (with setButton1Enabled(zenMode.canEditName())
- buttonsPreference.setButton1Text(R.string.zen_mode_action_change_name);
- buttonsPreference.setButton1Icon(R.drawable.ic_mode_edit);
- buttonsPreference.setButton1Enabled(false);
-
- buttonsPreference.setButton2Text(R.string.zen_mode_action_change_icon);
- buttonsPreference.setButton2Icon(R.drawable.ic_zen_mode_action_change_icon);
- buttonsPreference.setButton2Enabled(zenMode.canEditIcon());
- buttonsPreference.setButton2OnClickListener(v -> {
- Bundle bundle = new Bundle();
- bundle.putString(EXTRA_AUTOMATIC_ZEN_RULE_ID, zenMode.getId());
- new SubSettingLauncher(mContext)
- .setDestination(ZenModeEditNameIconFragment.class.getName())
- // TODO: b/332937635 - Update metrics category
- .setSourceMetricsCategory(0)
- .setArguments(bundle)
- .launch();
- });
- }
-}
diff --git a/src/com/android/settings/notification/modes/ZenModeEditNameIconFragment.java b/src/com/android/settings/notification/modes/ZenModeEditNameIconFragment.java
index 7889dd71273..a0c2cf1109b 100644
--- a/src/com/android/settings/notification/modes/ZenModeEditNameIconFragment.java
+++ b/src/com/android/settings/notification/modes/ZenModeEditNameIconFragment.java
@@ -39,7 +39,7 @@ public class ZenModeEditNameIconFragment extends ZenModeEditNameIconFragmentBase
@Override
public void onStart() {
super.onStart();
- requireActivity().setTitle(R.string.zen_mode_icon_picker_title);
+ requireActivity().setTitle(R.string.zen_mode_rename_title);
}
@Override
diff --git a/src/com/android/settings/notification/modes/ZenModeFragment.java b/src/com/android/settings/notification/modes/ZenModeFragment.java
index 748c7351c29..c5b52a9627d 100644
--- a/src/com/android/settings/notification/modes/ZenModeFragment.java
+++ b/src/com/android/settings/notification/modes/ZenModeFragment.java
@@ -38,8 +38,9 @@ import java.util.List;
public class ZenModeFragment extends ZenModeFragmentBase {
- // for mode deletion menu
- private static final int DELETE_MODE = 1;
+ // for mode context menu
+ private static final int RENAME_MODE = 1;
+ private static final int DELETE_MODE = 2;
private ModeMenuProvider mModeMenuProvider;
@@ -54,7 +55,6 @@ public class ZenModeFragment extends ZenModeFragmentBase {
prefControllers.add(new ZenModeHeaderController(context, "header", this));
prefControllers.add(
new ZenModeButtonPreferenceController(context, "activate", this, mBackend));
- prefControllers.add(new ZenModeActionsPreferenceController(context, "actions"));
prefControllers.add(new ZenModePeopleLinkPreferenceController(
context, "zen_mode_people", mHelperBackend));
prefControllers.add(new ZenModeAppsLinkPreferenceController(
@@ -127,14 +127,18 @@ public class ZenModeFragment extends ZenModeFragmentBase {
}
private class ModeMenuProvider implements MenuProvider {
- private ZenMode mZenMode;
- ModeMenuProvider(ZenMode mode) {
+ @NonNull private final ZenMode mZenMode;
+
+ ModeMenuProvider(@NonNull ZenMode mode) {
mZenMode = mode;
}
@Override
public void onCreateMenu(@NonNull Menu menu, @NonNull MenuInflater menuInflater) {
- if (mZenMode != null && mZenMode.canBeDeleted()) {
+ if (mZenMode.canEditNameAndIcon()) {
+ menu.add(Menu.NONE, RENAME_MODE, Menu.NONE, R.string.zen_mode_menu_rename_mode);
+ }
+ if (mZenMode.canBeDeleted()) {
// Only deleteable modes should get a delete menu option.
menu.add(Menu.NONE, DELETE_MODE, Menu.NONE, R.string.zen_mode_menu_delete_mode);
}
@@ -142,23 +146,25 @@ public class ZenModeFragment extends ZenModeFragmentBase {
@Override
public boolean onMenuItemSelected(@NonNull MenuItem menuItem) {
- if (mZenMode != null) {
- if (menuItem.getItemId() == DELETE_MODE) {
- new AlertDialog.Builder(mContext)
- .setTitle(mContext.getString(R.string.zen_mode_delete_mode_confirmation,
- mZenMode.getRule().getName()))
- .setPositiveButton(R.string.zen_mode_schedule_delete,
- (dialog, which) -> {
- // start finishing before calling removeMode() so that we
- // don't try to update this activity with a nonexistent mode
- // when the zen mode config is updated
- finish();
- mBackend.removeMode(mZenMode);
- })
- .setNegativeButton(R.string.cancel, null)
- .show();
- return true;
- }
+ if (menuItem.getItemId() == RENAME_MODE) {
+ // TODO: b/332937635 - Update metrics category
+ ZenSubSettingLauncher.forModeFragment(mContext, ZenModeEditNameIconFragment.class,
+ mZenMode.getId(), 0).launch();
+ } else if (menuItem.getItemId() == DELETE_MODE) {
+ new AlertDialog.Builder(mContext)
+ .setTitle(mContext.getString(R.string.zen_mode_delete_mode_confirmation,
+ mZenMode.getRule().getName()))
+ .setPositiveButton(R.string.zen_mode_schedule_delete,
+ (dialog, which) -> {
+ // start finishing before calling removeMode() so that we
+ // don't try to update this activity with a nonexistent mode
+ // when the zen mode config is updated
+ finish();
+ mBackend.removeMode(mZenMode);
+ })
+ .setNegativeButton(R.string.cancel, null)
+ .show();
+ return true;
}
return false;
}
diff --git a/src/com/android/settings/notification/modes/ZenSubSettingLauncher.java b/src/com/android/settings/notification/modes/ZenSubSettingLauncher.java
index 529f7fa1cdd..00c21bbe4cd 100644
--- a/src/com/android/settings/notification/modes/ZenSubSettingLauncher.java
+++ b/src/com/android/settings/notification/modes/ZenSubSettingLauncher.java
@@ -23,6 +23,7 @@ import android.content.Context;
import android.os.Bundle;
import com.android.settings.core.SubSettingLauncher;
+import com.android.settings.dashboard.DashboardFragment;
class ZenSubSettingLauncher {
@@ -32,7 +33,7 @@ class ZenSubSettingLauncher {
}
static SubSettingLauncher forModeFragment(Context context,
- Class extends ZenModeFragmentBase> fragmentClass, String modeId,
+ Class extends DashboardFragment> fragmentClass, String modeId,
int sourceMetricsCategory) {
Bundle bundle = new Bundle();
bundle.putString(EXTRA_AUTOMATIC_ZEN_RULE_ID, modeId);