X-Git-Url: https://git.ktnx.net/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fasync%2FRetrieveTransactionsTask.java;h=ac9ec5093e54ece20790e6107f8fe2d593c5d9af;hb=d080698efeba76aab6ef6b5b9d182990749509a7;hp=288301f0771cf71b3f81f296ffb4f06f9da2a5c8;hpb=60c444f557ab404619a765279f4089402140aef4;p=mobile-ledger.git
diff --git a/app/src/main/java/net/ktnx/mobileledger/async/RetrieveTransactionsTask.java b/app/src/main/java/net/ktnx/mobileledger/async/RetrieveTransactionsTask.java
index 288301f0..ac9ec509 100644
--- a/app/src/main/java/net/ktnx/mobileledger/async/RetrieveTransactionsTask.java
+++ b/app/src/main/java/net/ktnx/mobileledger/async/RetrieveTransactionsTask.java
@@ -75,6 +75,7 @@ public class RetrieveTransactionsTask
private Pattern reAccountValue = Pattern.compile(
"\\s*([-+]?[\\d.,]+)(?:\\s+(\\S+))?");
private MobileLedgerProfile profile;
+ private int expectedPostingsCount = -1;
public RetrieveTransactionsTask(@NonNull MobileLedgerProfile profile) {
this.profile = profile;
}
@@ -131,6 +132,7 @@ public class RetrieveTransactionsTask
private String retrieveTransactionListLegacy() throws IOException, HTTPException {
Progress progress = Progress.indeterminate();
progress.setState(ProgressState.RUNNING);
+ progress.setTotal(expectedPostingsCount);
int maxTransactionId = -1;
ArrayList list = new ArrayList<>();
HashMap map = new HashMap<>();
@@ -393,6 +395,7 @@ public class RetrieveTransactionsTask
throw new IOException(String.format("HTTP error %d", http.getResponseCode()));
AccountListParser parser = new AccountListParser(resp);
+ expectedPostingsCount = 0;
while (true) {
throwIfCancelled();
@@ -400,7 +403,7 @@ public class RetrieveTransactionsTask
if (parsedAccount == null) {
break;
}
-
+ expectedPostingsCount += parsedAccount.getAnumpostings();
final String accName = parsedAccount.getAname();
LedgerAccount acc = map.get(accName);
if (acc != null)
@@ -462,6 +465,7 @@ public class RetrieveTransactionsTask
private boolean retrieveTransactionList() throws IOException, ParseException, HTTPException {
Progress progress = new Progress();
int maxTransactionId = Data.transactions.size();
+ progress.setTotal(expectedPostingsCount);
HttpURLConnection http = NetworkUtil.prepareConnection(profile, "transactions");
http.setAllowUserInteraction(false);
@@ -480,7 +484,7 @@ public class RetrieveTransactionsTask
TransactionListParser parser = new TransactionListParser(resp);
- int processedTransactionCount = 0;
+ int processedPostings = 0;
while (true) {
throwIfCancelled();
@@ -492,7 +496,8 @@ public class RetrieveTransactionsTask
LedgerTransaction transaction = parsedTransaction.asLedgerTransaction();
trList.add(transaction);
- progress.setProgress(++processedTransactionCount);
+ progress.setProgress(processedPostings += transaction.getAccounts()
+ .size());
publishProgress(progress);
}