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

Commit 21c2e665 authored by Ray Chen's avatar Ray Chen
Browse files

Fix 6360834 Select All is shown in place of Deselect all option

The CL changes the SelectionManager's toggle method so it changes itself to
inverse selection mode when all items are already selected, and onSelectionModeChange
will be triggered so the listener can update the selection menu (Select all/Deselect all)
and ActionBar.

Change-Id: I9aa5507067415e52f6800c254ecb4d68e7395ffa
b: 6360834
parent 3efc2b24
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -545,7 +545,7 @@ public class AlbumSetPage extends ActivityState implements
                break;
            }
            case SelectionManager.SELECT_ALL_MODE: {
                mActionModeHandler.setTitle(getSelectedString());
                mActionModeHandler.updateSupportedOperation();
                mRootPane.invalidate();
                break;
            }
+1 −0
Original line number Diff line number Diff line
@@ -212,6 +212,7 @@ public class PhotoPage extends ActivityState implements
            }

            mMediaSet = mActivity.getDataManager().getMediaSet(mSetPathString);
            mSelectionManager.setSourceMediaSet(mMediaSet);
            mCurrentIndex = data.getInt(KEY_INDEX_HINT, 0);
            if (mMediaSet == null) {
                Log.w(TAG, "failed to restore " + mSetPathString);
+2 −0
Original line number Diff line number Diff line
@@ -283,6 +283,8 @@ public class ActionModeHandler implements ActionMode.Callback {
            mMenuTask.cancel();
        }

        updateSelectionMenu();

        // Disable share action until share intent is in good shape
        final MenuItem item = mShareActionProvider != null ?
                mMenu.findItem(R.id.action_share) : null;
+22 −11
Original line number Diff line number Diff line
@@ -107,15 +107,21 @@ public class SelectionManager {
        return mInverseSelection ^ mClickedSet.contains(itemId);
    }

    public int getSelectedCount() {
        int count = mClickedSet.size();
        if (mInverseSelection) {
    private int getTotalCount() {
        if (mSourceMediaSet == null) return -1;

        if (mTotal < 0) {
            mTotal = mIsAlbumSet
                    ? mSourceMediaSet.getSubMediaSetCount()
                    : mSourceMediaSet.getMediaItemCount();
        }
            count = mTotal - count;
        return mTotal;
    }

    public int getSelectedCount() {
        int count = mClickedSet.size();
        if (mInverseSelection) {
            count = getTotalCount() - count;
        }
        return count;
    }
@@ -128,8 +134,14 @@ public class SelectionManager {
            mClickedSet.add(path);
        }

        // Convert to inverse selection mode if everything is selected.
        int count = getSelectedCount();
        if (count == getTotalCount()) {
            selectAll();
        }

        if (mListener != null) mListener.onSelectionChange(path, isItemSelected(path));
        if (getSelectedCount() == 0 && mAutoLeave) {
        if (count == 0 && mAutoLeave) {
            leaveSelectionMode();
        }
    }
@@ -159,8 +171,8 @@ public class SelectionManager {
        ArrayList<Path> selected = new ArrayList<Path>();
        if (mIsAlbumSet) {
            if (mInverseSelection) {
                int max = mSourceMediaSet.getSubMediaSetCount();
                for (int i = 0; i < max; i++) {
                int total = getTotalCount();
                for (int i = 0; i < total; i++) {
                    MediaSet set = mSourceMediaSet.getSubMediaSet(i);
                    Path id = set.getPath();
                    if (!mClickedSet.contains(id)) {
@@ -182,8 +194,7 @@ public class SelectionManager {
            }
        } else {
            if (mInverseSelection) {

                int total = mSourceMediaSet.getMediaItemCount();
                int total = getTotalCount();
                int index = 0;
                while (index < total) {
                    int count = Math.min(total - index, MediaSet.MEDIAITEM_BATCH_FETCH_COUNT);