Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7751358a authored by Mihai Nita's avatar Mihai Nita
Browse files

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
parent 0f20f969
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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()
+12 −1
Original line number Diff line number Diff line
@@ -67,7 +67,7 @@ public class LocaleListEditor extends SettingsPreferenceFragment
        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 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<LocaleStore.LocaleInfo> 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);
        }
    }
}