X-Git-Url: https://git.ktnx.net/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fui%2Fnew_transaction%2FNewTransactionModel.java;h=1d0eedf58ae5e3ed1a2f84a8bc3d4b6fce75dd8d;hb=4ab502e75190b212a0c01b66e4eae1f1eb402862;hp=7ff061a6ea30994bb15437d3297ee4683334f795;hpb=5df10dc0b58df4d4be4e9ab34f1e0f477ca46766;p=mobile-ledger.git diff --git a/app/src/main/java/net/ktnx/mobileledger/ui/new_transaction/NewTransactionModel.java b/app/src/main/java/net/ktnx/mobileledger/ui/new_transaction/NewTransactionModel.java index 7ff061a6..1d0eedf5 100644 --- a/app/src/main/java/net/ktnx/mobileledger/ui/new_transaction/NewTransactionModel.java +++ b/app/src/main/java/net/ktnx/mobileledger/ui/new_transaction/NewTransactionModel.java @@ -18,8 +18,6 @@ package net.ktnx.mobileledger.ui.new_transaction; import android.annotation.SuppressLint; -import android.os.Handler; -import android.os.Looper; import android.text.TextUtils; import androidx.annotation.NonNull; @@ -31,6 +29,7 @@ import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModel; import net.ktnx.mobileledger.BuildConfig; +import net.ktnx.mobileledger.db.Currency; import net.ktnx.mobileledger.db.DB; import net.ktnx.mobileledger.db.Profile; import net.ktnx.mobileledger.db.TemplateAccount; @@ -102,7 +101,9 @@ public class NewTransactionModel extends ViewModel { * make old items replaceable in-place. makes the new values visually blend in */ private void renumberItems() { - final List list = items.getValue(); + renumberItems(items.getValue()); + } + private void renumberItems(List list) { if (list == null) { return; } @@ -261,7 +262,6 @@ public class NewTransactionModel extends ViewModel { if (Misc.emptyIsNull(transactionComment) != null) head.setComment(transactionComment); - Item.resetIdDispenser(); List newItems = new ArrayList<>(); newItems.add(head); @@ -292,25 +292,31 @@ public class NewTransactionModel extends ViewModel { if (amount != null && acc.getNegateAmount() != null && acc.getNegateAmount()) amount = -amount; - // TODO currency TransactionAccount accRow = new TransactionAccount(accountName); accRow.setComment(accountComment); if (amount != null) accRow.setAmount(amount); + accRow.setCurrency( + extractCurrencyFromMatches(matchResult, acc.getCurrencyMatchGroup(), + acc.getCurrencyObject())); newItems.add(accRow); } - new Handler(Looper.getMainLooper()).post(() -> replaceItems(newItems)); + renumberItems(newItems); + Misc.onMainThread(() -> replaceItems(newItems)); }); } + private String extractCurrencyFromMatches(MatchResult m, Integer group, Currency literal) { + return extractStringFromMatches(m, group, (literal == null) ? "" : literal.getName()); + } private int extractIntFromMatches(MatchResult m, Integer group, Integer literal) { if (literal != null) return literal; if (group != null) { int grp = group; - if (grp > 0 & grp <= m.groupCount()) + if (grp > 0 && grp <= m.groupCount()) try { return Integer.parseInt(m.group(grp)); } @@ -327,7 +333,7 @@ public class NewTransactionModel extends ViewModel { if (group != null) { int grp = group; - if (grp > 0 & grp <= m.groupCount()) + if (grp > 0 && grp <= m.groupCount()) return m.group(grp); } @@ -339,7 +345,7 @@ public class NewTransactionModel extends ViewModel { if (group != null) { int grp = group; - if (grp > 0 & grp <= m.groupCount()) + if (grp > 0 && grp <= m.groupCount()) try { return Float.valueOf(m.group(grp)); } @@ -428,7 +434,6 @@ public class NewTransactionModel extends ViewModel { List list = Objects.requireNonNull(items.getValue()); TransactionHead head = list.get(0) .toTransactionHead(); - SimpleDate date = head.getDate(); LedgerTransaction tr = head.asLedgerTransaction(); tr.setComment(head.getComment()); @@ -466,8 +471,12 @@ public class NewTransactionModel extends ViewModel { List newList = new ArrayList<>(); Item.resetIdDispenser(); + Item currentHead = items.getValue() + .get(0); TransactionHead head = new TransactionHead(tr.transaction.getDescription()); head.setComment(tr.transaction.getComment()); + if (currentHead instanceof TransactionHead) + head.setDate(((TransactionHead) currentHead).date); newList.add(head); @@ -523,7 +532,7 @@ public class NewTransactionModel extends ViewModel { moveItemLast(newList, singlePositiveIndex); } - new Handler(Looper.getMainLooper()).post(() -> { + Misc.onMainThread(() -> { setItems(newList); noteFocusChanged(1, FocusedElement.Amount); }); @@ -1029,7 +1038,8 @@ public class NewTransactionModel extends ViewModel { return ItemType.generalData; } public LedgerTransaction asLedgerTransaction() { - return new LedgerTransaction(0, date, description, Data.getProfile()); + return new LedgerTransaction(0, (date == null) ? SimpleDate.today() : date, description, + Data.getProfile()); } public boolean equalContents(TransactionHead other) { if (other == null)