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

Commit c90170e8 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: I570a299cc8fd7d1d5acab948f9c6531a9adde486
b: 6360834
parent b79e7627
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;
            }
+2 −4
Original line number Diff line number Diff line
@@ -133,10 +133,6 @@ public class ActionModeHandler implements ActionMode.Callback {
                needsConfirm = true;
            }
            mMenuExecutor.onMenuClicked(item, needsConfirm, listener);
            if (action == R.id.action_select_all) {
                updateSupportedOperation();
                updateSelectionMenu();
            }
        } finally {
            root.unlockRenderThread();
        }
@@ -282,6 +278,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;
+17 −7
Original line number Diff line number Diff line
@@ -107,15 +107,19 @@ public class SelectionManager {
        return mInverseSelection ^ mClickedSet.contains(itemId);
    }

    public int getSelectedCount() {
        int count = mClickedSet.size();
        if (mInverseSelection) {
    private int getTotalCount() {
        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 +132,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();
        }
    }