diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/_main/entry_point/EntryPointFragment.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/_main/entry_point/EntryPointFragment.kt index 5e16fc992f..a348ed58f3 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/_main/entry_point/EntryPointFragment.kt +++ b/tangem-demo/src/main/java/com/tangem/tangemtest/_main/entry_point/EntryPointFragment.kt @@ -12,10 +12,12 @@ import androidx.navigation.fragment.findNavController import androidx.recyclerview.widget.DividerItemDecoration import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView +import androidx.transition.AutoTransition +import androidx.transition.TransitionManager import com.tangem.tangemtest.R import com.tangem.tangemtest._main.MainViewModel -import com.tangem.tangemtest.commons.ActionType -import com.tangem.tangemtest.commons.NavigateOptions +import com.tangem.tangemtest.card_use_cases.resources.ActionType +import com.tangem.tangemtest.card_use_cases.resources.MainResourceHolder import com.tangem.tangemtest.commons.getDefaultNavigationOptions import kotlinx.android.synthetic.main.fg_entry_point.* @@ -36,10 +38,6 @@ class EntryPointFragment : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) initRecyclerView() - - mainActivityVM.ldDescriptionSwitch.observe(viewLifecycleOwner, Observer { - // do some thing - }) } private fun initRecyclerView() { @@ -47,7 +45,15 @@ class EntryPointFragment : Fragment() { rvActions = rv_actions rvActions.layoutManager = layoutManager rvActions.addItemDecoration(DividerItemDecoration(activity, layoutManager.orientation)) - rvActions.adapter = RvActionsAdapter { type, position, data -> navigate(data.destinationId) } + + val vhDataWrapper = VhExDataWrapper(MainResourceHolder, false) + + rvActions.adapter = RvActionsAdapter(vhDataWrapper) { type, position, data -> navigate(data) } + mainActivityVM.ldDescriptionSwitch.observe(viewLifecycleOwner, Observer { + vhDataWrapper.descriptionIsVisible = it + TransitionManager.beginDelayedTransition(rvActions as ViewGroup, AutoTransition()) + rvActions.adapter?.notifyDataSetChanged() + }) } override fun onResume() { @@ -62,20 +68,20 @@ class EntryPointFragment : Fragment() { navController.navigate(destinationId, null, getDefaultNavigationOptions()) } - private fun getNavigateOptions(): MutableList { + private fun getNavigateOptions(): MutableList { return mutableListOf( - NavigateOptions(ActionType.Scan, R.id.action_nav_entry_point_to_nav_scan), - NavigateOptions(ActionType.Sign, R.id.action_nav_entry_point_to_nav_sign), - NavigateOptions(ActionType.Personalize, R.id.action_nav_entry_point_to_nav_personalize), - NavigateOptions(ActionType.Depersonalize, R.id.action_nav_entry_point_to_nav_depersonalize), - NavigateOptions(ActionType.CreateWallet, R.id.action_nav_entry_point_to_nav_wallet_create), - NavigateOptions(ActionType.PurgeWallet, R.id.action_nav_entry_point_to_nav_wallet_purge), - NavigateOptions(ActionType.ReadIssuerData, R.id.action_nav_entry_point_to_nav_issuer_read_data), - NavigateOptions(ActionType.WriteIssuerData, R.id.action_nav_entry_point_to_nav_issuer_write_data), - NavigateOptions(ActionType.ReadIssuerExData, R.id.action_nav_entry_point_to_nav_issuer_read_ex_data), - NavigateOptions(ActionType.WriteIssuerExData, R.id.action_nav_entry_point_to_nav_issuer_write_ex_data), - NavigateOptions(ActionType.ReadUserData, R.id.action_nav_entry_point_to_nav_user_read_data), - NavigateOptions(ActionType.WriteUserData, R.id.action_nav_entry_point_to_nav_user_write_data) + ActionType.Scan, + ActionType.Sign, + ActionType.Personalize, + ActionType.Depersonalize +// ActionType.CreateWallet, +// ActionType.PurgeWallet, +// ActionType.ReadIssuerData, +// ActionType.WriteIssuerData, +// ActionType.ReadIssuerExData, +// ActionType.WriteIssuerExData, +// ActionType.ReadUserData, +// ActionType.WriteUserData ) } } \ No newline at end of file diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/_main/entry_point/rv.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/_main/entry_point/rv.kt index 2d679953a9..5ae9c4c33c 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/_main/entry_point/rv.kt +++ b/tangem-demo/src/main/java/com/tangem/tangemtest/_main/entry_point/rv.kt @@ -1,30 +1,69 @@ package com.tangem.tangemtest._main.entry_point import android.view.View +import android.view.ViewGroup import android.widget.TextView +import androidx.annotation.StringRes +import androidx.recyclerview.widget.RecyclerView import com.tangem.tangemtest.R -import com.tangem.tangemtest.commons.NavigateOptions -import ru.dev.gbixahue.eu4d.lib.android._android.views.recycler_view.RvAdapter +import com.tangem.tangemtest.card_use_cases.resources.ActionRes +import com.tangem.tangemtest.card_use_cases.resources.ActionType +import com.tangem.tangemtest.card_use_cases.resources.MainResourceHolder +import ru.dev.gbixahue.eu4d.lib.android._android.views.inflate +import ru.dev.gbixahue.eu4d.lib.android._android.views.recycler_view.RvBaseAdapter +import ru.dev.gbixahue.eu4d.lib.android._android.views.recycler_view.RvBaseVH import ru.dev.gbixahue.eu4d.lib.android._android.views.recycler_view.RvCallback -import ru.dev.gbixahue.eu4d.lib.android._android.views.recycler_view.RvVH /** [REDACTED_AUTHOR] */ -class RvActionsAdapter(callback: RvCallback) : RvAdapter(callback) { +class RvActionsAdapter( + private val wrapper: VhExDataWrapper, + private val callback: RvCallback +) : RvBaseAdapter() { - override fun createViewHolder(view: View, listener: RvCallback?): RvActionsVH { - return RvActionsVH(view, listener) + override fun onBindViewHolder(holder: RvActionsVH, position: Int) { + holder.bindData(itemList[position]) + } + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RvActionsVH { + val view = parent.inflate(R.layout.vh_actions, false) + return RvActionsVH(view, wrapper, callback) } - override fun getLayoutId(): Int = R.layout.vh_actions } -class RvActionsVH(itemView: View, callback: RvCallback?) : RvVH(itemView, callback) { - private val tvAction = itemView.findViewById(R.id.tv_title) +class VhExDataWrapper( + val resHolder: MainResourceHolder, + var descriptionIsVisible: Boolean +) - override fun onDataBound(data: NavigateOptions) { - tvAction.text = tvAction.context.getString(data.name.resName) - itemView.setOnClickListener { invokeCallback() } +class RvActionsVH( + itemView: View, + private val wrapper: VhExDataWrapper, + private val callback: RvCallback? +) : RvBaseVH(itemView) { + + private val tvAction = itemView.findViewById(R.id.tv_title) + private val containerDescription = itemView.findViewById(R.id.container_description) + private val tvDescription = itemView.findViewById(R.id.tv_description) + + override fun bindData(data: ActionType) { + val res: ActionRes = wrapper.resHolder.safeGet(data) + tvAction.text = getString(res.resName) + tvDescription.text = getString(res.resDescription) + + itemView.setOnClickListener { + res.resNavigation?.let { callback?.invoke(itemViewType, adapterPosition, it) } + } + + containerDescription.visibility = if (wrapper.descriptionIsVisible) View.VISIBLE else View.GONE } + + override fun onDataBound(data: ActionType) {} +} + +fun RecyclerView.ViewHolder.getString(@StringRes id: Int?, ifNull: String = ""): String { + val reqId = id ?: return ifNull + return itemView.context.getString(reqId) } \ No newline at end of file diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/card_use_cases/domain/params_manager/factory.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/card_use_cases/domain/params_manager/factory.kt index 8977c9e10b..a95a25eb81 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/card_use_cases/domain/params_manager/factory.kt +++ b/tangem-demo/src/main/java/com/tangem/tangemtest/card_use_cases/domain/params_manager/factory.kt @@ -1,6 +1,6 @@ package com.tangem.tangemtest.card_use_cases.domain.params_manager -import com.tangem.tangemtest.commons.ActionType +import com.tangem.tangemtest.card_use_cases.resources.ActionType import ru.dev.gbixahue.eu4d.lib.kotlin.common.BaseTypedHolder /** diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/card_use_cases/resources/Ids.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/card_use_cases/resources/Ids.kt new file mode 100644 index 0000000000..4492f6c397 --- /dev/null +++ b/tangem-demo/src/main/java/com/tangem/tangemtest/card_use_cases/resources/Ids.kt @@ -0,0 +1,22 @@ +package com.tangem.tangemtest.card_use_cases.resources + +import com.tangem.tangemtest._arch.structure.base.Id + +/** +[REDACTED_AUTHOR] + */ +enum class ActionType: Id { + Scan, + Sign, + CreateWallet, + PurgeWallet, + ReadIssuerData, + WriteIssuerData, + ReadIssuerExData, + WriteIssuerExData, + ReadUserData, + WriteUserData, + Personalize, + Depersonalize, + Unknown, +} \ No newline at end of file diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/card_use_cases/resources/MainResourceHolder.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/card_use_cases/resources/MainResourceHolder.kt new file mode 100644 index 0000000000..511c5e98d4 --- /dev/null +++ b/tangem-demo/src/main/java/com/tangem/tangemtest/card_use_cases/resources/MainResourceHolder.kt @@ -0,0 +1,24 @@ +package com.tangem.tangemtest.card_use_cases.resources + +import com.tangem.tangemtest.R +import com.tangem.tangemtest._arch.structure.base.Id +import com.tangem.tangemtest.card_use_cases.resources.initializers.ActionResources +import com.tangem.tangemtest.card_use_cases.resources.initializers.PersonalizeResources +import ru.dev.gbixahue.eu4d.lib.kotlin.common.BaseTypedHolder + +/** +[REDACTED_AUTHOR] + */ +open class ResourceHolder : BaseTypedHolder() + +object MainResourceHolder : ResourceHolder() { + init { + PersonalizeResources().init(this) + ActionResources().init(this) + } + + inline fun safeGet(id: Id): Res { + val result = super.get(id) ?: Resources(R.string.unknown, R.string.unknown) + return result as Res + } +} diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/card_use_cases/resources/ResourseTypes.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/card_use_cases/resources/ResourseTypes.kt new file mode 100644 index 0000000000..6851aa31e0 --- /dev/null +++ b/tangem-demo/src/main/java/com/tangem/tangemtest/card_use_cases/resources/ResourseTypes.kt @@ -0,0 +1,15 @@ +package com.tangem.tangemtest.card_use_cases.resources + +/** +[REDACTED_AUTHOR] + */ +open class Resources( + val resName: Int, + val resDescription: Int? = null +) + +class ActionRes( + resName: Int, + resDescription: Int? = null, + val resNavigation: Int? = null +) : Resources(resName, resDescription) \ No newline at end of file diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/card_use_cases/resources/initializers/ActionResources.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/card_use_cases/resources/initializers/ActionResources.kt new file mode 100644 index 0000000000..7efc3b1a14 --- /dev/null +++ b/tangem-demo/src/main/java/com/tangem/tangemtest/card_use_cases/resources/initializers/ActionResources.kt @@ -0,0 +1,29 @@ +package com.tangem.tangemtest.card_use_cases.resources.initializers + +import com.tangem.tangemtest.R +import com.tangem.tangemtest._arch.structure.base.Id +import com.tangem.tangemtest.card_use_cases.resources.ActionRes +import com.tangem.tangemtest.card_use_cases.resources.ActionType +import com.tangem.tangemtest.card_use_cases.resources.ResourceHolder + +/** +[REDACTED_AUTHOR] + */ +class ActionResources { + + fun init(holder: ResourceHolder) { + holder.register(ActionType.Scan, ActionRes(R.string.action_card_scan, R.string.info_action_card_scan, R.id.action_nav_entry_point_to_nav_scan)) + holder.register(ActionType.Sign, ActionRes(R.string.action_card_sign, R.string.info_action_card_sign, R.id.action_nav_entry_point_to_nav_sign)) + holder.register(ActionType.Personalize, ActionRes(R.string.action_personalize, R.string.info_action_personalize, R.id.action_nav_entry_point_to_nav_personalize)) + holder.register(ActionType.Depersonalize, ActionRes(R.string.action_depersonalize, R.string.info_action_depersonalize, R.id.action_nav_entry_point_to_nav_depersonalize)) + holder.register(ActionType.CreateWallet, ActionRes(R.string.action_wallet_create, R.string.info_action_wallet_create, R.id.action_nav_entry_point_to_nav_wallet_create)) + holder.register(ActionType.PurgeWallet, ActionRes(R.string.action_wallet_purge, R.string.info_action_wallet_purge, R.id.action_nav_entry_point_to_nav_wallet_purge)) + holder.register(ActionType.ReadIssuerData, ActionRes(R.string.action_issuer_read_data, R.string.info_action_issuer_read_data, R.id.action_nav_entry_point_to_nav_issuer_read_data)) + holder.register(ActionType.WriteIssuerData, ActionRes(R.string.action_issuer_write_data, R.string.info_action_issuer_write_data, R.id.action_nav_entry_point_to_nav_issuer_write_data)) + holder.register(ActionType.ReadIssuerExData, ActionRes(R.string.action_issuer_read_ex_data, R.string.info_action_issuer_read_ex_data, R.id.action_nav_entry_point_to_nav_issuer_read_ex_data)) + holder.register(ActionType.WriteIssuerExData, ActionRes(R.string.action_issuer_write_ex_data, R.string.info_action_issuer_write_ex_data, R.id.action_nav_entry_point_to_nav_issuer_write_ex_data)) + holder.register(ActionType.ReadUserData, ActionRes(R.string.action_user_read_data, R.string.info_action_user_read_data, R.id.action_nav_entry_point_to_nav_user_read_data)) + holder.register(ActionType.WriteUserData, ActionRes(R.string.action_user_write_data, R.string.info_action_user_write_data, R.id.action_nav_entry_point_to_nav_user_write_data)) +// holder.register(ActionType.Unknown, getIfNotContains()) + } +} \ No newline at end of file diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/card_use_cases/resources/initializers/PersonalizeResources.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/card_use_cases/resources/initializers/PersonalizeResources.kt new file mode 100644 index 0000000000..9f9a10fab0 --- /dev/null +++ b/tangem-demo/src/main/java/com/tangem/tangemtest/card_use_cases/resources/initializers/PersonalizeResources.kt @@ -0,0 +1,126 @@ +package com.tangem.tangemtest.card_use_cases.resources.initializers + +import com.tangem.tangemtest.R +import com.tangem.tangemtest._arch.structure.base.* +import com.tangem.tangemtest.card_use_cases.resources.ResourceHolder +import com.tangem.tangemtest.card_use_cases.resources.Resources +import ru.dev.gbixahue.eu4d.lib.kotlin.common.TypedHolder + +class PersonalizeResources() { + fun init(holder: ResourceHolder) { + initBlock(holder) + initCardNumber(holder) + initCommon(holder) + initSigningMethod(holder) + initSignHashExProp(holder) + initDenomination(holder) + initToken(holder) + initProductMask(holder) + initSettingsMask(holder) + initSettingsMaskProtocolEnc(holder) + initSettingsMaskNde(holder) + initPins(holder) + } + + private fun initBlock(holder: TypedHolder) { + holder.register(BlockId.CARD_NUMBER, Resources(R.string.pers_block_card_number, R.string.info_pers_block_card_number)) + holder.register(BlockId.COMMON, Resources(R.string.pers_block_common, R.string.info_pers_block_common)) + holder.register(BlockId.SIGNING_METHOD, Resources(R.string.pers_block_signing_method, R.string.info_pers_block_signing_method)) + holder.register(BlockId.SIGN_HASH_EX_PROP, Resources(R.string.pers_block_sign_hash_ex_prop, R.string.info_pers_block_sign_hash_ex_prop)) + holder.register(BlockId.DENOMINATION, Resources(R.string.pers_block_denomination, R.string.info_pers_block_denomination)) + holder.register(BlockId.TOKEN, Resources(R.string.pers_block_token, R.string.info_pers_block_token)) + holder.register(BlockId.PROD_MASK, Resources(R.string.pers_block_product_mask, R.string.info_pers_block_product_mask)) + holder.register(BlockId.SETTINGS_MASK, Resources(R.string.pers_block_settings_mask, R.string.info_pers_block_settings_mask)) + holder.register(BlockId.SETTINGS_MASK_PROTOCOL_ENC, Resources(R.string.pers_block_settings_mask_protocol_enc, R.string.info_pers_block_settings_mask_protocol_enc)) + holder.register(BlockId.SETTINGS_MASK_NDEF, Resources(R.string.pers_block_settings_mask_ndef, R.string.info_pers_block_settings_mask_ndef)) + holder.register(BlockId.PINS, Resources(R.string.pers_block_pins, R.string.info_pers_block_pins)) + } + + private fun initCardNumber(holder: TypedHolder) { + holder.register(CardNumber.SERIES, Resources(R.string.pers_item_series, R.string.info_pers_item_series)) + holder.register(CardNumber.NUMBER, Resources(R.string.pers_item_number, R.string.info_pers_item_number)) + } + + private fun initCommon(holder: TypedHolder) { + holder.register(Common.CURVE, Resources(R.string.pers_item_curve, R.string.info_pers_item_curve)) + holder.register(Common.BLOCKCHAIN, Resources(R.string.pers_item_blockchain, R.string.info_pers_item_blockchain)) + holder.register(Common.BLOCKCHAIN_CUSTOM, Resources(R.string.pers_item_custom_blockchain, R.string.info_pers_item_custom_blockchain)) + holder.register(Common.MAX_SIGNATURES, Resources(R.string.pers_item_max_signatures, R.string.info_pers_item_max_signatures)) + holder.register(Common.CREATE_WALLET, Resources(R.string.pers_item_create_wallet, R.string.info_pers_item_create_wallet)) + } + + private fun initSigningMethod(holder: TypedHolder) { + holder.register(SigningMethod.SIGN_TX, Resources(R.string.pers_item_sign_tx_hashes, R.string.info_pers_item_sign_tx_hashes)) + holder.register(SigningMethod.SIGN_TX_RAW, Resources(R.string.pers_item_sign_raw_tx, R.string.info_pers_item_sign_raw_tx)) + holder.register(SigningMethod.SIGN_VALIDATED_TX, Resources(R.string.pers_item_sign_validated_tx_hashes, R.string.info_pers_item_sign_validated_tx_hashes)) + holder.register(SigningMethod.SIGN_VALIDATED_TX_RAW, Resources(R.string.pers_item_sign_validated_raw_tx, R.string.info_pers_item_sign_validated_raw_tx)) + holder.register(SigningMethod.SIGN_VALIDATED_TX_ISSUER, Resources(R.string.pers_item_sign_validated_tx_hashes_with_iss_data, R.string.info_pers_item_sign_validated_tx_hashes_with_iss_data)) + holder.register(SigningMethod.SIGN_VALIDATED_TX_RAW_ISSUER, Resources(R.string.pers_item_sign_validated_raw_tx_with_iss_data, R.string.info_pers_item_sign_validated_raw_tx_with_iss_data)) + holder.register(SigningMethod.SIGN_EXTERNAL, Resources(R.string.pers_item_sign_hash_ex, R.string.info_pers_item_sign_hash_ex)) + } + + private fun initSignHashExProp(holder: TypedHolder) { + holder.register(SignHashExProp.PIN_LESS_FLOOR_LIMIT, Resources(R.string.pers_item_pin_less_floor_limit, R.string.info_pers_item_pin_less_floor_limit)) + holder.register(SignHashExProp.CRYPTO_EXTRACT_KEY, Resources(R.string.pers_item_cr_ex_key, R.string.info_pers_item_cr_ex_key)) + holder.register(SignHashExProp.REQUIRE_TERMINAL_CERT_SIG, Resources(R.string.pers_item_require_terminal_cert_sig, R.string.info_pers_item_require_terminal_cert_sig)) + holder.register(SignHashExProp.REQUIRE_TERMINAL_TX_SIG, Resources(R.string.pers_item_require_terminal_tx_sig, R.string.info_pers_item_require_terminal_tx_sig)) + holder.register(SignHashExProp.CHECK_PIN3, Resources(R.string.pers_item_pin3, R.string.info_pers_item_pin3)) + } + + private fun initDenomination(holder: TypedHolder) { + holder.register(Denomination.WRITE_ON_PERSONALIZE, Resources(R.string.pers_item_write_on_personalize, R.string.info_pers_item_write_on_personalize)) + holder.register(Denomination.DENOMINATION, Resources(R.string.pers_item_denomination, R.string.info_pers_item_denomination)) + } + + private fun initToken(holder: TypedHolder) { + holder.register(Token.ITS_TOKEN, Resources(R.string.pers_item_its_token, R.string.info_pers_item_its_token)) + holder.register(Token.SYMBOL, Resources(R.string.pers_item_symbol, R.string.info_pers_item_symbol)) + holder.register(Token.CONTRACT_ADDRESS, Resources(R.string.pers_item_contract_address, R.string.info_pers_item_contract_address)) + holder.register(Token.DECIMAL, Resources(R.string.pers_item_decimal, R.string.info_pers_item_decimal)) + } + + private fun initProductMask(holder: TypedHolder) { + holder.register(ProductMask.NOTE, Resources(R.string.pers_item_note, R.string.info_pers_item_note)) + holder.register(ProductMask.TAG, Resources(R.string.pers_item_tag, R.string.info_pers_item_tag)) + holder.register(ProductMask.ID_CARD, Resources(R.string.pers_item_id_card, R.string.info_pers_item_id_card)) + } + + private fun initSettingsMask(holder: TypedHolder) { + holder.register(SettingsMask.IS_REUSABLE, Resources(R.string.pers_item_is_reusable, R.string.info_pers_item_is_reusable)) + holder.register(SettingsMask.NEED_ACTIVATION, Resources(R.string.pers_item_need_activation, R.string.info_pers_item_need_activation)) + holder.register(SettingsMask.FORBID_PURGE, Resources(R.string.pers_item_forbid_purge, R.string.info_pers_item_forbid_purge)) + holder.register(SettingsMask.ALLOW_SELECT_BLOCKCHAIN, Resources(R.string.pers_item_allow_select_blockchain, R.string.info_pers_item_allow_select_blockchain)) + holder.register(SettingsMask.USE_BLOCK, Resources(R.string.pers_item_use_block, R.string.info_pers_item_use_block)) + holder.register(SettingsMask.ONE_APDU, Resources(R.string.pers_item_one_apdu_at_once, R.string.info_pers_item_one_apdu_at_once)) + holder.register(SettingsMask.USE_CVC, Resources(R.string.pers_item_use_cvc, R.string.info_pers_item_use_cvc)) + holder.register(SettingsMask.ALLOW_SWAP_PIN, Resources(R.string.pers_item_allow_swap_pin, R.string.info_pers_item_allow_swap_pin)) + holder.register(SettingsMask.ALLOW_SWAP_PIN2, Resources(R.string.pers_item_allow_swap_pin2, R.string.info_pers_item_allow_swap_pin2)) + holder.register(SettingsMask.FORBID_DEFAULT_PIN, Resources(R.string.pers_item_forbid_default_pin, R.string.info_pers_item_forbid_default_pin)) + holder.register(SettingsMask.SMART_SECURITY_DELAY, Resources(R.string.pers_item_smart_security_delay, R.string.info_pers_item_smart_security_delay)) + holder.register(SettingsMask.PROTECT_ISSUER_DATA_AGAINST_REPLAY, Resources(R.string.pers_item_protect_issuer_data_against_replay, R.string.info_pers_item_protect_issuer_data_against_replay)) + holder.register(SettingsMask.SKIP_SECURITY_DELAY_IF_VALIDATED, Resources(R.string.pers_item_skip_security_delay_if_validated, R.string.info_pers_item_skip_security_delay_if_validated)) + holder.register(SettingsMask.SKIP_PIN2_CVC_IF_VALIDATED, Resources(R.string.pers_item_skip_pin2_and_cvc_if_validated, R.string.info_pers_item_skip_pin2_and_cvc_if_validated)) + holder.register(SettingsMask.SKIP_SECURITY_DELAY_ON_LINKED_TERMINAL, Resources(R.string.pers_item_skip_security_delay_on_linked_terminal, R.string.info_pers_item_skip_security_delay_on_linked_terminal)) + holder.register(SettingsMask.RESTRICT_OVERWRITE_EXTRA_ISSUER_DATA, Resources(R.string.pers_item_restrict_overwrite_ex_issuer_data, R.string.info_pers_item_restrict_overwrite_ex_issuer_data)) + } + + private fun initSettingsMaskProtocolEnc(holder: TypedHolder) { + holder.register(SettingsMaskProtocolEnc.ALLOW_UNENCRYPTED, Resources(R.string.pers_item_allow_unencrypted, R.string.info_pers_item_allow_unencrypted)) + holder.register(SettingsMaskProtocolEnc.ALLOW_FAST_ENCRYPTION, Resources(R.string.pers_item_allow_fast_encryption, R.string.info_pers_item_allow_fast_encryption)) + } + + private fun initSettingsMaskNde(holder: TypedHolder) { + holder.register(SettingsMaskNdef.USE_NDEF, Resources(R.string.pers_item_use_ndef, R.string.info_pers_item_use_ndef)) + holder.register(SettingsMaskNdef.DYNAMIC_NDEF, Resources(R.string.pers_item_dynamic_ndef, R.string.info_pers_item_dynamic_ndef)) + holder.register(SettingsMaskNdef.DISABLE_PRECOMPUTED_NDEF, Resources(R.string.pers_item_disable_precomputed_ndef, R.string.info_pers_item_disable_precomputed_ndef)) + holder.register(SettingsMaskNdef.AAR, Resources(R.string.pers_item_aar, R.string.info_pers_item_aar)) + } + + private fun initPins(holder: TypedHolder) { + holder.register(Pins.PIN, Resources(R.string.pers_item_pin, R.string.info_pers_item_pin)) + holder.register(Pins.PIN2, Resources(R.string.pers_item_pin2, R.string.info_pers_item_pin2)) + holder.register(Pins.PIN3, Resources(R.string.pers_item_pin3, R.string.info_pers_item_pin3)) + holder.register(Pins.CVC, Resources(R.string.pers_item_cvc, R.string.info_pers_item_cvc)) + holder.register(Pins.PAUSE_BEFORE_PIN2, Resources(R.string.pers_item_pause_before_pin2, R.string.info_pers_item_pause_before_pin2)) + } +} \ No newline at end of file diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/card_use_cases/ui/card/BaseCardActionFragment.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/card_use_cases/ui/card/BaseCardActionFragment.kt index 082009eb10..550f645fe7 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/card_use_cases/ui/card/BaseCardActionFragment.kt +++ b/tangem-demo/src/main/java/com/tangem/tangemtest/card_use_cases/ui/card/BaseCardActionFragment.kt @@ -17,10 +17,11 @@ import com.tangem.tangem_sdk_new.extensions.init import com.tangem.tangemtest.R import com.tangem.tangemtest.card_use_cases.domain.params_manager.ParamsManager import com.tangem.tangemtest.card_use_cases.domain.params_manager.ParamsManagerFactory +import com.tangem.tangemtest.card_use_cases.resources.ActionType +import com.tangem.tangemtest.card_use_cases.resources.MainResourceHolder import com.tangem.tangemtest.card_use_cases.ui.card.actions.ActionViewModelFactory import com.tangem.tangemtest.card_use_cases.ui.card.actions.ParamsViewModel import com.tangem.tangemtest.card_use_cases.ui.card.actions.widgets.ParameterWidget -import com.tangem.tangemtest.commons.ActionType import ru.dev.gbixahue.eu4d.lib.android._android.views.find import ru.dev.gbixahue.eu4d.lib.android.global.log.Log import ru.dev.gbixahue.eu4d.lib.kotlin.common.LayoutHolder @@ -63,7 +64,7 @@ abstract class BaseCardActionFragment : Fragment(), LayoutHolder { viewModel.ldParams.observe(viewLifecycleOwner, Observer { paramsList -> val widgetList = mutableListOf() paramsList.forEach { param -> - val widget = ParameterWidget(inflateParamView(incomingParamsContainer), param) + val widget = ParameterWidget(inflateParamView(incomingParamsContainer), MainResourceHolder, param) widget.onValueChanged = { tag, value -> viewModel.userChangedParameter(tag, value) } widget.onActionBtnClickListener = viewModel.getParameterAction(param.tlvTag) widgetList.add(widget) diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/card_use_cases/ui/card/actions/DepesonalizeActionFragment.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/card_use_cases/ui/card/actions/DepesonalizeActionFragment.kt index 88a6fbe6a8..0605dc00a7 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/card_use_cases/ui/card/actions/DepesonalizeActionFragment.kt +++ b/tangem-demo/src/main/java/com/tangem/tangemtest/card_use_cases/ui/card/actions/DepesonalizeActionFragment.kt @@ -1,8 +1,8 @@ package com.tangem.tangemtest.card_use_cases.ui.card.actions import com.tangem.tangemtest.R +import com.tangem.tangemtest.card_use_cases.resources.ActionType import com.tangem.tangemtest.card_use_cases.ui.card.BaseCardActionFragment -import com.tangem.tangemtest.commons.ActionType /** [REDACTED_AUTHOR] diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/card_use_cases/ui/card/actions/ScanActionFragment.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/card_use_cases/ui/card/actions/ScanActionFragment.kt index 1b8a47d97b..333a941eb0 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/card_use_cases/ui/card/actions/ScanActionFragment.kt +++ b/tangem-demo/src/main/java/com/tangem/tangemtest/card_use_cases/ui/card/actions/ScanActionFragment.kt @@ -1,8 +1,8 @@ package com.tangem.tangemtest.card_use_cases.ui.card.actions import com.tangem.tangemtest.R +import com.tangem.tangemtest.card_use_cases.resources.ActionType import com.tangem.tangemtest.card_use_cases.ui.card.BaseCardActionFragment -import com.tangem.tangemtest.commons.ActionType /** [REDACTED_AUTHOR] diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/card_use_cases/ui/card/actions/SignActionFragment.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/card_use_cases/ui/card/actions/SignActionFragment.kt index b73fa8bd05..49177a3abc 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/card_use_cases/ui/card/actions/SignActionFragment.kt +++ b/tangem-demo/src/main/java/com/tangem/tangemtest/card_use_cases/ui/card/actions/SignActionFragment.kt @@ -1,8 +1,8 @@ package com.tangem.tangemtest.card_use_cases.ui.card.actions import com.tangem.tangemtest.R +import com.tangem.tangemtest.card_use_cases.resources.ActionType import com.tangem.tangemtest.card_use_cases.ui.card.BaseCardActionFragment -import com.tangem.tangemtest.commons.ActionType /** [REDACTED_AUTHOR] diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/card_use_cases/ui/card/actions/widgets/ParameterWidget.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/card_use_cases/ui/card/actions/widgets/ParameterWidget.kt index 823914c5cb..1f761bf602 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/card_use_cases/ui/card/actions/widgets/ParameterWidget.kt +++ b/tangem-demo/src/main/java/com/tangem/tangemtest/card_use_cases/ui/card/actions/widgets/ParameterWidget.kt @@ -12,14 +12,20 @@ import com.google.android.material.textfield.TextInputLayout import com.tangem.common.tlv.TlvTag import com.tangem.tangemtest.R import com.tangem.tangemtest.card_use_cases.domain.params_manager.IncomingParameter -import com.tangem.tangemtest.commons.ActionType +import com.tangem.tangemtest.card_use_cases.resources.ActionType +import com.tangem.tangemtest.card_use_cases.resources.MainResourceHolder +import com.tangem.tangemtest.card_use_cases.resources.Resources import ru.dev.gbixahue.eu4d.lib.android.global.log.Log import ru.dev.gbixahue.eu4d.lib.kotlin.stringOf /** [REDACTED_AUTHOR] */ -class ParameterWidget(private val parent: ViewGroup, model: IncomingParameter) { +class ParameterWidget( + private val parent: ViewGroup, + private val resHolder: MainResourceHolder, + model: IncomingParameter +) { val tlvTag: TlvTag = model.tlvTag @@ -43,7 +49,7 @@ class ParameterWidget(private val parent: ViewGroup, model: IncomingParameter) { etValue.setText(stringOf(model.data)) etValue.addTextChangedListener(valueWatcher) btnAction.setOnClickListener { onActionBtnClickListener?.invoke() } - btnAction.text = btnAction.context.getString(getActionResName()) + btnAction.text = btnAction.context.getString(getResName(tlvTag)) toggleActionBtnVisibility() } @@ -75,12 +81,12 @@ class ParameterWidget(private val parent: ViewGroup, model: IncomingParameter) { } } - private fun getActionResName(): Int { - val action = when (tlvTag) { + private fun getResName(tag: TlvTag): Int { + val action = when (tag) { TlvTag.CardId -> ActionType.Scan else -> ActionType.Unknown } - return action.resName + return resHolder.safeGet(action).resName } private fun toggleActionBtnVisibility() { diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/card_use_cases/ui/personalize/PersonalizeFragment.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/card_use_cases/ui/personalize/PersonalizeFragment.kt index 80dd27b9a7..3c5dc87e52 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/card_use_cases/ui/personalize/PersonalizeFragment.kt +++ b/tangem-demo/src/main/java/com/tangem/tangemtest/card_use_cases/ui/personalize/PersonalizeFragment.kt @@ -18,10 +18,10 @@ import com.tangem.tangemtest.R import com.tangem.tangemtest._main.MainViewModel import com.tangem.tangemtest.card_use_cases.domain.params_manager.ParamsManager import com.tangem.tangemtest.card_use_cases.domain.params_manager.ParamsManagerFactory +import com.tangem.tangemtest.card_use_cases.resources.ActionType import com.tangem.tangemtest.card_use_cases.ui.card.actions.ActionViewModelFactory import com.tangem.tangemtest.card_use_cases.ui.card.actions.ParamsViewModel import com.tangem.tangemtest.card_use_cases.ui.personalize.widgets.WidgetBuilder -import com.tangem.tangemtest.commons.ActionType import kotlinx.android.synthetic.main.fg_personalize.* import ru.dev.gbixahue.eu4d.lib.android.global.log.Log import java.io.IOException diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/card_use_cases/ui/personalize/PersonalizeResources.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/card_use_cases/ui/personalize/PersonalizeResources.kt deleted file mode 100644 index 0679bb24d3..0000000000 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/card_use_cases/ui/personalize/PersonalizeResources.kt +++ /dev/null @@ -1,339 +0,0 @@ -package com.tangem.tangemtest.card_use_cases.ui.personalize - -import com.tangem.tangemtest.R -import com.tangem.tangemtest._arch.structure.base.* - -/** -[REDACTED_AUTHOR] - */ -data class UnitResource( - val resName: Int, - val resDescription: Int? = null -) - -object PersonalizeResources { - private val map = mutableMapOf() - - init { - InfoInitializer().init(map) - } - - fun get(id: Id): UnitResource = map[id] ?: UnitResource(R.string.unknown, R.string.unknown) -} - -internal class InfoInitializer() { - fun init(map: MutableMap) { - initBlock(map) - initCardNumber(map) - initCommon(map) - initSigningMethod(map) - initSignHashExProp(map) - initDenomination(map) - initToken(map) - initProductMask(map) - initSettingsMask(map) - initSettingsMaskProtocolEnc(map) - initSettingsMaskNde(map) - initPins(map) - } - - private fun initBlock(map: MutableMap) { - map[BlockId.CARD_NUMBER] = UnitResource( - R.string.pers_block_card_number, - R.string.info_pers_block_card_number - ) - map[BlockId.COMMON] = UnitResource( - R.string.pers_block_common, - R.string.info_pers_block_common - ) - map[BlockId.SIGNING_METHOD] = UnitResource( - R.string.pers_block_signing_method, - R.string.info_pers_block_signing_method - ) - map[BlockId.SIGN_HASH_EX_PROP] = UnitResource( - R.string.pers_block_sign_hash_ex_prop, - R.string.info_pers_block_sign_hash_ex_prop - ) - map[BlockId.DENOMINATION] = UnitResource( - R.string.pers_block_denomination, - R.string.info_pers_block_denomination - ) - map[BlockId.TOKEN] = UnitResource( - R.string.pers_block_token, - R.string.info_pers_block_token - ) - map[BlockId.PROD_MASK] = UnitResource( - R.string.pers_block_product_mask, - R.string.info_pers_block_product_mask - ) - map[BlockId.SETTINGS_MASK] = UnitResource( - R.string.pers_block_settings_mask, - R.string.info_pers_block_settings_mask - ) - map[BlockId.SETTINGS_MASK_PROTOCOL_ENC] = UnitResource( - R.string.pers_block_settings_mask_protocol_enc, - R.string.info_pers_block_settings_mask_protocol_enc - ) - map[BlockId.SETTINGS_MASK_NDEF] = UnitResource( - R.string.pers_block_settings_mask_ndef, - R.string.info_pers_block_settings_mask_ndef - ) - map[BlockId.PINS] = UnitResource( - R.string.pers_block_pins, - R.string.info_pers_block_pins - ) - } - - private fun initCardNumber(map: MutableMap) { - map[CardNumber.SERIES] = UnitResource( - R.string.pers_item_series, - R.string.info_pers_item_series - ) - map[CardNumber.NUMBER] = UnitResource( - R.string.pers_item_number, - R.string.info_pers_item_number - ) - } - - private fun initCommon(map: MutableMap) { - map[Common.CURVE] = UnitResource( - R.string.pers_item_curve, - R.string.info_pers_item_curve - ) - map[Common.BLOCKCHAIN] = UnitResource( - R.string.pers_item_blockchain, - R.string.info_pers_item_blockchain - ) - map[Common.BLOCKCHAIN_CUSTOM] = UnitResource( - R.string.pers_item_custom_blockchain, - R.string.info_pers_item_custom_blockchain - ) - map[Common.MAX_SIGNATURES] = UnitResource( - R.string.pers_item_max_signatures, - R.string.info_pers_item_max_signatures - ) - map[Common.CREATE_WALLET] = UnitResource( - R.string.pers_item_create_wallet, - R.string.info_pers_item_create_wallet - ) - } - - private fun initSigningMethod(map: MutableMap) { - map[SigningMethod.SIGN_TX] = UnitResource( - R.string.pers_item_sign_tx_hashes, - R.string.info_pers_item_sign_tx_hashes - ) - map[SigningMethod.SIGN_TX_RAW] = UnitResource( - R.string.pers_item_sign_raw_tx, - R.string.info_pers_item_sign_raw_tx - ) - map[SigningMethod.SIGN_VALIDATED_TX] = UnitResource( - R.string.pers_item_sign_validated_tx_hashes, - R.string.info_pers_item_sign_validated_tx_hashes - ) - map[SigningMethod.SIGN_VALIDATED_TX_RAW] = UnitResource( - R.string.pers_item_sign_validated_raw_tx, - R.string.info_pers_item_sign_validated_raw_tx - ) - map[SigningMethod.SIGN_VALIDATED_TX_ISSUER] = UnitResource( - R.string.pers_item_sign_validated_tx_hashes_with_iss_data, - R.string.info_pers_item_sign_validated_tx_hashes_with_iss_data - ) - map[SigningMethod.SIGN_VALIDATED_TX_RAW_ISSUER] = UnitResource( - R.string.pers_item_sign_validated_raw_tx_with_iss_data, - R.string.info_pers_item_sign_validated_raw_tx_with_iss_data - ) - map[SigningMethod.SIGN_EXTERNAL] = UnitResource( - R.string.pers_item_sign_hash_ex, - R.string.info_pers_item_sign_hash_ex - ) - } - - private fun initSignHashExProp(map: MutableMap) { - map[SignHashExProp.PIN_LESS_FLOOR_LIMIT] = UnitResource( - R.string.pers_item_pin_less_floor_limit, - R.string.info_pers_item_pin_less_floor_limit - ) - map[SignHashExProp.CRYPTO_EXTRACT_KEY] = UnitResource( - R.string.pers_item_cr_ex_key, - R.string.info_pers_item_cr_ex_key - ) - map[SignHashExProp.REQUIRE_TERMINAL_CERT_SIG] = UnitResource( - R.string.pers_item_require_terminal_cert_sig, - R.string.info_pers_item_require_terminal_cert_sig - ) - map[SignHashExProp.REQUIRE_TERMINAL_TX_SIG] = UnitResource( - R.string.pers_item_require_terminal_tx_sig, - R.string.info_pers_item_require_terminal_tx_sig - ) - map[SignHashExProp.CHECK_PIN3] = UnitResource( - R.string.pers_item_pin3, - R.string.info_pers_item_pin3 - ) - } - - private fun initDenomination(map: MutableMap) { - map[Denomination.WRITE_ON_PERSONALIZE] = UnitResource( - R.string.pers_item_write_on_personalize, - R.string.info_pers_item_write_on_personalize - ) - map[Denomination.DENOMINATION] = UnitResource( - R.string.pers_item_denomination, - R.string.info_pers_item_denomination - ) - } - - private fun initToken(map: MutableMap) { - map[Token.ITS_TOKEN] = UnitResource( - R.string.pers_item_its_token, - R.string.info_pers_item_its_token - ) - map[Token.SYMBOL] = UnitResource( - R.string.pers_item_symbol, - R.string.info_pers_item_symbol - ) - map[Token.CONTRACT_ADDRESS] = UnitResource( - R.string.pers_item_contract_address, - R.string.info_pers_item_contract_address - ) - map[Token.DECIMAL] = UnitResource( - R.string.pers_item_decimal, - R.string.info_pers_item_decimal - ) - } - - private fun initProductMask(map: MutableMap) { - map[ProductMask.NOTE] = UnitResource( - R.string.pers_item_note, - R.string.info_pers_item_note - ) - map[ProductMask.TAG] = UnitResource( - R.string.pers_item_tag, - R.string.info_pers_item_tag - ) - map[ProductMask.ID_CARD] = UnitResource( - R.string.pers_item_id_card, - R.string.info_pers_item_id_card - ) - } - - private fun initSettingsMask(map: MutableMap) { - map[SettingsMask.IS_REUSABLE] = UnitResource( - R.string.pers_item_is_reusable, - R.string.info_pers_item_is_reusable - ) - map[SettingsMask.NEED_ACTIVATION] = UnitResource( - R.string.pers_item_need_activation, - R.string.info_pers_item_need_activation - ) - map[SettingsMask.FORBID_PURGE] = UnitResource( - R.string.pers_item_forbid_purge, - R.string.info_pers_item_forbid_purge - ) - map[SettingsMask.ALLOW_SELECT_BLOCKCHAIN] = UnitResource( - R.string.pers_item_allow_select_blockchain, - R.string.info_pers_item_allow_select_blockchain - ) - map[SettingsMask.USE_BLOCK] = UnitResource( - R.string.pers_item_use_block, - R.string.info_pers_item_use_block - ) - map[SettingsMask.ONE_APDU] = UnitResource( - R.string.pers_item_one_apdu_at_once, - R.string.info_pers_item_one_apdu_at_once - ) - map[SettingsMask.USE_CVC] = UnitResource( - R.string.pers_item_use_cvc, - R.string.info_pers_item_use_cvc - ) - map[SettingsMask.ALLOW_SWAP_PIN] = UnitResource( - R.string.pers_item_allow_swap_pin, - R.string.info_pers_item_allow_swap_pin - ) - map[SettingsMask.ALLOW_SWAP_PIN2] = UnitResource( - R.string.pers_item_allow_swap_pin2, - R.string.info_pers_item_allow_swap_pin2 - ) - map[SettingsMask.FORBID_DEFAULT_PIN] = UnitResource( - R.string.pers_item_forbid_default_pin, - R.string.info_pers_item_forbid_default_pin - ) - map[SettingsMask.SMART_SECURITY_DELAY] = UnitResource( - R.string.pers_item_smart_security_delay, - R.string.info_pers_item_smart_security_delay - ) - map[SettingsMask.PROTECT_ISSUER_DATA_AGAINST_REPLAY] = UnitResource( - R.string.pers_item_protect_issuer_data_against_replay, - R.string.info_pers_item_protect_issuer_data_against_replay - ) - map[SettingsMask.SKIP_SECURITY_DELAY_IF_VALIDATED] = UnitResource( - R.string.pers_item_skip_security_delay_if_validated, - R.string.info_pers_item_skip_security_delay_if_validated - ) - map[SettingsMask.SKIP_PIN2_CVC_IF_VALIDATED] = UnitResource( - R.string.pers_item_skip_pin2_and_cvc_if_validated, - R.string.info_pers_item_skip_pin2_and_cvc_if_validated - ) - map[SettingsMask.SKIP_SECURITY_DELAY_ON_LINKED_TERMINAL] = UnitResource( - R.string.pers_item_skip_security_delay_on_linked_terminal, - R.string.info_pers_item_skip_security_delay_on_linked_terminal - ) - map[SettingsMask.RESTRICT_OVERWRITE_EXTRA_ISSUER_DATA] = UnitResource( - R.string.pers_item_restrict_overwrite_ex_issuer_data, - R.string.info_pers_item_restrict_overwrite_ex_issuer_data - ) - } - - private fun initSettingsMaskProtocolEnc(map: MutableMap) { - map[SettingsMaskProtocolEnc.ALLOW_UNENCRYPTED] = UnitResource( - R.string.pers_item_allow_unencrypted, - R.string.info_pers_item_allow_unencrypted - ) - map[SettingsMaskProtocolEnc.ALLOW_FAST_ENCRYPTION] = UnitResource( - R.string.pers_item_allow_fast_encryption, - R.string.info_pers_item_allow_fast_encryption - ) - } - - private fun initSettingsMaskNde(map: MutableMap) { - map[SettingsMaskNdef.USE_NDEF] = UnitResource( - R.string.pers_item_use_ndef, - R.string.info_pers_item_use_ndef - ) - map[SettingsMaskNdef.DYNAMIC_NDEF] = UnitResource( - R.string.pers_item_dynamic_ndef, - R.string.info_pers_item_dynamic_ndef - ) - map[SettingsMaskNdef.DISABLE_PRECOMPUTED_NDEF] = UnitResource( - R.string.pers_item_disable_precomputed_ndef, - R.string.info_pers_item_disable_precomputed_ndef - ) - map[SettingsMaskNdef.AAR] = UnitResource( - R.string.pers_item_aar, - R.string.info_pers_item_aar - ) - } - - private fun initPins(map: MutableMap) { - map[Pins.PIN] = UnitResource( - R.string.pers_item_pin, - R.string.info_pers_item_pin - ) - map[Pins.PIN2] = UnitResource( - R.string.pers_item_pin2, - R.string.info_pers_item_pin2 - ) - map[Pins.PIN3] = UnitResource( - R.string.pers_item_pin3, - R.string.info_pers_item_pin3 - ) - map[Pins.CVC] = UnitResource( - R.string.pers_item_cvc, - R.string.info_pers_item_cvc - ) - map[Pins.PAUSE_BEFORE_PIN2] = UnitResource( - R.string.pers_item_pause_before_pin2, - R.string.info_pers_item_pause_before_pin2 - ) - } -} \ No newline at end of file diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/card_use_cases/ui/personalize/widgets/base/AbstractionUnitWidget.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/card_use_cases/ui/personalize/widgets/base/AbstractionUnitWidget.kt index 5cd2c381b5..341d5ebc83 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/card_use_cases/ui/personalize/widgets/base/AbstractionUnitWidget.kt +++ b/tangem-demo/src/main/java/com/tangem/tangemtest/card_use_cases/ui/personalize/widgets/base/AbstractionUnitWidget.kt @@ -5,7 +5,8 @@ import android.view.View import android.view.ViewGroup import com.tangem.tangemtest.R import com.tangem.tangemtest._arch.structure.base.DataUnit -import com.tangem.tangemtest.card_use_cases.ui.personalize.PersonalizeResources +import com.tangem.tangemtest.card_use_cases.resources.MainResourceHolder +import com.tangem.tangemtest.card_use_cases.resources.Resources import ru.dev.gbixahue.eu4d.lib.kotlin.common.LayoutHolder /** @@ -31,6 +32,6 @@ abstract class BaseViewWidget(parent: ViewGroup) : ViewWidget { } } -fun UnitWidget<*>.getResNameId(): Int = PersonalizeResources.get(unit.id).resName +fun UnitWidget<*>.getResNameId(): Int = MainResourceHolder.safeGet(unit.id).resName -fun UnitWidget<*>.getResDescription(): Int? = PersonalizeResources.get(unit.id).resDescription \ No newline at end of file +fun UnitWidget<*>.getResDescription(): Int? = MainResourceHolder.safeGet(unit.id).resDescription \ No newline at end of file diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/commons/navigation.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/commons/navigation.kt index 79482e51c5..77fd815a41 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/commons/navigation.kt +++ b/tangem-demo/src/main/java/com/tangem/tangemtest/commons/navigation.kt @@ -1,6 +1,5 @@ package com.tangem.tangemtest.commons -import androidx.annotation.StringRes import androidx.navigation.NavOptions import androidx.navigation.navOptions import com.tangem.tangemtest.R @@ -18,22 +17,4 @@ fun getDefaultNavigationOptions(): NavOptions { popExit = R.anim.slide_out_right } } -} - -data class NavigateOptions(val name: ActionType, val destinationId: Int) - -enum class ActionType(@StringRes val resName: Int) { - Scan(R.string.action_card_scan), - Sign(R.string.action_card_sign), - CreateWallet(R.string.action_wallet_create), - PurgeWallet(R.string.action_wallet_purge), - ReadIssuerData(R.string.action_issuer_read_data), - WriteIssuerData(R.string.action_issuer_write_data), - ReadIssuerExData(R.string.action_issuer_read_ex_data), - WriteIssuerExData(R.string.action_issuer_write_ex_data), - ReadUserData(R.string.action_user_read_data), - WriteUserData(R.string.action_user_write_data), - Personalize(R.string.personalize), - Depersonalize(R.string.depersonalize), - Unknown(R.string.unknown), } \ No newline at end of file diff --git a/tangem-demo/src/main/res/layout/fg_entry_point.xml b/tangem-demo/src/main/res/layout/fg_entry_point.xml index 8a589c5489..e31b40ea04 100644 --- a/tangem-demo/src/main/res/layout/fg_entry_point.xml +++ b/tangem-demo/src/main/res/layout/fg_entry_point.xml @@ -1,5 +1,5 @@ - @@ -7,10 +7,9 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/tangem-demo/src/main/res/layout/vh_actions.xml b/tangem-demo/src/main/res/layout/vh_actions.xml index efca961544..00b4c79e44 100644 --- a/tangem-demo/src/main/res/layout/vh_actions.xml +++ b/tangem-demo/src/main/res/layout/vh_actions.xml @@ -1,21 +1,33 @@ - + android:layout_height="wrap_content" + android:background="?android:attr/selectableItemBackground" + android:gravity="center" + android:orientation="vertical" + android:padding="@dimen/def_indent"> - \ No newline at end of file + + + \ No newline at end of file diff --git a/tangem-demo/src/main/res/values/strings.xml b/tangem-demo/src/main/res/values/strings.xml index eb0ac9e999..ae548ef6a8 100644 --- a/tangem-demo/src/main/res/values/strings.xml +++ b/tangem-demo/src/main/res/values/strings.xml @@ -2,19 +2,8 @@ Tangem Demo @string/app_name - Scan - Sign - Personalize - Depersonalize - Create wallet - Purge wallet - Read issuer data - Write issuer data - Read issuer extra data - Write issuer extra data - Read user data - Write user data "Current card ID: " + unknown diff --git a/tangem-demo/src/main/res/values/strings_action.xml b/tangem-demo/src/main/res/values/strings_action.xml new file mode 100644 index 0000000000..9854798730 --- /dev/null +++ b/tangem-demo/src/main/res/values/strings_action.xml @@ -0,0 +1,30 @@ + + + + Scan + Sign + Personalize + Depersonalize + Create wallet + Purge wallet + Read issuer data + Write issuer data + Read issuer extra data + Write issuer extra data + Read user data + Write user data + + SomeDescription + SomeDescription + SomeDescription + SomeDescription + SomeDescription + SomeDescription + SomeDescription + SomeDescription + SomeDescription + SomeDescription + SomeDescription + SomeDescription + + \ No newline at end of file diff --git a/tangem-demo/src/main/res/values/string_personalization.xml b/tangem-demo/src/main/res/values/strings_personalization.xml similarity index 99% rename from tangem-demo/src/main/res/values/string_personalization.xml rename to tangem-demo/src/main/res/values/strings_personalization.xml index 9ee3f0c1a8..07d531ca90 100644 --- a/tangem-demo/src/main/res/values/string_personalization.xml +++ b/tangem-demo/src/main/res/values/strings_personalization.xml @@ -1,8 +1,6 @@ - Personalize - Depersonalize Card number Common Signing method