X-Git-Url: https://git.ktnx.net/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fui%2Factivity%2FNewTransactionModel.java;h=0198b8696a12de0c3cbe929baa3a64461d43c8da;hb=18bc95ab692b0073bd1f2766850e8fc0841b8a9d;hp=39b9ac8ad60f09dd3b44eae84995870f9158ccf1;hpb=54e204dbd812a622745677849e1dec9210d1d926;p=mobile-ledger.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 39b9ac8a..0198b869 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 @@ -34,6 +34,7 @@ import org.jetbrains.annotations.NotNull; import java.util.ArrayList; import java.util.Calendar; +import java.util.Collections; import java.util.Date; import java.util.GregorianCalendar; import java.util.List; @@ -53,6 +54,21 @@ public class NewTransactionModel extends ViewModel { private final MutableLiveData isSubmittable = new MutableLiveData<>(false); private final MutableLiveData focusedItem = new MutableLiveData<>(0); private final MutableLiveData accountCount = new MutableLiveData<>(0); + private final MutableLiveData simulateSave = new MutableLiveData<>(false); + public boolean getSimulateSave() { + return simulateSave.getValue(); + } + public void setSimulateSave(boolean simulateSave) { + this.simulateSave.setValue(simulateSave); + } + public void toggleSimulateSave() { + simulateSave.setValue(!simulateSave.getValue()); + } + public void observeSimulateSave(@NonNull @NotNull androidx.lifecycle.LifecycleOwner owner, + @NonNull + androidx.lifecycle.Observer observer) { + this.simulateSave.observe(owner, observer); + } public int getAccountCount() { return items.size(); } @@ -249,8 +265,9 @@ public class NewTransactionModel extends ViewModel { for (int i = 0; i < items.size(); i++) { Item item = items.get(i); LedgerTransactionAccount acc = item.getAccount(); - debug("submittable", String.format("Item %2d: [%4.2f] %s", i, - acc.isAmountSet() ? acc.getAmount() : 0, acc.getAccountName())); + debug("submittable", String.format("Item %2d: [%4.2f] %s (%s)", i, + acc.isAmountSet() ? acc.getAmount() : 0, acc.getAccountName(), + acc.getComment())); } } } @@ -277,17 +294,23 @@ public class NewTransactionModel extends ViewModel { public void updateFocusedItem(int position) { focusedItem.setValue(position); } - public void noteFocusIsOnAccount(int position) { - getItem(position).setFocusIsOnAmount(false); + public void noteFocusChanged(int position, FocusedElement element) { + getItem(position).setFocusedElement(element); + } + public void swapItems(int one, int two) { + Collections.swap(items, one - 1, two - 1); } - public void noteFocusIsOnAmount(int position) { - getItem(position).setFocusIsOnAmount(true); + public void toggleComment(int position) { + final MutableLiveData commentVisible = getItem(position).commentVisible; + commentVisible.postValue(!commentVisible.getValue()); } enum ItemType {generalData, transactionRow, bottomFiller} //========================================================================================== - class Item extends Object { + enum FocusedElement {Account, Comment, Amount} + + class Item { private ItemType type; private MutableLiveData date = new MutableLiveData<>(); private MutableLiveData description = new MutableLiveData<>(); @@ -295,7 +318,9 @@ public class NewTransactionModel extends ViewModel { private MutableLiveData amountHint = new MutableLiveData<>(null); private NewTransactionModel model; private MutableLiveData editable = new MutableLiveData<>(true); - private boolean focusIsOnAmount = false; + private FocusedElement focusedElement = FocusedElement.Account; + private MutableLiveData comment = new MutableLiveData<>(null); + private MutableLiveData commentVisible = new MutableLiveData<>(false); public Item(NewTransactionModel model) { this.model = model; type = ItemType.bottomFiller; @@ -314,8 +339,11 @@ public class NewTransactionModel extends ViewModel { this.account = account; this.editable.setValue(true); } - public boolean focusIsOnAmount() { - return focusIsOnAmount; + public FocusedElement getFocusedElement() { + return focusedElement; + } + public void setFocusedElement(FocusedElement focusedElement) { + this.focusedElement = focusedElement; } public NewTransactionModel getModel() { return model; @@ -484,8 +512,23 @@ public class NewTransactionModel extends ViewModel { public void stopObservingEditableFlag(Observer observer) { editable.removeObserver(observer); } - public void setFocusIsOnAmount(boolean flag) { - focusIsOnAmount = flag; + public void observeCommentVisible(NewTransactionActivity activity, + Observer observer) { + commentVisible.observe(activity, observer); + } + public void stopObservingCommentVisible(Observer observer) { + commentVisible.removeObserver(observer); + } + public void observeComment(NewTransactionActivity activity, + Observer observer) { + comment.observe(activity, observer); + } + public void stopObservingComment(Observer observer) { + comment.removeObserver(observer); + } + public void setComment(String comment) { + getAccount().setComment(comment); + this.comment.postValue(comment); } } }