Эх сурвалжийг харах

New items in the context menu for files (not folders), depending upon its state

David A. Velasco 12 жил өмнө
parent
commit
500cbf9cea

+ 19 - 0
res/menu/file_context_menu.xml

@@ -1,6 +1,25 @@
 <?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"

+ 3 - 1
res/values/strings.xml

@@ -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_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>

+ 32 - 1
src/com/owncloud/android/ui/fragment/OCFileListFragment.java

@@ -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);
-        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);
+            }
+        }
     }