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;
private Account mAccount;
private OCFile mFile;
- private OnDatatransferProgressListener mDatatransferProgressListener;
+ private Set<OnDatatransferProgressListener> mDataTransferListeners = new HashSet<OnDatatransferProgressListener>();
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)
mAccount = account;
mFile = file;
- mDatatransferProgressListener = listener;
}
/// perform the download
mDownloadOperation = new DownloadRemoteFileOperation(remoteFile, tmpFolder);
- mDownloadOperation.addDatatransferProgressListener(mDatatransferProgressListener);
+ Iterator<OnDatatransferProgressListener> listener = mDataTransferListeners.iterator();
+ while (listener.hasNext()) {
+ mDownloadOperation.addDatatransferProgressListener(listener.next());
+ }
result = mDownloadOperation.execute(client);
if (result.isSuccess()) {
}
+ public void addDatatransferProgressListener (OnDatatransferProgressListener listener) {
+ synchronized (mDataTransferListeners) {
+ mDataTransferListeners.add(listener);
+ }
+ }
+
+ public void removeDatatransferProgressListener(OnDatatransferProgressListener listener) {
+ synchronized (mDataTransferListeners) {
+ mDataTransferListeners.remove(listener);
+ }
+ }
+
}