Loading core/java/com/android/internal/app/AccessibilityButtonChooserActivity.java +33 −48 Original line number Diff line number Diff line Loading @@ -61,7 +61,6 @@ public class AccessibilityButtonChooserActivity extends Activity { private int mShortcutType; private List<AccessibilityButtonTarget> mTargets = new ArrayList<>(); private List<AccessibilityButtonTarget> mReadyToBeDisabledTargets = new ArrayList<>(); private AlertDialog mAlertDialog; private TargetAdapter mTargetAdapter; Loading Loading @@ -117,7 +116,6 @@ public class AccessibilityButtonChooserActivity extends Activity { ACCESSIBILITY_BUTTON); mTargets.addAll(getServiceTargets(this, mShortcutType)); // TODO(b/146815548): Will add title to separate which one type mTargetAdapter = new TargetAdapter(mTargets); mAlertDialog = new AlertDialog.Builder(this) .setAdapter(mTargetAdapter, /* listener= */ null) Loading Loading @@ -269,8 +267,10 @@ public class AccessibilityButtonChooserActivity extends Activity { switch (target.getFragmentType()) { case AccessibilityServiceFragmentType.LEGACY: updateLegacyActionItemVisibility(context, holder); break; case AccessibilityServiceFragmentType.INVISIBLE: updateLegacyOrInvisibleActionItemVisibility(context, holder); updateInvisibleActionItemVisibility(context, holder); break; case AccessibilityServiceFragmentType.INTUITIVE: updateIntuitiveActionItemVisibility(context, holder, target); Loading @@ -283,9 +283,21 @@ public class AccessibilityButtonChooserActivity extends Activity { } } private void updateLegacyOrInvisibleActionItemVisibility(@NonNull Context context, private void updateLegacyActionItemVisibility(@NonNull Context context, @NonNull ViewHolder holder) { final boolean isEditMenuMode = (mShortcutMenuMode == ShortcutMenuMode.EDIT); holder.mLabelView.setEnabled(!isEditMenuMode); holder.mViewItem.setEnabled(!isEditMenuMode); holder.mViewItem.setImageDrawable(context.getDrawable(R.drawable.ic_delete_item)); holder.mViewItem.setVisibility(View.VISIBLE); holder.mSwitchItem.setVisibility(View.GONE); holder.mItemContainer.setVisibility(isEditMenuMode ? View.VISIBLE : View.GONE); } private void updateInvisibleActionItemVisibility(@NonNull Context context, @NonNull ViewHolder holder) { final boolean isEditMenuMode = mShortcutMenuMode == ShortcutMenuMode.EDIT; final boolean isEditMenuMode = (mShortcutMenuMode == ShortcutMenuMode.EDIT); holder.mViewItem.setImageDrawable(context.getDrawable(R.drawable.ic_delete_item)); holder.mViewItem.setVisibility(View.VISIBLE); Loading @@ -295,7 +307,7 @@ public class AccessibilityButtonChooserActivity extends Activity { private void updateIntuitiveActionItemVisibility(@NonNull Context context, @NonNull ViewHolder holder, AccessibilityButtonTarget target) { final boolean isEditMenuMode = mShortcutMenuMode == ShortcutMenuMode.EDIT; final boolean isEditMenuMode = (mShortcutMenuMode == ShortcutMenuMode.EDIT); holder.mViewItem.setImageDrawable(context.getDrawable(R.drawable.ic_delete_item)); holder.mViewItem.setVisibility(isEditMenuMode ? View.VISIBLE : View.GONE); Loading @@ -306,7 +318,7 @@ public class AccessibilityButtonChooserActivity extends Activity { private void updateBounceActionItemVisibility(@NonNull Context context, @NonNull ViewHolder holder) { final boolean isEditMenuMode = mShortcutMenuMode == ShortcutMenuMode.EDIT; final boolean isEditMenuMode = (mShortcutMenuMode == ShortcutMenuMode.EDIT); holder.mViewItem.setImageDrawable( isEditMenuMode ? context.getDrawable(R.drawable.ic_delete_item) Loading Loading @@ -383,20 +395,23 @@ public class AccessibilityButtonChooserActivity extends Activity { } private void onTargetDeleted(AdapterView<?> parent, View view, int position, long id) { // TODO(b/147027236): Will discuss with UX designer what UX behavior about deleting item // is good for user. mReadyToBeDisabledTargets.add(mTargets.get(position)); // TODO(b/146967898): disable service when deleting the target and the target only have // last one shortcut item, only remove it from shortcut list otherwise. if ((mShortcutType == ACCESSIBILITY_BUTTON) && (mTargets.get(position).mFragmentType != AccessibilityServiceFragmentType.LEGACY)) { mTargets.remove(position); mTargetAdapter.notifyDataSetChanged(); } private void onCancelButtonClicked() { resetAndUpdateTargets(); if (mTargets.isEmpty()) { mAlertDialog.dismiss(); } } private void onCancelButtonClicked() { mTargetAdapter.setShortcutMenuMode(ShortcutMenuMode.LAUNCH); mTargetAdapter.notifyDataSetChanged(); mAlertDialog.getButton(DialogInterface.BUTTON_NEGATIVE).setVisibility(View.GONE); mAlertDialog.getButton(DialogInterface.BUTTON_POSITIVE).setText( getString(R.string.edit_accessibility_shortcut_menu_button)); Loading @@ -407,49 +422,19 @@ public class AccessibilityButtonChooserActivity extends Activity { mTargetAdapter.setShortcutMenuMode(ShortcutMenuMode.EDIT); mTargetAdapter.notifyDataSetChanged(); mAlertDialog.getButton(DialogInterface.BUTTON_NEGATIVE).setText( getString(R.string.cancel_accessibility_shortcut_menu_button)); mAlertDialog.getButton(DialogInterface.BUTTON_NEGATIVE).setVisibility(View.VISIBLE); mAlertDialog.getButton(DialogInterface.BUTTON_POSITIVE).setText( getString(R.string.save_accessibility_shortcut_menu_button)); updateDialogListeners(); } private void onSaveButtonClicked() { disableTargets(); resetAndUpdateTargets(); mTargetAdapter.setShortcutMenuMode(ShortcutMenuMode.LAUNCH); mTargetAdapter.notifyDataSetChanged(); mAlertDialog.getButton(DialogInterface.BUTTON_NEGATIVE).setVisibility(View.GONE); mAlertDialog.getButton(DialogInterface.BUTTON_POSITIVE).setText( getString(R.string.edit_accessibility_shortcut_menu_button)); getString(R.string.cancel_accessibility_shortcut_menu_button)); updateDialogListeners(); } private void updateDialogListeners() { final boolean isEditMenuMode = mTargetAdapter.getShortcutMenuMode() == ShortcutMenuMode.EDIT; (mTargetAdapter.getShortcutMenuMode() == ShortcutMenuMode.EDIT); mAlertDialog.getButton(DialogInterface.BUTTON_NEGATIVE).setOnClickListener( view -> onCancelButtonClicked()); mAlertDialog.getButton(DialogInterface.BUTTON_POSITIVE).setOnClickListener( isEditMenuMode ? view -> onSaveButtonClicked() : view -> onEditButtonClicked()); isEditMenuMode ? view -> onCancelButtonClicked() : view -> onEditButtonClicked()); mAlertDialog.getListView().setOnItemClickListener( isEditMenuMode ? this::onTargetDeleted : this::onTargetSelected); } private void disableTargets() { for (AccessibilityButtonTarget service : mReadyToBeDisabledTargets) { // TODO(b/146967898): disable services. } } private void resetAndUpdateTargets() { mTargets.clear(); mTargets.addAll(getServiceTargets(this, mShortcutType)); } } core/res/res/layout/accessibility_button_chooser_item.xml +1 −1 Original line number Diff line number Diff line Loading @@ -36,7 +36,7 @@ android:id="@+id/accessibility_button_target_label" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginStart="8dp" android:layout_marginStart="14dp" android:layout_weight="1" android:textColor="?attr/textColorPrimary"/> Loading core/res/res/values/strings.xml +1 −4 Original line number Diff line number Diff line Loading @@ -4358,10 +4358,7 @@ <string name="accessibility_shortcut_menu_button">Empty</string> <!-- Text in button that edit the accessibility shortcut menu. [CHAR LIMIT=100] --> <string name="edit_accessibility_shortcut_menu_button">Edit</string> <!-- Text in button that save the accessibility shortcut menu changed status. [CHAR LIMIT=100] --> <string name="save_accessibility_shortcut_menu_button">Save</string> <string name="edit_accessibility_shortcut_menu_button">Edit shortcuts</string> <!-- Text in button that cancel the accessibility shortcut menu changed status. [CHAR LIMIT=100] --> <string name="cancel_accessibility_shortcut_menu_button">Cancel</string> Loading core/res/res/values/symbols.xml +0 −1 Original line number Diff line number Diff line Loading @@ -3212,7 +3212,6 @@ <java-symbol type="id" name="accessibility_button_target_switch_item" /> <java-symbol type="string" name="accessibility_magnification_chooser_text" /> <java-symbol type="string" name="edit_accessibility_shortcut_menu_button" /> <java-symbol type="string" name="save_accessibility_shortcut_menu_button" /> <java-symbol type="string" name="cancel_accessibility_shortcut_menu_button" /> <java-symbol type="drawable" name="ic_accessibility_magnification" /> Loading Loading
core/java/com/android/internal/app/AccessibilityButtonChooserActivity.java +33 −48 Original line number Diff line number Diff line Loading @@ -61,7 +61,6 @@ public class AccessibilityButtonChooserActivity extends Activity { private int mShortcutType; private List<AccessibilityButtonTarget> mTargets = new ArrayList<>(); private List<AccessibilityButtonTarget> mReadyToBeDisabledTargets = new ArrayList<>(); private AlertDialog mAlertDialog; private TargetAdapter mTargetAdapter; Loading Loading @@ -117,7 +116,6 @@ public class AccessibilityButtonChooserActivity extends Activity { ACCESSIBILITY_BUTTON); mTargets.addAll(getServiceTargets(this, mShortcutType)); // TODO(b/146815548): Will add title to separate which one type mTargetAdapter = new TargetAdapter(mTargets); mAlertDialog = new AlertDialog.Builder(this) .setAdapter(mTargetAdapter, /* listener= */ null) Loading Loading @@ -269,8 +267,10 @@ public class AccessibilityButtonChooserActivity extends Activity { switch (target.getFragmentType()) { case AccessibilityServiceFragmentType.LEGACY: updateLegacyActionItemVisibility(context, holder); break; case AccessibilityServiceFragmentType.INVISIBLE: updateLegacyOrInvisibleActionItemVisibility(context, holder); updateInvisibleActionItemVisibility(context, holder); break; case AccessibilityServiceFragmentType.INTUITIVE: updateIntuitiveActionItemVisibility(context, holder, target); Loading @@ -283,9 +283,21 @@ public class AccessibilityButtonChooserActivity extends Activity { } } private void updateLegacyOrInvisibleActionItemVisibility(@NonNull Context context, private void updateLegacyActionItemVisibility(@NonNull Context context, @NonNull ViewHolder holder) { final boolean isEditMenuMode = (mShortcutMenuMode == ShortcutMenuMode.EDIT); holder.mLabelView.setEnabled(!isEditMenuMode); holder.mViewItem.setEnabled(!isEditMenuMode); holder.mViewItem.setImageDrawable(context.getDrawable(R.drawable.ic_delete_item)); holder.mViewItem.setVisibility(View.VISIBLE); holder.mSwitchItem.setVisibility(View.GONE); holder.mItemContainer.setVisibility(isEditMenuMode ? View.VISIBLE : View.GONE); } private void updateInvisibleActionItemVisibility(@NonNull Context context, @NonNull ViewHolder holder) { final boolean isEditMenuMode = mShortcutMenuMode == ShortcutMenuMode.EDIT; final boolean isEditMenuMode = (mShortcutMenuMode == ShortcutMenuMode.EDIT); holder.mViewItem.setImageDrawable(context.getDrawable(R.drawable.ic_delete_item)); holder.mViewItem.setVisibility(View.VISIBLE); Loading @@ -295,7 +307,7 @@ public class AccessibilityButtonChooserActivity extends Activity { private void updateIntuitiveActionItemVisibility(@NonNull Context context, @NonNull ViewHolder holder, AccessibilityButtonTarget target) { final boolean isEditMenuMode = mShortcutMenuMode == ShortcutMenuMode.EDIT; final boolean isEditMenuMode = (mShortcutMenuMode == ShortcutMenuMode.EDIT); holder.mViewItem.setImageDrawable(context.getDrawable(R.drawable.ic_delete_item)); holder.mViewItem.setVisibility(isEditMenuMode ? View.VISIBLE : View.GONE); Loading @@ -306,7 +318,7 @@ public class AccessibilityButtonChooserActivity extends Activity { private void updateBounceActionItemVisibility(@NonNull Context context, @NonNull ViewHolder holder) { final boolean isEditMenuMode = mShortcutMenuMode == ShortcutMenuMode.EDIT; final boolean isEditMenuMode = (mShortcutMenuMode == ShortcutMenuMode.EDIT); holder.mViewItem.setImageDrawable( isEditMenuMode ? context.getDrawable(R.drawable.ic_delete_item) Loading Loading @@ -383,20 +395,23 @@ public class AccessibilityButtonChooserActivity extends Activity { } private void onTargetDeleted(AdapterView<?> parent, View view, int position, long id) { // TODO(b/147027236): Will discuss with UX designer what UX behavior about deleting item // is good for user. mReadyToBeDisabledTargets.add(mTargets.get(position)); // TODO(b/146967898): disable service when deleting the target and the target only have // last one shortcut item, only remove it from shortcut list otherwise. if ((mShortcutType == ACCESSIBILITY_BUTTON) && (mTargets.get(position).mFragmentType != AccessibilityServiceFragmentType.LEGACY)) { mTargets.remove(position); mTargetAdapter.notifyDataSetChanged(); } private void onCancelButtonClicked() { resetAndUpdateTargets(); if (mTargets.isEmpty()) { mAlertDialog.dismiss(); } } private void onCancelButtonClicked() { mTargetAdapter.setShortcutMenuMode(ShortcutMenuMode.LAUNCH); mTargetAdapter.notifyDataSetChanged(); mAlertDialog.getButton(DialogInterface.BUTTON_NEGATIVE).setVisibility(View.GONE); mAlertDialog.getButton(DialogInterface.BUTTON_POSITIVE).setText( getString(R.string.edit_accessibility_shortcut_menu_button)); Loading @@ -407,49 +422,19 @@ public class AccessibilityButtonChooserActivity extends Activity { mTargetAdapter.setShortcutMenuMode(ShortcutMenuMode.EDIT); mTargetAdapter.notifyDataSetChanged(); mAlertDialog.getButton(DialogInterface.BUTTON_NEGATIVE).setText( getString(R.string.cancel_accessibility_shortcut_menu_button)); mAlertDialog.getButton(DialogInterface.BUTTON_NEGATIVE).setVisibility(View.VISIBLE); mAlertDialog.getButton(DialogInterface.BUTTON_POSITIVE).setText( getString(R.string.save_accessibility_shortcut_menu_button)); updateDialogListeners(); } private void onSaveButtonClicked() { disableTargets(); resetAndUpdateTargets(); mTargetAdapter.setShortcutMenuMode(ShortcutMenuMode.LAUNCH); mTargetAdapter.notifyDataSetChanged(); mAlertDialog.getButton(DialogInterface.BUTTON_NEGATIVE).setVisibility(View.GONE); mAlertDialog.getButton(DialogInterface.BUTTON_POSITIVE).setText( getString(R.string.edit_accessibility_shortcut_menu_button)); getString(R.string.cancel_accessibility_shortcut_menu_button)); updateDialogListeners(); } private void updateDialogListeners() { final boolean isEditMenuMode = mTargetAdapter.getShortcutMenuMode() == ShortcutMenuMode.EDIT; (mTargetAdapter.getShortcutMenuMode() == ShortcutMenuMode.EDIT); mAlertDialog.getButton(DialogInterface.BUTTON_NEGATIVE).setOnClickListener( view -> onCancelButtonClicked()); mAlertDialog.getButton(DialogInterface.BUTTON_POSITIVE).setOnClickListener( isEditMenuMode ? view -> onSaveButtonClicked() : view -> onEditButtonClicked()); isEditMenuMode ? view -> onCancelButtonClicked() : view -> onEditButtonClicked()); mAlertDialog.getListView().setOnItemClickListener( isEditMenuMode ? this::onTargetDeleted : this::onTargetSelected); } private void disableTargets() { for (AccessibilityButtonTarget service : mReadyToBeDisabledTargets) { // TODO(b/146967898): disable services. } } private void resetAndUpdateTargets() { mTargets.clear(); mTargets.addAll(getServiceTargets(this, mShortcutType)); } }
core/res/res/layout/accessibility_button_chooser_item.xml +1 −1 Original line number Diff line number Diff line Loading @@ -36,7 +36,7 @@ android:id="@+id/accessibility_button_target_label" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginStart="8dp" android:layout_marginStart="14dp" android:layout_weight="1" android:textColor="?attr/textColorPrimary"/> Loading
core/res/res/values/strings.xml +1 −4 Original line number Diff line number Diff line Loading @@ -4358,10 +4358,7 @@ <string name="accessibility_shortcut_menu_button">Empty</string> <!-- Text in button that edit the accessibility shortcut menu. [CHAR LIMIT=100] --> <string name="edit_accessibility_shortcut_menu_button">Edit</string> <!-- Text in button that save the accessibility shortcut menu changed status. [CHAR LIMIT=100] --> <string name="save_accessibility_shortcut_menu_button">Save</string> <string name="edit_accessibility_shortcut_menu_button">Edit shortcuts</string> <!-- Text in button that cancel the accessibility shortcut menu changed status. [CHAR LIMIT=100] --> <string name="cancel_accessibility_shortcut_menu_button">Cancel</string> Loading
core/res/res/values/symbols.xml +0 −1 Original line number Diff line number Diff line Loading @@ -3212,7 +3212,6 @@ <java-symbol type="id" name="accessibility_button_target_switch_item" /> <java-symbol type="string" name="accessibility_magnification_chooser_text" /> <java-symbol type="string" name="edit_accessibility_shortcut_menu_button" /> <java-symbol type="string" name="save_accessibility_shortcut_menu_button" /> <java-symbol type="string" name="cancel_accessibility_shortcut_menu_button" /> <java-symbol type="drawable" name="ic_accessibility_magnification" /> Loading