]> git.ktnx.net Git - mobile-ledger.git/blobdiff - app/src/main/java/net/ktnx/mobileledger/ui/new_transaction/NewTransactionModel.java
drop improper list copy
[mobile-ledger.git] / app / src / main / java / net / ktnx / mobileledger / ui / new_transaction / NewTransactionModel.java
index d1db37b2c5f242ec8bb424537f94e75e21ee9276..707bc089cdf14ef3918ad74af4f7ea118f165aae 100644 (file)
@@ -175,6 +175,8 @@ public class NewTransactionModel extends ViewModel {
         list.add(new TransactionHead(""));
         list.add(new TransactionAccount(""));
         list.add(new TransactionAccount(""));
+        noteFocusChanged(0, FocusedElement.Description);
+        isSubmittable.setValue(false);
         setItemsWithoutSubmittableChecks(list);
     }
     boolean accountsInInitialState() {
@@ -359,7 +361,20 @@ public class NewTransactionModel extends ViewModel {
             list.add(list.remove(index));
     }
     void toggleCurrencyVisible() {
-        showCurrency.setValue(!Objects.requireNonNull(showCurrency.getValue()));
+        final boolean newValue = !Objects.requireNonNull(showCurrency.getValue());
+
+        // remove currency from all items, or reset currency to the default
+        // no need to clone the list, because the removal of the currency won't lead to
+        // visual changes -- the currency fields will be hidden or reset to default anyway
+        // still, there may be changes in the submittable state
+        final List<Item> list = Objects.requireNonNull(this.items.getValue());
+        for (int i = 1; i < list.size(); i++) {
+            ((TransactionAccount) list.get(i)).setCurrency(newValue ? Data.getProfile()
+                                                                          .getDefaultCommodity()
+                                                                    : null);
+        }
+        checkTransactionSubmittable(null);
+        showCurrency.setValue(newValue);
     }
     void stopObservingBusyFlag(Observer<Boolean> observer) {
         busyFlag.removeObserver(observer);
@@ -626,10 +641,6 @@ public class NewTransactionModel extends ViewModel {
                                 }
                                 final TransactionAccount newAcc = new TransactionAccount(acc);
                                 newAcc.setAmountHint(null);
-                                if (!liveListCopied) {
-                                    list = copyList(list);
-                                    liveListCopied = true;
-                                }
                                 list.set(i, newAcc);
                                 listChanged = true;
                             }
@@ -1158,6 +1169,9 @@ public class NewTransactionModel extends ViewModel {
             if (!TextUtils.isEmpty(comment))
                 b.append(String.format(" /%s/", comment));
 
+            if (isLast)
+                b.append(" last");
+
             return b.toString();
         }
         public boolean equalContents(TransactionAccount other) {