X-Git-Url: https://git.ktnx.net/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fui%2Factivity%2FNewTransactionModel.java;h=7cbbeca219a47159b6970b301ddb047fb3ca29e2;hb=a464909fb8bb0d3093579c4c4224304dabb2d2b2;hp=f6ecb443f49fe775413d50b9df536fe0dedd352f;hpb=d4e592c5aed998f3b3e5afcf2150fb051aaf3e6f;p=mobile-ledger-staging.git 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 f6ecb443..7cbbeca2 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 @@ -20,6 +20,7 @@ package net.ktnx.mobileledger.ui.activity; import androidx.annotation.NonNull; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; +import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModel; import net.ktnx.mobileledger.model.LedgerTransactionAccount; @@ -112,8 +113,10 @@ public class NewTransactionModel extends ViewModel { if (index == 0) { return header; } - else if (index <= items.size()) return items.get(index - 1); - else return trailer; + + if (index <= items.size()) return items.get(index - 1); + + return trailer; } // rules: // 1) at least two account names @@ -223,32 +226,35 @@ public class NewTransactionModel extends ViewModel { private LedgerTransactionAccount account; private MutableLiveData amountHint = new MutableLiveData<>(); private NewTransactionModel model; - private boolean editable = true; + private MutableLiveData editable = new MutableLiveData<>(true); public Item(NewTransactionModel model) { this.model = model; type = ItemType.bottomFiller; + editable.setValue(false); } public Item(NewTransactionModel model, Date date, String description) { this.model = model; this.type = ItemType.generalData; this.date.setValue(date); this.description.setValue(description); + this.editable.setValue(true); } public Item(NewTransactionModel model, LedgerTransactionAccount account) { this.model = model; this.type = ItemType.transactionRow; this.account = account; + this.editable.setValue(true); } public NewTransactionModel getModel() { return model; } public boolean isEditable() { ensureType(ItemType.transactionRow); - return editable; + return this.editable.getValue(); } public void setEditable(boolean editable) { ensureType(ItemType.transactionRow); - this.editable = editable; + this.editable.setValue(editable); } public String getAmountHint() { ensureType(ItemType.transactionRow); @@ -273,7 +279,7 @@ public class NewTransactionModel extends ViewModel { public void ensureType(ItemType wantedType) { if (type != wantedType) { throw new RuntimeException( - String.format("Actual type (%d) differs from wanted (%s)", type, + String.format("Actual type (%s) differs from wanted (%s)", type, wantedType)); } } @@ -376,5 +382,12 @@ public class NewTransactionModel extends ViewModel { return String.valueOf(myDay); } + public void observeEditableFlag(NewTransactionActivity activity, + Observer observer) { + editable.observe(activity, observer); + } + public void stopObservingEditableFlag(Observer observer) { + editable.removeObserver(observer); + } } }