X-Git-Url: https://git.ktnx.net/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fui%2Factivity%2FNewTransactionItemHolder.java;h=f8d6002be3635d4fef7ca6b0acfdb0736886a496;hb=cc3ab6c9be7d434108521409121a11bdf5670ce2;hp=c274c455cef6845d5af8601f1c776ea92064d24c;hpb=c27aa72c2c641bcd568692b4a20b125605cfb3b5;p=mobile-ledger.git diff --git a/app/src/main/java/net/ktnx/mobileledger/ui/activity/NewTransactionItemHolder.java b/app/src/main/java/net/ktnx/mobileledger/ui/activity/NewTransactionItemHolder.java index c274c455..f8d6002b 100644 --- a/app/src/main/java/net/ktnx/mobileledger/ui/activity/NewTransactionItemHolder.java +++ b/app/src/main/java/net/ktnx/mobileledger/ui/activity/NewTransactionItemHolder.java @@ -1,5 +1,5 @@ /* - * Copyright © 2020 Damyan Ivanov. + * Copyright © 2021 Damyan Ivanov. * This file is part of MoLe. * MoLe is free software: you can distribute it and/or modify it * under the term of the GNU General Public License as published by @@ -20,6 +20,7 @@ package net.ktnx.mobileledger.ui.activity; import android.annotation.SuppressLint; import android.graphics.Typeface; import android.text.Editable; +import android.text.TextUtils; import android.text.TextWatcher; import android.view.Gravity; import android.view.View; @@ -65,36 +66,36 @@ class NewTransactionItemHolder extends RecyclerView.ViewHolder private final TextView tvCurrency; private final Observer showCommentsObserver; private final TextView tvTransactionComment; + private final TextView tvDate; + private final AutoCompleteTextView tvDescription; + private final TextView tvDummy; + private final AutoCompleteTextView tvAccount; + private final TextView tvComment; + private final EditText tvAmount; + private final ViewGroup lHead; + private final ViewGroup lAccount; + private final FrameLayout lPadding; + private final MobileLedgerProfile mProfile; + private final Observer dateObserver; + private final Observer descriptionObserver; + private final Observer transactionCommentObserver; + private final Observer hintObserver; + private final Observer focusedAccountObserver; + private final Observer accountCountObserver; + private final Observer editableObserver; + private final Observer currencyPositionObserver; + private final Observer currencyGapObserver; + private final Observer localeObserver; + private final Observer currencyObserver; + private final Observer showCurrencyObserver; + private final Observer commentObserver; + private final Observer amountValidityObserver; + private final View tvCurrencyButton; private String decimalSeparator; private NewTransactionModel.Item item; - private TextView tvDate; - private AutoCompleteTextView tvDescription; - private TextView tvDummy; - private AutoCompleteTextView tvAccount; - private TextView tvComment; - private EditText tvAmount; - private ViewGroup lHead; - private ViewGroup lAccount; - private FrameLayout lPadding; - private MobileLedgerProfile mProfile; private Date date; - private Observer dateObserver; - private Observer descriptionObserver; - private Observer transactionCommentObserver; - private Observer hintObserver; - private Observer focusedAccountObserver; - private Observer accountCountObserver; - private Observer editableObserver; - private Observer currencyPositionObserver; - private Observer currencyGapObserver; - private Observer localeObserver; - private Observer currencyObserver; - private Observer showCurrencyObserver; - private Observer commentObserver; - private Observer amountValidityObserver; private boolean inUpdate = false; private boolean syncingData = false; - private View commentButton; //TODO multiple amounts with different currencies per posting NewTransactionItemHolder(@NonNull View itemView, NewTransactionItemsAdapter adapter) { super(itemView); @@ -103,9 +104,9 @@ class NewTransactionItemHolder extends RecyclerView.ViewHolder tvComment = lAccount.findViewById(R.id.comment); tvTransactionComment = itemView.findViewById(R.id.transaction_comment); new TextViewClearHelper().attachToTextView((EditText) tvComment); - commentButton = lAccount.findViewById(R.id.comment_button); tvAmount = itemView.findViewById(R.id.account_row_acc_amounts); tvCurrency = itemView.findViewById(R.id.currency); + tvCurrencyButton = lAccount.findViewById(R.id.currencyButton); tvDate = itemView.findViewById(R.id.new_transaction_date); tvDescription = itemView.findViewById(R.id.new_transaction_description); tvDummy = itemView.findViewById(R.id.dummy_text); @@ -121,10 +122,11 @@ class NewTransactionItemHolder extends RecyclerView.ViewHolder tvDate.setOnClickListener(v -> pickTransactionDate()); - commentButton.setOnClickListener(v -> { - tvComment.setVisibility(View.VISIBLE); - tvComment.requestFocus(); - }); + lAccount.findViewById(R.id.comment_button) + .setOnClickListener(v -> { + tvComment.setVisibility(View.VISIBLE); + tvComment.requestFocus(); + }); transactionCommentLayout.findViewById(R.id.comment_button) .setOnClickListener(v -> { @@ -142,22 +144,20 @@ class NewTransactionItemHolder extends RecyclerView.ViewHolder try { final int pos = getAdapterPosition(); adapter.updateFocusedItem(pos); - switch (id) { - case R.id.account_row_acc_name: - adapter.noteFocusIsOnAccount(pos); - break; - case R.id.account_row_acc_amounts: - adapter.noteFocusIsOnAmount(pos); - break; - case R.id.comment: - adapter.noteFocusIsOnComment(pos); - break; - case R.id.transaction_comment: - adapter.noteFocusIsOnTransactionComment(pos); - break; - case R.id.new_transaction_description: - adapter.noteFocusIsOnDescription(pos); - break; + if (id == R.id.account_row_acc_name) { + adapter.noteFocusIsOnAccount(pos); + } + else if (id == R.id.account_row_acc_amounts) { + adapter.noteFocusIsOnAmount(pos); + } + else if (id == R.id.comment) { + adapter.noteFocusIsOnComment(pos); + } + else if (id == R.id.transaction_comment) { + adapter.noteFocusIsOnTransactionComment(pos); + } + else if (id == R.id.new_transaction_description) { + adapter.noteFocusIsOnDescription(pos); } } finally { @@ -237,7 +237,7 @@ class NewTransactionItemHolder extends RecyclerView.ViewHolder tvComment.addTextChangedListener(tw); tvAmount.addTextChangedListener(amountWatcher); - tvCurrency.setOnClickListener(v -> { + tvCurrencyButton.setOnClickListener(v -> { CurrencySelectorFragment cpf = new CurrencySelectorFragment(); cpf.showPositionAndPadding(); cpf.setOnCurrencySelectedListener(c -> item.setCurrency(c)); @@ -271,9 +271,9 @@ class NewTransactionItemHolder extends RecyclerView.ViewHolder final View focusedView = tvTransactionComment.findFocus(); tvTransactionComment.setTypeface(null, (focusedView == tvTransactionComment) ? Typeface.NORMAL : Typeface.ITALIC); - tvTransactionComment.setVisibility(((focusedView != tvTransactionComment) && - Misc.isEmptyOrNull(transactionComment)) - ? View.INVISIBLE : View.VISIBLE); + tvTransactionComment.setVisibility( + ((focusedView != tvTransactionComment) && TextUtils.isEmpty(transactionComment)) + ? View.INVISIBLE : View.VISIBLE); }; hintObserver = hint -> { @@ -309,7 +309,7 @@ class NewTransactionItemHolder extends RecyclerView.ViewHolder break; case Description: boolean focused = tvDescription.requestFocus(); - tvDescription.dismissDropDown(); +// tvDescription.dismissDropDown(); if (focused) Misc.showSoftKeyboard( (NewTransactionActivity) tvDescription.getContext()); @@ -378,9 +378,14 @@ class NewTransactionItemHolder extends RecyclerView.ViewHolder showCurrencyObserver = showCurrency -> { if (showCurrency) { tvCurrency.setVisibility(View.VISIBLE); + tvCurrencyButton.setVisibility(View.VISIBLE); + String defaultCommodity = mProfile.getDefaultCommodity(); + item.setCurrency( + (defaultCommodity == null) ? null : Currency.loadByName(defaultCommodity)); } else { tvCurrency.setVisibility(View.GONE); + tvCurrencyButton.setVisibility(View.GONE); item.setCurrency(null); } }; @@ -390,8 +395,8 @@ class NewTransactionItemHolder extends RecyclerView.ViewHolder tvComment.setTypeface(null, (focusedView == tvComment) ? Typeface.NORMAL : Typeface.ITALIC); tvComment.setVisibility( - ((focusedView != tvComment) && Misc.isEmptyOrNull(comment)) ? View.INVISIBLE - : View.VISIBLE); + ((focusedView != tvComment) && TextUtils.isEmpty(comment)) ? View.INVISIBLE + : View.VISIBLE); }; showCommentsObserver = show -> { @@ -445,7 +450,7 @@ class NewTransactionItemHolder extends RecyclerView.ViewHolder textColor = (alpha << 24) | (0x00ffffff & textColor); textView.setTypeface(null, Typeface.ITALIC); textView.setHint(""); - if (Misc.isEmptyOrNull(textView.getText())) { + if (TextUtils.isEmpty(textView.getText())) { textView.setVisibility(View.INVISIBLE); } } @@ -684,7 +689,7 @@ class NewTransactionItemHolder extends RecyclerView.ViewHolder final NewTransactionActivity activity = (NewTransactionActivity) tvDescription.getContext(); - if (!item.isOfType(ItemType.bottomFiller)) { + if (!item.isBottomFiller()) { item.observeEditableFlag(activity, editableObserver); item.getModel() .observeFocusedItem(activity, focusedAccountObserver);