X-Git-Url: https://git.ktnx.net/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fmodel%2FTemplateDetailsItem.java;h=d0a6e240f27472e3196fb524819362628103d9eb;hb=f11c8a93f92f5a372ea423cdf2d3d9629bd5f45f;hp=822f743880f52b2fcac77be209d490511d75b6e6;hpb=b953cc391328af937917ed94de6aeafb83cc715c;p=mobile-ledger.git diff --git a/app/src/main/java/net/ktnx/mobileledger/model/TemplateDetailsItem.java b/app/src/main/java/net/ktnx/mobileledger/model/TemplateDetailsItem.java index 822f7438..d0a6e240 100644 --- a/app/src/main/java/net/ktnx/mobileledger/model/TemplateDetailsItem.java +++ b/app/src/main/java/net/ktnx/mobileledger/model/TemplateDetailsItem.java @@ -37,7 +37,6 @@ import net.ktnx.mobileledger.utils.Misc; import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NotNull; -import java.util.ArrayList; import java.util.Objects; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -103,6 +102,7 @@ abstract public class TemplateDetailsItem { TemplateAccount pa = (TemplateAccount) p; AccountRow acc = createAccountRow(); acc.setId(pa.getId()); + acc.setPosition(pa.getPosition()); if (pa.getAccountNameMatchGroup() == null) acc.setAccountName(Misc.nullIsEmpty(pa.getAccountName())); @@ -226,6 +226,11 @@ abstract public class TemplateDetailsItem { result.setValue(initialValue); return result; } + public void copyFrom(@NonNull PossiblyMatchedValue origin) { + literalValue = origin.literalValue; + value = origin.value; + matchGroup = origin.matchGroup; + } public T getValue() { if (!literalValue) throw new IllegalStateException("Value is not literal"); @@ -287,9 +292,19 @@ abstract public class TemplateDetailsItem { PossiblyMatchedValue.withLiteralFloat(null); private final PossiblyMatchedValue currency = new PossiblyMatchedValue<>(); private boolean negateAmount; - private AccountRow() { + public AccountRow() { super(Type.ACCOUNT_ITEM); } + public AccountRow(AccountRow origin) { + super(Type.ACCOUNT_ITEM); + id = origin.id; + position = origin.position; + accountName.copyFrom(origin.accountName); + accountComment.copyFrom(origin.accountComment); + amount.copyFrom(origin.amount); + currency.copyFrom(origin.currency); + negateAmount = origin.negateAmount; + } public boolean isNegateAmount() { return negateAmount; } @@ -655,12 +670,11 @@ abstract public class TemplateDetailsItem { SpannableString ss = new SpannableString(testText); Matcher m = compiledPattern.matcher(testText); if (m.find()) { - ArrayList notMatched = new ArrayList<>(); if (m.start() > 0) ss.setSpan(notMatchedSpan(), 0, m.start(), Spanned.SPAN_INCLUSIVE_INCLUSIVE); if (m.end() < testText.length() - 1) - ss.setSpan(notMatchedSpan(), m.end(), testText.length() - 1, + ss.setSpan(notMatchedSpan(), m.end(), testText.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE); ss.setSpan(matchedSpan(), m.start(0), m.end(0),