Updated 'always download' item in context menu on list of files to 'download / refres...
authorDavid A. Velasco <dvelasco@solidgear.es>
Fri, 23 Nov 2012 13:30:36 +0000 (14:30 +0100)
committerDavid A. Velasco <dvelasco@solidgear.es>
Fri, 23 Nov 2012 13:30:36 +0000 (14:30 +0100)
src/com/owncloud/android/operations/SynchronizeFileOperation.java
src/com/owncloud/android/ui/activity/FileDisplayActivity.java
src/com/owncloud/android/ui/fragment/OCFileListFragment.java

index f98de11..312fa0c 100644 (file)
@@ -223,4 +223,9 @@ public class SynchronizeFileOperation extends RemoteOperation {
         return mTransferWasRequested;
     }
 
         return mTransferWasRequested;
     }
 
+
+    public OCFile getLocalFile() {
+        return mLocalFile;
+    }
+
 }
 }
index e6771e0..9996891 100644 (file)
@@ -77,6 +77,7 @@ import com.owncloud.android.operations.RemoteOperation;
 import com.owncloud.android.operations.RemoteOperationResult;\r
 import com.owncloud.android.operations.RemoveFileOperation;\r
 import com.owncloud.android.operations.RenameFileOperation;\r
 import com.owncloud.android.operations.RemoteOperationResult;\r
 import com.owncloud.android.operations.RemoveFileOperation;\r
 import com.owncloud.android.operations.RenameFileOperation;\r
+import com.owncloud.android.operations.SynchronizeFileOperation;\r
 import com.owncloud.android.operations.RemoteOperationResult.ResultCode;\r
 import com.owncloud.android.syncadapter.FileSyncService;\r
 import com.owncloud.android.ui.dialog.SslValidatorDialog;\r
 import com.owncloud.android.operations.RemoteOperationResult.ResultCode;\r
 import com.owncloud.android.syncadapter.FileSyncService;\r
 import com.owncloud.android.ui.dialog.SslValidatorDialog;\r
@@ -1083,9 +1084,13 @@ public class FileDisplayActivity extends SherlockFragmentActivity implements
                 \r
         } else if (operation instanceof RenameFileOperation) {\r
             onRenameFileOperationFinish((RenameFileOperation)operation, result);\r
                 \r
         } else if (operation instanceof RenameFileOperation) {\r
             onRenameFileOperationFinish((RenameFileOperation)operation, result);\r
+            \r
+        } else if (operation instanceof SynchronizeFileOperation) {\r
+            onSynchronizeFileOperationFinish((SynchronizeFileOperation)operation, result);\r
         }\r
     }\r
         }\r
     }\r
-    \r
+\r
+\r
     /**\r
      * Updates the view associated to the activity after the finish of an operation trying to remove a \r
      * file. \r
     /**\r
      * Updates the view associated to the activity after the finish of an operation trying to remove a \r
      * file. \r
@@ -1159,6 +1164,34 @@ public class FileDisplayActivity extends SherlockFragmentActivity implements
     }\r
 \r
 \r
     }\r
 \r
 \r
+    private void onSynchronizeFileOperationFinish(SynchronizeFileOperation operation, RemoteOperationResult result) {\r
+        dismissDialog(DIALOG_SHORT_WAIT);\r
+        OCFile syncedFile = operation.getLocalFile();\r
+        if (!result.isSuccess()) {\r
+            if (result.getCode() == ResultCode.SYNC_CONFLICT) {\r
+                Intent i = new Intent(this, ConflictsResolveActivity.class);\r
+                i.putExtra(ConflictsResolveActivity.EXTRA_FILE, syncedFile);\r
+                i.putExtra(ConflictsResolveActivity.EXTRA_ACCOUNT, AccountUtils.getCurrentOwnCloudAccount(this));\r
+                startActivity(i);\r
+                \r
+            } else {\r
+                Toast msg = Toast.makeText(this, R.string.sync_file_fail_msg, Toast.LENGTH_LONG); \r
+                msg.show();\r
+            }\r
+            \r
+        } else {\r
+            if (operation.transferWasRequested()) {\r
+                mFileList.listDirectory();\r
+                onTransferStateChanged(syncedFile, true, true);\r
+                \r
+            } else {\r
+                Toast msg = Toast.makeText(this, R.string.sync_file_nothing_to_do_msg, Toast.LENGTH_LONG); \r
+                msg.show();\r
+            }\r
+        }\r
+    }\r
+\r
+\r
     /**\r
      * {@inheritDoc}\r
      */\r
     /**\r
      * {@inheritDoc}\r
      */\r
index a96f400..4074784 100644 (file)
@@ -25,7 +25,6 @@ import com.owncloud.android.AccountUtils;
 import com.owncloud.android.R;
 import com.owncloud.android.datamodel.DataStorageManager;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.R;
 import com.owncloud.android.datamodel.DataStorageManager;
 import com.owncloud.android.datamodel.OCFile;
-import com.owncloud.android.files.services.FileDownloader;
 import com.owncloud.android.files.services.FileDownloader.FileDownloaderBinder;
 import com.owncloud.android.files.services.FileUploader.FileUploaderBinder;
 import com.owncloud.android.network.OwnCloudClientUtils;
 import com.owncloud.android.files.services.FileDownloader.FileDownloaderBinder;
 import com.owncloud.android.files.services.FileUploader.FileUploaderBinder;
 import com.owncloud.android.network.OwnCloudClientUtils;
@@ -33,6 +32,7 @@ import com.owncloud.android.operations.OnRemoteOperationListener;
 import com.owncloud.android.operations.RemoteOperation;
 import com.owncloud.android.operations.RemoveFileOperation;
 import com.owncloud.android.operations.RenameFileOperation;
 import com.owncloud.android.operations.RemoteOperation;
 import com.owncloud.android.operations.RemoveFileOperation;
 import com.owncloud.android.operations.RenameFileOperation;
+import com.owncloud.android.operations.SynchronizeFileOperation;
 import com.owncloud.android.ui.FragmentListView;
 import com.owncloud.android.ui.activity.FileDisplayActivity;
 import com.owncloud.android.ui.activity.TransferServiceGetter;
 import com.owncloud.android.ui.FragmentListView;
 import com.owncloud.android.ui.activity.FileDisplayActivity;
 import com.owncloud.android.ui.activity.TransferServiceGetter;
@@ -166,6 +166,7 @@ public class OCFileListFragment extends FragmentListView implements EditNameDial
         List<Integer> toHide = new ArrayList<Integer>();    
         List<Integer> toDisable = new ArrayList<Integer>();  
         
         List<Integer> toHide = new ArrayList<Integer>();    
         List<Integer> toDisable = new ArrayList<Integer>();  
         
+        MenuItem item = null;
         if (targetFile.isDirectory()) {
             // contextual menu for folders
             toHide.add(R.id.open_file_item);
         if (targetFile.isDirectory()) {
             // contextual menu for folders
             toHide.add(R.id.open_file_item);
@@ -184,6 +185,10 @@ public class OCFileListFragment extends FragmentListView implements EditNameDial
             if (targetFile.isDown()) {
                 toHide.add(R.id.cancel_download_item);
                 toHide.add(R.id.cancel_upload_item);
             if (targetFile.isDown()) {
                 toHide.add(R.id.cancel_download_item);
                 toHide.add(R.id.cancel_upload_item);
+                item = menu.findItem(R.id.download_file_item);
+                if (item != null) {
+                    item.setTitle(R.string.filedetails_sync_file);
+                }
             } else {
                 toHide.add(R.id.open_file_item);
             }
             } else {
                 toHide.add(R.id.open_file_item);
             }
@@ -207,7 +212,6 @@ public class OCFileListFragment extends FragmentListView implements EditNameDial
             }
         }
 
             }
         }
 
-        MenuItem item = null;
         for (int i : toHide) {
             item = menu.findItem(i);
             if (item != null) {
         for (int i : toHide) {
             item = menu.findItem(i);
             if (item != null) {
@@ -307,13 +311,11 @@ public class OCFileListFragment extends FragmentListView implements EditNameDial
                 return true;
             }
             case R.id.download_file_item: {
                 return true;
             }
             case R.id.download_file_item: {
-                Account account = AccountUtils.getCurrentOwnCloudAccount(getActivity());
-                Intent i = new Intent(getActivity(), FileDownloader.class);
-                i.putExtra(FileDownloader.EXTRA_ACCOUNT, account);
-                i.putExtra(FileDownloader.EXTRA_FILE, mTargetFile);
-                getActivity().startService(i);
-                listDirectory();
-                mContainerActivity.onTransferStateChanged(mTargetFile, true, false);
+                Account account = AccountUtils.getCurrentOwnCloudAccount(getSherlockActivity());
+                RemoteOperation operation = new SynchronizeFileOperation(mTargetFile, null, mContainerActivity.getStorageManager(), account, true, false, getSherlockActivity());
+                WebdavClient wc = OwnCloudClientUtils.createOwnCloudClient(account, getSherlockActivity().getApplicationContext());
+                operation.execute(wc, mContainerActivity, mHandler);
+                getSherlockActivity().showDialog(FileDisplayActivity.DIALOG_SHORT_WAIT);
                 return true;
             }
             case R.id.cancel_download_item: {
                 return true;
             }
             case R.id.cancel_download_item: {