X-Git-Url: https://git.ktnx.net/?p=mobile-ledger.git;a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fui%2Factivity%2FNewTransactionModel.java;h=f6d556e58573c5ff2217767261f5fb70da8745dd;hp=914a478b14945bce6c6f49f5ce7e8c930d8f9172;hb=8c39affe99dc23ed494f3b70fe29ea4c3e00c2f4;hpb=593d0307aeb6e151c4f693697d7746a3f4c929e8 diff --git a/app/src/main/java/net/ktnx/mobileledger/ui/activity/NewTransactionModel.java b/app/src/main/java/net/ktnx/mobileledger/ui/activity/NewTransactionModel.java index 914a478b..f6d556e5 100644 --- a/app/src/main/java/net/ktnx/mobileledger/ui/activity/NewTransactionModel.java +++ b/app/src/main/java/net/ktnx/mobileledger/ui/activity/NewTransactionModel.java @@ -247,12 +247,14 @@ public class NewTransactionModel extends ViewModel { } enum ItemType {generalData, transactionRow, bottomFiller} + //========================================================================================== + class Item extends Object { private ItemType type; private MutableLiveData date = new MutableLiveData<>(); private MutableLiveData description = new MutableLiveData<>(); private LedgerTransactionAccount account; - private MutableLiveData amountHint = new MutableLiveData<>(); + private MutableLiveData amountHint = new MutableLiveData<>(null); private NewTransactionModel model; private MutableLiveData editable = new MutableLiveData<>(true); public Item(NewTransactionModel model) { @@ -276,20 +278,34 @@ public class NewTransactionModel extends ViewModel { public NewTransactionModel getModel() { return model; } - public boolean isEditable() { - ensureType(ItemType.transactionRow); - return this.editable.getValue(); - } public void setEditable(boolean editable) { - ensureType(ItemType.transactionRow); + ensureType(ItemType.generalData, ItemType.transactionRow); this.editable.setValue(editable); } + private void ensureType(ItemType type1, ItemType type2) { + if ((type != type1) && (type != type2)) { + throw new RuntimeException( + String.format("Actual type (%s) differs from wanted (%s or %s)", type, + type1, type2)); + } + } public String getAmountHint() { ensureType(ItemType.transactionRow); return amountHint.getValue(); } public void setAmountHint(String amountHint) { ensureType(ItemType.transactionRow); + + // avoid unnecessary triggers + if (amountHint == null) { + if (this.amountHint.getValue() == null) + return; + } + else { + if (amountHint.equals(this.amountHint.getValue())) + return; + } + this.amountHint.setValue(amountHint); } public void observeAmountHint(@NonNull @NotNull androidx.lifecycle.LifecycleOwner owner,