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;
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.TemplateBase;
import net.ktnx.mobileledger.model.Data;
import net.ktnx.mobileledger.model.TemplateDetailsItem;
-import net.ktnx.mobileledger.ui.QRScanCapableFragment;
+import net.ktnx.mobileledger.ui.QR;
import net.ktnx.mobileledger.ui.TemplateDetailSourceSelectorFragment;
import net.ktnx.mobileledger.utils.Logger;
import net.ktnx.mobileledger.utils.Misc;
import org.jetbrains.annotations.NotNull;
import java.text.ParseException;
-import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.regex.Matcher;
itemTouchHelper = new ItemTouchHelper(new ItemTouchHelper.Callback() {
@Override
public float getMoveThreshold(@NonNull RecyclerView.ViewHolder viewHolder) {
- return 0.1f;
+ return 0.5f;
}
@Override
public boolean isLongPressDragEnabled() {
return differ.getCurrentList()
.size();
}
- public void setTemplateItems(List<TemplateBase> items) {
- ArrayList<TemplateDetailsItem> list = new ArrayList<>();
- for (TemplateBase p : items) {
- TemplateDetailsItem item = TemplateDetailsItem.fromRoomObject(p);
- list.add(item);
- }
- setItems(list);
- }
public void setItems(List<TemplateDetailsItem> 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) {
}
};
b.transactionComment.addTextChangedListener(transactionCommentWatcher);
+
+ b.templateIsFallbackSwitch.setOnCheckedChangeListener((buttonView, isChecked) -> {
+ 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);
}
@NotNull
private TemplateDetailsItem.Header getItem() {
b.templateDetailsHeadScanQrButton.setOnClickListener(this::scanTestQR);
+ b.templateIsFallbackSwitch.setChecked(header.isFallback());
+ b.templateIsFallbackText.setText(
+ header.isFallback() ? R.string.template_is_fallback_yes
+ : R.string.template_is_fallback_no);
+
checkPatternError(header);
}
finally {
}
private void scanTestQR(View view) {
- QRScanCapableFragment.triggerQRScan();
+ Context ctx = view.getContext();
+ if (ctx instanceof QR.QRScanTrigger)
+ ((QR.QRScanTrigger) ctx).triggerQRScan();
}
}
Logger.debug(D_TEMPLATE_UI,
"Storing changed account name " + s + "; accRow=" + accRow);
accRow.setAccountName(String.valueOf(s));
+
+ mModel.applyList(null);
}
};
b.templateDetailsAccountName.addTextChangedListener(accountNameWatcher);
Logger.debug(D_TEMPLATE_UI,
"Storing changed account comment " + s + "; accRow=" + accRow);
accRow.setAccountComment(String.valueOf(s));
+
+ mModel.applyList(null);
}
};
b.templateDetailsAccountComment.addTextChangedListener(accountCommentWatcher);
b.templateDetailsAccountAmount.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
-
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
-
}
@Override
public void afterTextChanged(Editable s) {
b.templateDetailsAccountAmountLayout.setError("!");
}
}
+
+ mModel.applyList(null);
}
});
b.templateDetailsAccountAmount.setOnFocusChangeListener((v, hasFocus) -> {
.getResources();
String groupNoText = resources.getString(R.string.template_item_match_group_source);
+ Logger.debug("drag", String.format(Locale.US, "Binding account id %d, pos %d at %d",
+ item.getId(), item.getPosition(), getAdapterPosition()));
TemplateDetailsItem.AccountRow accRow = item.asAccountRowItem();
b.patternAccountLabel.setText(String.format(Locale.US,
resources.getString(R.string.template_details_account_row_label),