Merge branch 'download_folder' into download_folder_cancel_downloads
[pub/Android/ownCloud.git] / src / com / owncloud / android / operations / SynchronizeFolderOperation.java
index 3f64097..4e1e5bc 100644 (file)
@@ -27,6 +27,7 @@ import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.files.services.FileDownloader;
 import com.owncloud.android.lib.common.OwnCloudClient;
 import com.owncloud.android.lib.common.operations.OperationCancelledException;
+import com.owncloud.android.lib.common.operations.RemoteOperation;
 import com.owncloud.android.lib.common.operations.RemoteOperationResult;
 import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode;
 import com.owncloud.android.lib.common.utils.Log_OC;
@@ -145,6 +146,10 @@ public class SynchronizeFolderOperation extends SyncOperation {
 
         synchronized(mCancellationRequested) {
             if (mCancellationRequested.get()) {
+                // Cancel each operation in mFoldersToWalkDown
+                for (SyncOperation  synchOp: mFoldersToWalkDown) {
+                    ((SynchronizeFolderOperation) synchOp).cancel();
+                }
                 return new RemoteOperationResult(new OperationCancelledException());
             }
         }
@@ -398,7 +403,7 @@ public class SynchronizeFolderOperation extends SyncOperation {
         startDirectDownloads();
         startContentSynchronizations(mFilesToSyncContentsWithoutUpload, client);
         startContentSynchronizations(mFavouriteFilesToSyncContents, client);
-        walkSubfolders(mFoldersToWalkDown, client);    // this must be the last!
+        walkSubfolders(client);    // this must be the last!
     }
 
     
@@ -444,9 +449,9 @@ public class SynchronizeFolderOperation extends SyncOperation {
     }
 
 
-    private void walkSubfolders(List<SyncOperation> foldersToWalkDown, OwnCloudClient client) {
+    private void walkSubfolders(OwnCloudClient client) {
         RemoteOperationResult contentsResult = null;
-        for (SyncOperation op: foldersToWalkDown) {
+        for (SyncOperation op: mFoldersToWalkDown) {
             contentsResult = op.execute(client, getStorageManager());   // to watch out: possibly deep recursion
             if (!contentsResult.isSuccess()) {
                 // TODO - some kind of error count, and use it with notifications
@@ -502,8 +507,6 @@ public class SynchronizeFolderOperation extends SyncOperation {
      * Cancel operation
      */
     public void cancel(){
-        // WIP Cancel the sync operation
         mCancellationRequested.set(true);
     }
-
 }