Updated on 2026-08-14
This commit is contained in:
parent
1c554ecde7
commit
0ff14ccd51
22 changed files with 370 additions and 431 deletions
|
|
@ -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<NavigateOptions> {
|
||||
private fun getNavigateOptions(): MutableList<ActionType> {
|
||||
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
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
@ -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<NavigateOptions>) : RvAdapter<RvActionsVH, NavigateOptions>(callback) {
|
||||
class RvActionsAdapter(
|
||||
private val wrapper: VhExDataWrapper,
|
||||
private val callback: RvCallback<Int>
|
||||
) : RvBaseAdapter<RvActionsVH, ActionType>() {
|
||||
|
||||
override fun createViewHolder(view: View, listener: RvCallback<NavigateOptions>?): 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<View>(R.layout.vh_actions, false)
|
||||
return RvActionsVH(view, wrapper, callback)
|
||||
}
|
||||
|
||||
override fun getLayoutId(): Int = R.layout.vh_actions
|
||||
}
|
||||
|
||||
class RvActionsVH(itemView: View, callback: RvCallback<NavigateOptions>?) : RvVH<NavigateOptions>(itemView, callback) {
|
||||
private val tvAction = itemView.findViewById<TextView>(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<Int>?
|
||||
) : RvBaseVH<ActionType>(itemView) {
|
||||
|
||||
private val tvAction = itemView.findViewById<TextView>(R.id.tv_title)
|
||||
private val containerDescription = itemView.findViewById<ViewGroup>(R.id.container_description)
|
||||
private val tvDescription = itemView.findViewById<TextView>(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)
|
||||
}
|
||||
|
|
@ -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
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
}
|
||||
|
|
@ -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<T> : BaseTypedHolder<T, Resources>()
|
||||
|
||||
object MainResourceHolder : ResourceHolder<Id>() {
|
||||
init {
|
||||
PersonalizeResources().init(this)
|
||||
ActionResources().init(this)
|
||||
}
|
||||
|
||||
inline fun <reified Res : Resources> safeGet(id: Id): Res {
|
||||
val result = super.get(id) ?: Resources(R.string.unknown, R.string.unknown)
|
||||
return result as Res
|
||||
}
|
||||
}
|
||||
|
|
@ -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)
|
||||
|
|
@ -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<Id>) {
|
||||
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())
|
||||
}
|
||||
}
|
||||
|
|
@ -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<Id>) {
|
||||
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<Id, Resources>) {
|
||||
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<Id, Resources>) {
|
||||
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<Id, Resources>) {
|
||||
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<Id, Resources>) {
|
||||
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<Id, Resources>) {
|
||||
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<Id, Resources>) {
|
||||
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<Id, Resources>) {
|
||||
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<Id, Resources>) {
|
||||
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<Id, Resources>) {
|
||||
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<Id, Resources>) {
|
||||
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<Id, Resources>) {
|
||||
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<Id, Resources>) {
|
||||
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))
|
||||
}
|
||||
}
|
||||
|
|
@ -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<ParameterWidget>()
|
||||
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)
|
||||
|
|
|
|||
|
|
@ -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]
|
||||
|
|
|
|||
|
|
@ -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]
|
||||
|
|
|
|||
|
|
@ -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]
|
||||
|
|
|
|||
|
|
@ -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<Resources>(action).resName
|
||||
}
|
||||
|
||||
private fun toggleActionBtnVisibility() {
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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<Id, UnitResource>()
|
||||
|
||||
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<Id, UnitResource>) {
|
||||
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<Id, UnitResource>) {
|
||||
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<Id, UnitResource>) {
|
||||
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<Id, UnitResource>) {
|
||||
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<Id, UnitResource>) {
|
||||
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<Id, UnitResource>) {
|
||||
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<Id, UnitResource>) {
|
||||
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<Id, UnitResource>) {
|
||||
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<Id, UnitResource>) {
|
||||
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<Id, UnitResource>) {
|
||||
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<Id, UnitResource>) {
|
||||
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<Id, UnitResource>) {
|
||||
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<Id, UnitResource>) {
|
||||
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
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
@ -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<Resources>(unit.id).resName
|
||||
|
||||
fun UnitWidget<*>.getResDescription(): Int? = PersonalizeResources.get(unit.id).resDescription
|
||||
fun UnitWidget<*>.getResDescription(): Int? = MainResourceHolder.safeGet<Resources>(unit.id).resDescription
|
||||
|
|
@ -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),
|
||||
}
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
|
@ -7,10 +7,9 @@
|
|||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/rv_actions"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||
|
|
@ -1,21 +1,33 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="48dp"
|
||||
android:background="?android:attr/selectableItemBackground">
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?android:attr/selectableItemBackground"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical"
|
||||
android:padding="@dimen/def_indent">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_title"
|
||||
android:layout_width="0dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/def_indent"
|
||||
android:layout_marginEnd="@dimen/def_indent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:text="Action method" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
<include
|
||||
layout="@layout/w_field_description"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintHorizontal_bias="1.0"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tv_title"
|
||||
tools:visibility="visible" />
|
||||
|
||||
</LinearLayout>
|
||||
|
|
@ -2,19 +2,8 @@
|
|||
<string name="app_name">Tangem Demo</string>
|
||||
|
||||
<string name="fg_name_entry_point">@string/app_name</string>
|
||||
<string name="action_card_scan">Scan</string>
|
||||
<string name="action_card_sign">Sign</string>
|
||||
<string name="action_personalize">Personalize</string>
|
||||
<string name="action_depersonalize">Depersonalize</string>
|
||||
<string name="action_wallet_create">Create wallet</string>
|
||||
<string name="action_wallet_purge">Purge wallet</string>
|
||||
<string name="action_issuer_read_data">Read issuer data</string>
|
||||
<string name="action_issuer_write_data">Write issuer data</string>
|
||||
<string name="action_issuer_read_ex_data">Read issuer extra data</string>
|
||||
<string name="action_issuer_write_ex_data">Write issuer extra data</string>
|
||||
<string name="action_user_read_data">Read user data</string>
|
||||
<string name="action_user_write_data">Write user data</string>
|
||||
<string name="current_card_id">"Current card ID: "</string>
|
||||
|
||||
<string name="unknown">unknown</string>
|
||||
|
||||
</resources>
|
||||
|
|
|
|||
30
tangem-demo/src/main/res/values/strings_action.xml
Normal file
30
tangem-demo/src/main/res/values/strings_action.xml
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
|
||||
<string name="action_card_scan">Scan</string>
|
||||
<string name="action_card_sign">Sign</string>
|
||||
<string name="action_personalize">Personalize</string>
|
||||
<string name="action_depersonalize">Depersonalize</string>
|
||||
<string name="action_wallet_create">Create wallet</string>
|
||||
<string name="action_wallet_purge">Purge wallet</string>
|
||||
<string name="action_issuer_read_data">Read issuer data</string>
|
||||
<string name="action_issuer_write_data">Write issuer data</string>
|
||||
<string name="action_issuer_read_ex_data">Read issuer extra data</string>
|
||||
<string name="action_issuer_write_ex_data">Write issuer extra data</string>
|
||||
<string name="action_user_read_data">Read user data</string>
|
||||
<string name="action_user_write_data">Write user data</string>
|
||||
|
||||
<string name="info_action_card_scan">SomeDescription</string>
|
||||
<string name="info_action_card_sign">SomeDescription</string>
|
||||
<string name="info_action_personalize">SomeDescription</string>
|
||||
<string name="info_action_depersonalize">SomeDescription</string>
|
||||
<string name="info_action_wallet_create">SomeDescription</string>
|
||||
<string name="info_action_wallet_purge">SomeDescription</string>
|
||||
<string name="info_action_issuer_read_data">SomeDescription</string>
|
||||
<string name="info_action_issuer_write_data">SomeDescription</string>
|
||||
<string name="info_action_issuer_read_ex_data">SomeDescription</string>
|
||||
<string name="info_action_issuer_write_ex_data">SomeDescription</string>
|
||||
<string name="info_action_user_read_data">SomeDescription</string>
|
||||
<string name="info_action_user_write_data">SomeDescription</string>
|
||||
|
||||
</resources>
|
||||
|
|
@ -1,8 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
|
||||
<string name="personalize">Personalize</string>
|
||||
<string name="depersonalize">Depersonalize</string>
|
||||
<string name="pers_block_card_number">Card number</string>
|
||||
<string name="pers_block_common">Common</string>
|
||||
<string name="pers_block_signing_method">Signing method</string>
|
||||
Loading…
Add table
Add a link
Reference in a new issue