New items in the context menu for files (not folders), depending upon its state
authorDavid A. Velasco <dvelasco@solidgear.es>
Tue, 6 Nov 2012 14:13:27 +0000 (15:13 +0100)
committerDavid A. Velasco <dvelasco@solidgear.es>
Tue, 6 Nov 2012 14:13:27 +0000 (15:13 +0100)
res/menu/file_context_menu.xml
res/values/strings.xml
src/com/owncloud/android/ui/fragment/OCFileListFragment.java

index 8014c14..622c483 100644 (file)
@@ -1,6 +1,25 @@
 <?xml version="1.0" encoding="utf-8"?>
 <menu  xmlns:android="http://schemas.android.com/apk/res/android">
     
 <?xml version="1.0" encoding="utf-8"?>
 <menu  xmlns:android="http://schemas.android.com/apk/res/android">
     
+       <item   android:id="@+id/open_file_item" 
+               android:title="@string/filedetails_open" 
+               android:icon="@android:drawable/ic_menu_edit"
+       />
+       
+       <item   android:id="@+id/download_file_item" 
+               android:title="@string/filedetails_download" 
+       />
+       
+       <item   android:id="@+id/cancel_download_item" 
+               android:title="@string/common_cancel_download" 
+               android:icon="@android:drawable/ic_menu_close_clear_cancel"
+       />
+       
+       <item   android:id="@+id/cancel_upload_item" 
+               android:title="@string/common_cancel_upload" 
+               android:icon="@android:drawable/ic_menu_close_clear_cancel"
+       />
+       
        <item   android:id="@+id/rename_file_item" 
                android:title="@string/common_rename" 
                android:icon="@android:drawable/ic_menu_set_as"
        <item   android:id="@+id/rename_file_item" 
                android:title="@string/common_rename" 
                android:icon="@android:drawable/ic_menu_set_as"
index 557486b..dbb6224 100644 (file)
@@ -79,7 +79,9 @@
     <string name="common_yes">Yes</string>
     <string name="common_no">No</string>
     <string name="common_ok">OK</string>
     <string name="common_yes">Yes</string>
     <string name="common_no">No</string>
     <string name="common_ok">OK</string>
-    <string name="common_cancel">Cancel</string>
+    <string name="common_cancel_download">Cancel download</string>
+    <string name="common_cancel_upload">Cancel upload</string>
+       <string name="common_cancel">Cancel</string>
     <string name="common_save_exit">Save &amp; Exit</string>
     <string name="common_exit">Leave ownCloud</string>
     <string name="common_error">Error</string>
     <string name="common_save_exit">Save &amp; Exit</string>
     <string name="common_exit">Leave ownCloud</string>
     <string name="common_error">Error</string>
index 5187a84..a5e59d4 100644 (file)
@@ -154,7 +154,38 @@ public class OCFileListFragment extends FragmentListView implements EditNameDial
         super.onCreateContextMenu(menu, v, menuInfo);
         MenuInflater inflater = getActivity().getMenuInflater();
         inflater.inflate(R.menu.file_context_menu, menu);
         super.onCreateContextMenu(menu, v, menuInfo);
         MenuInflater inflater = getActivity().getMenuInflater();
         inflater.inflate(R.menu.file_context_menu, menu);
-        AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo;        
+        AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo;
+        OCFile targetFile = (OCFile) mAdapter.getItem(info.position);
+        MenuItem item = null;
+        int[] ids = null;
+        if (targetFile.isDirectory()) {
+            int[] theIds = {R.id.open_file_item, R.id.download_file_item, R.id.cancel_download_item, R.id.cancel_upload_item};
+            ids = theIds;
+            
+        } else if ( mContainerActivity.getFileDownloaderBinder().isDownloading(AccountUtils.getCurrentOwnCloudAccount(getActivity()), targetFile)) {
+            int[] theIds = {R.id.open_file_item, R.id.download_file_item, R.id.cancel_upload_item};
+            ids = theIds;
+            
+        } else if ( mContainerActivity.getFileUploaderBinder().isUploading(AccountUtils.getCurrentOwnCloudAccount(getActivity()), targetFile)) {
+            int[] theIds = {R.id.open_file_item, R.id.download_file_item, R.id.cancel_download_item};
+            ids = theIds;
+            
+        } else if ( targetFile.isDown()) {
+            int[] theIds = {R.id.cancel_download_item, R.id.cancel_upload_item};
+            ids = theIds;
+            
+        } else {
+            int[] theIds = {R.id.open_file_item, R.id.cancel_download_item, R.id.cancel_upload_item};
+            ids = theIds;
+        }
+        
+        for (int i=0; i < ids.length; i++) {
+            item = menu.findItem(ids[i]);
+            if (item != null) {
+                item.setVisible(false);
+                item.setEnabled(false);
+            }
+        }
     }
     
     
     }