X-Git-Url: https://git.ktnx.net/?p=mobile-ledger.git;a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fasync%2FRetrieveTransactionsTask.java;h=ac9ec5093e54ece20790e6107f8fe2d593c5d9af;hp=288301f0771cf71b3f81f296ffb4f06f9da2a5c8;hb=1930f3fa34616229bd6a83654e6527672064196a;hpb=60c444f557ab404619a765279f4089402140aef4 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); }