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