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