X-Git-Url: https://git.ktnx.net/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fui%2Fnew_transaction%2FNewTransactionModel.java;h=ad9c75cd87282307581f5679d5825095734e4110;hb=40d4f7ebb9085a58133cf47eacf989ed35fa0b4e;hp=9539476d77f063e3e7239e95591831b7a64c4052;hpb=4123c82ce24688f2a91da9706ebe77135f3185ea;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 9539476d..ad9c75cd 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; @@ -32,14 +30,15 @@ import androidx.lifecycle.ViewModel; import net.ktnx.mobileledger.BuildConfig; import net.ktnx.mobileledger.db.DB; +import net.ktnx.mobileledger.db.Profile; import net.ktnx.mobileledger.db.TemplateAccount; import net.ktnx.mobileledger.db.TemplateHeader; +import net.ktnx.mobileledger.db.TransactionWithAccounts; import net.ktnx.mobileledger.model.Data; import net.ktnx.mobileledger.model.InertMutableLiveData; import net.ktnx.mobileledger.model.LedgerTransaction; import net.ktnx.mobileledger.model.LedgerTransactionAccount; import net.ktnx.mobileledger.model.MatchedTemplate; -import net.ktnx.mobileledger.model.MobileLedgerProfile; import net.ktnx.mobileledger.utils.Globals; import net.ktnx.mobileledger.utils.Logger; import net.ktnx.mobileledger.utils.Misc; @@ -73,7 +72,7 @@ public class NewTransactionModel extends ViewModel { private final MutableLiveData simulateSave = new InertMutableLiveData<>(false); private final AtomicInteger busyCounter = new AtomicInteger(0); private final MutableLiveData busyFlag = new InertMutableLiveData<>(false); - private final Observer profileObserver = profile -> { + private final Observer profileObserver = profile -> { showCurrency.postValue(profile.getShowCommodityByDefault()); showComments.postValue(profile.getShowCommentsByDefault()); }; @@ -260,6 +259,7 @@ public class NewTransactionModel extends ViewModel { if (Misc.emptyIsNull(transactionComment) != null) head.setComment(transactionComment); + Item.resetIdDispenser(); List newItems = new ArrayList<>(); newItems.add(head); @@ -299,7 +299,7 @@ public class NewTransactionModel extends ViewModel { newItems.add(accRow); } - new Handler(Looper.getMainLooper()).post(() -> setItems(newItems)); + Misc.onMainThread(() -> replaceItems(newItems)); }); } private int extractIntFromMatches(MatchResult m, Integer group, Integer literal) { @@ -460,23 +460,19 @@ public class NewTransactionModel extends ViewModel { return tr; } - void loadTransactionIntoModel(String profileUUID, int transactionId) { + void loadTransactionIntoModel(@NonNull TransactionWithAccounts tr) { List newList = new ArrayList<>(); Item.resetIdDispenser(); - LedgerTransaction tr; - MobileLedgerProfile profile = Data.getProfile(profileUUID); - if (profile == null) - throw new RuntimeException(String.format( - "Unable to find profile %s, which is supposed to contain transaction %d", - profileUUID, transactionId)); - tr = profile.loadTransaction(transactionId); - TransactionHead head = new TransactionHead(tr.getDescription()); - head.setComment(tr.getComment()); + TransactionHead head = new TransactionHead(tr.transaction.getDescription()); + head.setComment(tr.transaction.getComment()); newList.add(head); - List accounts = tr.getAccounts(); + List accounts = new ArrayList<>(); + for (net.ktnx.mobileledger.db.TransactionAccount acc : tr.accounts) { + accounts.add(new LedgerTransactionAccount(acc)); + } TransactionAccount firstNegative = null; TransactionAccount firstPositive = null; @@ -525,9 +521,10 @@ public class NewTransactionModel extends ViewModel { moveItemLast(newList, singlePositiveIndex); } - setItems(newList); - - noteFocusChanged(1, FocusedElement.Amount); + Misc.onMainThread(() -> { + setItems(newList); + noteFocusChanged(1, FocusedElement.Amount); + }); } /** * A transaction is submittable if: @@ -1030,7 +1027,7 @@ public class NewTransactionModel extends ViewModel { return ItemType.generalData; } public LedgerTransaction asLedgerTransaction() { - return new LedgerTransaction(null, date, description, Data.getProfile()); + return new LedgerTransaction(0, date, description, Data.getProfile()); } public boolean equalContents(TransactionHead other) { if (other == null)