X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/399251bc5a5a9026cd022c54f5d00c24273cabc5..98929a9c8ff9d64936e728d3d660af242269773d:/src/com/owncloud/android/operations/SynchronizeFolderOperation.java diff --git a/src/com/owncloud/android/operations/SynchronizeFolderOperation.java b/src/com/owncloud/android/operations/SynchronizeFolderOperation.java index 926e57f8..4e1e5bc9 100644 --- a/src/com/owncloud/android/operations/SynchronizeFolderOperation.java +++ b/src/com/owncloud/android/operations/SynchronizeFolderOperation.java @@ -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; @@ -116,6 +117,7 @@ public class SynchronizeFolderOperation extends SyncOperation { mAccount = account; mContext = context; mRemoteFolderChanged = false; + mFilesForDirectDownload = new Vector(); mFilesToSyncContentsWithoutUpload = new Vector(); mFavouriteFilesToSyncContents = new Vector(); mFoldersToWalkDown = new Vector(); @@ -144,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()); } } @@ -269,6 +275,7 @@ public class SynchronizeFolderOperation extends SyncOperation { + " changed - starting update of local data "); List updatedFiles = new Vector(folderAndFiles.size() - 1); + mFilesForDirectDownload.clear(); mFilesToSyncContentsWithoutUpload.clear(); mFavouriteFilesToSyncContents.clear(); mFoldersToWalkDown.clear(); @@ -396,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! } @@ -442,9 +449,9 @@ public class SynchronizeFolderOperation extends SyncOperation { } - private void walkSubfolders(List 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 @@ -500,8 +507,6 @@ public class SynchronizeFolderOperation extends SyncOperation { * Cancel operation */ public void cancel(){ - // WIP Cancel the sync operation mCancellationRequested.set(true); } - }