diff options
author | Richard MacGregor <rmacgregor@cyngn.com> | 2015-07-23 08:25:42 -0700 |
---|---|---|
committer | Steve Kondik <steve@cyngn.com> | 2016-11-02 20:20:04 -0700 |
commit | 585e56e558cae9589db3d53ae8899753059c16d0 (patch) | |
tree | d41b327c14c259c2deb7d75febec12d46436de0a | |
parent | 10f847caf3a8a93a4fb6f71ab74bbd6d2041a443 (diff) | |
download | android_packages_apps_CMFileManager-585e56e558cae9589db3d53ae8899753059c16d0.tar.gz android_packages_apps_CMFileManager-585e56e558cae9589db3d53ae8899753059c16d0.tar.bz2 android_packages_apps_CMFileManager-585e56e558cae9589db3d53ae8899753059c16d0.zip |
Update actions which appear in ActionsDialog
- New CMFM concept of "Home" has changed
- New CMFM doesn't have non-global (long press) action dialog
- Actions that once were in long press (non-global) are now present
in the global action dialog (if single entry is selected)
- Rename and Create copy are now present and wired up.
- "Open" and "Open with do not exist anymore
- "Add to bookmarks" is now removed
- Items that still need to be wired up:
- Print
- Compute Checksum
Change-Id: Ia84569ecced7ff3596cffaa266f44b68bea4ee63
-rw-r--r-- | res/menu/actions.xml | 24 | ||||
-rw-r--r-- | src/com/cyanogenmod/filemanager/providers/secure/SecureChoiceClickListener.java | 10 | ||||
-rw-r--r-- | src/com/cyanogenmod/filemanager/ui/dialogs/ActionsDialog.java | 72 | ||||
-rwxr-xr-x | src/com/cyanogenmod/filemanager/ui/policy/CopyMoveActionPolicy.java | 103 | ||||
-rw-r--r--[-rwxr-xr-x] | src/com/cyanogenmod/filemanager/ui/widgets/NavigationView.java | 2 |
5 files changed, 92 insertions, 119 deletions
diff --git a/res/menu/actions.xml b/res/menu/actions.xml index bb2d8e50..8ea3bc2d 100644 --- a/res/menu/actions.xml +++ b/res/menu/actions.xml @@ -51,6 +51,14 @@ android:showAsAction="ifRoom" android:title="@string/actions_menu_move_selection"/> <item + android:id="@+id/mnu_actions_create_copy_from_selection" + android:showAsAction="ifRoom" + android:title="@string/actions_menu_create_copy"/> + <item + android:id="@+id/mnu_actions_rename_selection" + android:showAsAction="ifRoom" + android:title="@string/actions_menu_rename"/> + <item android:id="@+id/mnu_actions_delete_selection" android:showAsAction="ifRoom" android:title="@string/actions_menu_delete_selection"/> @@ -67,17 +75,9 @@ android:showAsAction="ifRoom" android:title="@string/actions_menu_send_selection"/> <item - android:id="@+id/mnu_actions_add_to_bookmarks_current_folder" - android:showAsAction="ifRoom" - android:title="@string/actions_menu_add_to_bookmarks"/> - <item android:id="@+id/mnu_actions_add_shortcut_current_folder" android:showAsAction="ifRoom" android:title="@string/actions_menu_add_shortcut"/> - <item - android:id="@+id/mnu_actions_global_set_as_home" - android:showAsAction="ifRoom" - android:title="@string/actions_menu_set_as_home"/> </group> <!-- FileSystemObject Actions --> @@ -139,10 +139,6 @@ android:showAsAction="ifRoom" android:title="@string/actions_menu_print"/> <item - android:id="@+id/mnu_actions_add_to_bookmarks" - android:showAsAction="ifRoom" - android:title="@string/actions_menu_add_to_bookmarks"/> - <item android:id="@+id/mnu_actions_add_shortcut" android:showAsAction="ifRoom" android:title="@string/actions_menu_add_shortcut"/> @@ -154,10 +150,6 @@ android:id="@+id/mnu_actions_open_parent_folder" android:showAsAction="ifRoom" android:title="@string/actions_menu_open_parent_folder"/> - <item - android:id="@+id/mnu_actions_set_as_home" - android:showAsAction="ifRoom" - android:title="@string/actions_menu_set_as_home"/> </group> </menu>
\ No newline at end of file diff --git a/src/com/cyanogenmod/filemanager/providers/secure/SecureChoiceClickListener.java b/src/com/cyanogenmod/filemanager/providers/secure/SecureChoiceClickListener.java index 3e20b99b..5a05cde7 100644 --- a/src/com/cyanogenmod/filemanager/providers/secure/SecureChoiceClickListener.java +++ b/src/com/cyanogenmod/filemanager/providers/secure/SecureChoiceClickListener.java @@ -22,6 +22,7 @@ import android.content.DialogInterface; import com.cyanogenmod.filemanager.model.FileSystemObject; import com.cyanogenmod.filemanager.ui.policy.CopyMoveActionPolicy; import com.cyanogenmod.filemanager.ui.policy.CopyMoveActionPolicy.LinkedResource; +import com.cyanogenmod.filemanager.util.FileHelper; import java.io.File; import java.util.ArrayList; @@ -87,11 +88,12 @@ public class SecureChoiceClickListener implements DialogInterface.OnClickListene if (!hiddenCacheDirectory.exists()) { hiddenCacheDirectory.mkdirs(); } - final File tmpFso = new File(hiddenCacheDirectory, mFso.getName()); - selection.add(new LinkedResource(new File(mFso.getFullPath()), tmpFso)); + final File tmpFile = new File(hiddenCacheDirectory, mFso.getName()); + final FileSystemObject tmpFso = FileHelper.createFileSystemObject(tmpFile); + selection.add(new LinkedResource(mFso, tmpFso)); CopyMoveActionPolicy.copyFileSystemObjects(mContext, selection, - new SecureChoiceSelectionListener(tmpFso), - new SecureChoiceRefreshListener(tmpFso, mListener)); + new SecureChoiceSelectionListener(tmpFile), + new SecureChoiceRefreshListener(tmpFile, mListener)); } } diff --git a/src/com/cyanogenmod/filemanager/ui/dialogs/ActionsDialog.java b/src/com/cyanogenmod/filemanager/ui/dialogs/ActionsDialog.java index 0b5e9a52..4ec20c00 100644 --- a/src/com/cyanogenmod/filemanager/ui/dialogs/ActionsDialog.java +++ b/src/com/cyanogenmod/filemanager/ui/dialogs/ActionsDialog.java @@ -20,6 +20,7 @@ import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.text.TextUtils; import android.view.HapticFeedbackConstants; import android.view.Menu; import android.view.MenuItem; @@ -235,11 +236,17 @@ public class ActionsDialog implements OnItemClickListener, OnItemLongClickListen //- Rename case R.id.mnu_actions_rename: + case R.id.mnu_actions_rename_selection: + FileSystemObject fso = mFso; // Dialog is dismissed inside showInputNameDialog if (this.mOnSelectionListener != null) { - showFsoInputNameDialog(menuItem, this.mFso, false); - return; + List<FileSystemObject> selection = this.mOnSelectionListener + .onRequestSelectedFiles(); + if (selection.size() == 1) { + fso = selection.get(0); + } } + showFsoInputNameDialog(menuItem, fso, false); break; //- Create link @@ -393,27 +400,23 @@ public class ActionsDialog implements OnItemClickListener, OnItemLongClickListen //- Create copy case R.id.mnu_actions_create_copy: + case R.id.mnu_actions_create_copy_from_selection: + fso = mFso; // Create a copy of the fso if (this.mOnSelectionListener != null) { + List<FileSystemObject> selection = this.mOnSelectionListener + .onRequestSelectedFiles(); + if (selection.size() == 1) { + fso = selection.get(0); + } CopyMoveActionPolicy.createCopyFileSystemObject( this.mContext, - this.mFso, + fso, this.mOnSelectionListener, this.mOnRequestRefreshListener); } break; - //- Add to bookmarks - case R.id.mnu_actions_add_to_bookmarks: - case R.id.mnu_actions_add_to_bookmarks_current_folder: - Bookmark bookmark = BookmarksActionPolicy.addToBookmarks( - this.mContext, this.mFso); - if (mBackRef != null && bookmark != null) { - // tell MainActivity's drawer to add the bookmark - mBackRef.addBookmark(bookmark); - } - break; - //- Add shortcut case R.id.mnu_actions_add_shortcut: case R.id.mnu_actions_add_shortcut_current_folder: @@ -433,7 +436,7 @@ public class ActionsDialog implements OnItemClickListener, OnItemLongClickListen //- Properties case R.id.mnu_actions_properties: case R.id.mnu_actions_properties_current_folder: - FileSystemObject fso = this.mFso; + fso = this.mFso; if (this.mOnSelectionListener != null) { List<FileSystemObject> selection = this.mOnSelectionListener .onRequestSelectedFiles(); @@ -451,19 +454,6 @@ public class ActionsDialog implements OnItemClickListener, OnItemLongClickListen this.mContext, this.mFso, this.mOnRequestRefreshListener); break; - // Set as home - case R.id.mnu_actions_set_as_home: - case R.id.mnu_actions_global_set_as_home: - try { - Preferences.savePreference( - FileManagerSettings.SETTINGS_INITIAL_DIR, mFso.getFullPath(), true); - mOnRequestRefreshListener.onRequestBookmarksRefresh(); - DialogHelper.showToast(mContext, R.string.msgs_success, Toast.LENGTH_SHORT); - } catch (InvalidClassException e) { - ExceptionUtil.translateException(mContext, e); - } - break; - default: break; } @@ -547,6 +537,7 @@ public class ActionsDialog implements OnItemClickListener, OnItemLongClickListen String name = inputNameDialog.getName(); switch (menuItem.getItemId()) { case R.id.mnu_actions_rename: + case R.id.mnu_actions_rename_selection: // Rename the fso if (ActionsDialog.this.mOnSelectionListener != null) { CopyMoveActionPolicy.renameFileSystemObject( @@ -685,12 +676,9 @@ public class ActionsDialog implements OnItemClickListener, OnItemLongClickListen if (!PrintActionPolicy.isPrintedAllowed(mContext, mFso)) { menu.removeItem(R.id.mnu_actions_print); } - } - - //- Add to bookmarks -> Only directories - if (this.mFso != null && FileHelper.isRootDirectory(this.mFso)) { - menu.removeItem(R.id.mnu_actions_add_to_bookmarks); - menu.removeItem(R.id.mnu_actions_add_to_bookmarks_current_folder); + } else if (mGlobal && (selection != null && selection.size() != 1)) { + menu.removeItem(R.id.mnu_actions_rename_selection); + menu.removeItem(R.id.mnu_actions_create_copy_from_selection); } //- Remove properties option if multiple files selected @@ -781,7 +769,6 @@ public class ActionsDialog implements OnItemClickListener, OnItemLongClickListen // Shotcuts and Bookmarks (not available in virtual filesystems) if (!mGlobal && (mFso.isSecure() || mFso.isRemote())) { menu.removeItem(R.id.mnu_actions_add_shortcut); - menu.removeItem(R.id.mnu_actions_add_to_bookmarks); } else if (mGlobal) { // Remove shortcuts for secure folders if (mFso != null && mFso.isSecure()) { @@ -791,24 +778,12 @@ public class ActionsDialog implements OnItemClickListener, OnItemLongClickListen for (FileSystemObject fso : selection) { if (fso.isSecure() || fso.isRemote()) { menu.removeItem(R.id.mnu_actions_add_shortcut_current_folder); - menu.removeItem(R.id.mnu_actions_add_to_bookmarks_current_folder); break; } } } } - // Set as home - if (!mGlobal && !FileHelper.isDirectory(mFso)) { - menu.removeItem(R.id.mnu_actions_set_as_home); - } else if (mGlobal && (selection != null && selection.size() > 0)) { - menu.removeItem(R.id.mnu_actions_global_set_as_home); - } else if (!mGlobal && (mFso.isSecure() || mFso.isRemote())) { - menu.removeItem(R.id.mnu_actions_set_as_home); - } else if (mGlobal && (mFso.isSecure() || mFso.isRemote())) { - menu.removeItem(R.id.mnu_actions_global_set_as_home); - } - // Not allowed in search if (this.mSearch) { menu.removeItem(R.id.mnu_actions_extract); @@ -828,7 +803,6 @@ public class ActionsDialog implements OnItemClickListener, OnItemLongClickListen menu.removeItem(R.id.mnu_actions_create_copy); menu.removeItem(R.id.mnu_actions_create_link); menu.removeItem(R.id.mnu_actions_add_shortcut); - menu.removeItem(R.id.mnu_actions_add_to_bookmarks); } else if (mGlobal) { if (selection != null && selection.size() > 0) { for (FileSystemObject fso : selection) { @@ -836,6 +810,7 @@ public class ActionsDialog implements OnItemClickListener, OnItemLongClickListen menu.removeItem(R.id.mnu_actions_paste_selection); menu.removeItem(R.id.mnu_actions_move_selection); menu.removeItem(R.id.mnu_actions_delete_selection); + menu.removeItem(R.id.mnu_actions_rename); menu.removeItem(R.id.mnu_actions_compress_selection); menu.removeItem(R.id.mnu_actions_create_link_global); menu.removeItem(R.id.mnu_actions_send_selection); @@ -843,7 +818,6 @@ public class ActionsDialog implements OnItemClickListener, OnItemLongClickListen menu.removeItem(R.id.mnu_actions_create_link_global); menu.removeItem(R.id.mnu_actions_create_link_global); menu.removeItem(R.id.mnu_actions_add_shortcut_current_folder); - menu.removeItem(R.id.mnu_actions_add_to_bookmarks_current_folder); break; } } diff --git a/src/com/cyanogenmod/filemanager/ui/policy/CopyMoveActionPolicy.java b/src/com/cyanogenmod/filemanager/ui/policy/CopyMoveActionPolicy.java index e3dc7bf9..520f205f 100755 --- a/src/com/cyanogenmod/filemanager/ui/policy/CopyMoveActionPolicy.java +++ b/src/com/cyanogenmod/filemanager/ui/policy/CopyMoveActionPolicy.java @@ -21,6 +21,7 @@ import android.content.Context; import android.content.DialogInterface; import android.text.Html; import android.text.Spanned; +import android.text.TextUtils; import android.util.Log; import com.cyanogenmod.filemanager.R; @@ -65,8 +66,8 @@ public final class CopyMoveActionPolicy extends ActionsPolicy { * his destination {@link File} */ public static class LinkedResource implements Comparable<LinkedResource> { - final File mSrc; - final File mDst; + final FileSystemObject mSrc; + final FileSystemObject mDst; /** * Constructor of <code>LinkedResource</code> @@ -74,7 +75,7 @@ public final class CopyMoveActionPolicy extends ActionsPolicy { * @param src The source file system object * @param dst The destination file system object */ - public LinkedResource(File src, File dst) { + public LinkedResource(FileSystemObject src, FileSystemObject dst) { super(); this.mSrc = src; this.mDst = dst; @@ -104,18 +105,8 @@ public final class CopyMoveActionPolicy extends ActionsPolicy { final String newName, final OnSelectionListener onSelectionListener, final OnRequestRefreshListener onRequestRefreshListener) { - - // Create the destination filename - File dst = new File(fso.getParent(), newName); - File src = new File(fso.getFullPath()); - - // Create arguments - LinkedResource linkRes = new LinkedResource(src, dst); - List<LinkedResource> files = new ArrayList<LinkedResource>(1); - files.add(linkRes); - - // Destination must have the same parent and it must be currentDirectory, - final String destination = onSelectionListener.onRequestCurrentDir(); + final String destination = fso.getParent(); + List<LinkedResource> files = createLinkedResource(fso, newName); // Internal copy copyOrMoveFileSystemObjects( @@ -140,19 +131,14 @@ public final class CopyMoveActionPolicy extends ActionsPolicy { final FileSystemObject fso, final OnSelectionListener onSelectionListener, final OnRequestRefreshListener onRequestRefreshListener) { - // Create a non-existing name String curDir = onSelectionListener.onRequestCurrentDir(); String newName = FileHelper.createNonExistingName( ctx, curDir, fso.getName(), R.string.create_copy_regexp); - final File dst = new File(fso.getParent(), newName); - File src = new File(fso.getFullPath()); - // Create arguments - LinkedResource linkRes = new LinkedResource(src, dst); - List<LinkedResource> files = new ArrayList<LinkedResource>(1); - files.add(linkRes); + final String destination = fso.getParent(); + List<LinkedResource> files = createLinkedResource(fso, newName); if (onSelectionListener == null) { AlertDialog dialog = @@ -163,9 +149,6 @@ public final class CopyMoveActionPolicy extends ActionsPolicy { return; } - // Destination must have the same parent and it must be currentDirectory, - final String destination = onSelectionListener.onRequestCurrentDir(); - // Internal copy copyOrMoveFileSystemObjects( ctx, @@ -338,8 +321,8 @@ public final class CopyMoveActionPolicy extends ActionsPolicy { @Override public Spanned requestProgress() { - File src = this.mFiles.get(this.mCurrent).mSrc; - File dst = this.mFiles.get(this.mCurrent).mDst; + FileSystemObject src = this.mFiles.get(this.mCurrent).mSrc; + FileSystemObject dst = this.mFiles.get(this.mCurrent).mDst; // Return the current operation String progress = @@ -349,8 +332,8 @@ public final class CopyMoveActionPolicy extends ActionsPolicy { || this.mOperation.equals(COPY_MOVE_OPERATION.RENAME) ? R.string.waiting_dialog_moving_msg : R.string.waiting_dialog_copying_msg, - src.getAbsolutePath(), - dst.getAbsolutePath()); + src.getFullPath(), + dst.getFullPath()); return Html.fromHtml(progress); } @@ -358,17 +341,17 @@ public final class CopyMoveActionPolicy extends ActionsPolicy { // Remove orphan bookmark paths if (files != null) { for (LinkedResource linkedFiles : files) { - Bookmarks.deleteOrphanBookmarks(ctx, linkedFiles.mSrc.getAbsolutePath()); + Bookmarks.deleteOrphanBookmarks(ctx, linkedFiles.mSrc.getFullPath()); //Operation complete. Show refresh if (mOnRequestRefreshListener != null) { FileSystemObject fso = null; try { fso = CommandHelper.getFileInfo(ctx, - linkedFiles.mDst.getAbsolutePath(), false, null); + linkedFiles.mDst.getFullPath(), false, null); mOnRequestRefreshListener.onClearCache(fso); } catch (Exception e) { Log.w(TAG, "Exception getting file info for " + - linkedFiles.mDst.getAbsolutePath(), e); + linkedFiles.mDst.getFullPath(), e); } } } @@ -395,8 +378,8 @@ public final class CopyMoveActionPolicy extends ActionsPolicy { int cc2 = this.mFiles.size(); for (int i = 0; i < cc2; i++) { - File src = this.mFiles.get(i).mSrc; - File dst = this.mFiles.get(i).mDst; + FileSystemObject src = this.mFiles.get(i).mSrc; + FileSystemObject dst = this.mFiles.get(i).mDst; doOperation(this.mCtx, src, dst, this.mOperation); @@ -435,7 +418,8 @@ public final class CopyMoveActionPolicy extends ActionsPolicy { * @param operation Indicates the operation to do */ private void doOperation( - Context ctx, File src, File dst, COPY_MOVE_OPERATION operation) + Context ctx, FileSystemObject src, FileSystemObject dst, + COPY_MOVE_OPERATION operation) throws Throwable { // If the source is the same as destiny then don't do the operation if (src.compareTo(dst) == 0) return; @@ -443,10 +427,10 @@ public final class CopyMoveActionPolicy extends ActionsPolicy { try { // Be sure to append a / if source is a folder (otherwise system crashes // under using absolute paths) Issue: CYAN-2791 - String source = src.getAbsolutePath() + - (src.isDirectory() ? File.separator : ""); - String dest = dst.getAbsolutePath() + - (dst.isDirectory() ? File.separator : ""); + String source = src.getFullPath() + + ((new File(src.getFullPath())).isDirectory() ? File.separator : ""); + String dest = dst.getFullPath() + + ((new File(dst.getFullPath())).isDirectory() ? File.separator : ""); /* There is a possibility that the src and dst can have different consoles. @@ -467,13 +451,13 @@ public final class CopyMoveActionPolicy extends ActionsPolicy { CommandHelper.move( ctx, source, - dst.getAbsolutePath(), + dst.getFullPath(), mSrcConsole); } else { CommandHelper.copy( ctx, source, - dst.getAbsolutePath(), + dst.getFullPath(), mSrcConsole); } } catch (Exception e) { @@ -525,9 +509,9 @@ public final class CopyMoveActionPolicy extends ActionsPolicy { // Check that the operation was completed retrieving the fso modified FileSystemObject fso = - CommandHelper.getFileInfo(ctx, dst.getAbsolutePath(), false, null); + CommandHelper.getFileInfo(ctx, dst.getFullPath(), false, null); if (fso == null) { - throw new NoSuchFileOrDirectory(dst.getAbsolutePath()); + throw new NoSuchFileOrDirectory(dst.getFullPath()); } } }; @@ -584,9 +568,28 @@ public final class CopyMoveActionPolicy extends ActionsPolicy { int cc = items.size(); for (int i = 0; i < cc; i++) { FileSystemObject fso = items.get(i); - File src = new File(fso.getFullPath()); - File dst = new File(directory, fso.getName()); - resources.add(new LinkedResource(src, dst)); + FileSystemObject dst = FileHelper.createFileSystemObject( + new File(directory, fso.getName())); + resources.add(new LinkedResource(fso, dst)); + } + return resources; + } + + /** + * Method that creates a {@link LinkedResource} for a single object to the + * destination directory with a new name + * + * @param fso The single source item + * @param newName The new name for the source item + */ + private static List<LinkedResource> createLinkedResource( + FileSystemObject fso, String newName) { + List<LinkedResource> resources = new ArrayList<LinkedResource>(1); + if (fso != null && !TextUtils.isEmpty(newName)) { + String path = fso.getParent(); + FileSystemObject dst = + FileHelper.createFileSystemObject(new File(fso.getParent(), newName)); + resources.add(new LinkedResource(fso, dst)); } return resources; } @@ -607,10 +610,10 @@ public final class CopyMoveActionPolicy extends ActionsPolicy { int cc2 = files.size(); for (int j = 0; j < cc2; j++) { FileSystemObject dst1 = currentFiles.get(i); - File dst2 = files.get(j).mDst; + FileSystemObject dst2 = files.get(j).mDst; // The file exists in the destination directory - if (dst1.getFullPath().compareTo(dst2.getAbsolutePath()) == 0) { + if (dst1.getName().compareTo(dst2.getName()) == 0) { askUser = true; break; } @@ -643,8 +646,8 @@ public final class CopyMoveActionPolicy extends ActionsPolicy { int cc = files.size(); for (int i = 0; i < cc; i++) { LinkedResource linkRes = files.get(i); - String src = FileHelper.addTrailingSlash(linkRes.mSrc.getAbsolutePath()); - String dst = linkRes.mDst.getAbsolutePath(); + String src = linkRes.mSrc.getFullPath(); + String dst = linkRes.mDst.getFullPath(); // 1.- Current directory can't be moved if (operation.equals(COPY_MOVE_OPERATION.MOVE) && diff --git a/src/com/cyanogenmod/filemanager/ui/widgets/NavigationView.java b/src/com/cyanogenmod/filemanager/ui/widgets/NavigationView.java index 86a7ff05..ca267fc9 100755..100644 --- a/src/com/cyanogenmod/filemanager/ui/widgets/NavigationView.java +++ b/src/com/cyanogenmod/filemanager/ui/widgets/NavigationView.java @@ -901,10 +901,12 @@ BreadcrumbListener, OnSelectionChangedListener, OnSelectionListener, OnRequestRe * and landscape. Other layout modes don't need to be refreshed due to list view display */ public void refreshViewMode() { + /* if (this.mCurrentMode.compareTo(NavigationLayoutMode.ICONS) == 0) { this.mCurrentMode = null; changeViewMode(NavigationLayoutMode.ICONS); } + */ } /** |