X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/6846e7691214ce291db982670f002a22ec214cbe..bcc972d63d3ed1d76b51a8a03a27e809983dc756:/src/com/owncloud/android/operations/DownloadFileOperation.java diff --git a/src/com/owncloud/android/operations/DownloadFileOperation.java b/src/com/owncloud/android/operations/DownloadFileOperation.java index fbd9f66d..8d89f636 100644 --- a/src/com/owncloud/android/operations/DownloadFileOperation.java +++ b/src/com/owncloud/android/operations/DownloadFileOperation.java @@ -18,6 +18,9 @@ package com.owncloud.android.operations; import java.io.File; +import java.util.HashSet; +import java.util.Iterator; +import java.util.Set; import com.owncloud.android.datamodel.OCFile; import com.owncloud.android.oc_framework.network.webdav.OnDatatransferProgressListener; @@ -44,13 +47,13 @@ public class DownloadFileOperation extends RemoteOperation { private Account mAccount; private OCFile mFile; - private OnDatatransferProgressListener mDatatransferProgressListener; + private Set mDataTransferListeners = new HashSet(); private long mModificationTimestamp = 0; private DownloadRemoteFileOperation mDownloadOperation; - public DownloadFileOperation(Account account, OCFile file, OnDatatransferProgressListener listener) { + public DownloadFileOperation(Account account, OCFile file) { if (account == null) throw new IllegalArgumentException("Illegal null account in DownloadFileOperation creation"); if (file == null) @@ -59,7 +62,6 @@ public class DownloadFileOperation extends RemoteOperation { mAccount = account; mFile = file; - mDatatransferProgressListener = listener; } @@ -130,7 +132,10 @@ public class DownloadFileOperation extends RemoteOperation { /// perform the download mDownloadOperation = new DownloadRemoteFileOperation(remoteFile, tmpFolder); - mDownloadOperation.addDatatransferProgressListener(mDatatransferProgressListener); + Iterator listener = mDataTransferListeners.iterator(); + while (listener.hasNext()) { + mDownloadOperation.addDatatransferProgressListener(listener.next()); + } result = mDownloadOperation.execute(client); if (result.isSuccess()) { @@ -152,4 +157,16 @@ public class DownloadFileOperation extends RemoteOperation { } + public void addDatatransferProgressListener (OnDatatransferProgressListener listener) { + synchronized (mDataTransferListeners) { + mDataTransferListeners.add(listener); + } + } + + public void removeDatatransferProgressListener(OnDatatransferProgressListener listener) { + synchronized (mDataTransferListeners) { + mDataTransferListeners.remove(listener); + } + } + }