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

Commit 3ce95951 authored by Steve McKay's avatar Steve McKay
Browse files

Show view mode button in action bar on Downloads.

A grab bag also with:
Report Roots while loading (in DEBUG).
Null check DirectoryFragment before calling methods on it.

Bug:26936660,26143397
Change-Id: Ief2c943eb24fb14349bbd9cc4a5fbd670f57d567
parent 4fb2d18c
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -29,7 +29,8 @@
        android:icon="@drawable/ic_menu_search"
        android:showAsAction="always"
        android:actionViewClass="android.widget.SearchView"
        android:imeOptions="actionSearch" />
        android:imeOptions="actionSearch"
        android:visible="false" />
    <item
        android:id="@+id/menu_sort"
        android:title="@string/menu_sort"
@@ -51,12 +52,13 @@
        android:id="@+id/menu_grid"
        android:title="@string/menu_grid"
        android:icon="@drawable/ic_menu_view_grid"
        android:showAsAction="never" />
        android:showAsAction="always" />
    <item
        android:id="@+id/menu_list"
        android:title="@string/menu_list"
        android:icon="@drawable/ic_menu_view_list"
        android:showAsAction="never" />
        android:showAsAction="always" />

    <item
        android:id="@+id/menu_new_window"
        android:title="@string/menu_new_window"
+29 −17
Original line number Diff line number Diff line
@@ -38,6 +38,7 @@ import android.os.AsyncTask;
import android.os.Bundle;
import android.provider.DocumentsContract;
import android.provider.DocumentsContract.Root;
import android.support.annotation.CallSuper;
import android.support.annotation.LayoutRes;
import android.support.annotation.Nullable;
import android.util.Log;
@@ -138,10 +139,12 @@ public abstract class BaseActivity extends Activity implements SearchManagerList
    }

    @Override
    @CallSuper
    public boolean onPrepareOptionsMenu(Menu menu) {
        super.onPrepareOptionsMenu(menu);

        final RootInfo root = getCurrentRoot();
        mSearchManager.showMenu(canSearchRoot());

        final boolean inRecents = getCurrentDirectory() == null;

        final MenuItem sort = menu.findItem(R.id.menu_sort);
@@ -150,24 +153,17 @@ public abstract class BaseActivity extends Activity implements SearchManagerList
        final MenuItem list = menu.findItem(R.id.menu_list);
        final MenuItem advanced = menu.findItem(R.id.menu_advanced);
        final MenuItem fileSize = menu.findItem(R.id.menu_file_size);
        final MenuItem search = menu.findItem(R.id.menu_search);

        // I'm thinkin' this isn't necesary here. If it is...'cuz of a bug....
        // then uncomment the linke and let's get a proper bug reference here.
        // mSearchManager.update(root);

        // Search uses backend ranking; no sorting
        // Search uses backend ranking; no sorting, recents doesn't support sort.
        sort.setVisible(!inRecents && !mSearchManager.isSearching());
        sortSize.setVisible(mState.showSize); // Only sort by size when file sizes are visible
        fileSize.setVisible(!mState.forceSize);

        // grid/list is effectively a toggle.
        grid.setVisible(mState.derivedMode != State.MODE_GRID);
        list.setVisible(mState.derivedMode != State.MODE_LIST);

        sortSize.setVisible(mState.showSize); // Only sort by size when visible
        fileSize.setVisible(!mState.forceSize);
        advanced.setVisible(!mState.forceAdvanced);
        search.setVisible(canSearchRoot());

        advanced.setTitle(LocalPreferences.getDisplayAdvancedDevices(this)
                ? R.string.menu_advanced_hide : R.string.menu_advanced_show);
        fileSize.setTitle(LocalPreferences.getDisplayFileSize(this)
@@ -271,8 +267,10 @@ public abstract class BaseActivity extends Activity implements SearchManagerList
                return true;

            case R.id.menu_paste_from_clipboard:
                DirectoryFragment.get(getFragmentManager())
                    .pasteFromClipboard();
                DirectoryFragment dir = getDirectoryFragment();
                if (dir != null) {
                    dir.pasteFromClipboard();
                }
              return true;

            case R.id.menu_advanced:
@@ -295,6 +293,10 @@ public abstract class BaseActivity extends Activity implements SearchManagerList
        }
    }

    final @Nullable DirectoryFragment getDirectoryFragment() {
        return DirectoryFragment.get(getFragmentManager());
    }

    void showCreateDirectoryDialog() {
        CreateDirectoryFragment.show(getFragmentManager());
    }
@@ -423,7 +425,10 @@ public abstract class BaseActivity extends Activity implements SearchManagerList
    void setDisplayFileSize(boolean display) {
        LocalPreferences.setDisplayFileSize(this, display);
        mState.showSize = display;
        DirectoryFragment.get(getFragmentManager()).onDisplayStateChanged();
        DirectoryFragment dir = getDirectoryFragment();
        if (dir != null) {
            dir.onDisplayStateChanged();
        }
        invalidateOptionsMenu();
    }

