]> git.ktnx.net Git - mobile-ledger.git/blobdiff - app/src/main/java/net/ktnx/mobileledger/ui/activity/NewTransactionItemHolder.java
NT: new rules for determining whether transaction can be submitted (not quite finished)
[mobile-ledger.git] / app / src / main / java / net / ktnx / mobileledger / ui / activity / NewTransactionItemHolder.java
index 91d45031bd373e0f788be3813606cd7df47457c3..53e97e826c0092cb23ec1eb4136b69a6944bdcd5 100644 (file)
@@ -91,6 +91,7 @@ class NewTransactionItemHolder extends RecyclerView.ViewHolder
     private Observer<Boolean> currencyGapObserver;
     private Observer<Locale> localeObserver;
     private Observer<Currency> currencyObserver;
+    private Observer<Boolean> showCurrencyObserver;
     private boolean inUpdate = false;
     private boolean syncingData = false;
     private View commentButton;
@@ -352,7 +353,22 @@ class NewTransactionItemHolder extends RecyclerView.ViewHolder
                 tvAmount.setKeyListener(DigitsKeyListener.getInstance(locale, true, true));
         };
 
-        currencyObserver = this::setCurrency;
+        currencyObserver = currency -> {
+            setCurrency(currency);
+            adapter.model.checkTransactionSubmittable(adapter);
+        };
+
+        showCurrencyObserver = showCurrency -> {
+            if (item.getType() == ItemType.transactionRow) {
+                if (showCurrency) {
+                    tvCurrency.setVisibility(View.VISIBLE);
+                }
+                else {
+                    tvCurrency.setVisibility(View.GONE);
+                    item.setCurrency(null);
+                }
+            }
+        };
     }
     private void updateCurrencyPositionAndPadding(Currency.Position position, boolean hasGap) {
         ConstraintLayout.LayoutParams amountLP =
@@ -489,7 +505,7 @@ class NewTransactionItemHolder extends RecyclerView.ViewHolder
 
                     if (amount.isEmpty()) {
                         account.resetAmount();
-                        account.setCurrency(null);
+//                        account.setCurrency(null);
                     }
                     else {
                         try {
@@ -552,6 +568,7 @@ class NewTransactionItemHolder extends RecyclerView.ViewHolder
                 Data.currencyGap.removeObserver(currencyGapObserver);
                 Data.locale.removeObserver(localeObserver);
                 this.item.stopObservingCurrency(currencyObserver);
+                this.item.getModel().showCurrency.removeObserver(showCurrencyObserver);
 
                 this.item = null;
             }
@@ -609,6 +626,7 @@ class NewTransactionItemHolder extends RecyclerView.ViewHolder
                 Data.currencyGap.observe(activity, currencyGapObserver);
                 Data.locale.observe(activity, localeObserver);
                 item.observeCurrency(activity, currencyObserver);
+                item.getModel().showCurrency.observe(activity, showCurrencyObserver);
             }
         }
         finally {