X-Git-Url: https://git.ktnx.net/?p=mobile-ledger.git;a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fui%2Fnew_transaction%2FNewTransactionModel.java;h=707bc089cdf14ef3918ad74af4f7ea118f165aae;hp=d0b99f3d558c4106238b5747dd1e94fecc826995;hb=c9f30894817566586ff42216513adc4a69890da0;hpb=92846565ae94144ea1423be61c37e5a7b1a920fa diff --git a/app/src/main/java/net/ktnx/mobileledger/ui/new_transaction/NewTransactionModel.java b/app/src/main/java/net/ktnx/mobileledger/ui/new_transaction/NewTransactionModel.java index d0b99f3d..707bc089 100644 --- a/app/src/main/java/net/ktnx/mobileledger/ui/new_transaction/NewTransactionModel.java +++ b/app/src/main/java/net/ktnx/mobileledger/ui/new_transaction/NewTransactionModel.java @@ -170,10 +170,13 @@ public class NewTransactionModel extends ViewModel { return this.isSubmittable; } void reset() { + Logger.debug("new-trans", "Resetting model"); List list = new ArrayList<>(); list.add(new TransactionHead("")); list.add(new TransactionAccount("")); list.add(new TransactionAccount("")); + noteFocusChanged(0, FocusedElement.Description); + isSubmittable.setValue(false); setItemsWithoutSubmittableChecks(list); } boolean accountsInInitialState() { @@ -358,7 +361,20 @@ public class NewTransactionModel extends ViewModel { list.add(list.remove(index)); } void toggleCurrencyVisible() { - showCurrency.setValue(!Objects.requireNonNull(showCurrency.getValue())); + final boolean newValue = !Objects.requireNonNull(showCurrency.getValue()); + + // remove currency from all items, or reset currency to the default + // no need to clone the list, because the removal of the currency won't lead to + // visual changes -- the currency fields will be hidden or reset to default anyway + // still, there may be changes in the submittable state + final List list = Objects.requireNonNull(this.items.getValue()); + for (int i = 1; i < list.size(); i++) { + ((TransactionAccount) list.get(i)).setCurrency(newValue ? Data.getProfile() + .getDefaultCommodity() + : null); + } + checkTransactionSubmittable(null); + showCurrency.setValue(newValue); } void stopObservingBusyFlag(Observer observer) { busyFlag.removeObserver(observer); @@ -625,10 +641,6 @@ public class NewTransactionModel extends ViewModel { } final TransactionAccount newAcc = new TransactionAccount(acc); newAcc.setAmountHint(null); - if (!liveListCopied) { - list = copyList(list); - liveListCopied = true; - } list.set(i, newAcc); listChanged = true; } @@ -1039,6 +1051,7 @@ public class NewTransactionModel extends ViewModel { private FocusedElement focusedElement = FocusedElement.Account; private boolean amountHintIsSet = true; private boolean isLast = false; + private int accountNameCursorPosition; public TransactionAccount(TransactionAccount origin) { id = origin.id; accountName = origin.accountName; @@ -1051,6 +1064,7 @@ public class NewTransactionModel extends ViewModel { amountValid = origin.amountValid; focusedElement = origin.focusedElement; isLast = origin.isLast; + accountNameCursorPosition = origin.accountNameCursorPosition; } public TransactionAccount(LedgerTransactionAccount account) { super(); @@ -1155,6 +1169,9 @@ public class NewTransactionModel extends ViewModel { if (!TextUtils.isEmpty(comment)) b.append(String.format(" /%s/", comment)); + if (isLast) + b.append(" last"); + return b.toString(); } public boolean equalContents(TransactionAccount other) { @@ -1177,6 +1194,12 @@ public class NewTransactionModel extends ViewModel { equal)); return equal; } + public int getAccountNameCursorPosition() { + return accountNameCursorPosition; + } + public void setAccountNameCursorPosition(int position) { + this.accountNameCursorPosition = position; + } } private static class BalanceForCurrency {