X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/b64fd4cc5b9d702f18cbc27ed650ba604d0757dd..2a02a08d52656ce3259939e2448800388675a0c5:/src/com/owncloud/android/files/services/FileUploader.java diff --git a/src/com/owncloud/android/files/services/FileUploader.java b/src/com/owncloud/android/files/services/FileUploader.java index f56e1b57..0859cf9a 100644 --- a/src/com/owncloud/android/files/services/FileUploader.java +++ b/src/com/owncloud/android/files/services/FileUploader.java @@ -356,6 +356,38 @@ public class FileUploader extends Service implements OnDatatransferProgressListe } } + /** + * Cancels a pending or current upload for an account + * + * @param account Owncloud accountName where the remote file will be stored. + */ + public void cancel(Account account) { + Log_OC.d(TAG, "Account= " + account.name); + + if (mCurrentUpload != null) { + Log_OC.d(TAG, "Current Upload Account= " + mCurrentUpload.getAccount().name); + if (mCurrentUpload.getAccount().name == account.name) { + mCurrentUpload.cancel(); + } + } + // Cancel pending uploads + Iterator it = mPendingUploads.keySet().iterator(); + Log_OC.d(TAG, "Number of pending updloads= " + mPendingUploads.size()); + while (it.hasNext()) { + String key = it.next(); + Log_OC.d(TAG, "mPendingUploads CANCELLED " + key); + if (key.startsWith(account.name)) { + UploadFileOperation upload; + synchronized (mPendingUploads) { + upload = mPendingUploads.remove(key); + } + if (upload != null) { + upload.cancel(); + } + } + } + } + public void clearListeners() { mBoundListeners.clear(); } @@ -891,12 +923,13 @@ public class FileUploader extends Service implements OnDatatransferProgressListe // this can be slow if there are many uploads :( Iterator it = mPendingUploads.keySet().iterator(); Log_OC.d(TAG, "Number of pending updloads= " + mPendingUploads.size()); - boolean found; while (it.hasNext()) { String key = it.next(); - Log_OC.d(TAG, "mPendingUploads CANCELLED" + key); + Log_OC.d(TAG, "mPendingUploads CANCELLED " + key); if (key.startsWith(accountName)) { - mPendingUploads.remove(key); + synchronized (mPendingUploads) { + mPendingUploads.remove(key); + } } } }