From 7751358ab6b3a97e849bfd7722df7a7bd765abe3 Mon Sep 17 00:00:00 2001 From: Mihai Nita Date: Tue, 8 Mar 2016 10:53:24 -0800 Subject: [PATCH] Hide "Remove" menu & the drag handle when there's just one locale When there's just one locale, showing the "Remove" menu and the drag handle is confusing to the user since nothing can happen if they try to use them: the drag simply won't happen, and if they go through the delete process, we give them an error. Bug: 26730336 Change-Id: Ie219dd9b3d653272b325d7af01aba205a58cd472 --- .../localepicker/LocaleDragAndDropAdapter.java | 2 +- .../settings/localepicker/LocaleListEditor.java | 13 ++++++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/localepicker/LocaleDragAndDropAdapter.java b/src/com/android/settings/localepicker/LocaleDragAndDropAdapter.java index b56dd6cb255..28a5588136b 100644 --- a/src/com/android/settings/localepicker/LocaleDragAndDropAdapter.java +++ b/src/com/android/settings/localepicker/LocaleDragAndDropAdapter.java @@ -153,7 +153,7 @@ class LocaleDragAndDropAdapter dragCell.setMiniLabel(mNumberFormatter.format(i + 1)); dragCell.setShowCheckbox(mRemoveMode); dragCell.setShowMiniLabel(!mRemoveMode); - dragCell.setShowHandle(!mRemoveMode); + dragCell.setShowHandle(!mRemoveMode && mDragEnabled); dragCell.setChecked(false); dragCell.setTag(feedItem); dragCell.getCheckbox() diff --git a/src/com/android/settings/localepicker/LocaleListEditor.java b/src/com/android/settings/localepicker/LocaleListEditor.java index 18bec157829..ef3fbaa8482 100644 --- a/src/com/android/settings/localepicker/LocaleListEditor.java +++ b/src/com/android/settings/localepicker/LocaleListEditor.java @@ -67,7 +67,7 @@ public class LocaleListEditor extends SettingsPreferenceFragment setHasOptionsMenu(true); LocaleStore.fillCache(this.getContext()); - List feedsList = getUserLocaleList(this.getContext()); + final List feedsList = getUserLocaleList(this.getContext()); mAdapter = new LocaleDragAndDropAdapter(this.getContext(), feedsList); } @@ -144,6 +144,7 @@ public class LocaleListEditor extends SettingsPreferenceFragment public void onClick(DialogInterface dialog, int which) { mAdapter.removeChecked(); setRemoveMode(!mRemoveMode); + updateVisibilityOfRemoveMenu(); } }) .create() @@ -158,6 +159,7 @@ public class LocaleListEditor extends SettingsPreferenceFragment menuItem.setIcon(R.drawable.ic_delete); super.onCreateOptionsMenu(menu, inflater); mMenu = menu; + updateVisibilityOfRemoveMenu(); } private static List getUserLocaleList(Context context) { @@ -201,6 +203,15 @@ public class LocaleListEditor extends SettingsPreferenceFragment @Override public void onLocaleSelected(LocaleStore.LocaleInfo locale) { mAdapter.addLocale(locale); + updateVisibilityOfRemoveMenu(); } + // Hide the "Remove" menu if there is only one locale in the list, show it otherwise + // This is called when the menu is first created, and then one add / remove locale + private void updateVisibilityOfRemoveMenu() { + final MenuItem menuItemRemove = mMenu.findItem(MENU_ID_REMOVE); + if (menuItemRemove != null) { + menuItemRemove.setVisible(mAdapter.getItemCount() > 1); + } + } }