]> git.ktnx.net Git - mobile-ledger.git/blobdiff - app/src/main/java/net/ktnx/mobileledger/ui/patterns/PatternDetailsAdapter.java
fix setting null literal value for date components
[mobile-ledger.git] / app / src / main / java / net / ktnx / mobileledger / ui / patterns / PatternDetailsAdapter.java
index 25083fac4848dfceed67139662c79a2d264b2927..4fd35a520173f9df5d5b14bca5401a240a85430d 100644 (file)
@@ -36,7 +36,7 @@ import net.ktnx.mobileledger.db.PatternBase;
 import net.ktnx.mobileledger.model.Data;
 import net.ktnx.mobileledger.model.PatternDetailsItem;
 import net.ktnx.mobileledger.ui.PatternDetailSourceSelectorFragment;
-import net.ktnx.mobileledger.ui.QRScanAbleFragment;
+import net.ktnx.mobileledger.ui.QRScanCapableFragment;
 import net.ktnx.mobileledger.utils.Logger;
 import net.ktnx.mobileledger.utils.Misc;
 
@@ -331,7 +331,9 @@ class PatternDetailsAdapter extends RecyclerView.Adapter<PatternDetailsAdapter.V
 
             if (header.hasLiteralDateYear()) {
                 b.patternDetailsYearSource.setText(R.string.pattern_details_source_literal);
-                b.patternDetailsDateYear.setText(String.valueOf(header.getDateYear()));
+                final Integer dateYear = header.getDateYear();
+                b.patternDetailsDateYear.setText(
+                        (dateYear == null) ? null : String.valueOf(dateYear));
                 b.patternDetailsDateYearLayout.setVisibility(View.VISIBLE);
             }
             else {
@@ -347,7 +349,9 @@ class PatternDetailsAdapter extends RecyclerView.Adapter<PatternDetailsAdapter.V
 
             if (header.hasLiteralDateMonth()) {
                 b.patternDetailsMonthSource.setText(R.string.pattern_details_source_literal);
-                b.patternDetailsDateMonth.setText(String.valueOf(header.getDateMonth()));
+                final Integer dateMonth = header.getDateMonth();
+                b.patternDetailsDateMonth.setText(
+                        (dateMonth == null) ? null : String.valueOf(dateMonth));
                 b.patternDetailsDateMonthLayout.setVisibility(View.VISIBLE);
             }
             else {
@@ -363,7 +367,8 @@ class PatternDetailsAdapter extends RecyclerView.Adapter<PatternDetailsAdapter.V
 
             if (header.hasLiteralDateDay()) {
                 b.patternDetailsDaySource.setText(R.string.pattern_details_source_literal);
-                b.patternDetailsDateDay.setText(String.valueOf(header.getDateDay()));
+                final Integer dateDay = header.getDateDay();
+                b.patternDetailsDateDay.setText((dateDay == null) ? null : String.valueOf(dateDay));
                 b.patternDetailsDateDayLayout.setVisibility(View.VISIBLE);
             }
             else {
@@ -417,7 +422,7 @@ class PatternDetailsAdapter extends RecyclerView.Adapter<PatternDetailsAdapter.V
 
         }
         private void scanTestQR(View view) {
-            QRScanAbleFragment.triggerQRScan();
+            QRScanCapableFragment.triggerQRScan();
         }
     }
 
@@ -502,6 +507,9 @@ class PatternDetailsAdapter extends RecyclerView.Adapter<PatternDetailsAdapter.V
 
                 b.patternDetailsAccountAmount.setText(Data.formatNumber(amt));
             });
+
+            b.negateAmountSwitch.setOnCheckedChangeListener(
+                    (buttonView, isChecked) -> getItem().setNegateAmount(isChecked));
         }
         @Override
         void bind(PatternDetailsItem item) {
@@ -539,12 +547,15 @@ class PatternDetailsAdapter extends RecyclerView.Adapter<PatternDetailsAdapter.V
                 Float amt = accRow.getAmount();
                 b.patternDetailsAccountAmount.setText((amt == null) ? null : String.format(
                         Data.locale.getValue(), "%,4.2f", (accRow.getAmount())));
+                b.negateAmountSwitch.setVisibility(View.GONE);
             }
             else {
                 b.patternDetailsAccountAmountSource.setText(
                         String.format(Locale.US, "Group %d (%s)", accRow.getAmountMatchGroup(),
                                 getMatchGroupText(accRow.getAmountMatchGroup())));
                 b.patternDetailsAccountAmountLayout.setVisibility(View.GONE);
+                b.negateAmountSwitch.setVisibility(View.VISIBLE);
+                b.negateAmountSwitch.setChecked(accRow.isNegateAmount());
             }
 
             b.patternAccountNameSourceLabel.setOnClickListener(