Merge "Add "rename" option to 3-dot menu" into main

This commit is contained in:
Matías Hernández
2024-07-10 15:35:03 +00:00
committed by Android (Google) Code Review
7 changed files with 37 additions and 126 deletions

View File

@@ -1,25 +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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="?android:attr/colorControlNormal"
android:viewportHeight="960"
android:viewportWidth="960">
<path
android:fillColor="@android:color/white"
android:pathData="M620,440Q645,440 662.5,422.5Q680,405 680,380Q680,355 662.5,337.5Q645,320 620,320Q595,320 577.5,337.5Q560,355 560,380Q560,405 577.5,422.5Q595,440 620,440ZM340,440Q365,440 382.5,422.5Q400,405 400,380Q400,355 382.5,337.5Q365,320 340,320Q315,320 297.5,337.5Q280,355 280,380Q280,405 297.5,422.5Q315,440 340,440ZM480,700Q548,700 603.5,661.5Q659,623 684,560L276,560Q301,623 356.5,661.5Q412,700 480,700ZM480,880Q397,880 324,848.5Q251,817 197,763Q143,709 111.5,636Q80,563 80,480Q80,397 111.5,324Q143,251 197,197Q251,143 324,111.5Q397,80 480,80Q563,80 636,111.5Q709,143 763,197Q817,251 848.5,324Q880,397 880,480Q880,563 848.5,636Q817,709 763,763Q709,817 636,848.5Q563,880 480,880ZM480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480ZM480,800Q614,800 707,707Q800,614 800,480Q800,346 707,253Q614,160 480,160Q346,160 253,253Q160,346 160,480Q160,614 253,707Q346,800 480,800Z" />
</vector>

View File

@@ -8043,8 +8043,11 @@
<!-- Do not disturb: Delete text button presented in a dialog to confirm the user would like to delete the selected DND rules. [CHAR LIMIT=30] -->
<string name="zen_mode_schedule_delete">Delete</string>
<!-- Priority Modes: Menu option for renaming a mode on its configuration page [CHAR LIMIT=40] -->
<string name="zen_mode_menu_rename_mode">Rename</string>
<!-- Do not disturb: Menu option for deleting a mode on its configuration page [CHAR LIMIT=40] -->
<string name="zen_mode_menu_delete_mode">Delete mode</string>
<string name="zen_mode_menu_delete_mode">Delete</string>
<!-- Do not disturb: Confirmation dialog asking the user whether they would like to delete the named mode [CHAR LIMIT: 40] -->
<string name="zen_mode_delete_mode_confirmation">Delete \"<xliff:g id="mode" example="My Schedule">%1$s</xliff:g>\" mode?</string>
@@ -9451,17 +9454,8 @@
<!-- [CHAR LIMIT=NONE] Zen mode summary spoken when changing mode by voice: Turn on all notifications. -->
<string name="zen_mode_summary_always">Change to always interrupt</string>
<!-- [CHAR LIMIT=20] Caption of the action button to change the name of a mode. -->
<string name="zen_mode_action_change_name">Rename</string>
<!-- [CHAR LIMIT=20] Caption of the action button to change the icon of a mode. -->
<string name="zen_mode_action_change_icon">Change icon</string>
<!-- [CHAR LIMIT=40] Zen mode settings: Title for the "choose mode icon" screen -->
<string name="zen_mode_icon_picker_title">Change icon</string>
<!-- Priority Modes: Title for the "rename mode" screen [CHAR LIMIT=20] -->
<string name="zen_mode_rename_title">Rename</string>
<string name="zen_mode_rename_title">Edit mode</string>
<!-- Priority Modes: Title for the "add mode" screen [CHAR LIMIT=20] -->
<string name="zen_mode_new_custom_title">Add mode</string>

View File

@@ -28,10 +28,6 @@
android:selectable="false"
android:layout="@layout/modes_activation_button"/>
<com.android.settingslib.widget.ActionButtonsPreference
android:key="actions"
android:selectable="true" />
<PreferenceCategory
android:title="@string/mode_interruption_filter_title"
android:key="modes_filters">

View File

@@ -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();
});
}
}

View File

@@ -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

View File

@@ -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;
}

View File

@@ -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);