]> git.ktnx.net Git - mobile-ledger.git/blobdiff - app/src/main/java/net/ktnx/mobileledger/ui/activity/NewTransactionModel.java
posting-level flag for amount validity; drop custom amount text filter
[mobile-ledger.git] / app / src / main / java / net / ktnx / mobileledger / ui / activity / NewTransactionModel.java
index 7fd177683f461db1be543200007585a74dec4efb..83ffbb8f7bed90cdf747e60cc0daf6ef3d61e182 100644 (file)
@@ -49,17 +49,19 @@ public class NewTransactionModel extends ViewModel {
     final MutableLiveData<Boolean> showCurrency = new MutableLiveData<>(false);
     final ArrayList<Item> items = new ArrayList<>();
     final MutableLiveData<Boolean> isSubmittable = new MutableLiveData<>(false);
+    final MutableLiveData<Boolean> showComments = new MutableLiveData<>(true);
     private final Item header = new Item(this, null, "");
     private final Item trailer = new Item(this);
     private final MutableLiveData<Integer> focusedItem = new MutableLiveData<>(0);
     private final MutableLiveData<Integer> accountCount = new MutableLiveData<>(0);
     private final MutableLiveData<Boolean> simulateSave = new MutableLiveData<>(false);
-    private boolean observingDataProfile;
-    private Observer<MobileLedgerProfile> profileObserver =
-            profile -> showCurrency.postValue(profile.getShowCommodityByDefault());
     private final AtomicInteger busyCounter = new AtomicInteger(0);
     private final MutableLiveData<Boolean> busyFlag = new MutableLiveData<>(false);
-    final MutableLiveData<Boolean> showComments = new MutableLiveData<>(false);
+    private boolean observingDataProfile;
+    private Observer<MobileLedgerProfile> profileObserver = profile -> {
+        showCurrency.postValue(profile.getShowCommodityByDefault());
+        showComments.postValue(profile.getShowCommentsByDefault());
+    };
     void observeShowComments(LifecycleOwner owner, Observer<? super Boolean> observer) {
         showComments.observe(owner, observer);
     }
@@ -206,11 +208,13 @@ public class NewTransactionModel extends ViewModel {
     }
     void incrementBusyCounter() {
         int newValue = busyCounter.incrementAndGet();
-        if (newValue == 1) busyFlag.postValue(true);
+        if (newValue == 1)
+            busyFlag.postValue(true);
     }
     void decrementBusyCounter() {
         int newValue = busyCounter.decrementAndGet();
-        if (newValue == 0) busyFlag.postValue(false);
+        if (newValue == 0)
+            busyFlag.postValue(false);
     }
     public boolean getBusyFlag() {
         return busyFlag.getValue();
@@ -237,6 +241,7 @@ public class NewTransactionModel extends ViewModel {
         private FocusedElement focusedElement = FocusedElement.Account;
         private MutableLiveData<String> comment = new MutableLiveData<>(null);
         private MutableLiveData<Currency> currency = new MutableLiveData<>(null);
+        private MutableLiveData<Boolean> amountValid = new MutableLiveData<>(true);
         private boolean amountHintIsSet = false;
         Item(NewTransactionModel model) {
             this.model = model;
@@ -404,7 +409,6 @@ public class NewTransactionModel extends ViewModel {
             this.comment.observe(owner, observer);
         }
         void stopObservingTransactionComment(@NonNull Observer<? super String> observer) {
-            ensureType(ItemType.generalData);
             this.comment.removeObserver(observer);
         }
         public LedgerTransactionAccount getAccount() {
@@ -486,5 +490,17 @@ public class NewTransactionModel extends ViewModel {
         boolean isAmountHintSet() {
             return amountHintIsSet;
         }
+        void validateAmount() {
+            amountValid.setValue(true);
+        }
+        void invalidateAmount() {
+            amountValid.setValue(false);
+        }
+        void observeAmountValidity(NewTransactionActivity activity, Observer<Boolean> observer) {
+            amountValid.observe(activity, observer);
+        }
+        void stopObservingAmountValidity(Observer<Boolean> observer) {
+            amountValid.removeObserver(observer);
+        }
     }
 }