X-Git-Url: https://git.ktnx.net/?p=mobile-ledger.git;a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fui%2Fpatterns%2FPatternDetailsAdapter.java;h=e98a28f7596393447dc479518eff01b40505c84d;hp=5b6ab814c4930bd8103dfa276ce89a86b2cd0901;hb=b0404689e0dbb2b08f02deca7ee5d14636a3baa6;hpb=c2bc2a73948d991a4c827d230ae93e239401b9b9 diff --git a/app/src/main/java/net/ktnx/mobileledger/ui/patterns/PatternDetailsAdapter.java b/app/src/main/java/net/ktnx/mobileledger/ui/patterns/PatternDetailsAdapter.java index 5b6ab814..e98a28f7 100644 --- a/app/src/main/java/net/ktnx/mobileledger/ui/patterns/PatternDetailsAdapter.java +++ b/app/src/main/java/net/ktnx/mobileledger/ui/patterns/PatternDetailsAdapter.java @@ -17,7 +17,6 @@ package net.ktnx.mobileledger.ui.patterns; -import android.annotation.SuppressLint; import android.text.Editable; import android.text.TextWatcher; import android.view.LayoutInflater; @@ -39,11 +38,13 @@ import net.ktnx.mobileledger.model.PatternDetailsItem; import net.ktnx.mobileledger.ui.PatternDetailSourceSelectorFragment; import net.ktnx.mobileledger.ui.QRScanAbleFragment; import net.ktnx.mobileledger.utils.Logger; +import net.ktnx.mobileledger.utils.Misc; + +import org.jetbrains.annotations.NotNull; import java.util.ArrayList; import java.util.List; import java.util.Locale; -import java.util.Objects; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -59,18 +60,20 @@ class PatternDetailsAdapter extends RecyclerView.Adapter= groupNumber) return m.group(groupNumber); else @@ -161,121 +167,105 @@ class PatternDetailsAdapter extends RecyclerView.Adapter selectHeaderDetailSource(v, header, HeaderDetail.DATE_YEAR)); - b.patternDetailsYearSource.setOnClickListener( - v -> selectHeaderDetailSource(v, header, HeaderDetail.DATE_YEAR)); - - if (header.hasLiteralDateMonth()) { - b.patternDetailsMonthSource.setText(R.string.pattern_details_source_literal); - b.patternDetailsDateMonth.setText(String.valueOf(header.getDateMonth())); - b.patternDetailsDateMonthLayout.setVisibility(View.VISIBLE); - } - else { - b.patternDetailsDateMonthLayout.setVisibility(View.GONE); - b.patternDetailsMonthSource.setText(String.format(Locale.US, "Group %d (%s)", - header.getDateMonthMatchGroup(), getMatchGroupText( - header.getDateMonthMatchGroup()))); - } - b.patternDetailsMonthSourceLabel.setOnClickListener( - v -> selectHeaderDetailSource(v, header, HeaderDetail.DATE_MONTH)); - b.patternDetailsMonthSource.setOnClickListener( - v -> selectHeaderDetailSource(v, header, HeaderDetail.DATE_MONTH)); - - if (header.hasLiteralDateDay()) { - b.patternDetailsDaySource.setText(R.string.pattern_details_source_literal); - b.patternDetailsDateDay.setText(String.valueOf(header.getDateDay())); - b.patternDetailsDateDayLayout.setVisibility(View.VISIBLE); - } - else { - b.patternDetailsDateDayLayout.setVisibility(View.GONE); - b.patternDetailsDaySource.setText(String.format(Locale.US, "Group %d (%s)", - header.getDateDayMatchGroup(), getMatchGroupText( - header.getDateDayMatchGroup()))); - } - b.patternDetailsDaySourceLabel.setOnClickListener( - v -> selectHeaderDetailSource(v, header, HeaderDetail.DATE_DAY)); - b.patternDetailsDaySource.setOnClickListener( - v -> selectHeaderDetailSource(v, header, HeaderDetail.DATE_DAY)); - - if (header.hasLiteralTransactionDescription()) { - b.patternTransactionDescriptionSource.setText( - R.string.pattern_details_source_literal); - b.transactionDescription.setText(header.getTransactionDescription()); - b.transactionDescriptionLayout.setVisibility(View.VISIBLE); - } - else { - b.transactionDescriptionLayout.setVisibility(View.GONE); - b.patternTransactionDescriptionSource.setText( - String.format(Locale.US, "Group %d (%s)", - header.getTransactionDescriptionMatchGroup(), getMatchGroupText( - header.getTransactionDescriptionMatchGroup()))); + Logger.debug(D_PATTERN_UI, "Binding to header " + header); - } - b.patternTransactionDescriptionSourceLabel.setOnClickListener( - v -> selectHeaderDetailSource(v, header, HeaderDetail.DESCRIPTION)); - b.patternTransactionDescriptionSource.setOnClickListener( - v -> selectHeaderDetailSource(v, header, HeaderDetail.DESCRIPTION)); - - if (header.hasLiteralTransactionComment()) { - b.patternTransactionCommentSource.setText( - R.string.pattern_details_source_literal); - b.transactionComment.setText(header.getTransactionComment()); - b.transactionCommentLayout.setVisibility(View.VISIBLE); - } - else { - b.transactionCommentLayout.setVisibility(View.GONE); - b.patternTransactionCommentSource.setText( - String.format(Locale.US, "Group %d (%s)", - header.getTransactionCommentMatchGroup(), - getMatchGroupText(header.getTransactionCommentMatchGroup()))); + b.patternName.setText(header.getName()); + b.pattern.setText(header.getPattern()); + b.testText.setText(header.getTestText()); - } - b.patternTransactionCommentSourceLabel.setOnClickListener( - v -> selectHeaderDetailSource(v, header, HeaderDetail.COMMENT)); - b.patternTransactionCommentSource.setOnClickListener( - v -> selectHeaderDetailSource(v, header, HeaderDetail.COMMENT)); - - b.patternDetailsHeadScanQrButton.setOnClickListener(this::scanTestQR); - - final Object prevTag = b.patternDetailsItemHead.getTag(); - if (!(prevTag instanceof PatternDetailsItem)) { - Logger.debug(D_PATTERN_UI, "Hooked text change listeners"); - - b.patternName.addTextChangedListener(patternNameWatcher); - b.pattern.addTextChangedListener(patternWatcher); - b.testText.addTextChangedListener(testTextWatcher); - b.transactionDescription.addTextChangedListener(transactionDescriptionWatcher); - b.transactionComment.addTextChangedListener(transactionCommentWatcher); - } + if (header.hasLiteralDateYear()) { + b.patternDetailsYearSource.setText(R.string.pattern_details_source_literal); + b.patternDetailsDateYear.setText(String.valueOf(header.getDateYear())); + b.patternDetailsDateYearLayout.setVisibility(View.VISIBLE); + } + else { + b.patternDetailsDateYearLayout.setVisibility(View.GONE); + b.patternDetailsYearSource.setText( + String.format(Locale.US, "Group %d (%s)", header.getDateYearMatchGroup(), + getMatchGroupText(header.getDateYearMatchGroup()))); + } + b.patternDetailsYearSourceLabel.setOnClickListener( + v -> selectHeaderDetailSource(v, HeaderDetail.DATE_YEAR)); + b.patternDetailsYearSource.setOnClickListener( + v -> selectHeaderDetailSource(v, HeaderDetail.DATE_YEAR)); + + if (header.hasLiteralDateMonth()) { + b.patternDetailsMonthSource.setText(R.string.pattern_details_source_literal); + b.patternDetailsDateMonth.setText(String.valueOf(header.getDateMonth())); + b.patternDetailsDateMonthLayout.setVisibility(View.VISIBLE); + } + else { + b.patternDetailsDateMonthLayout.setVisibility(View.GONE); + b.patternDetailsMonthSource.setText( + String.format(Locale.US, "Group %d (%s)", header.getDateMonthMatchGroup(), + getMatchGroupText(header.getDateMonthMatchGroup()))); + } + b.patternDetailsMonthSourceLabel.setOnClickListener( + v -> selectHeaderDetailSource(v, HeaderDetail.DATE_MONTH)); + b.patternDetailsMonthSource.setOnClickListener( + v -> selectHeaderDetailSource(v, HeaderDetail.DATE_MONTH)); + + if (header.hasLiteralDateDay()) { + b.patternDetailsDaySource.setText(R.string.pattern_details_source_literal); + b.patternDetailsDateDay.setText(String.valueOf(header.getDateDay())); + b.patternDetailsDateDayLayout.setVisibility(View.VISIBLE); + } + else { + b.patternDetailsDateDayLayout.setVisibility(View.GONE); + b.patternDetailsDaySource.setText( + String.format(Locale.US, "Group %d (%s)", header.getDateDayMatchGroup(), + getMatchGroupText(header.getDateDayMatchGroup()))); + } + b.patternDetailsDaySourceLabel.setOnClickListener( + v -> selectHeaderDetailSource(v, HeaderDetail.DATE_DAY)); + b.patternDetailsDaySource.setOnClickListener( + v -> selectHeaderDetailSource(v, HeaderDetail.DATE_DAY)); - b.patternDetailsItemHead.setTag(item); + if (header.hasLiteralTransactionDescription()) { + b.patternTransactionDescriptionSource.setText( + R.string.pattern_details_source_literal); + b.transactionDescription.setText(header.getTransactionDescription()); + b.transactionDescriptionLayout.setVisibility(View.VISIBLE); } - finally { - finishUpdate(); + else { + b.transactionDescriptionLayout.setVisibility(View.GONE); + b.patternTransactionDescriptionSource.setText( + String.format(Locale.US, "Group %d (%s)", + header.getTransactionDescriptionMatchGroup(), + getMatchGroupText(header.getTransactionDescriptionMatchGroup()))); + + } + b.patternTransactionDescriptionSourceLabel.setOnClickListener( + v -> selectHeaderDetailSource(v, HeaderDetail.DESCRIPTION)); + b.patternTransactionDescriptionSource.setOnClickListener( + v -> selectHeaderDetailSource(v, HeaderDetail.DESCRIPTION)); + + if (header.hasLiteralTransactionComment()) { + b.patternTransactionCommentSource.setText(R.string.pattern_details_source_literal); + b.transactionComment.setText(header.getTransactionComment()); + b.transactionCommentLayout.setVisibility(View.VISIBLE); + } + else { + b.transactionCommentLayout.setVisibility(View.GONE); + b.patternTransactionCommentSource.setText(String.format(Locale.US, "Group %d (%s)", + header.getTransactionCommentMatchGroup(), + getMatchGroupText(header.getTransactionCommentMatchGroup()))); + } + b.patternTransactionCommentSourceLabel.setOnClickListener( + v -> selectHeaderDetailSource(v, HeaderDetail.COMMENT)); + b.patternTransactionCommentSource.setOnClickListener( + v -> selectHeaderDetailSource(v, HeaderDetail.COMMENT)); + + b.patternDetailsHeadScanQrButton.setOnClickListener(this::scanTestQR); + } private void scanTestQR(View view) { QRScanAbleFragment.triggerQRScan(); @@ -454,10 +425,35 @@ class PatternDetailsAdapter extends RecyclerView.Adapter