Advertisement
derangga

SectionHeaderIconLinkMV

Jul 13th, 2021
1,078
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 1.97 KB | None | 0 0
  1. class SectionHeaderIconLinkMV(context: Context) :
  2.     Molecule<SectionHeaderIconLinkMV.State, RelativeContainer>(context, ::RelativeContainer) {
  3.  
  4.     private val titleAV = Title16AV(context).also {
  5.         it.setId(R.id.recommendation_sectionHeaderIconLinkMV_title)
  6.         it.setIconPadding(Space.x4)
  7.         addComponent(
  8.             it,
  9.             params = RelativeLayout.LayoutParams(WRAP_CONTENT, WRAP_CONTENT)
  10.         )
  11.     }
  12.  
  13.     private val buttonLinkAV = ButtonLinkAV(context).also {
  14.         it.setId(R.id.recommendation_sectionHeaderIconLinkMV_buttonLink)
  15.         it.getView().fastMaxWidth = 160.dp
  16.         it.setMargin(left = Space.x8)
  17.         addComponent(
  18.             it,
  19.             params = RelativeLayout.LayoutParams(WRAP_CONTENT, WRAP_CONTENT)
  20.         )
  21.     }
  22.  
  23.     init {
  24.         setId(R.id.recommendation_sectionHeaderIconLinkMV)
  25.         setPadding(Space.x16, Space.x16)
  26.  
  27.         layoutRules {
  28.             buttonLinkAV.alignParentEnd()
  29.             buttonLinkAV.centerVertical()
  30.         }
  31.     }
  32.  
  33.     override fun initState() = State()
  34.  
  35.     override fun render(state: State) {
  36.         titleAV.bind(state.titleAVState)
  37.         state.leftIcon?.let {
  38.             titleAV.setLeftIcon(state.leftIconSize, it)
  39.         }
  40.         state.rightIcon?.let {
  41.             titleAV.setRightIcon(state.rightIconSize, it)
  42.         }
  43.         buttonLinkAV.bind(state.buttonLinkAVState)
  44.     }
  45.  
  46.     class State {
  47.         internal val titleAVState = TitleAV.State().apply {
  48.             gravity = Gravity.CENTER_VERTICAL
  49.         }
  50.         internal val buttonLinkAVState = ButtonLinkAV.State()
  51.  
  52.         var leftIconSize = IconAV.CompoundIcon.Major
  53.         var leftIcon: ImageHolder? = null
  54.         var rightIconSize = IconAV.CompoundIcon.Major
  55.         var rightIcon: ImageHolder? = null
  56.         var text: String? by titleAVState::text
  57.         var linkText: String? by buttonLinkAVState::text
  58.         var onClickLinkListener by buttonLinkAVState::onClickListener
  59.     }
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement