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

Commit 87a67a6c authored by Colin Cross's avatar Colin Cross
Browse files

Change switches on resource IDs to if statements

Prepare for building the DocumentsUI code once as a library by using
if statements instead of switches on resource IDs.  Libraries are
compiled with non-final reosurce IDs, as the final IDs will be assigned
later during app linking.

This relands Ia48b0b35a891a6a427b67a7a09bfe6cab2663fc4.

Test: m DocumentsUI
Bug: 294256649
Change-Id: Iac561933980b5089347a451c6738596317eccf76
parent 2edfd23a
Loading
Loading
Loading
Loading
+32 −44
Original line number Diff line number Diff line
@@ -75,7 +75,6 @@ import com.android.documentsui.sidebar.RootsFragment;
import com.android.documentsui.sorting.SortController;
import com.android.documentsui.sorting.SortModel;

import com.android.documentsui.util.VersionUtils;
import com.google.android.material.appbar.AppBarLayout;

import java.util.ArrayList;
@@ -504,50 +503,39 @@ public abstract class BaseActivity
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        switch (item.getItemId()) {
            case android.R.id.home:
        final int id = item.getItemId();
        if (id == android.R.id.home) {
            onBackPressed();
            return true;

            case R.id.option_menu_create_dir:
        } else if (id == R.id.option_menu_create_dir) {
            getInjector().actions.showCreateDirectoryDialog();
            return true;

            case R.id.option_menu_search:
        } else if (id == R.id.option_menu_search) {
            // SearchViewManager listens for this directly.
            return false;

            case R.id.option_menu_select_all:
        } else if (id == R.id.option_menu_select_all) {
            getInjector().actions.selectAllFiles();
            return true;

            case R.id.option_menu_debug:
        } else if (id == R.id.option_menu_debug) {
            getInjector().actions.showDebugMessage();
            return true;

            case R.id.option_menu_sort:
        } else if (id == R.id.option_menu_sort) {
            getInjector().actions.showSortDialog();
            return true;

            case R.id.option_menu_launcher:
        } else if (id == R.id.option_menu_launcher) {
            getInjector().actions.switchLauncherIcon();
            return true;

            case R.id.option_menu_show_hidden_files:
        } else if (id == R.id.option_menu_show_hidden_files) {
            onClickedShowHiddenFiles();
            return true;

            case R.id.sub_menu_grid:
                setViewMode(State.MODE_GRID);
        } else if (id == R.id.sub_menu_grid) {
            setViewMode(MODE_GRID);
            return true;

            case R.id.sub_menu_list:
        } else if (id == R.id.sub_menu_list) {
            setViewMode(State.MODE_LIST);
            return true;

            default:
                return super.onOptionsItemSelected(item);
        }
        return super.onOptionsItemSelected(item);
    }

    protected final @Nullable DirectoryFragment getDirectoryFragment() {
+90 −118
Original line number Diff line number Diff line
@@ -110,8 +110,8 @@ import com.android.documentsui.services.FileOperationService.OpType;
import com.android.documentsui.services.FileOperations;
import com.android.documentsui.sorting.SortDimension;
import com.android.documentsui.sorting.SortModel;

import com.android.documentsui.util.VersionUtils;

import com.google.common.base.Objects;

import java.io.IOException;
@@ -833,42 +833,32 @@ public class DirectoryFragment extends Fragment implements SwipeRefreshLayout.On
        MutableSelection<String> selection = new MutableSelection<>();
        mSelectionMgr.copySelection(selection);

        switch (item.getItemId()) {
            case R.id.action_menu_select:
            case R.id.dir_menu_open:
        final int id = item.getItemId();
        if (id == R.id.action_menu_select || id == R.id.dir_menu_open) {
            openDocuments(selection);
            mActionModeController.finishActionMode();
            return true;

            case R.id.action_menu_open_with:
            case R.id.dir_menu_open_with:
        } else if (id == R.id.action_menu_open_with || id == R.id.dir_menu_open_with) {
            showChooserForDoc(selection);
            return true;

            case R.id.dir_menu_open_in_new_window:
        } else if (id == R.id.dir_menu_open_in_new_window) {
            mActions.openSelectedInNewWindow();
            return true;

            case R.id.action_menu_share:
            case R.id.dir_menu_share:
        } else if (id == R.id.action_menu_share || id == R.id.dir_menu_share) {
            mActions.shareSelectedDocuments();
            return true;

            case R.id.action_menu_delete:
            case R.id.dir_menu_delete:
        } else if (id == R.id.action_menu_delete || id == R.id.dir_menu_delete) {
            // deleteDocuments will end action mode if the documents are deleted.
            // It won't end action mode if user cancels the delete.
            mActions.showDeleteDialog();
            return true;

            case R.id.action_menu_copy_to:
        } else if (id == R.id.action_menu_copy_to) {
            transferDocuments(selection, null, FileOperationService.OPERATION_COPY);
            // TODO: Only finish selection mode if copy-to is not canceled.
            // Need to plum down into handling the way we do with deleteDocuments.
            mActionModeController.finishActionMode();
            return true;

            case R.id.action_menu_compress:
        } else if (id == R.id.action_menu_compress) {
            transferDocuments(selection, mState.stack,
                    FileOperationService.OPERATION_COMPRESS);
            // TODO: Only finish selection mode if compress is not canceled.
@@ -877,14 +867,13 @@ public class DirectoryFragment extends Fragment implements SwipeRefreshLayout.On
            return true;

            // TODO: Implement extract (to the current directory).
            case R.id.action_menu_extract_to:
        } else if (id == R.id.action_menu_extract_to) {
            transferDocuments(selection, null, FileOperationService.OPERATION_EXTRACT);
            // TODO: Only finish selection mode if compress-to is not canceled.
            // Need to plum down into handling the way we do with deleteDocuments.
            mActionModeController.finishActionMode();
            return true;

            case R.id.action_menu_move_to:
        } else if (id == R.id.action_menu_move_to) {
            if (mModel.hasDocuments(selection, DocumentFilters.NOT_MOVABLE)) {
                mInjector.dialogs.showOperationUnsupported();
                return true;
@@ -893,9 +882,7 @@ public class DirectoryFragment extends Fragment implements SwipeRefreshLayout.On
            mActionModeController.finishActionMode();
            transferDocuments(selection, null, FileOperationService.OPERATION_MOVE);
            return true;

            case R.id.action_menu_inspect:
            case R.id.dir_menu_inspect:
        } else if (id == R.id.action_menu_inspect || id == R.id.dir_menu_inspect) {
            mActionModeController.finishActionMode();
            assert selection.size() <= 1;
            DocumentInfo doc = selection.isEmpty()
@@ -904,57 +891,42 @@ public class DirectoryFragment extends Fragment implements SwipeRefreshLayout.On

            mActions.showInspector(doc);
            return true;

            case R.id.dir_menu_cut_to_clipboard:
        } else if (id == R.id.dir_menu_cut_to_clipboard) {
            mActions.cutToClipboard();
            return true;

            case R.id.dir_menu_copy_to_clipboard:
        } else if (id == R.id.dir_menu_copy_to_clipboard) {
            mActions.copyToClipboard();
            return true;

            case R.id.dir_menu_paste_from_clipboard:
        } else if (id == R.id.dir_menu_paste_from_clipboard) {
            pasteFromClipboard();
            return true;

            case R.id.dir_menu_paste_into_folder:
        } else if (id == R.id.dir_menu_paste_into_folder) {
            pasteIntoFolder();
            return true;

            case R.id.action_menu_select_all:
            case R.id.dir_menu_select_all:
        } else if (id == R.id.action_menu_select_all || id == R.id.dir_menu_select_all) {
            mActions.selectAllFiles();
            return true;

            case R.id.action_menu_deselect_all:
            case R.id.dir_menu_deselect_all:
        } else if (id == R.id.action_menu_deselect_all || id == R.id.dir_menu_deselect_all) {
            mActions.deselectAllFiles();
            return true;

            case R.id.action_menu_rename:
            case R.id.dir_menu_rename:
        } else if (id == R.id.action_menu_rename || id == R.id.dir_menu_rename) {
            renameDocuments(selection);
            return true;

            case R.id.dir_menu_create_dir:
        } else if (id == R.id.dir_menu_create_dir) {
            mActions.showCreateDirectoryDialog();
            return true;

            case R.id.dir_menu_view_in_owner:
        } else if (id == R.id.dir_menu_view_in_owner) {
            mActions.viewInOwner();
            return true;

            case R.id.action_menu_sort:
        } else if (id == R.id.action_menu_sort) {
            mActions.showSortDialog();
            return true;

            default:
        }
        if (DEBUG) {
            Log.d(TAG, "Unhandled menu item selected: " + item);
        }
        return false;
    }
    }

    private boolean onAccessibilityClick(View child) {
        if (mSelectionMgr.hasSelection()) {
+14 −19
Original line number Diff line number Diff line
@@ -303,24 +303,19 @@ public class FilesActivity extends BaseActivity implements AbstractActionHandler
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        DirectoryFragment dir;
        switch (item.getItemId()) {
            case R.id.option_menu_create_dir:
        final int id = item.getItemId();
        if (id == R.id.option_menu_create_dir) {
            assert (canCreateDirectory());
            mInjector.actions.showCreateDirectoryDialog();
                break;
            case R.id.option_menu_new_window:
        } else if (id == R.id.option_menu_new_window) {
            mInjector.actions.openInNewWindow(mState.stack);
                break;
            case R.id.option_menu_settings:
        } else if (id == R.id.option_menu_settings) {
            mInjector.actions.openSettings(getCurrentRoot());
                break;
            case R.id.option_menu_select_all:
        } else if (id == R.id.option_menu_select_all) {
            mInjector.actions.selectAllFiles();
                break;
            case R.id.option_menu_inspect:
        } else if (id == R.id.option_menu_inspect) {
            mInjector.actions.showInspector(getCurrentDirectory());
                break;
            default:
        } else {
            return super.onOptionsItemSelected(item);
        }
        return true;
+18 −19
Original line number Diff line number Diff line
@@ -611,27 +611,26 @@ public class RootsFragment extends Fragment {
            return false;
        }
        final RootItem rootItem = (RootItem) mAdapter.getItem(adapterMenuInfo.position);
        switch (item.getItemId()) {
            case R.id.root_menu_eject_root:
        final int id = item.getItemId();
        if (id == R.id.root_menu_eject_root) {
            final View ejectIcon = adapterMenuInfo.targetView.findViewById(R.id.action_icon);
            ejectClicked(ejectIcon, rootItem.root, mActionHandler);
            return true;
            case R.id.root_menu_open_in_new_window:
        } else if (id == R.id.root_menu_open_in_new_window) {
            mActionHandler.openInNewWindow(new DocumentStack(rootItem.root));
            return true;
            case R.id.root_menu_paste_into_folder:
        } else if (id == R.id.root_menu_paste_into_folder) {
            mActionHandler.pasteIntoFolder(rootItem.root);
            return true;
            case R.id.root_menu_settings:
        } else if (id == R.id.root_menu_settings) {
            mActionHandler.openSettings(rootItem.root);
            return true;
            default:
        }
        if (DEBUG) {
            Log.d(TAG, "Unhandled menu item selected: " + item);
        }
        return false;
    }
    }

    private void getRootDocument(RootItem rootItem, RootUpdater updater) {
        // We need to start a GetRootDocumentTask so we can know whether items can be directly
+11 −15
Original line number Diff line number Diff line
@@ -16,11 +16,11 @@

package com.android.documentsui.sorting;

import android.view.View;

import androidx.annotation.Nullable;
import androidx.fragment.app.FragmentActivity;

import android.view.View;

import com.android.documentsui.BaseActivity;
import com.android.documentsui.Injector;
import com.android.documentsui.MetricConsts;
@@ -67,19 +67,15 @@ public final class SortController {
        final Injector<?> injector = ((BaseActivity)activity).getInjector();
        sortModel.setMetricRecorder((SortDimension dimension) -> {
            int sortType = MetricConsts.USER_ACTION_UNKNOWN;
            switch (dimension.getId()) {
                case SortModel.SORT_DIMENSION_ID_TITLE:
            final int id = dimension.getId();
            if (id == SortModel.SORT_DIMENSION_ID_TITLE) {
                sortType = MetricConsts.USER_ACTION_SORT_NAME;
                    break;
                case SortModel.SORT_DIMENSION_ID_SIZE:
            } else if (id == SortModel.SORT_DIMENSION_ID_SIZE) {
                sortType = MetricConsts.USER_ACTION_SORT_SIZE;
                    break;
                case SortModel.SORT_DIMENSION_ID_DATE:
            } else if (id == SortModel.SORT_DIMENSION_ID_DATE) {
                sortType = MetricConsts.USER_ACTION_SORT_DATE;
                    break;
                case SortModel.SORT_DIMENSION_ID_FILE_TYPE:
            } else if (id == SortModel.SORT_DIMENSION_ID_FILE_TYPE) {
                sortType = MetricConsts.USER_ACTION_SORT_TYPE;
                    break;
            }

            Metrics.logUserAction(sortType);
Loading