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

Commit 53c8e803 authored by Steve McKay's avatar Steve McKay
Browse files

Extract SelectionManager interface.

This will be necessary to decouple selection manager from DocumentsUI.
Why? In order eliminate the "reset" method that DocumentsUI depends on
to accommodate it's fragment transaction model...without incuring
further DocumentsUI refactoring costs.
Eliminate refs to documetnsui.Shared.
Update tests to not use AndroidTestCase.

Change-Id: I56cc85c3659e2116203f829c6f0d46b32a6d3cb6
Bug: 64847011
Test: Small and medium passing.
parent c5421cd3
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -47,8 +47,8 @@ import com.android.documentsui.base.Procedure;
import com.android.documentsui.dirlist.DocumentHolder;
import com.android.documentsui.dirlist.DocumentsAdapter;
import com.android.documentsui.dirlist.FocusHandler;
import com.android.documentsui.Model.Update;
import com.android.documentsui.selection.SelectionManager;
import com.android.documentsui.Model.Update;

import java.util.ArrayList;
import java.util.List;
+1 −2
Original line number Diff line number Diff line
@@ -32,7 +32,6 @@ import com.android.documentsui.dirlist.DocumentsAdapter;
import com.android.documentsui.prefs.ScopedPreferences;
import com.android.documentsui.queries.SearchViewManager;
import com.android.documentsui.selection.SelectionManager;
import com.android.documentsui.selection.SelectionManager.SelectionPredicate;
import com.android.documentsui.ui.DialogController;
import com.android.documentsui.ui.MessageBuilder;
import com.android.internal.annotations.VisibleForTesting;
@@ -120,7 +119,7 @@ public class Injector<T extends ActionHandler> {
    }

    public SelectionManager getSelectionManager(
            DocumentsAdapter adapter, SelectionPredicate canSetState) {
            DocumentsAdapter adapter, SelectionManager.SelectionPredicate canSetState) {
        return selectionMgr.reset(adapter, adapter, canSetState);
    }

+1 −1
Original line number Diff line number Diff line
@@ -32,7 +32,7 @@ import com.android.documentsui.base.State;
import com.android.documentsui.dirlist.AnimationView;
import com.android.documentsui.queries.SearchViewManager;
import com.android.documentsui.roots.ProvidersAccess;
import com.android.documentsui.selection.SelectionManager;
import com.android.documentsui.selection.DefaultSelectionManager;

import java.util.Collection;

+4 −1
Original line number Diff line number Diff line
@@ -94,6 +94,7 @@ import com.android.documentsui.selection.BandController;
import com.android.documentsui.selection.GestureSelector;
import com.android.documentsui.selection.Selection;
import com.android.documentsui.selection.SelectionManager;
import com.android.documentsui.selection.SelectionManager.SelectionPredicate;
import com.android.documentsui.services.FileOperation;
import com.android.documentsui.services.FileOperationService;
import com.android.documentsui.services.FileOperationService.OpType;
@@ -315,7 +316,8 @@ public class DirectoryFragment extends Fragment implements SwipeRefreshLayout.On
        mModel.addUpdateListener(mAdapter.getModelUpdateListener());
        mModel.addUpdateListener(mModelUpdateListener);

        mSelectionMgr = mInjector.getSelectionManager(mAdapter, this::canSetSelectionState);
        SelectionManager.SelectionPredicate canSelect = this::canSetSelectionState;
        mSelectionMgr = mInjector.getSelectionManager(mAdapter, canSelect);
        mFocusManager = mInjector.getFocusManager(mRecView, mModel);
        mActions = mInjector.getActionHandler(mReloadLock);

@@ -332,6 +334,7 @@ public class DirectoryFragment extends Fragment implements SwipeRefreshLayout.On
                    mRecView,
                    mAdapter,
                    mSelectionMgr,
                    canSelect,
                    mReloadLock,
                    (int pos) -> {
                        // The band selection model only operates on documents and directories.
+2 −1
Original line number Diff line number Diff line
@@ -57,6 +57,7 @@ import com.android.documentsui.clipping.DocumentClipper;
import com.android.documentsui.dirlist.AnimationView.AnimationType;
import com.android.documentsui.dirlist.DirectoryFragment;
import com.android.documentsui.prefs.ScopedPreferences;
import com.android.documentsui.selection.DefaultSelectionManager;
import com.android.documentsui.selection.SelectionManager;
import com.android.documentsui.services.FileOperationService;
import com.android.documentsui.sidebar.RootsFragment;
@@ -105,7 +106,7 @@ public class FilesActivity extends BaseActivity implements ActionHandler.Addons
        super.onCreate(icicle);

        DocumentClipper clipper = DocumentsApplication.getDocumentClipper(this);
        mInjector.selectionMgr = new SelectionManager(SelectionManager.MODE_MULTIPLE);
        mInjector.selectionMgr = new DefaultSelectionManager(SelectionManager.MODE_MULTIPLE);

        mInjector.focusManager = new FocusManager(
                mInjector.features,
Loading