X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/6daaf70be850e630b243591c23ca75ace578702f..0723ae4b096db5cf75a4a94e0900c4110e54a5b6:/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); + } + } + }