X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/11f6daf40390e5be8d602b7019a9e90f46d0713e..a6a010440d881d3f9dbd2fa50d6345275c0d0a0d:/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 201f2e55..72ccd135 100644 --- a/src/com/owncloud/android/operations/SynchronizeFolderOperation.java +++ b/src/com/owncloud/android/operations/SynchronizeFolderOperation.java @@ -26,6 +26,7 @@ import com.owncloud.android.datamodel.FileDataStorageManager; 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.RemoteOperationResult; import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode; import com.owncloud.android.lib.common.utils.Log_OC; @@ -48,6 +49,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Vector; +import java.util.concurrent.atomic.AtomicBoolean; //import android.support.v4.content.LocalBroadcastManager; @@ -96,6 +98,7 @@ public class SynchronizeFolderOperation extends SyncOperation { /** 'True' means that the remote folder changed and should be fetched */ private boolean mRemoteFolderChanged; + private final AtomicBoolean mCancellationRequested = new AtomicBoolean(false); /** @@ -150,6 +153,13 @@ public class SynchronizeFolderOperation extends SyncOperation { mConflictsFound = 0; mForgottenLocalFiles.clear(); + /// perform the download + synchronized(mCancellationRequested) { + if (mCancellationRequested.get()) { + return new RemoteOperationResult(new OperationCancelledException()); + } + } + result = checkForChanges(client); if (result.isSuccess()) { @@ -340,7 +350,7 @@ public class SynchronizeFolderOperation extends SyncOperation { requestForDownloadFile(remoteFile); } else { // Run new SyncFolderOperation for download children files recursively from a folder - RemoteOperation synchFolderOp = new SyncFolderOperation( mContext, + SynchronizeFolderOperation synchFolderOp = new SynchronizeFolderOperation( mContext, remoteFile.getRemotePath(), mAccount, mCurrentSyncTime); @@ -514,6 +524,14 @@ public class SynchronizeFolderOperation extends SyncOperation { mContext.startService(i); } + /** + * Cancel operation + */ + public void cancel(){ + // WIP Cancel the sync operation + mCancellationRequested.set(true); + } + public boolean getRemoteFolderChanged() { return mRemoteFolderChanged; }