From ab3683d442397ee99800fbd141cec1405466e21d Mon Sep 17 00:00:00 2001 From: M66B Date: Mon, 1 Aug 2022 07:50:42 +0200 Subject: [PATCH] Send: added progress bar --- .../dummy/java/eu/faircode/email/Send.java | 6 ++++- .../extra/java/eu/faircode/email/Send.java | 10 ++++++-- .../email/FragmentDialogInsertLink.java | 17 ++++++++++++- .../main/res/layout/dialog_insert_link.xml | 24 +++++++++---------- 4 files changed, 41 insertions(+), 16 deletions(-) diff --git a/app/src/dummy/java/eu/faircode/email/Send.java b/app/src/dummy/java/eu/faircode/email/Send.java index c4f7edb961..fa1666513b 100644 --- a/app/src/dummy/java/eu/faircode/email/Send.java +++ b/app/src/dummy/java/eu/faircode/email/Send.java @@ -9,7 +9,11 @@ public class Send { static final int DEFAULT_TLIMIT = 0; static final String DEFAULT_SERVER = ""; - public static String upload(InputStream is, DocumentFile dfile, int dLimit, int timeLimit, String host) { + public static String upload(InputStream is, DocumentFile dfile, int dLimit, int timeLimit, String host, IProgress intf) { return null; } + + public interface IProgress { + void onProgress(int percentage); + } } diff --git a/app/src/extra/java/eu/faircode/email/Send.java b/app/src/extra/java/eu/faircode/email/Send.java index f954fc4266..cac0d3b51e 100644 --- a/app/src/extra/java/eu/faircode/email/Send.java +++ b/app/src/extra/java/eu/faircode/email/Send.java @@ -57,7 +57,7 @@ public class Send { private static final int TIMEOUT = 20 * 1000; // milliseconds - public static String upload(InputStream is, DocumentFile dfile, int dLimit, int timeLimit, String host) throws Throwable { + public static String upload(InputStream is, DocumentFile dfile, int dLimit, int timeLimit, String host, IProgress intf) throws Throwable { String result; SecureRandom rnd = new SecureRandom(); @@ -153,11 +153,13 @@ public class Send { while ((len = is.read(buffer, 0, buffer.length - 17)) > 0) { Log.i("Send read=" + len); + size += len; + intf.onProgress((int) (100 * size / fileSize)); + // add a delimiter octet (0x01 or 0x02) // then 0x00-valued octets to rs-16 (or less on the last record) // The last record uses a padding delimiter octet set to the value 2, // all other records have a padding delimiter octet value of 1. - size += len; if (size == fileSize) buffer[len++] = 0x02; else { @@ -255,4 +257,8 @@ public class Send { return jupload; } + + public interface IProgress { + void onProgress(int percentage); + } } diff --git a/app/src/main/java/eu/faircode/email/FragmentDialogInsertLink.java b/app/src/main/java/eu/faircode/email/FragmentDialogInsertLink.java index 51bfc215db..cfb80e8104 100644 --- a/app/src/main/java/eu/faircode/email/FragmentDialogInsertLink.java +++ b/app/src/main/java/eu/faircode/email/FragmentDialogInsertLink.java @@ -376,6 +376,7 @@ public class FragmentDialogInsertLink extends FragmentDialogBase { btnUpload.setEnabled(false); sbDLimit.setEnabled(false); sbTLimit.setEnabled(false); + pbUpload.setProgress(0); pbUpload.setVisibility(View.VISIBLE); } @@ -417,10 +418,24 @@ public class FragmentDialogInsertLink extends FragmentDialogBase { ContentResolver resolver = context.getContentResolver(); try (InputStream is = resolver.openInputStream(uri)) { - return Send.upload(is, dfile, dlimit, tlimit * 60 * 60, send_host); + return Send.upload(is, dfile, dlimit, tlimit * 60 * 60, send_host, new Send.IProgress() { + @Override + public void onProgress(int percentage) { + Bundle args = new Bundle(); + args.putInt("progress", percentage); + postProgress(null, args); + } + }); } } + @Override + protected void onProgress(CharSequence status, Bundle data) { + int progress = data.getInt("progress"); + Log.i("Send progress=" + progress); + pbUpload.setProgress(progress); + } + @Override protected void onExecuted(Bundle args, String link) { etLink.setText(link); diff --git a/app/src/main/res/layout/dialog_insert_link.xml b/app/src/main/res/layout/dialog_insert_link.xml index 62e917ba39..a324682392 100644 --- a/app/src/main/res/layout/dialog_insert_link.xml +++ b/app/src/main/res/layout/dialog_insert_link.xml @@ -124,27 +124,27 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/tvMetadataRemark" /> - + style="@android:style/Widget.ProgressBar.Horizontal" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginTop="12dp" + android:progress="25" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/btnUpload" /> + app:layout_constraintTop_toBottomOf="@id/pbUpload" />