diff --git a/src/com/owncloud/android/files/services/FileUploader.java b/src/com/owncloud/android/files/services/FileUploader.java index f9c57ccfb8..f56e1b572f 100644 --- a/src/com/owncloud/android/files/services/FileUploader.java +++ b/src/com/owncloud/android/files/services/FileUploader.java @@ -327,7 +327,6 @@ public class FileUploader extends Service implements OnDatatransferProgressListe return false; // not accepting rebinding (default behaviour) } - /** * Binder to let client components to perform operations on the queue of * uploads. @@ -357,15 +356,10 @@ public class FileUploader extends Service implements OnDatatransferProgressListe } } - - public void clearListeners() { mBoundListeners.clear(); } - - - /** * Returns True when the file described by 'file' is being uploaded to * the ownCloud account 'account' or waiting for it @@ -548,6 +542,8 @@ public class FileUploader extends Service implements OnDatatransferProgressListe } else { // Cancel the transfer Log_OC.d(TAG, "Account " + mCurrentUpload.getAccount().toString() + " doesn't exist"); + cancelUploadForAccount(mCurrentUpload.getAccount().name); + } } @@ -887,4 +883,21 @@ public class FileUploader extends Service implements OnDatatransferProgressListe !localPath.endsWith(FILE_EXTENSION_PDF); } + /** + * Remove uploads of an account + * @param accountName + */ + private void cancelUploadForAccount(String accountName){ + // 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); + if (key.startsWith(accountName)) { + mPendingUploads.remove(key); + } + } + } }