@@ -432,7 +437,10 @@ public abstract class BaseActivity extends Activity implements SearchManagerList
     */
    void setUserSortOrder(int sortOrder) {
        mState.userSortOrder = sortOrder;
        DirectoryFragment.get(getFragmentManager()).onSortOrderChanged();
        DirectoryFragment dir = getDirectoryFragment();
        if (dir != null) {
            dir.onSortOrderChanged();
        };
    }

    /**
@@ -447,7 +455,10 @@ public abstract class BaseActivity extends Activity implements SearchManagerList
        // in onOptionsItemSelected, and not do the full invalidation
        // But! That's a larger refactoring we'll save for another day.
        invalidateOptionsMenu();
        DirectoryFragment.get(getFragmentManager()).onViewModeChanged();
        DirectoryFragment dir = getDirectoryFragment();
        if (dir != null) {
            dir.onViewModeChanged();
        };
    }

    public void setPending(boolean pending) {
@@ -496,7 +507,8 @@ public abstract class BaseActivity extends Activity implements SearchManagerList
            return;
        }

        if (DirectoryFragment.get(getFragmentManager()).onBackPressed()) {
        DirectoryFragment dir = getDirectoryFragment();
        if (dir != null && dir.onBackPressed()) {
            return;
        }

+10 −4
Original line number Diff line number Diff line
@@ -293,18 +293,24 @@ public class DocumentsActivity extends BaseActivity {

        final DocumentInfo cwd = getCurrentDirectory();

        boolean picking = mState.action == ACTION_CREATE
                || mState.action == ACTION_OPEN_TREE
                || mState.action == ACTION_PICK_COPY_DESTINATION;

        if (picking) {
            // May already be hidden because the root
            // doesn't support search.
            mSearchManager.showMenu(false);
        }

        final MenuItem createDir = menu.findItem(R.id.menu_create_dir);
        final MenuItem grid = menu.findItem(R.id.menu_grid);
        final MenuItem list = menu.findItem(R.id.menu_list);
        final MenuItem fileSize = menu.findItem(R.id.menu_file_size);

        boolean recents = cwd == null;
        boolean picking = mState.action == ACTION_CREATE
                || mState.action == ACTION_OPEN_TREE
                || mState.action == ACTION_PICK_COPY_DESTINATION;

        createDir.setVisible(picking && !recents && cwd.isCreateSupported());
        mSearchManager.showMenu(!picking);

        // No display options in recent directories
        if (picking && recents) {
+0 −2
Original line number Diff line number Diff line
@@ -150,14 +150,12 @@ public class DownloadsActivity extends BaseActivity {
        final MenuItem newWindow = menu.findItem(R.id.menu_new_window);
        final MenuItem pasteFromCb = menu.findItem(R.id.menu_paste_from_clipboard);
        final MenuItem fileSize = menu.findItem(R.id.menu_file_size);
        final MenuItem search = menu.findItem(R.id.menu_search);

        advanced.setVisible(false);
        createDir.setVisible(false);
        pasteFromCb.setEnabled(false);
        newWindow.setEnabled(false);
        fileSize.setVisible(false);
        search.setVisible(false);

        Menus.disableHiddenItems(menu);
        return true;
+21 −14
Original line number Diff line number Diff line
@@ -245,20 +245,20 @@ public class FilesActivity extends BaseActivity {
    @Override
    public boolean onPrepareOptionsMenu(Menu menu) {
        super.onPrepareOptionsMenu(menu);

        final RootInfo root = getCurrentRoot();

        final MenuItem createDir = menu.findItem(R.id.menu_create_dir);
        final MenuItem pasteFromCb = menu.findItem(R.id.menu_paste_from_clipboard);
        final MenuItem settings = menu.findItem(R.id.menu_settings);

        createDir.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
        createDir.setVisible(true);
        createDir.setEnabled(canCreateDirectory());
        pasteFromCb.setEnabled(mClipper.hasItemsToPaste());
        settings.setVisible(root.hasSettings());

        // TODO: For some reason menu is ignoring this being set
        // to never in activity.xml. File a bug.
        // TODO: For some reason settings menu item is not
        // honoring the "showAsAction=never" setting in activity.xml.
        settings.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);

        Menus.disableHiddenItems(menu, pasteFromCb);
@@ -276,9 +276,10 @@ public class FilesActivity extends BaseActivity {
                createNewWindow();
                return true;
            case R.id.menu_paste_from_clipboard:
                DirectoryFragment dir = DirectoryFragment.get(getFragmentManager());
                dir = DirectoryFragment.get(getFragmentManager());
                DirectoryFragment dir = getDirectoryFragment();
                if (dir != null) {
                    dir.pasteFromClipboard();
                }
                return true;
        }

@@ -381,20 +382,26 @@ public class FilesActivity extends BaseActivity {
    @Override
    public boolean onKeyShortcut(int keyCode, KeyEvent event) {
        DirectoryFragment dir;
        // TODO: All key events should be statically bound using alphabeticShortcut.
        // But not working.
        switch (keyCode) {
            case KeyEvent.KEYCODE_A:
                dir = DirectoryFragment.get(getFragmentManager());
                dir = getDirectoryFragment();
                if (dir != null) {
                    dir.selectAllFiles();
                }
                return true;
            case KeyEvent.KEYCODE_C:
                // TODO: Should be statically bound using alphabeticShortcut. See b/21330356.
                dir = DirectoryFragment.get(getFragmentManager());
                dir = getDirectoryFragment();
                if (dir != null) {
                    dir.copySelectedToClipboard();
                }
                return true;
            case KeyEvent.KEYCODE_V:
                // TODO: Should be statically bound using alphabeticShortcut. See b/21330356.
                dir = DirectoryFragment.get(getFragmentManager());
                dir = getDirectoryFragment();
                if (dir != null) {
                    dir.pasteFromClipboard();
                }
                return true;
            default:
                return super.onKeyShortcut(keyCode, event);
Loading