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 fragmentClass, String modeId, + Class fragmentClass, String modeId, int sourceMetricsCategory) { Bundle bundle = new Bundle(); bundle.putString(EXTRA_AUTOMATIC_ZEN_RULE_ID, modeId);