mirror of
https://github.com/nextcloud/android.git
synced 2024-11-27 17:46:37 +03:00
Fixed propagation of download progress to download notifications
This commit is contained in:
parent
f639fed5ab
commit
415c3867c4
2 changed files with 28 additions and 9 deletions
|
@ -147,8 +147,10 @@ public class FileDownloader extends Service implements OnDatatransferProgressLis
|
|||
AbstractList<String> requestedDownloads = new Vector<String>(); // dvelasco: now this always contains just one element, but that can change in a near future (download of multiple selection)
|
||||
String downloadKey = buildRemoteName(account, file);
|
||||
try {
|
||||
DownloadFileOperation newDownload = new DownloadFileOperation(account, file, (FileDownloaderBinder) mBinder);
|
||||
DownloadFileOperation newDownload = new DownloadFileOperation(account, file);
|
||||
mPendingDownloads.putIfAbsent(downloadKey, newDownload);
|
||||
newDownload.addDatatransferProgressListener(this);
|
||||
newDownload.addDatatransferProgressListener((FileDownloaderBinder)mBinder);
|
||||
requestedDownloads.add(downloadKey);
|
||||
sendBroadcastNewDownload(newDownload);
|
||||
|
||||
|
@ -438,10 +440,10 @@ public class FileDownloader extends Service implements OnDatatransferProgressLis
|
|||
public void onTransferProgress(long progressRate, long totalTransferredSoFar, long totalToTransfer, String fileName) {
|
||||
int percent = (int)(100.0*((double)totalTransferredSoFar)/((double)totalToTransfer));
|
||||
if (percent != mLastPercent) {
|
||||
mNotification.contentView.setProgressBar(R.id.status_progress, 100, percent, totalToTransfer < 0);
|
||||
String text = String.format(getString(R.string.downloader_download_in_progress_content), percent, fileName);
|
||||
mNotification.contentView.setTextViewText(R.id.status_text, text);
|
||||
mNotificationManager.notify(R.string.downloader_download_in_progress_ticker, mNotification);
|
||||
mNotification.contentView.setProgressBar(R.id.status_progress, 100, percent, totalToTransfer < 0);
|
||||
String text = String.format(getString(R.string.downloader_download_in_progress_content), percent, fileName);
|
||||
mNotification.contentView.setTextViewText(R.id.status_text, text);
|
||||
mNotificationManager.notify(R.string.downloader_download_in_progress_ticker, mNotification);
|
||||
}
|
||||
mLastPercent = percent;
|
||||
}
|
||||
|
|
|
@ -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<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)
|
||||
|
@ -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<OnDatatransferProgressListener> 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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue