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

Commit bc616ee4 authored by Zemiao Zhu's avatar Zemiao Zhu
Browse files

Add menu item for show hidden files.

Bug: 138309749
Test: atest DocumentsUIGoogleTests
Change-Id: I5c7c0d9e0853c0462fb2ce78285cde8536517dcc
parent 23e1ab5f
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -76,6 +76,11 @@
           android:title="@string/menu_inspect"
           android:visible="false"
           app:showAsAction="never"/>
        <item
            android:id="@+id/option_menu_show_hidden_files"
            android:title="@string/menu_show_hidden_files"
            android:visible="false"
            app:showAsAction="never"/>
        <item
            android:id="@+id/option_menu_launcher"
            android:visible="false"
+4 −0
Original line number Diff line number Diff line
@@ -75,6 +75,10 @@
    <string name="menu_rename">Rename</string>
    <!-- Menu item that displays properties about the selected document [CHAR LIMIT=28] -->
    <string name="menu_inspect">Get info</string>
    <!-- Menu item that shows hidden files [CHAR LIMIT=28] -->
    <string name="menu_show_hidden_files">Show hidden files</string>
    <!-- Menu item that hides hidden files [CHAR LIMIT=28] -->
    <string name="menu_hide_hidden_files">Don\u2019t show hidden files</string>
    <!-- Menu item that renames the selected document [CHAR LIMIT=28] -->
    <string name="menu_view_in_owner">View in <xliff:g id="source" example="Google Drive">%1$s</xliff:g></string>

+27 −0
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import static com.android.documentsui.base.Shared.EXTRA_BENCHMARK;
import static com.android.documentsui.base.SharedMinimal.DEBUG;
import static com.android.documentsui.base.State.MODE_GRID;

import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
@@ -416,6 +417,11 @@ public abstract class BaseActivity
        state.localOnly = intent.getBooleanExtra(Intent.EXTRA_LOCAL_ONLY, false);
        state.excludedAuthorities = getExcludedAuthorities();
        state.restrictScopeStorage = Shared.shouldRestrictStorageAccessFramework(this);
        state.showHiddenFiles = LocalPreferences.getShowHiddenFiles(
                getApplicationContext(),
                getApplicationContext()
                        .getResources()
                        .getBoolean(R.bool.show_hidden_files_by_default));

        includeState(state);

@@ -537,6 +543,10 @@ public abstract class BaseActivity
                getInjector().actions.switchLauncherIcon();
                return true;

            case R.id.option_menu_show_hidden_files:
                onClickedShowHiddenFiles();
                return true;

            case R.id.sub_menu_grid:
                setViewMode(State.MODE_GRID);
                return true;
@@ -664,6 +674,23 @@ public abstract class BaseActivity
        return mState;
    }

    /**
     * Updates hidden files visibility based on user action.
     */
    private void onClickedShowHiddenFiles() {
        boolean showHiddenFiles = !mState.showHiddenFiles;
        Context context = getApplicationContext();

        Metrics.logUserAction(showHiddenFiles
                ? MetricConsts.USER_ACTION_SHOW_HIDDEN_FILES
                : MetricConsts.USER_ACTION_HIDE_HIDDEN_FILES);
        LocalPreferences.setShowHiddenFiles(context, showHiddenFiles);
        mState.showHiddenFiles = showHiddenFiles;

        // Calls this to trigger either MultiRootDocumentsLoader or DirectoryLoader reloading.
        mInjector.actions.loadDocumentsForCurrentStack();
    }

    /**
     * Set mode based on explicit user action.
     */
+2 −4
Original line number Diff line number Diff line
@@ -46,7 +46,6 @@ import com.android.documentsui.base.MimeTypes;
import com.android.documentsui.base.RootInfo;
import com.android.documentsui.base.State;
import com.android.documentsui.base.UserId;
import com.android.documentsui.prefs.LocalPreferences;
import com.android.documentsui.roots.RootCursorWrapper;
import com.android.documentsui.sorting.SortModel;

@@ -179,9 +178,8 @@ public class DirectoryLoader extends AsyncTaskLoader<DirectoryResult> {
            }
            cursor.registerContentObserver(mObserver);

            boolean showHiddenFiles = LocalPreferences.getShowHiddenFiles(getContext(),
                    getContext().getResources().getBoolean(R.bool.show_hidden_files_by_default));
            cursor = new FilteringCursorWrapper(cursor, showHiddenFiles);
            // Filter hidden files.
            cursor = new FilteringCursorWrapper(cursor, mState.showHiddenFiles);

            if (mSearchMode && !mFeatures.isFoldersInSearchResultsEnabled()) {
                // There is no findDocumentPath API. Enable filtering on folders in search mode.
+8 −0
Original line number Diff line number Diff line
@@ -96,6 +96,7 @@ public abstract class MenuManager {
        updateInspect(mOptionMenu.findItem(R.id.option_menu_inspect));
        updateSort(mOptionMenu.findItem(R.id.option_menu_sort));
        updateLauncher(mOptionMenu.findItem(R.id.option_menu_launcher));
        updateShowHiddenFiles(mOptionMenu.findItem(R.id.option_menu_show_hidden_files));

        Menus.disableHiddenItems(mOptionMenu);
        mSearchManager.updateMenu();
@@ -258,6 +259,13 @@ public abstract class MenuManager {
        Menus.setEnabledAndVisible(list, mState.derivedMode != State.MODE_LIST);
    }

    protected void updateShowHiddenFiles(MenuItem showHidden) {
        Menus.setEnabledAndVisible(showHidden, true);
        showHidden.setTitle(mState.showHiddenFiles
                ? R.string.menu_hide_hidden_files
                : R.string.menu_show_hidden_files);
    }

    protected void updateSort(MenuItem sort) {
        Menus.setEnabledAndVisible(sort, true);
    }
Loading