X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/f6f1c7e6291edf9aa5e240773daf4235eaf9ecb2..407f64f5e062cbd59b82043406923f082c6fa911:/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 8b5a6814..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()) { @@ -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; }