Loading packages/DocumentsUI/AndroidManifest.xml +14 −2 Original line number Diff line number Diff line Loading @@ -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" Loading Loading @@ -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"> Loading @@ -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" /> Loading packages/DocumentsUI/res/menu/activity.xml +8 −0 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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" Loading packages/DocumentsUI/res/values/strings.xml +2 −0 Original line number Diff line number Diff line Loading @@ -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] --> Loading packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java +4 −1 Original line number Diff line number Diff line Loading @@ -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); Loading @@ -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(); Loading Loading @@ -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); Loading packages/DocumentsUI/src/com/android/documentsui/FilesActivity.java +29 −18 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 { Loading @@ -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, Loading Loading @@ -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; Loading @@ -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(); Loading Loading @@ -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 Loading
packages/DocumentsUI/AndroidManifest.xml +14 −2 Original line number Diff line number Diff line Loading @@ -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" Loading Loading @@ -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"> Loading @@ -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" /> Loading
packages/DocumentsUI/res/menu/activity.xml +8 −0 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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" Loading
packages/DocumentsUI/res/values/strings.xml +2 −0 Original line number Diff line number Diff line Loading @@ -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] --> Loading
packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java +4 −1 Original line number Diff line number Diff line Loading @@ -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); Loading @@ -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(); Loading Loading @@ -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); Loading
packages/DocumentsUI/src/com/android/documentsui/FilesActivity.java +29 −18 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 { Loading @@ -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, Loading Loading @@ -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; Loading @@ -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(); Loading Loading @@ -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