Merge "Add "rename" option to 3-dot menu" into main
This commit is contained in:
committed by
Android (Google) Code Review
commit
c56c2e0019
@@ -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>
|
@@ -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>
|
||||
|
@@ -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">
|
||||
|
@@ -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();
|
||||
});
|
||||
}
|
||||
}
|
@@ -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
|
||||
|
@@ -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;
|
||||
}
|
||||
|
@@ -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);
|
||||
|
Reference in New Issue
Block a user