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

Commit b287384e authored by Steve McKay's avatar Steve McKay Committed by Android (Google) Code Review
Browse files

Merge "Add support for opening multiple windows."

parents 440f0a34 9f9d5b43
Loading
Loading
Loading
Loading
+14 −2
Original line number Original line Diff line number Diff line
@@ -3,6 +3,7 @@


    <uses-permission android:name="android.permission.MANAGE_DOCUMENTS" />
    <uses-permission android:name="android.permission.MANAGE_DOCUMENTS" />
    <uses-permission android:name="android.permission.REMOVE_TASKS" />
    <uses-permission android:name="android.permission.REMOVE_TASKS" />
    <uses-permission android:name="android.permission.REORDER_TASKS" />


    <application
    <application
        android:name=".DocumentsApplication"
        android:name=".DocumentsApplication"
@@ -49,8 +50,8 @@
        </activity>
        </activity>


        <activity
        <activity
            android:name=".FilesActivity"
            android:name=".LauncherActivity"
            android:theme="@style/FilesTheme"
            android:theme="@android:style/Theme.NoDisplay"
            android:icon="@drawable/ic_files_app"
            android:icon="@drawable/ic_files_app"
            android:label="@string/files_label"
            android:label="@string/files_label"
            android:enabled="@bool/productivity_device">
            android:enabled="@bool/productivity_device">
@@ -58,6 +59,17 @@
                <action android:name="android.intent.action.MAIN" />
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            </intent-filter>
        </activity>

        <activity
            android:name=".FilesActivity"
            android:theme="@style/FilesTheme"
            android:icon="@drawable/ic_files_app"
            android:label="@string/files_label"
            android:documentLaunchMode="intoExisting">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
            </intent-filter>
            <intent-filter>
            <intent-filter>
                <action android:name="android.provider.action.BROWSE_DOCUMENT_ROOT" />
                <action android:name="android.provider.action.BROWSE_DOCUMENT_ROOT" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.DEFAULT" />
+8 −0
Original line number Original line Diff line number Diff line
@@ -26,6 +26,7 @@
        android:id="@+id/menu_create_dir"
        android:id="@+id/menu_create_dir"
        android:title="@string/menu_create_dir"
        android:title="@string/menu_create_dir"
        android:icon="@drawable/ic_menu_new_folder"
        android:icon="@drawable/ic_menu_new_folder"
        android:alphabeticShortcut="e"
        android:showAsAction="always"
        android:showAsAction="always"
        android:visible="false" />
        android:visible="false" />
    <item
    <item
@@ -55,12 +56,19 @@
        android:title="@string/menu_list"
        android:title="@string/menu_list"
        android:icon="@drawable/ic_menu_view_list"
        android:icon="@drawable/ic_menu_view_list"
        android:showAsAction="never" />
        android:showAsAction="never" />
    <item
        android:id="@+id/menu_new_window"
        android:title="@string/menu_new_window"
        android:alphabeticShortcut="n"
        android:showAsAction="never"
        android:visible="false" />
    <item
    <item
        android:id="@+id/menu_paste_from_clipboard"
        android:id="@+id/menu_paste_from_clipboard"
        android:title="@string/menu_paste_from_clipboard"
        android:title="@string/menu_paste_from_clipboard"
        android:alphabeticShortcut="v"
        android:alphabeticShortcut="v"
        android:showAsAction="never"
        android:showAsAction="never"
        android:visible="false" />
        android:visible="false" />
    <!-- Copy action is defined in mode_directory.xml -->
    <item
    <item
        android:id="@+id/menu_advanced"
        android:id="@+id/menu_advanced"
        android:showAsAction="never"
        android:showAsAction="never"
+2 −0
Original line number Original line Diff line number Diff line
@@ -54,6 +54,8 @@
    <!-- Menu item title that moves the selected documents [CHAR LIMIT=24] -->
    <!-- Menu item title that moves the selected documents [CHAR LIMIT=24] -->
    <string name="menu_move">Move to\u2026</string>
    <string name="menu_move">Move to\u2026</string>


    <!-- Menu item title that creates a new window in the activity [CHAR LIMIT=24] -->
    <string name="menu_new_window">New window</string>
    <!-- Menu item title that copies the selected documents to clipboard [CHAR LIMIT=24] -->
    <!-- Menu item title that copies the selected documents to clipboard [CHAR LIMIT=24] -->
    <string name="menu_copy_to_clipboard">Copy</string>
    <string name="menu_copy_to_clipboard">Copy</string>
    <!-- Menu item title that pastes files from the clipboard [CHAR LIMIT=24] -->
    <!-- Menu item title that pastes files from the clipboard [CHAR LIMIT=24] -->
