X-Git-Url: https://git.ktnx.net/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fui%2Fnew_transaction%2FNewTransactionFragment.java;h=e708c5fe3f2d7a37e88e684fdede50b52f57d3b3;hb=d95839304defead7c7d605cab2e612f1227cbfed;hp=0b82c27ba5c87b7c2365cb1d144f5c5aaaf19a7a;hpb=5aec3808de833367e5c9f2967978ecb64e69c97f;p=mobile-ledger.git diff --git a/app/src/main/java/net/ktnx/mobileledger/ui/new_transaction/NewTransactionFragment.java b/app/src/main/java/net/ktnx/mobileledger/ui/new_transaction/NewTransactionFragment.java index 0b82c27b..e708c5fe 100644 --- a/app/src/main/java/net/ktnx/mobileledger/ui/new_transaction/NewTransactionFragment.java +++ b/app/src/main/java/net/ktnx/mobileledger/ui/new_transaction/NewTransactionFragment.java @@ -49,15 +49,15 @@ import com.google.android.material.snackbar.Snackbar; import net.ktnx.mobileledger.R; import net.ktnx.mobileledger.db.DB; -import net.ktnx.mobileledger.db.PatternAccount; -import net.ktnx.mobileledger.db.PatternHeader; +import net.ktnx.mobileledger.db.TemplateAccount; +import net.ktnx.mobileledger.db.TemplateHeader; import net.ktnx.mobileledger.json.API; import net.ktnx.mobileledger.model.Data; import net.ktnx.mobileledger.model.LedgerTransaction; import net.ktnx.mobileledger.model.LedgerTransactionAccount; import net.ktnx.mobileledger.model.MobileLedgerProfile; import net.ktnx.mobileledger.ui.QRScanCapableFragment; -import net.ktnx.mobileledger.ui.patterns.PatternsActivity; +import net.ktnx.mobileledger.ui.templates.TemplatesActivity; import net.ktnx.mobileledger.utils.Logger; import net.ktnx.mobileledger.utils.Misc; import net.ktnx.mobileledger.utils.SimpleDate; @@ -90,9 +90,9 @@ public class NewTransactionFragment extends QRScanCapableFragment { setHasOptionsMenu(true); } private void startNewPatternActivity(String scanned) { - Intent intent = new Intent(requireContext(), PatternsActivity.class); + Intent intent = new Intent(requireContext(), TemplatesActivity.class); Bundle args = new Bundle(); - args.putString(PatternsActivity.ARG_ADD_PATTERN, scanned); + args.putString(TemplatesActivity.ARG_ADD_TEMPLATE, scanned); requireContext().startActivity(intent, args); } private void alertNoPatternMatch(String scanned) { @@ -110,13 +110,13 @@ public class NewTransactionFragment extends QRScanCapableFragment { if (Misc.emptyIsNull(text) == null) return; - LiveData> allPatterns = DB.get() - .getPatternDAO() - .getPatterns(); + LiveData> allPatterns = DB.get() + .getPatternDAO() + .getPatterns(); allPatterns.observe(getViewLifecycleOwner(), patternHeaders -> { - ArrayList matchingPatterns = new ArrayList<>(); + ArrayList matchingPatterns = new ArrayList<>(); - for (PatternHeader ph : patternHeaders) { + for (TemplateHeader ph : patternHeaders) { String patternSource = ph.getRegularExpression(); if (Misc.emptyIsNull(patternSource) == null) continue; @@ -147,8 +147,8 @@ public class NewTransactionFragment extends QRScanCapableFragment { choosePattern(matchingPatterns, text); }); } - private void choosePattern(ArrayList matchingPatterns, String matchedText) { - final String patternNameColumn = getString(R.string.pattern_name); + private void choosePattern(ArrayList matchingPatterns, String matchedText) { + final String patternNameColumn = "name"; AbstractCursor cursor = new AbstractCursor() { @Override public int getCount() { @@ -156,48 +156,58 @@ public class NewTransactionFragment extends QRScanCapableFragment { } @Override public String[] getColumnNames() { - return new String[]{patternNameColumn}; + return new String[]{"_id", patternNameColumn}; } @Override public String getString(int column) { + if (column == 0) + return String.valueOf(getPosition()); return matchingPatterns.get(getPosition()) .getName(); } @Override public short getShort(int column) { + if (column == 0) + return (short) getPosition(); return -1; } @Override public int getInt(int column) { - return -1; + return getShort(column); } @Override public long getLong(int column) { - return -1; + return getShort(column); } @Override public float getFloat(int column) { - return -1; + return getShort(column); } @Override public double getDouble(int column) { - return -1; + return getShort(column); } @Override public boolean isNull(int column) { return false; } + @Override + public int getColumnCount() { + return 2; + } }; MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(requireContext()); builder.setCancelable(true) .setTitle(R.string.choose_pattern_to_apply) - .setSingleChoiceItems(cursor, -1, patternNameColumn, - (dialog, which) -> applyPattern(matchingPatterns.get(which), matchedText)) + .setSingleChoiceItems(cursor, -1, patternNameColumn, (dialog, which) -> { + applyPattern(matchingPatterns.get(which), matchedText); + dialog.dismiss(); + }) .create() .show(); } - private void applyPattern(PatternHeader patternHeader, String text) { + private void applyPattern(TemplateHeader patternHeader, String text) { Pattern pattern = Pattern.compile(patternHeader.getRegularExpression()); Matcher m = pattern.matcher(text); @@ -252,7 +262,7 @@ public class NewTransactionFragment extends QRScanCapableFragment { .observe(getViewLifecycleOwner(), entry -> { int rowIndex = 0; final boolean accountsInInitialState = viewModel.accountsInInitialState(); - for (PatternAccount acc : entry.accounts) { + for (TemplateAccount acc : entry.accounts) { rowIndex++; String accountName = extractStringFromMatches(m, acc.getAccountNameMatchGroup(), @@ -262,6 +272,8 @@ public class NewTransactionFragment extends QRScanCapableFragment { acc.getAccountComment()); Float amount = extractFloatFromMatches(m, acc.getAmountMatchGroup(), acc.getAmount()); + if (amount != null && acc.getNegateAmount() != null && acc.getNegateAmount()) + amount = -amount; if (accountsInInitialState) { NewTransactionModel.Item item = viewModel.getItem(rowIndex);