aboutsummaryrefslogtreecommitdiffstats
path: root/src/com/cyanogenmod/filemanager/ui/dialogs/ActionsDialog.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/cyanogenmod/filemanager/ui/dialogs/ActionsDialog.java')
-rw-r--r--src/com/cyanogenmod/filemanager/ui/dialogs/ActionsDialog.java107
1 files changed, 94 insertions, 13 deletions
diff --git a/src/com/cyanogenmod/filemanager/ui/dialogs/ActionsDialog.java b/src/com/cyanogenmod/filemanager/ui/dialogs/ActionsDialog.java
index c789fca5..5f076548 100644
--- a/src/com/cyanogenmod/filemanager/ui/dialogs/ActionsDialog.java
+++ b/src/com/cyanogenmod/filemanager/ui/dialogs/ActionsDialog.java
@@ -36,13 +36,17 @@ import com.cyanogenmod.filemanager.FileManagerApplication;
import com.cyanogenmod.filemanager.R;
import com.cyanogenmod.filemanager.activities.NavigationActivity;
import com.cyanogenmod.filemanager.adapters.TwoColumnsMenuListAdapter;
+import com.cyanogenmod.filemanager.console.VirtualMountPointConsole;
import com.cyanogenmod.filemanager.listeners.OnRequestRefreshListener;
import com.cyanogenmod.filemanager.listeners.OnSelectionListener;
import com.cyanogenmod.filemanager.model.Bookmark;
+import com.cyanogenmod.filemanager.model.Directory;
import com.cyanogenmod.filemanager.model.FileSystemObject;
import com.cyanogenmod.filemanager.model.Symlink;
import com.cyanogenmod.filemanager.model.SystemFile;
import com.cyanogenmod.filemanager.preferences.AccessMode;
+import com.cyanogenmod.filemanager.preferences.FileManagerSettings;
+import com.cyanogenmod.filemanager.preferences.Preferences;
import com.cyanogenmod.filemanager.ui.ThemeManager;
import com.cyanogenmod.filemanager.ui.ThemeManager.Theme;
import com.cyanogenmod.filemanager.ui.policy.BookmarksActionPolicy;
@@ -57,6 +61,7 @@ import com.cyanogenmod.filemanager.ui.policy.NavigationActionPolicy;
import com.cyanogenmod.filemanager.ui.policy.NewActionPolicy;
import com.cyanogenmod.filemanager.ui.policy.PrintActionPolicy;
import com.cyanogenmod.filemanager.util.DialogHelper;
+import com.cyanogenmod.filemanager.util.ExceptionUtil;
import com.cyanogenmod.filemanager.util.FileHelper;
import com.cyanogenmod.filemanager.util.MimeTypeHelper;
import com.cyanogenmod.filemanager.util.MimeTypeHelper.MimeTypeCategory;
@@ -64,6 +69,7 @@ import com.cyanogenmod.filemanager.util.SelectionHelper;
import com.cyanogenmod.filemanager.util.StorageHelper;
import java.io.File;
+import java.io.InvalidClassException;
import java.util.ArrayList;
import java.util.List;
@@ -437,6 +443,19 @@ 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;
}
@@ -651,8 +670,7 @@ public class ActionsDialog implements OnItemClickListener, OnItemLongClickListen
}
//- Print (only for text and image categories)
- if (category.compareTo(MimeTypeCategory.TEXT) != 0 &&
- category.compareTo(MimeTypeCategory.IMAGE) != 0) {
+ if (!PrintActionPolicy.isPrintedAllowed(mContext, mFso)) {
menu.removeItem(R.id.mnu_actions_print);
}
}
@@ -680,18 +698,21 @@ public class ActionsDialog implements OnItemClickListener, OnItemLongClickListen
}
}
//- Create link
- if (this.mGlobal && (selection == null || selection.size() == 0 || selection.size() > 1)) {
+ if (this.mGlobal && (selection == null || selection.size() == 0
+ || selection.size() > 1)) {
// Only when one item is selected
menu.removeItem(R.id.mnu_actions_create_link_global);
} else if (this.mGlobal && selection != null) {
- // Create link (not allow in storage volume)
+ // Create link (not allow in sdcard, secure or remote storage volumes)
FileSystemObject fso = selection.get(0);
- if (StorageHelper.isPathInStorageVolume(fso.getFullPath())) {
- menu.removeItem(R.id.mnu_actions_create_link);
+ if (StorageHelper.isPathInStorageVolume(fso.getFullPath())
+ || fso.isSecure() || fso.isRemote()) {
+ menu.removeItem(R.id.mnu_actions_create_link_global);
}
} else if (!this.mGlobal) {
- // Create link (not allow in storage volume)
- if (StorageHelper.isPathInStorageVolume(this.mFso.getFullPath())) {
+ // Create link (not allow in sdcard, secure or remote storage volumes)
+ if (StorageHelper.isPathInStorageVolume(this.mFso.getFullPath())
+ || mFso.isSecure() || mFso.isRemote()) {
menu.removeItem(R.id.mnu_actions_create_link);
}
}
@@ -702,10 +723,18 @@ public class ActionsDialog implements OnItemClickListener, OnItemLongClickListen
if (this.mGlobal) {
if (selection == null || selection.size() == 0) {
menu.removeItem(R.id.mnu_actions_compress_selection);
+ } else {
+ for (FileSystemObject fso : selection) {
+ // Ignore for system, secure or remote files
+ if (fso instanceof SystemFile || fso.isSecure() || fso.isRemote()) {
+ menu.removeItem(R.id.mnu_actions_compress_selection);
+ break;
+ }
+ }
}
} else {
- // Ignore for system files
- if (this.mFso instanceof SystemFile) {
+ // Ignore for system, secure or remote files
+ if (this.mFso instanceof SystemFile || mFso.isSecure() || mFso.isRemote()) {
menu.removeItem(R.id.mnu_actions_compress);
}
}
@@ -735,16 +764,68 @@ 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) {
+ if (selection != null && selection.size() > 0) {
+ 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);
+ }
+
// Not allowed in search
if (this.mSearch) {
menu.removeItem(R.id.mnu_actions_extract);
menu.removeItem(R.id.mnu_actions_compress);
menu.removeItem(R.id.mnu_actions_create_link);
+ } else {
+ // Not allowed if not in search
+ menu.removeItem(R.id.mnu_actions_open_parent_folder);
}
- // Not allowed if not in search
- if (!this.mSearch) {
- menu.removeItem(R.id.mnu_actions_open_parent_folder);
+ // Remove unsafe operations over virtual mountpoint directories
+ List<Directory> virtualDirs = VirtualMountPointConsole.getVirtualMountableDirectories();
+ if (!mGlobal && FileHelper.isDirectory(mFso) && virtualDirs.contains(mFso)) {
+ menu.removeItem(R.id.mnu_actions_delete);
+ menu.removeItem(R.id.mnu_actions_rename);
+ menu.removeItem(R.id.mnu_actions_compress);
+ 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) {
+ if (FileHelper.isDirectory(fso) && virtualDirs.contains(fso)) {
+ 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_compress_selection);
+ menu.removeItem(R.id.mnu_actions_create_link_global);
+ menu.removeItem(R.id.mnu_actions_send_selection);
+ menu.removeItem(R.id.mnu_actions_create_link_global);
+ 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;
+ }
+ }
+ }
}
// Remove not-ChRooted actions (actions that can't be present when running in