projects
/
pub
/
Android
/
ownCloud.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Update OperationsService to receive requests for cancelling downloads (WIP)
[pub/Android/ownCloud.git]
/
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
8b5a681
..
72ccd13
100644
(file)
--- 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.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;
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.List;
import java.util.Map;
import java.util.Vector;
+import java.util.concurrent.atomic.AtomicBoolean;
//import android.support.v4.content.LocalBroadcastManager;
//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;
/** '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();
mConflictsFound = 0;
mForgottenLocalFiles.clear();
+ /// perform the download
+ synchronized(mCancellationRequested) {
+ if (mCancellationRequested.get()) {
+ return new RemoteOperationResult(new OperationCancelledException());
+ }
+ }
+
result = checkForChanges(client);
if (result.isSuccess()) {
result = checkForChanges(client);
if (result.isSuccess()) {
@@
-514,6
+524,14
@@
public class SynchronizeFolderOperation extends SyncOperation {
mContext.startService(i);
}
mContext.startService(i);
}
+ /**
+ * Cancel operation
+ */
+ public void cancel(){
+ // WIP Cancel the sync operation
+ mCancellationRequested.set(true);
+ }
+
public boolean getRemoteFolderChanged() {
return mRemoteFolderChanged;
}
public boolean getRemoteFolderChanged() {
return mRemoteFolderChanged;
}