Loading core/java/android/os/storage/VolumeInfo.java +2 −0 Original line number Diff line number Diff line Loading @@ -438,6 +438,8 @@ public class VolumeInfo implements Parcelable { final Intent intent = new Intent(DocumentsContract.ACTION_BROWSE_DOCUMENT_ROOT); intent.addCategory(Intent.CATEGORY_DEFAULT); intent.setData(uri); intent.putExtra(DocumentsContract.EXTRA_SHOW_FILESIZE, true); intent.putExtra(DocumentsContract.EXTRA_SHOW_ADVANCED, true); return intent; } Loading core/java/android/provider/DocumentsContract.java +4 −1 Original line number Diff line number Diff line Loading @@ -92,6 +92,9 @@ public final class DocumentsContract { /** {@hide} */ public static final String EXTRA_SHOW_ADVANCED = "android.content.extra.SHOW_ADVANCED"; /** {@hide} */ public static final String EXTRA_SHOW_FILESIZE = "android.content.extra.SHOW_FILESIZE"; /** {@hide} */ public static final String EXTRA_TARGET_URI = "android.content.extra.TARGET_URI"; Loading packages/DocumentsUI/AndroidManifest.xml +5 −5 Original line number Diff line number Diff line Loading @@ -35,11 +35,6 @@ <action android:name="android.intent.action.OPEN_DOCUMENT_TREE" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> <intent-filter> <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> </activity> <activity Loading @@ -63,6 +58,11 @@ <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <intent-filter> <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> </activity> <provider Loading packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java +23 −29 Original line number Diff line number Diff line Loading @@ -16,13 +16,6 @@ package com.android.documentsui; import static com.android.documentsui.BaseActivity.State.ACTION_BROWSE; import static com.android.documentsui.BaseActivity.State.ACTION_CREATE; import static com.android.documentsui.BaseActivity.State.ACTION_GET_CONTENT; import static com.android.documentsui.BaseActivity.State.ACTION_MANAGE; import static com.android.documentsui.BaseActivity.State.ACTION_OPEN; import static com.android.documentsui.BaseActivity.State.ACTION_OPEN_COPY_DESTINATION; import static com.android.documentsui.BaseActivity.State.ACTION_OPEN_TREE; import static com.android.documentsui.DirectoryFragment.ANIM_DOWN; import static com.android.documentsui.DirectoryFragment.ANIM_NONE; import static com.android.documentsui.DirectoryFragment.ANIM_SIDE; Loading Loading @@ -124,22 +117,6 @@ abstract class BaseActivity extends Activity { setResult(Activity.RESULT_CANCELED); } @Override public void onResume() { super.onResume(); final State state = getDisplayState(); final RootInfo root = getCurrentRoot(); // If we're browsing a specific root, and that root went away, then we // have no reason to hang around if (state.action == State.ACTION_BROWSE && root != null) { if (mRoots.getRootBlocking(root.authority, root.rootId) == null) { finish(); } } } @Override public boolean onCreateOptionsMenu(Menu menu) { boolean showMenu = super.onCreateOptionsMenu(menu); Loading Loading @@ -178,8 +155,10 @@ abstract class BaseActivity extends Activity { State state = getDisplayState(); sortSize.setVisible(state.showSize); // Only sort by size when visible fileSize.setVisible(!state.showSize); grid.setVisible(state.derivedMode != State.MODE_GRID); list.setVisible(state.derivedMode != State.MODE_LIST); advanced.setVisible(!mState.showAdvanced); settings.setVisible((root.flags & Root.FLAG_HAS_SETTINGS) != 0); return shown; Loading @@ -189,13 +168,17 @@ abstract class BaseActivity extends Activity { State state = new State(); final Intent intent = getIntent(); final String action = intent.getAction(); state.localOnly = intent.getBooleanExtra(Intent.EXTRA_LOCAL_ONLY, false); state.forceSize = intent.getBooleanExtra(DocumentsContract.EXTRA_SHOW_FILESIZE, false); state.showSize = state.forceSize || LocalPreferences.getDisplayFileSize(this); state.forceAdvanced = intent.getBooleanExtra(DocumentsContract.EXTRA_SHOW_ADVANCED, false); state.showAdvanced = state.forceAdvanced || LocalPreferences.getDisplayAdvancedDevices(this); state.showAdvanced = state.forceAdvanced || LocalPreferences.getDisplayAdvancedDevices(this); state.initAcceptMimes(intent); state.excludedAuthorities = getExcludedAuthorities(); return state; Loading @@ -219,7 +202,7 @@ abstract class BaseActivity extends Activity { if (mRoots.isRecentsRoot(root)) { onCurrentDirectoryChanged(ANIM_SIDE); } else { new PickRootTask(root).executeOnExecutor(getCurrentExecutor()); new PickRootTask(root).executeOnExecutor(getExecutorForCurrentDirectory()); } } Loading Loading @@ -399,6 +382,7 @@ abstract class BaseActivity extends Activity { public int derivedSortOrder = SORT_ORDER_DISPLAY_NAME; public boolean allowMultiple; public boolean forceSize ; public boolean showSize; public boolean localOnly ; public boolean forceAdvanced ; Loading Loading @@ -429,7 +413,6 @@ abstract class BaseActivity extends Activity { public static final int ACTION_OPEN_TREE = 4; public static final int ACTION_MANAGE = 5; public static final int ACTION_BROWSE = 6; public static final int ACTION_BROWSE_ALL = 7; public static final int ACTION_OPEN_COPY_DESTINATION = 8; public static final int MODE_UNKNOWN = 0; Loading @@ -441,6 +424,15 @@ abstract class BaseActivity extends Activity { public static final int SORT_ORDER_LAST_MODIFIED = 2; public static final int SORT_ORDER_SIZE = 3; public void initAcceptMimes(Intent intent) { if (intent.hasExtra(Intent.EXTRA_MIME_TYPES)) { acceptMimes = intent.getStringArrayExtra(Intent.EXTRA_MIME_TYPES); } else { String glob = intent.getType(); acceptMimes = new String[] { glob != null ? glob : "*/*" }; } } @Override public int describeContents() { return 0; Loading @@ -453,6 +445,7 @@ abstract class BaseActivity extends Activity { out.writeStringArray(acceptMimes); out.writeInt(userSortOrder); out.writeInt(allowMultiple ? 1 : 0); out.writeInt(forceSize ? 1 : 0); out.writeInt(showSize ? 1 : 0); out.writeInt(localOnly ? 1 : 0); out.writeInt(forceAdvanced ? 1 : 0); Loading @@ -475,6 +468,7 @@ abstract class BaseActivity extends Activity { state.acceptMimes = in.readStringArray(); state.userSortOrder = in.readInt(); state.allowMultiple = in.readInt() != 0; state.forceSize = in.readInt() != 0; state.showSize = in.readInt() != 0; state.localOnly = in.readInt() != 0; state.forceAdvanced = in.readInt() != 0; Loading Loading @@ -562,7 +556,7 @@ abstract class BaseActivity extends Activity { return getDisplayState().stack.peek(); } public Executor getCurrentExecutor() { public Executor getExecutorForCurrentDirectory() { final DocumentInfo cwd = getCurrentDirectory(); if (cwd != null && cwd.authority != null) { return ProviderExecutor.forAuthority(cwd.authority); Loading packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java +10 −15 Original line number Diff line number Diff line Loading @@ -17,7 +17,6 @@ package com.android.documentsui; import static com.android.documentsui.BaseActivity.State.ACTION_BROWSE; import static com.android.documentsui.BaseActivity.State.ACTION_BROWSE_ALL; import static com.android.documentsui.BaseActivity.State.ACTION_CREATE; import static com.android.documentsui.BaseActivity.State.ACTION_MANAGE; import static com.android.documentsui.BaseActivity.State.MODE_GRID; Loading Loading @@ -101,7 +100,6 @@ import com.android.documentsui.RecentsProvider.StateColumns; import com.android.documentsui.model.DocumentInfo; import com.android.documentsui.model.DocumentStack; import com.android.documentsui.model.RootInfo; import com.android.internal.util.Preconditions; import com.google.common.collect.Lists; Loading Loading @@ -1554,9 +1552,9 @@ public class DirectoryFragment extends Fragment { } private FragmentTuner pickFragmentTuner(final State state) { return state.action == ACTION_BROWSE_ALL return state.action == ACTION_BROWSE ? new FilesTuner() : new DefaultTuner(state); : new DefaultTuner(state.action); } /** Loading Loading @@ -1593,15 +1591,14 @@ public class DirectoryFragment extends Fragment { */ private static final class DefaultTuner implements FragmentTuner { private final State mState; private final boolean mManaging; public DefaultTuner(State state) { mState = state; public DefaultTuner(int action) { mManaging = (action == ACTION_MANAGE); } @Override public void updateActionMenu(Menu menu, int dirType, boolean canDelete) { Preconditions.checkState(mState.action != ACTION_BROWSE_ALL); final MenuItem open = menu.findItem(R.id.menu_open); final MenuItem share = menu.findItem(R.id.menu_share); Loading @@ -1610,14 +1607,11 @@ public class DirectoryFragment extends Fragment { final MenuItem moveTo = menu.findItem(R.id.menu_move_to); final MenuItem copyToClipboard = menu.findItem(R.id.menu_copy_to_clipboard); final boolean manageOrBrowse = (mState.action == ACTION_MANAGE || mState.action == ACTION_BROWSE); open.setVisible(!manageOrBrowse); share.setVisible(manageOrBrowse); delete.setVisible(manageOrBrowse && canDelete); open.setVisible(!mManaging); share.setVisible(mManaging); delete.setVisible(mManaging && canDelete); // Disable copying from the Recents view. copyTo.setVisible(manageOrBrowse && dirType != TYPE_RECENT_OPEN); copyTo.setVisible(mManaging && dirType != TYPE_RECENT_OPEN); moveTo.setVisible(SystemProperties.getBoolean("debug.documentsui.enable_move", false)); // Only shown in files mode. Loading @@ -1634,6 +1628,7 @@ public class DirectoryFragment extends Fragment { private static final class FilesTuner implements FragmentTuner { @Override public void updateActionMenu(Menu menu, int dirType, boolean canDelete) { menu.findItem(R.id.menu_share).setVisible(true); menu.findItem(R.id.menu_delete).setVisible(canDelete); menu.findItem(R.id.menu_copy_to_clipboard).setVisible(true); Loading Loading
core/java/android/os/storage/VolumeInfo.java +2 −0 Original line number Diff line number Diff line Loading @@ -438,6 +438,8 @@ public class VolumeInfo implements Parcelable { final Intent intent = new Intent(DocumentsContract.ACTION_BROWSE_DOCUMENT_ROOT); intent.addCategory(Intent.CATEGORY_DEFAULT); intent.setData(uri); intent.putExtra(DocumentsContract.EXTRA_SHOW_FILESIZE, true); intent.putExtra(DocumentsContract.EXTRA_SHOW_ADVANCED, true); return intent; } Loading
core/java/android/provider/DocumentsContract.java +4 −1 Original line number Diff line number Diff line Loading @@ -92,6 +92,9 @@ public final class DocumentsContract { /** {@hide} */ public static final String EXTRA_SHOW_ADVANCED = "android.content.extra.SHOW_ADVANCED"; /** {@hide} */ public static final String EXTRA_SHOW_FILESIZE = "android.content.extra.SHOW_FILESIZE"; /** {@hide} */ public static final String EXTRA_TARGET_URI = "android.content.extra.TARGET_URI"; Loading
packages/DocumentsUI/AndroidManifest.xml +5 −5 Original line number Diff line number Diff line Loading @@ -35,11 +35,6 @@ <action android:name="android.intent.action.OPEN_DOCUMENT_TREE" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> <intent-filter> <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> </activity> <activity Loading @@ -63,6 +58,11 @@ <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <intent-filter> <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> </activity> <provider Loading
packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java +23 −29 Original line number Diff line number Diff line Loading @@ -16,13 +16,6 @@ package com.android.documentsui; import static com.android.documentsui.BaseActivity.State.ACTION_BROWSE; import static com.android.documentsui.BaseActivity.State.ACTION_CREATE; import static com.android.documentsui.BaseActivity.State.ACTION_GET_CONTENT; import static com.android.documentsui.BaseActivity.State.ACTION_MANAGE; import static com.android.documentsui.BaseActivity.State.ACTION_OPEN; import static com.android.documentsui.BaseActivity.State.ACTION_OPEN_COPY_DESTINATION; import static com.android.documentsui.BaseActivity.State.ACTION_OPEN_TREE; import static com.android.documentsui.DirectoryFragment.ANIM_DOWN; import static com.android.documentsui.DirectoryFragment.ANIM_NONE; import static com.android.documentsui.DirectoryFragment.ANIM_SIDE; Loading Loading @@ -124,22 +117,6 @@ abstract class BaseActivity extends Activity { setResult(Activity.RESULT_CANCELED); } @Override public void onResume() { super.onResume(); final State state = getDisplayState(); final RootInfo root = getCurrentRoot(); // If we're browsing a specific root, and that root went away, then we // have no reason to hang around if (state.action == State.ACTION_BROWSE && root != null) { if (mRoots.getRootBlocking(root.authority, root.rootId) == null) { finish(); } } } @Override public boolean onCreateOptionsMenu(Menu menu) { boolean showMenu = super.onCreateOptionsMenu(menu); Loading Loading @@ -178,8 +155,10 @@ abstract class BaseActivity extends Activity { State state = getDisplayState(); sortSize.setVisible(state.showSize); // Only sort by size when visible fileSize.setVisible(!state.showSize); grid.setVisible(state.derivedMode != State.MODE_GRID); list.setVisible(state.derivedMode != State.MODE_LIST); advanced.setVisible(!mState.showAdvanced); settings.setVisible((root.flags & Root.FLAG_HAS_SETTINGS) != 0); return shown; Loading @@ -189,13 +168,17 @@ abstract class BaseActivity extends Activity { State state = new State(); final Intent intent = getIntent(); final String action = intent.getAction(); state.localOnly = intent.getBooleanExtra(Intent.EXTRA_LOCAL_ONLY, false); state.forceSize = intent.getBooleanExtra(DocumentsContract.EXTRA_SHOW_FILESIZE, false); state.showSize = state.forceSize || LocalPreferences.getDisplayFileSize(this); state.forceAdvanced = intent.getBooleanExtra(DocumentsContract.EXTRA_SHOW_ADVANCED, false); state.showAdvanced = state.forceAdvanced || LocalPreferences.getDisplayAdvancedDevices(this); state.showAdvanced = state.forceAdvanced || LocalPreferences.getDisplayAdvancedDevices(this); state.initAcceptMimes(intent); state.excludedAuthorities = getExcludedAuthorities(); return state; Loading @@ -219,7 +202,7 @@ abstract class BaseActivity extends Activity { if (mRoots.isRecentsRoot(root)) { onCurrentDirectoryChanged(ANIM_SIDE); } else { new PickRootTask(root).executeOnExecutor(getCurrentExecutor()); new PickRootTask(root).executeOnExecutor(getExecutorForCurrentDirectory()); } } Loading Loading @@ -399,6 +382,7 @@ abstract class BaseActivity extends Activity { public int derivedSortOrder = SORT_ORDER_DISPLAY_NAME; public boolean allowMultiple; public boolean forceSize ; public boolean showSize; public boolean localOnly ; public boolean forceAdvanced ; Loading Loading @@ -429,7 +413,6 @@ abstract class BaseActivity extends Activity { public static final int ACTION_OPEN_TREE = 4; public static final int ACTION_MANAGE = 5; public static final int ACTION_BROWSE = 6; public static final int ACTION_BROWSE_ALL = 7; public static final int ACTION_OPEN_COPY_DESTINATION = 8; public static final int MODE_UNKNOWN = 0; Loading @@ -441,6 +424,15 @@ abstract class BaseActivity extends Activity { public static final int SORT_ORDER_LAST_MODIFIED = 2; public static final int SORT_ORDER_SIZE = 3; public void initAcceptMimes(Intent intent) { if (intent.hasExtra(Intent.EXTRA_MIME_TYPES)) { acceptMimes = intent.getStringArrayExtra(Intent.EXTRA_MIME_TYPES); } else { String glob = intent.getType(); acceptMimes = new String[] { glob != null ? glob : "*/*" }; } } @Override public int describeContents() { return 0; Loading @@ -453,6 +445,7 @@ abstract class BaseActivity extends Activity { out.writeStringArray(acceptMimes); out.writeInt(userSortOrder); out.writeInt(allowMultiple ? 1 : 0); out.writeInt(forceSize ? 1 : 0); out.writeInt(showSize ? 1 : 0); out.writeInt(localOnly ? 1 : 0); out.writeInt(forceAdvanced ? 1 : 0); Loading @@ -475,6 +468,7 @@ abstract class BaseActivity extends Activity { state.acceptMimes = in.readStringArray(); state.userSortOrder = in.readInt(); state.allowMultiple = in.readInt() != 0; state.forceSize = in.readInt() != 0; state.showSize = in.readInt() != 0; state.localOnly = in.readInt() != 0; state.forceAdvanced = in.readInt() != 0; Loading Loading @@ -562,7 +556,7 @@ abstract class BaseActivity extends Activity { return getDisplayState().stack.peek(); } public Executor getCurrentExecutor() { public Executor getExecutorForCurrentDirectory() { final DocumentInfo cwd = getCurrentDirectory(); if (cwd != null && cwd.authority != null) { return ProviderExecutor.forAuthority(cwd.authority); Loading
packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java +10 −15 Original line number Diff line number Diff line Loading @@ -17,7 +17,6 @@ package com.android.documentsui; import static com.android.documentsui.BaseActivity.State.ACTION_BROWSE; import static com.android.documentsui.BaseActivity.State.ACTION_BROWSE_ALL; import static com.android.documentsui.BaseActivity.State.ACTION_CREATE; import static com.android.documentsui.BaseActivity.State.ACTION_MANAGE; import static com.android.documentsui.BaseActivity.State.MODE_GRID; Loading Loading @@ -101,7 +100,6 @@ import com.android.documentsui.RecentsProvider.StateColumns; import com.android.documentsui.model.DocumentInfo; import com.android.documentsui.model.DocumentStack; import com.android.documentsui.model.RootInfo; import com.android.internal.util.Preconditions; import com.google.common.collect.Lists; Loading Loading @@ -1554,9 +1552,9 @@ public class DirectoryFragment extends Fragment { } private FragmentTuner pickFragmentTuner(final State state) { return state.action == ACTION_BROWSE_ALL return state.action == ACTION_BROWSE ? new FilesTuner() : new DefaultTuner(state); : new DefaultTuner(state.action); } /** Loading Loading @@ -1593,15 +1591,14 @@ public class DirectoryFragment extends Fragment { */ private static final class DefaultTuner implements FragmentTuner { private final State mState; private final boolean mManaging; public DefaultTuner(State state) { mState = state; public DefaultTuner(int action) { mManaging = (action == ACTION_MANAGE); } @Override public void updateActionMenu(Menu menu, int dirType, boolean canDelete) { Preconditions.checkState(mState.action != ACTION_BROWSE_ALL); final MenuItem open = menu.findItem(R.id.menu_open); final MenuItem share = menu.findItem(R.id.menu_share); Loading @@ -1610,14 +1607,11 @@ public class DirectoryFragment extends Fragment { final MenuItem moveTo = menu.findItem(R.id.menu_move_to); final MenuItem copyToClipboard = menu.findItem(R.id.menu_copy_to_clipboard); final boolean manageOrBrowse = (mState.action == ACTION_MANAGE || mState.action == ACTION_BROWSE); open.setVisible(!manageOrBrowse); share.setVisible(manageOrBrowse); delete.setVisible(manageOrBrowse && canDelete); open.setVisible(!mManaging); share.setVisible(mManaging); delete.setVisible(mManaging && canDelete); // Disable copying from the Recents view. copyTo.setVisible(manageOrBrowse && dirType != TYPE_RECENT_OPEN); copyTo.setVisible(mManaging && dirType != TYPE_RECENT_OPEN); moveTo.setVisible(SystemProperties.getBoolean("debug.documentsui.enable_move", false)); // Only shown in files mode. Loading @@ -1634,6 +1628,7 @@ public class DirectoryFragment extends Fragment { private static final class FilesTuner implements FragmentTuner { @Override public void updateActionMenu(Menu menu, int dirType, boolean canDelete) { menu.findItem(R.id.menu_share).setVisible(true); menu.findItem(R.id.menu_delete).setVisible(canDelete); menu.findItem(R.id.menu_copy_to_clipboard).setVisible(true); Loading