X-Git-Url: https://git.ktnx.net/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fui%2Ftemplates%2FTemplateDetailsAdapter.java;h=ccf1b813fed8b58cd2fcf7f5fb2f56b1348de043;hb=fa6ed80a6ea4cfb968a60e45423980c2ab513531;hp=8b897b211ef13f5ac46a6740e02a42ee9fc3d11d;hpb=563e64989b80fb5081e8c487e20554b87cb481a8;p=mobile-ledger.git diff --git a/app/src/main/java/net/ktnx/mobileledger/ui/templates/TemplateDetailsAdapter.java b/app/src/main/java/net/ktnx/mobileledger/ui/templates/TemplateDetailsAdapter.java index 8b897b21..ccf1b813 100644 --- a/app/src/main/java/net/ktnx/mobileledger/ui/templates/TemplateDetailsAdapter.java +++ b/app/src/main/java/net/ktnx/mobileledger/ui/templates/TemplateDetailsAdapter.java @@ -18,6 +18,7 @@ package net.ktnx.mobileledger.ui.templates; import android.annotation.SuppressLint; +import android.content.Context; import android.content.res.Resources; import android.text.Editable; import android.text.TextWatcher; @@ -29,18 +30,23 @@ import android.widget.TextView; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; +import androidx.lifecycle.LifecycleOwner; import androidx.recyclerview.widget.AsyncListDiffer; import androidx.recyclerview.widget.DiffUtil; import androidx.recyclerview.widget.ItemTouchHelper; import androidx.recyclerview.widget.RecyclerView; +import net.ktnx.mobileledger.BuildConfig; import net.ktnx.mobileledger.R; import net.ktnx.mobileledger.databinding.TemplateDetailsAccountBinding; import net.ktnx.mobileledger.databinding.TemplateDetailsHeaderBinding; import net.ktnx.mobileledger.db.AccountAutocompleteAdapter; +import net.ktnx.mobileledger.db.DB; import net.ktnx.mobileledger.model.Data; import net.ktnx.mobileledger.model.TemplateDetailsItem; -import net.ktnx.mobileledger.ui.QRScanCapableFragment; +import net.ktnx.mobileledger.ui.CurrencySelectorFragment; +import net.ktnx.mobileledger.ui.HelpDialog; +import net.ktnx.mobileledger.ui.QR; import net.ktnx.mobileledger.ui.TemplateDetailSourceSelectorFragment; import net.ktnx.mobileledger.utils.Logger; import net.ktnx.mobileledger.utils.Misc; @@ -98,7 +104,7 @@ class TemplateDetailsAdapter extends RecyclerView.Adapter 0) flags |= makeFlag(ItemTouchHelper.ACTION_STATE_DRAG, ItemTouchHelper.UP | ItemTouchHelper.DOWN) | @@ -162,8 +168,8 @@ class TemplateDetailsAdapter extends RecyclerView.Adapter items) { + if (BuildConfig.DEBUG) { + Logger.debug("tmpl", "Got new list"); + for (int i = 1; i < items.size(); i++) { + final TemplateDetailsItem item = items.get(i); + Logger.debug("tmpl", + String.format(Locale.US, " %d: id %d, pos %d", i, item.getId(), + item.getPosition())); + } + } differ.submitList(items); } public String getMatchGroupText(int groupNumber) { @@ -265,7 +280,7 @@ class TemplateDetailsAdapter extends RecyclerView.Adapter { + if (updatePropagationDisabled) + return; + + getItem().setFallback(isChecked); + b.templateIsFallbackText.setText(isChecked ? R.string.template_is_fallback_yes + : R.string.template_is_fallback_no); + }); + final View.OnClickListener fallbackLabelClickListener = + (view) -> b.templateIsFallbackSwitch.toggle(); + b.templateIsFallbackLabel.setOnClickListener(fallbackLabelClickListener); + b.templateIsFallbackText.setOnClickListener(fallbackLabelClickListener); + b.templateParamsHelpButton.setOnClickListener(v -> HelpDialog.show(b.getRoot() + .getContext(), + R.string.template_details_template_params_label, R.array.template_params_help)); } @NotNull private TemplateDetailsItem.Header getItem() { - int pos = getAdapterPosition(); + int pos = getBindingAdapterPosition(); return differ.getCurrentList() .get(pos) .asHeaderItem(); @@ -448,7 +479,7 @@ class TemplateDetailsAdapter extends RecyclerView.Adapter selectHeaderDetailSource(v, HeaderDetail.DATE_YEAR)); - b.templateDetailsYearSource.setOnClickListener( + b.yearSource.setOnClickListener( v -> selectHeaderDetailSource(v, HeaderDetail.DATE_YEAR)); if (header.hasLiteralDateMonth()) { - b.templateDetailsMonthSource.setText(R.string.template_details_source_literal); + b.monthSource.setText(R.string.template_details_source_literal); final Integer dateMonth = header.getDateMonth(); b.templateDetailsDateMonth.setText( (dateMonth == null) ? null : String.valueOf(dateMonth)); - b.templateDetailsDateMonthLayout.setVisibility(View.VISIBLE); + b.monthLayout.setVisibility(View.VISIBLE); } else { - b.templateDetailsDateMonthLayout.setVisibility(View.GONE); - b.templateDetailsMonthSource.setText( + b.monthLayout.setVisibility(View.GONE); + b.monthSource.setText( String.format(Locale.US, groupNoText, header.getDateMonthMatchGroup(), getMatchGroupText(header.getDateMonthMatchGroup()))); } - b.templateDetailsMonthSourceLabel.setOnClickListener( + b.monthSourceLabel.setOnClickListener( v -> selectHeaderDetailSource(v, HeaderDetail.DATE_MONTH)); - b.templateDetailsMonthSource.setOnClickListener( + b.monthSource.setOnClickListener( v -> selectHeaderDetailSource(v, HeaderDetail.DATE_MONTH)); if (header.hasLiteralDateDay()) { - b.templateDetailsDaySource.setText(R.string.template_details_source_literal); + b.daySource.setText(R.string.template_details_source_literal); final Integer dateDay = header.getDateDay(); b.templateDetailsDateDay.setText( (dateDay == null) ? null : String.valueOf(dateDay)); - b.templateDetailsDateDayLayout.setVisibility(View.VISIBLE); + b.dayLayout.setVisibility(View.VISIBLE); } else { - b.templateDetailsDateDayLayout.setVisibility(View.GONE); - b.templateDetailsDaySource.setText( + b.dayLayout.setVisibility(View.GONE); + b.daySource.setText( String.format(Locale.US, groupNoText, header.getDateDayMatchGroup(), getMatchGroupText(header.getDateDayMatchGroup()))); } - b.templateDetailsDaySourceLabel.setOnClickListener( + b.daySourceLabel.setOnClickListener( v -> selectHeaderDetailSource(v, HeaderDetail.DATE_DAY)); - b.templateDetailsDaySource.setOnClickListener( + b.daySource.setOnClickListener( v -> selectHeaderDetailSource(v, HeaderDetail.DATE_DAY)); if (header.hasLiteralTransactionDescription()) { @@ -561,6 +592,11 @@ class TemplateDetailsAdapter extends RecyclerView.Adapter { @@ -721,6 +763,8 @@ class TemplateDetailsAdapter extends RecyclerView.Adapter selectAccountRowDetailSource(v, AccDetail.ACCOUNT)); b.templateDetailsAccountNameSource.setOnClickListener( @@ -789,6 +850,32 @@ class TemplateDetailsAdapter extends RecyclerView.Adapter selectAccountRowDetailSource(v, AccDetail.AMOUNT)); b.templateDetailsAccountAmountSource.setOnClickListener( v -> selectAccountRowDetailSource(v, AccDetail.AMOUNT)); + b.templateDetailsAccountCurrencySource.setOnClickListener( + v -> selectAccountRowDetailSource(v, AccDetail.CURRENCY)); + b.templateAccountCurrencySourceLabel.setOnClickListener( + v -> selectAccountRowDetailSource(v, AccDetail.CURRENCY)); + if (accRow.hasLiteralCurrency()) + b.templateDetailsAccountCurrency.setOnClickListener(v -> { + CurrencySelectorFragment cpf = CurrencySelectorFragment.newInstance( + CurrencySelectorFragment.DEFAULT_COLUMN_COUNT, false); + cpf.setOnCurrencySelectedListener(text -> { + if (text == null) { + b.templateDetailsAccountCurrency.setText(R.string.btn_no_currency); + accRow.setCurrency(null); + } + else { + b.templateDetailsAccountCurrency.setText(text); + DB.get() + .getCurrencyDAO() + .getByName(text) + .observe((LifecycleOwner) b.getRoot() + .getContext(), accRow::setCurrency); + } + }); + cpf.show( + ((TemplatesActivity) b.templateDetailsAccountCurrency.getContext()).getSupportFragmentManager(), + "currency-selector"); + }); } finally { enableUpdatePropagation(); @@ -796,7 +883,7 @@ class TemplateDetailsAdapter extends RecyclerView.Adapter