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 Diff line number Diff line
@@ -3,6 +3,7 @@

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

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

        <activity
            android:name=".FilesActivity"
            android:theme="@style/FilesTheme"
            android:name=".LauncherActivity"
            android:theme="@android:style/Theme.NoDisplay"
            android:icon="@drawable/ic_files_app"
            android:label="@string/files_label"
            android:enabled="@bool/productivity_device">
@@ -58,6 +59,17 @@
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </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>
                <action android:name="android.provider.action.BROWSE_DOCUMENT_ROOT" />
                <category android:name="android.intent.category.DEFAULT" />
+8 −0
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@
        android:id="@+id/menu_create_dir"
        android:title="@string/menu_create_dir"
        android:icon="@drawable/ic_menu_new_folder"
        android:alphabeticShortcut="e"
        android:showAsAction="always"
        android:visible="false" />
    <item
@@ -55,12 +56,19 @@
        android:title="@string/menu_list"
        android:icon="@drawable/ic_menu_view_list"
        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
        android:id="@+id/menu_paste_from_clipboard"
        android:title="@string/menu_paste_from_clipboard"
        android:alphabeticShortcut="v"
        android:showAsAction="never"
        android:visible="false" />
    <!-- Copy action is defined in mode_directory.xml -->
    <item
        android:id="@+id/menu_advanced"
        android:showAsAction="never"
+2 −0
Original line number Diff line number Diff line
@@ -54,6 +54,8 @@
    <!-- Menu item title that moves the selected documents [CHAR LIMIT=24] -->
    <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] -->
    <string name="menu_copy_to_clipboard">Copy</string>
    <!-- Menu item title that pastes files from the clipboard [CHAR LIMIT=24] -->
+4 −1
Original line number Diff line number Diff line
@@ -75,10 +75,11 @@ abstract class BaseActivity extends Activity {
    RootsCache mRoots;
    SearchManager mSearchManager;
    DrawerController mDrawer;
    boolean mProductivityDevice;

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

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

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

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

        RootsFragment.show(getFragmentManager(), null);
        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
            // 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(
                        ProviderExecutor.forAuthority(rootUri.getAuthority()));
            } else {
@@ -97,7 +99,6 @@ public class FilesActivity extends BaseActivity {
            }

            // Show a failure dialog if there was a failed operation.
            final Intent intent = getIntent();
            final DocumentStack dstStack = intent.getParcelableExtra(CopyService.EXTRA_STACK);
            final int failure = intent.getIntExtra(CopyService.EXTRA_FAILURE, 0);
            final int transferMode = intent.getIntExtra(CopyService.EXTRA_TRANSFER_MODE,
@@ -207,16 +208,25 @@ public class FilesActivity extends BaseActivity {
    public boolean onPrepareOptionsMenu(Menu 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 newWindow = menu.findItem(R.id.menu_new_window);
        final MenuItem pasteFromCb = menu.findItem(R.id.menu_paste_from_clipboard);

        boolean canCreateDir = canCreateDirectory();

        createDir.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
        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.setVisible(true);
        pasteFromCb.setEnabled(mClipper.hasItemsToPaste());

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

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

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

    @Override
Loading