diff --git a/F-Droid/res/values/strings.xml b/F-Droid/res/values/strings.xml
index 16c41b048..5028c49bb 100644
--- a/F-Droid/res/values/strings.xml
+++ b/F-Droid/res/values/strings.xml
@@ -172,6 +172,13 @@
- Percentage complete (int between 0-100)
-->
Downloading\n%2$s / %3$s (%4$d%%) from\n%1$s
+
+
+ Downloading\n%2$s from\n%1$s
Updating repositories
Processing %2$s / %3$s (%4$d%%) from %1$s
Connecting to\n%1$s
diff --git a/F-Droid/src/org/fdroid/fdroid/AppDetails.java b/F-Droid/src/org/fdroid/fdroid/AppDetails.java
index 1eacb86eb..5d7424405 100644
--- a/F-Droid/src/org/fdroid/fdroid/AppDetails.java
+++ b/F-Droid/src/org/fdroid/fdroid/AppDetails.java
@@ -1493,18 +1493,26 @@ public class AppDetails extends AppCompatActivity implements ProgressListener, A
/**
* Updates progress bar and captions to new values (in bytes).
*/
- public void updateProgress(long progress, long total) {
- // Avoid division by zero and other weird values
- if (progress < 0 || total <= 0) {
+ public void updateProgress(long bytesDownloaded, long totalBytes) {
+ if (bytesDownloaded < 0 || totalBytes == 0) {
+ // Avoid division by zero and other weird values
return;
}
- long percent = progress * 100 / total;
- setProgressVisible(true);
- progressBar.setIndeterminate(false);
- progressBar.setProgress((int) percent);
- progressBar.setMax(100);
- progressSize.setText(readableFileSize(progress) + " / " + readableFileSize(total));
- progressPercent.setText(Long.toString(percent) + " %");
+
+ if (totalBytes == -1) {
+ setProgressVisible(true);
+ progressBar.setIndeterminate(true);
+ progressSize.setText(readableFileSize(bytesDownloaded));
+ progressPercent.setText("");
+ } else {
+ long percent = bytesDownloaded * 100 / totalBytes;
+ setProgressVisible(true);
+ progressBar.setIndeterminate(false);
+ progressBar.setProgress((int) percent);
+ progressBar.setMax(100);
+ progressSize.setText(readableFileSize(bytesDownloaded) + " / " + readableFileSize(totalBytes));
+ progressPercent.setText(Long.toString(percent) + " %");
+ }
}
/**
diff --git a/F-Droid/src/org/fdroid/fdroid/UpdateService.java b/F-Droid/src/org/fdroid/fdroid/UpdateService.java
index cd5195384..bdde37883 100644
--- a/F-Droid/src/org/fdroid/fdroid/UpdateService.java
+++ b/F-Droid/src/org/fdroid/fdroid/UpdateService.java
@@ -209,12 +209,17 @@ public class UpdateService extends IntentService implements ProgressListener {
String repoAddress = intent.getStringExtra(Downloader.EXTRA_ADDRESS);
int downloadedSize = intent.getIntExtra(Downloader.EXTRA_BYTES_READ, -1);
+ String downloadedSizeFriendly = Utils.getFriendlySize(downloadedSize);
int totalSize = intent.getIntExtra(Downloader.EXTRA_TOTAL_BYTES, -1);
int percent = (int) ((double) downloadedSize / totalSize * 100);
- sendStatus(STATUS_INFO,
- getString(R.string.status_download, repoAddress,
- Utils.getFriendlySize(downloadedSize),
- Utils.getFriendlySize(totalSize), percent));
+ String message;
+ if (totalSize == -1) {
+ message = getString(R.string.status_download_unknown_size, repoAddress, downloadedSizeFriendly);
+ } else {
+ String totalSizeFriendly = Utils.getFriendlySize(totalSize);
+ message = getString(R.string.status_download, repoAddress, downloadedSizeFriendly, totalSizeFriendly, percent);
+ }
+ sendStatus(STATUS_INFO, message);
}
};
diff --git a/F-Droid/src/org/fdroid/fdroid/net/Downloader.java b/F-Droid/src/org/fdroid/fdroid/net/Downloader.java
index 25084e603..3d987a606 100644
--- a/F-Droid/src/org/fdroid/fdroid/net/Downloader.java
+++ b/F-Droid/src/org/fdroid/fdroid/net/Downloader.java
@@ -154,11 +154,10 @@ public abstract class Downloader {
throwExceptionIfInterrupted();
sendProgress(bytesRead, totalBytes);
- while (bytesRead < totalBytes) {
+ while (true) {
int count;
- if (input.available()>0) {
-
+ if (input.available() > 0) {
int readLength = Math.min(input.available(), buffer.length);
count = input.read(buffer, 0, readLength);
} else {
diff --git a/F-Droid/src/org/fdroid/fdroid/views/swap/SwapAppsView.java b/F-Droid/src/org/fdroid/fdroid/views/swap/SwapAppsView.java
index f254fbcf8..6eb36fa28 100644
--- a/F-Droid/src/org/fdroid/fdroid/views/swap/SwapAppsView.java
+++ b/F-Droid/src/org/fdroid/fdroid/views/swap/SwapAppsView.java
@@ -293,6 +293,8 @@ public class SwapAppsView extends ListView implements
progressView.setIndeterminate(false);
progressView.setMax(100);
progressView.setProgress(progress);
+ } else {
+ progressView.setIndeterminate(true);
}
}
};