Fixed NullPointerExceptionS in upload cancelations
[pub/Android/ownCloud.git] / src / com / owncloud / android / files / FileOperationsHelper.java
index 766f579..c0b00e5 100644 (file)
@@ -209,11 +209,8 @@ public class FileOperationsHelper {
      * Request the synchronization of a file or folder with the OC server, including its contents.
      *
      * @param file          The file or folder to synchronize
      * Request the synchronization of a file or folder with the OC server, including its contents.
      *
      * @param file          The file or folder to synchronize
-     * @param twoWays       TMP parameter: when 'false', only download is tried; valid for folders only, single files
-     *                      are always synchronized in both ways.
      */
      */
-    public void syncFile(OCFile file, boolean twoWays) {
-        
+    public void syncFile(OCFile file) {
         if (!file.isFolder()){
             Intent intent = new Intent(mFileActivity, OperationsService.class);
             intent.setAction(OperationsService.ACTION_SYNC_FILE);
         if (!file.isFolder()){
             Intent intent = new Intent(mFileActivity, OperationsService.class);
             intent.setAction(OperationsService.ACTION_SYNC_FILE);
@@ -223,20 +220,37 @@ public class FileOperationsHelper {
             mWaitingForOpId = mFileActivity.getOperationsServiceBinder().queueNewOperation(intent);
             mFileActivity.showLoadingDialog();
             
             mWaitingForOpId = mFileActivity.getOperationsServiceBinder().queueNewOperation(intent);
             mFileActivity.showLoadingDialog();
             
-        } else if (twoWays){
+        } else {
             Intent intent = new Intent(mFileActivity, OperationsService.class);
             intent.setAction(OperationsService.ACTION_SYNC_FOLDER);
             intent.putExtra(OperationsService.EXTRA_ACCOUNT, mFileActivity.getAccount());
             intent.putExtra(OperationsService.EXTRA_REMOTE_PATH, file.getRemotePath());
             mFileActivity.startService(intent);
 
             Intent intent = new Intent(mFileActivity, OperationsService.class);
             intent.setAction(OperationsService.ACTION_SYNC_FOLDER);
             intent.putExtra(OperationsService.EXTRA_ACCOUNT, mFileActivity.getAccount());
             intent.putExtra(OperationsService.EXTRA_REMOTE_PATH, file.getRemotePath());
             mFileActivity.startService(intent);
 
+        }
+    }
+
+
+    /**
+     * Request the synchronization of a file or the DOWNLOAD OF A FOLDER, including its contents.
+     *
+     * For files, it's the same as syncFile(OCFile file); for folders, this method does not trigger uploads for
+     * file locally modified.
+     *
+     * Kept 'til synchronization of full folders is considered good enough.
+     *
+     * @param file          The file or folder to synchronize
+     */
+    public void downloadFile(OCFile file) {
+        if (!file.isFolder()){
+            syncFile(file);
+
         } else {
             Intent intent = new Intent(mFileActivity, OperationsService.class);
         } else {
             Intent intent = new Intent(mFileActivity, OperationsService.class);
-            intent.setAction(OperationsService.ACTION_SYNC_FOLDER);
+            intent.setAction(OperationsService.ACTION_DOWNLOAD_FOLDER);
             intent.putExtra(OperationsService.EXTRA_ACCOUNT, mFileActivity.getAccount());
             intent.putExtra(OperationsService.EXTRA_REMOTE_PATH, file.getRemotePath());
             mFileActivity.startService(intent);
             intent.putExtra(OperationsService.EXTRA_ACCOUNT, mFileActivity.getAccount());
             intent.putExtra(OperationsService.EXTRA_REMOTE_PATH, file.getRemotePath());
             mFileActivity.startService(intent);
-
         }
     }
 
         }
     }
 
@@ -254,7 +268,7 @@ public class FileOperationsHelper {
 
         /// immediate content synchronization
         if (file.isFavorite()) {
 
         /// immediate content synchronization
         if (file.isFavorite()) {
-            syncFile(file, true);
+            syncFile(file);
         }
     }
     
         }
     }
     
@@ -311,7 +325,6 @@ public class FileOperationsHelper {
 
         // for both files and folders
         FileDownloaderBinder downloaderBinder = mFileActivity.getFileDownloaderBinder();
 
         // for both files and folders
         FileDownloaderBinder downloaderBinder = mFileActivity.getFileDownloaderBinder();
-        FileUploaderBinder uploaderBinder = mFileActivity.getFileUploaderBinder();
         if (downloaderBinder != null && downloaderBinder.isDownloading(account, file)) {
             downloaderBinder.cancel(account, file);
 
         if (downloaderBinder != null && downloaderBinder.isDownloading(account, file)) {
             downloaderBinder.cancel(account, file);
 
@@ -323,7 +336,9 @@ public class FileOperationsHelper {
                 mFileActivity.getStorageManager().saveFile(parent);
             }
 
                 mFileActivity.getStorageManager().saveFile(parent);
             }
 
-        } else if (uploaderBinder != null && uploaderBinder.isUploading(account, file)) {
+        }
+        FileUploaderBinder uploaderBinder = mFileActivity.getFileUploaderBinder();
+        if (uploaderBinder != null && uploaderBinder.isUploading(account, file)) {
             uploaderBinder.cancel(account, file);
         }
     }
             uploaderBinder.cancel(account, file);
         }
     }