setItemsWithoutSubmittableChecks(newList);
}
private void setItemsWithoutSubmittableChecks(@NonNull List<Item> list) {
- Logger.debug("new-trans", "model: Setting new item list");
final int cnt = list.size();
for (int i = 1; i < cnt - 1; i++) {
final TransactionAccount item = list.get(i)
list.set(cnt - 1, replacement);
}
+ if (BuildConfig.DEBUG)
+ dumpItemList("Before setValue()", list);
items.setValue(list);
}
private List<Item> copyList() {
list.add(new TransactionHead(""));
list.add(new TransactionAccount(""));
list.add(new TransactionAccount(""));
+ noteFocusChanged(0, FocusedElement.Description);
+ isSubmittable.setValue(false);
setItemsWithoutSubmittableChecks(list);
}
boolean accountsInInitialState() {
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);
if (Misc.equalStrings(acc.getCurrency(), balCurrency)) {
if (BuildConfig.DEBUG)
Logger.debug("submittable",
- String.format("Resetting hint of '%s' [%s]",
- Misc.nullIsEmpty(acc.getAccountName()),
+ String.format(Locale.US, "Resetting hint of %d:'%s' [%s]",
+ i, Misc.nullIsEmpty(acc.getAccountName()),
balCurrency));
// skip if the amount is set, in which case the hint is not
// important/visible
}
final TransactionAccount newAcc = new TransactionAccount(acc);
newAcc.setAmountHint(null);
- if (!liveListCopied) {
- list = copyList(list);
- liveListCopied = true;
- }
list.set(i, newAcc);
listChanged = true;
}
listChanged = true;
}
-
Logger.debug("submittable", submittable ? "YES" : "NO");
isSubmittable.setValue(submittable);
private boolean amountSet;
private boolean amountValid = true;
private FocusedElement focusedElement = FocusedElement.Account;
- private boolean amountHintIsSet = true;
+ private boolean amountHintIsSet = false;
private boolean isLast = false;
private int accountNameCursorPosition;
public TransactionAccount(TransactionAccount origin) {
if (!TextUtils.isEmpty(comment))
b.append(String.format(" /%s/", comment));
+ if (isLast)
+ b.append(" last");
+
return b.toString();
}
public boolean equalContents(TransactionAccount other) {