Merge "Hide "Remove" menu & the drag handle when there's just one locale" into nyc-dev
diff --git a/src/com/android/settings/localepicker/LocaleDragAndDropAdapter.java b/src/com/android/settings/localepicker/LocaleDragAndDropAdapter.java
index b56dd6c..28a5588 100644
--- a/src/com/android/settings/localepicker/LocaleDragAndDropAdapter.java
+++ b/src/com/android/settings/localepicker/LocaleDragAndDropAdapter.java
@@ -153,7 +153,7 @@
         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 18bec15..ef3fbaa 100644
--- a/src/com/android/settings/localepicker/LocaleListEditor.java
+++ b/src/com/android/settings/localepicker/LocaleListEditor.java
@@ -67,7 +67,7 @@
         setHasOptionsMenu(true);
 
         LocaleStore.fillCache(this.getContext());
-        List<LocaleStore.LocaleInfo> feedsList = getUserLocaleList(this.getContext());
+        final List<LocaleStore.LocaleInfo> feedsList = getUserLocaleList(this.getContext());
         mAdapter = new LocaleDragAndDropAdapter(this.getContext(), feedsList);
     }
 
@@ -144,6 +144,7 @@
                     public void onClick(DialogInterface dialog, int which) {
                         mAdapter.removeChecked();
                         setRemoveMode(!mRemoveMode);
+                        updateVisibilityOfRemoveMenu();
                     }
                 })
                 .create()
@@ -158,6 +159,7 @@
         menuItem.setIcon(R.drawable.ic_delete);
         super.onCreateOptionsMenu(menu, inflater);
         mMenu = menu;
+        updateVisibilityOfRemoveMenu();
     }
 
     private static List<LocaleStore.LocaleInfo> getUserLocaleList(Context context) {
@@ -201,6 +203,15 @@
     @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);
+        }
+    }
 }