+4 −1
Original line number Original line Diff line number Diff line
@@ -75,10 +75,11 @@ abstract class BaseActivity extends Activity {
    RootsCache mRoots;
    RootsCache mRoots;
    SearchManager mSearchManager;
    SearchManager mSearchManager;
    DrawerController mDrawer;
    DrawerController mDrawer;
    boolean mProductivityDevice;


    private final String mTag;
    @LayoutRes
    @LayoutRes
    private int mLayoutId;
    private int mLayoutId;
    private final String mTag;
    private DirectoryContainerView mDirectoryContainer;
    private DirectoryContainerView mDirectoryContainer;


    public abstract void onDocumentPicked(DocumentInfo doc, @Nullable DocumentContext siblings);
    public abstract void onDocumentPicked(DocumentInfo doc, @Nullable DocumentContext siblings);
@@ -99,6 +100,7 @@ abstract class BaseActivity extends Activity {
    public void onCreate(Bundle icicle) {
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        super.onCreate(icicle);


        mProductivityDevice = getResources().getBoolean(R.bool.productivity_device);
        mState = (icicle != null)
        mState = (icicle != null)
                ? icicle.<State>getParcelable(EXTRA_STATE)
                ? icicle.<State>getParcelable(EXTRA_STATE)
                        : buildState();
                        : buildState();
@@ -208,6 +210,7 @@ abstract class BaseActivity extends Activity {
            switch (item.getItemId()) {
            switch (item.getItemId()) {
                case R.id.menu_advanced:
                case R.id.menu_advanced:
                case R.id.menu_file_size:
                case R.id.menu_file_size:
                case R.id.menu_new_window:
                    break;
                    break;
                default:
                default:
                    item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
                    item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
+29 −18
Original line number Original line Diff line number Diff line
@@ -19,6 +19,7 @@ package com.android.documentsui;
import static com.android.documentsui.DirectoryFragment.ANIM_NONE;
import static com.android.documentsui.DirectoryFragment.ANIM_NONE;
import static com.android.documentsui.Shared.DEBUG;
import static com.android.documentsui.Shared.DEBUG;
import static com.android.internal.util.Preconditions.checkArgument;
import static com.android.internal.util.Preconditions.checkArgument;
import static com.android.internal.util.Preconditions.checkState;


import android.app.Activity;
import android.app.Activity;
import android.app.FragmentManager;
import android.app.FragmentManager;
@@ -85,11 +86,12 @@ public class FilesActivity extends BaseActivity {


        RootsFragment.show(getFragmentManager(), null);
        RootsFragment.show(getFragmentManager(), null);
        if (!mState.restored) {
        if (!mState.restored) {
            Uri rootUri = getIntent().getData();
            Intent intent = getIntent();
            Uri rootUri = intent.getData();


            // If we've got a specific root to display, restore that root using a dedicated
            // If we've got a specific root to display, restore that root using a dedicated
            // authority. That way a misbehaving provider won't result in an ANR.
            // authority. That way a misbehaving provider won't result in an ANR.
            if (rootUri != null) {
            if (rootUri != null && !LauncherActivity.isLaunchUri(rootUri)) {
                new RestoreRootTask(rootUri).executeOnExecutor(
                new RestoreRootTask(rootUri).executeOnExecutor(
                        ProviderExecutor.forAuthority(rootUri.getAuthority()));
                        ProviderExecutor.forAuthority(rootUri.getAuthority()));
            } else {
            } else {
@@ -97,7 +99,6 @@ public class FilesActivity extends BaseActivity {
            }
            }


            // Show a failure dialog if there was a failed operation.
            // Show a failure dialog if there was a failed operation.
            final Intent intent = getIntent();
            final DocumentStack dstStack = intent.getParcelableExtra(CopyService.EXTRA_STACK);
            final DocumentStack dstStack = intent.getParcelableExtra(CopyService.EXTRA_STACK);
            final int failure = intent.getIntExtra(CopyService.EXTRA_FAILURE, 0);
            final int failure = intent.getIntExtra(CopyService.EXTRA_FAILURE, 0);
            final int transferMode = intent.getIntExtra(CopyService.EXTRA_TRANSFER_MODE,
            final int transferMode = intent.getIntExtra(CopyService.EXTRA_TRANSFER_MODE,
@@ -207,16 +208,25 @@ public class FilesActivity extends BaseActivity {
    public boolean onPrepareOptionsMenu(Menu menu) {
    public boolean onPrepareOptionsMenu(Menu menu) {
        boolean shown = super.onPrepareOptionsMenu(menu);
        boolean shown = super.onPrepareOptionsMenu(menu);


        final MenuItem pasteFromCb = menu.findItem(R.id.menu_paste_from_clipboard);
        menu.findItem(R.id.menu_file_size).setVisible(true);
        menu.findItem(R.id.menu_advanced).setVisible(true);

        final MenuItem createDir = menu.findItem(R.id.menu_create_dir);
        final MenuItem createDir = menu.findItem(R.id.menu_create_dir);
        final MenuItem newWindow = menu.findItem(R.id.menu_new_window);
        final MenuItem pasteFromCb = menu.findItem(R.id.menu_paste_from_clipboard);


        boolean canCreateDir = canCreateDirectory();
        boolean canCreateDir = canCreateDirectory();


        createDir.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
        createDir.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
        createDir.setVisible(canCreateDir);
        createDir.setVisible(canCreateDir);
        createDir.setEnabled(canCreateDir);

        newWindow.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
        newWindow.setVisible(mProductivityDevice);
        newWindow.setEnabled(mProductivityDevice);


        pasteFromCb.setVisible(true);
        pasteFromCb.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
        pasteFromCb.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
        pasteFromCb.setVisible(true);
        pasteFromCb.setEnabled(mClipper.hasItemsToPaste());
        pasteFromCb.setEnabled(mClipper.hasItemsToPaste());


        return shown;
        return shown;
@@ -224,8 +234,15 @@ public class FilesActivity extends BaseActivity {


    @Override
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
    public boolean onOptionsItemSelected(MenuItem item) {
        final int id = item.getItemId();
        switch (item.getItemId()) {
        if (id == R.id.menu_paste_from_clipboard) {
            case R.id.menu_create_dir:
                checkState(canCreateDirectory());
                showCreateDirectoryDialog();
                return true;
            case R.id.menu_new_window:
                startActivity(LauncherActivity.createLaunchIntent(this));
                return true;
            case R.id.menu_paste_from_clipboard:
                DirectoryFragment dir = DirectoryFragment.get(getFragmentManager());
                DirectoryFragment dir = DirectoryFragment.get(getFragmentManager());
                dir = DirectoryFragment.get(getFragmentManager());
                dir = DirectoryFragment.get(getFragmentManager());
                dir.pasteFromClipboard();
                dir.pasteFromClipboard();
@@ -317,19 +334,13 @@ public class FilesActivity extends BaseActivity {
                dir = DirectoryFragment.get(getFragmentManager());
                dir = DirectoryFragment.get(getFragmentManager());
                dir.selectAllFiles();
                dir.selectAllFiles();
                return true;
                return true;
            case KeyEvent.KEYCODE_N:
                if (event.isShiftPressed() && canCreateDirectory()) {
                    showCreateDirectoryDialog();
                    return true;
                }
            case KeyEvent.KEYCODE_C:
            case KeyEvent.KEYCODE_C:
                // TODO: Should be statically bound using alphabeticShortcut. See b/21330356.
                // TODO: Should be statically bound using alphabeticShortcut. See b/21330356.
                dir = DirectoryFragment.get(getFragmentManager());
                dir = DirectoryFragment.get(getFragmentManager());
                dir.copySelectedToClipboard();
                dir.copySelectedToClipboard();
                // TODO: Cancel action mode in directory fragment.
        }
        }


        return super.onKeyUp(keyCode, event);
        return super.onKeyShortcut(keyCode, event);
    }
    }


    @Override
    @Override
Loading