Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class SectionHeaderIconLinkMV(context: Context) :
- Molecule<SectionHeaderIconLinkMV.State, RelativeContainer>(context, ::RelativeContainer) {
- private val titleAV = Title16AV(context).also {
- it.setId(R.id.recommendation_sectionHeaderIconLinkMV_title)
- it.setIconPadding(Space.x4)
- addComponent(
- it,
- params = RelativeLayout.LayoutParams(WRAP_CONTENT, WRAP_CONTENT)
- )
- }
- private val buttonLinkAV = ButtonLinkAV(context).also {
- it.setId(R.id.recommendation_sectionHeaderIconLinkMV_buttonLink)
- it.getView().fastMaxWidth = 160.dp
- it.setMargin(left = Space.x8)
- addComponent(
- it,
- params = RelativeLayout.LayoutParams(WRAP_CONTENT, WRAP_CONTENT)
- )
- }
- init {
- setId(R.id.recommendation_sectionHeaderIconLinkMV)
- setPadding(Space.x16, Space.x16)
- layoutRules {
- buttonLinkAV.alignParentEnd()
- buttonLinkAV.centerVertical()
- }
- }
- override fun initState() = State()
- override fun render(state: State) {
- titleAV.bind(state.titleAVState)
- state.leftIcon?.let {
- titleAV.setLeftIcon(state.leftIconSize, it)
- }
- state.rightIcon?.let {
- titleAV.setRightIcon(state.rightIconSize, it)
- }
- buttonLinkAV.bind(state.buttonLinkAVState)
- }
- class State {
- internal val titleAVState = TitleAV.State().apply {
- gravity = Gravity.CENTER_VERTICAL
- }
- internal val buttonLinkAVState = ButtonLinkAV.State()
- var leftIconSize = IconAV.CompoundIcon.Major
- var leftIcon: ImageHolder? = null
- var rightIconSize = IconAV.CompoundIcon.Major
- var rightIcon: ImageHolder? = null
- var text: String? by titleAVState::text
- var linkText: String? by buttonLinkAVState::text
- var onClickLinkListener by buttonLinkAVState::onClickListener
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement