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

Commit 1407d4c7 authored by Jeff Sharkey's avatar Jeff Sharkey
Browse files

DocumentsUI roots can have settings.

Roots use a flag to indicate they have settings, and DocumentsUI
offers to launch towards someone who handles a new Settings intent.

Slight rename of browse intent for clarity.

Bug: 19993667
Change-Id: I86302ec1cfac5e435d8bc5701bdb85fb9b0dcbae
parent fe4d95c3
Loading
Loading
Loading
Loading
+15 −1
Original line number Diff line number Diff line
@@ -107,7 +107,12 @@ public final class DocumentsContract {
    public static final String ACTION_MANAGE_DOCUMENT = "android.provider.action.MANAGE_DOCUMENT";

    /** {@hide} */
    public static final String ACTION_BROWSE_ROOT = "android.provider.action.BROWSE_ROOT";
    public static final String
            ACTION_BROWSE_DOCUMENT_ROOT = "android.provider.action.BROWSE_DOCUMENT_ROOT";

    /** {@hide} */
    public static final String
            ACTION_DOCUMENT_ROOT_SETTINGS = "android.provider.action.DOCUMENT_ROOT_SETTINGS";

    /**
     * Buffer is large enough to rewind past any EXIF headers.
@@ -476,6 +481,15 @@ public final class DocumentsContract {
         * @hide
         */
        public static final int FLAG_ADVANCED = 1 << 17;

        /**
         * Flag indicating that this root has settings.
         *
         * @see #COLUMN_FLAGS
         * @see DocumentsContract#ACTION_DOCUMENT_ROOT_SETTINGS
         * @hide
         */
        public static final int FLAG_HAS_SETTINGS = 1 << 18;
    }

    /**
+1 −1
Original line number Diff line number Diff line
@@ -41,7 +41,7 @@
                <data android:mimeType="vnd.android.document/root" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.provider.action.BROWSE_ROOT" />
                <action android:name="android.provider.action.BROWSE_DOCUMENT_ROOT" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="vnd.android.document/root" />
            </intent-filter>
+4 −0
Original line number Diff line number Diff line
@@ -60,4 +60,8 @@
    <item
        android:id="@+id/menu_file_size"
        android:showAsAction="never" />
    <item
        android:id="@+id/menu_settings"
        android:title="@string/menu_settings"
        android:showAsAction="never" />
</menu>
+12 −1
Original line number Diff line number Diff line
@@ -235,7 +235,7 @@ public class DocumentsActivity extends BaseActivity {
            mState.action = ACTION_OPEN_TREE;
        } else if (DocumentsContract.ACTION_MANAGE_ROOT.equals(action)) {
            mState.action = ACTION_MANAGE;
        } else if (DocumentsContract.ACTION_BROWSE_ROOT.equals(action)) {
        } else if (DocumentsContract.ACTION_BROWSE_DOCUMENT_ROOT.equals(action)) {
            mState.action = ACTION_BROWSE;
        } else if (ACTION_OPEN_COPY_DESTINATION_STRING.equals(action)) {
            mState.action = ACTION_OPEN_COPY_DESTINATION;
@@ -557,6 +557,7 @@ public class DocumentsActivity extends BaseActivity {
        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 settings = menu.findItem(R.id.menu_settings);

        sort.setVisible(cwd != null);
        grid.setVisible(mState.derivedMode != MODE_GRID);
@@ -618,6 +619,9 @@ public class DocumentsActivity extends BaseActivity {
        advanced.setVisible(!(mState.action == ACTION_MANAGE || mState.action == ACTION_BROWSE));
        fileSize.setVisible(fileSizeVisible);

        settings.setVisible((mState.action == ACTION_MANAGE || mState.action == ACTION_BROWSE)
                && (root.flags & Root.FLAG_HAS_SETTINGS) != 0);

        return true;
    }

@@ -657,6 +661,13 @@ public class DocumentsActivity extends BaseActivity {
        } else if (id == R.id.menu_file_size) {
            setDisplayFileSize(!LocalPreferences.getDisplayFileSize(this));
            return true;
        } else if (id == R.id.menu_settings) {
            final RootInfo root = getCurrentRoot();
            final Intent intent = new Intent(DocumentsContract.ACTION_DOCUMENT_ROOT_SETTINGS);
            intent.setDataAndType(DocumentsContract.buildRootUri(root.authority, root.rootId),
                    DocumentsContract.Root.MIME_TYPE_ITEM);
            startActivity(intent);
            return true;
        } else {
            return super.onOptionsItemSelected(item);
        }
+1 −0
Original line number Diff line number Diff line
@@ -162,6 +162,7 @@ public class ExternalStorageProvider extends DocumentsProvider {
                    } else {
                        root.title = volume.getDescription(getContext());
                    }
                    root.flags |= Root.FLAG_HAS_SETTINGS;
                }
                root.docId = getDocIdForFile(path);
                mRoots.add(root);