Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 1 addition & 10 deletions library/src/main/java/com/telefonica/mistica/link/TextLink.kt
Original file line number Diff line number Diff line change
Expand Up @@ -6,22 +6,13 @@ import android.text.method.LinkMovementMethod
import android.util.AttributeSet
import androidx.annotation.ColorInt
import androidx.appcompat.widget.AppCompatTextView
import androidx.databinding.BindingMethod
import androidx.databinding.BindingMethods
import com.telefonica.mistica.R
import com.telefonica.mistica.link.MultiLink.CustomMultiLink
import com.telefonica.mistica.link.MultiLink.DefaultMultiLink
import com.telefonica.mistica.link.SingleLink.CustomSingleLink
import com.telefonica.mistica.link.SingleLink.DefaultSingleLink
import com.telefonica.mistica.util.getThemeColor

@BindingMethods(
BindingMethod(
type = TextLink::class,
attribute = "linkColor",
method = "setLinkColor"
),
)
class TextLink @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
Expand All @@ -41,7 +32,7 @@ class TextLink @JvmOverloads constructor(
movementMethod = LinkMovementMethod.getInstance()
highlightColor = Color.TRANSPARENT

if (attrs != null) {
if (attrs != null) {
val styledAttrs =
context.theme.obtainStyledAttributes(attrs, R.styleable.TextLinkView, defStyleAttr, 0)
setLinkColor(styledAttrs.getColor(R.styleable.TextLinkView_linkColor, context.getThemeColor(R.attr.colorTextLink)))
Expand Down
128 changes: 24 additions & 104 deletions library/src/main/java/com/telefonica/mistica/list/ListRowView.kt
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,6 @@ import androidx.constraintlayout.widget.ConstraintLayout
import androidx.constraintlayout.widget.ConstraintSet
import androidx.core.view.ViewCompat
import androidx.core.view.isVisible
import androidx.databinding.BindingAdapter
import androidx.databinding.BindingMethod
import androidx.databinding.BindingMethods
import com.telefonica.mistica.R
import com.telefonica.mistica.badge.Badge
import com.telefonica.mistica.list.ListRowView.ContentDescriptionKeys.DESCRIPTION
Expand All @@ -43,89 +40,6 @@ import com.telefonica.mistica.util.getThemeColor
import com.telefonica.mistica.util.loadUrl
import com.telefonica.mistica.util.setAlpha

@BindingMethods(
BindingMethod(
type = ListRowView::class,
attribute = "listRowHeadlineLayout",
method = "setHeadlineLayout"
),
BindingMethod(
type = ListRowView::class,
attribute = "listRowHeadlineVisible",
method = "setHeadlineVisible"
),
BindingMethod(
type = ListRowView::class,
attribute = "listRowTitle",
method = "setTitle"
),
BindingMethod(
type = ListRowView::class,
attribute = "listRowTitleMaxLines",
method = "setTitleMaxLines"
),
BindingMethod(
type = ListRowView::class,
attribute = "listRowIsTitleHeading",
method = "setTitleHeading"
),
BindingMethod(
type = ListRowView::class,
attribute = "listRowSubtitle",
method = "setSubtitle"
),
BindingMethod(
type = ListRowView::class,
attribute = "listRowSubtitleMaxLines",
method = "setSubtitleMaxLines"
),
BindingMethod(
type = ListRowView::class,
attribute = "listRowDescription",
method = "setDescription"
),
BindingMethod(
type = ListRowView::class,
attribute = "listRowDescriptionMaxLines",
method = "setDescriptionMaxLines"
),
BindingMethod(
type = ListRowView::class,
attribute = "listRowAssetDrawable",
method = "setAssetDrawable"
),
BindingMethod(
type = ListRowView::class,
attribute = "listRowAssetType",
method = "setAssetType"
),
BindingMethod(
type = ListRowView::class,
attribute = "listRowIsBoxed",
method = "setBoxed"
),
BindingMethod(
type = ListRowView::class,
attribute = "backgroundType",
method = "setBackgroundType"
),
BindingMethod(
type = ListRowView::class,
attribute = "listRowActionLayout",
method = "setActionLayout"
),
BindingMethod(
type = ListRowView::class,
attribute = "listRowAssetHeight",
method = "setAssetHeight"
),
BindingMethod(
type = ListRowView::class,
attribute = "listRowAssetWidth",
method = "setAssetWidth"
),
)

@Suppress("LargeClass")
open class ListRowView @JvmOverloads constructor(
context: Context,
Expand Down Expand Up @@ -700,6 +614,30 @@ open class ListRowView @JvmOverloads constructor(
}
}

fun setListRowTitle(value: CharSequence?) {
setTitle(value)
}

fun setListRowSubtitle(value: CharSequence?) {
setSubtitle(value)
}

fun setListRowDescription(value: CharSequence?) {
setDescription(value)
}

fun setListRowHeadlineVisible(value: Boolean) {
setHeadlineVisible(value)
}

fun setListRowTitleMaxLines(value: Int) {
setTitleMaxLines(value)
}

fun setListRowIsTitleHeading(value: Boolean) {
if (value) setTitleHeading()
}

private fun showNonNumericBadge() {
Badge.removeBadge(badgeAnchor)
badgeAnchorContainer.visibility = View.VISIBLE
Expand Down Expand Up @@ -804,23 +742,5 @@ open class ListRowView @JvmOverloads constructor(
const val TYPE_IMAGE_7_10 = 4
const val TYPE_IMAGE_16_9 = 5
const val TYPE_IMAGE_ROUNDED = 6

@BindingAdapter(
value = ["listRowBadgeCount"],
requireAll = false
)
@JvmStatic
fun setNumericBadge(view: ListRowView, count: Int) {
view.setNumericBadge(count)
}

@BindingAdapter(
value = ["listRowBadgeVisible"],
requireAll = false
)
@JvmStatic
fun setBadge(view: ListRowView, show: Boolean) {
view.setBadge(show)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,20 +3,11 @@ package com.telefonica.mistica.list
import android.content.Context
import android.util.AttributeSet
import androidx.annotation.IntDef
import androidx.databinding.BindingMethod
import androidx.databinding.BindingMethods
import androidx.recyclerview.widget.RecyclerView
import com.telefonica.mistica.R
import com.telefonica.mistica.list.layout.configureWithBoxedLayout
import com.telefonica.mistica.list.layout.configureWithFullWidthLayout

@BindingMethods(
BindingMethod(
type = MisticaRecyclerView::class,
attribute = "listLayoutType",
method = "setListLayoutType"
)
)
class MisticaRecyclerView : RecyclerView {

constructor(context: Context) : super(context) {
Expand Down
4 changes: 2 additions & 2 deletions library/src/main/java/com/telefonica/mistica/list/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<img src="../../../../../../../../doc/images/lists/lists-dark.gif" />
</p>

Implemented as a custom view, `com.telefonica.mistica.ListRowView` can be used inside any layout like a regular view, including recyclable lists. It supports both **attribute configuration and databinding for all properties**.
Implemented as a custom view, `com.telefonica.mistica.ListRowView` can be used inside any layout like a regular view, including recyclable lists. It supports **attribute-based configuration for all properties**.

```xml
<declare-styleable name="ListRowView">
Expand Down Expand Up @@ -62,7 +62,7 @@ Implemented as a custom view, `com.telefonica.mistica.ListRowView` can be used i
* Full Width Layout --> `configureWithFullWidthLayout`
* Boxed Layout --> `configureWithBoxedLayout`

Also `com.telefonica.mistica.MisticaRecyclerView` is just a `RecyclerView` that already supports previous layout styles by **both attribute configuration and databinding**:
Also `com.telefonica.mistica.MisticaRecyclerView` is just a RecyclerView that already supports previous layout styles by **attribute-based configuration**.
```xml
<declare-styleable name="MisticaRecyclerView">
<attr name="listLayoutType" format="integer">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,27 +7,13 @@ import android.view.View
import android.widget.FrameLayout
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.constraintlayout.widget.ConstraintSet
import androidx.constraintlayout.widget.ConstraintSet.END
import androidx.constraintlayout.widget.ConstraintSet.BOTTOM
import androidx.constraintlayout.widget.ConstraintSet.END
import androidx.constraintlayout.widget.ConstraintSet.START
import androidx.constraintlayout.widget.ConstraintSet.TOP
import androidx.databinding.BindingMethod
import androidx.databinding.BindingMethods
import com.telefonica.mistica.R
import kotlin.math.roundToInt

@BindingMethods(
BindingMethod(
type = DeterminateStepperView::class,
attribute = "maxSteps",
method = "setMaxSteps"
),
BindingMethod(
type = DeterminateStepperView::class,
attribute = "step",
method = "setStep"
)
)
class DeterminateStepperView @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,8 @@ import android.view.LayoutInflater
import android.view.animation.DecelerateInterpolator
import android.widget.LinearLayout
import android.widget.ProgressBar
import androidx.databinding.BindingMethod
import androidx.databinding.BindingMethods
import com.telefonica.mistica.R

@BindingMethods(
BindingMethod(
type = IndeterminateStepperView::class,
attribute = "progress",
method = "setProgress"
)
)
class IndeterminateStepperView @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
Expand Down
29 changes: 0 additions & 29 deletions library/src/main/java/com/telefonica/mistica/title/TitleView.kt
Original file line number Diff line number Diff line change
Expand Up @@ -13,40 +13,11 @@ import androidx.annotation.VisibleForTesting
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.view.ViewCompat
import androidx.core.view.isVisible
import androidx.databinding.BindingMethod
import androidx.databinding.BindingMethods
import com.telefonica.mistica.R
import com.telefonica.mistica.util.getThemeColor
import com.telefonica.mistica.util.setTextAndVisibility
import com.telefonica.mistica.util.setTextPreset

@BindingMethods(
BindingMethod(
type = TitleView::class,
attribute = "title",
method = "setTitle"
),
BindingMethod(
type = TitleView::class,
attribute = "titleStyle",
method = "setTitleStyle"
),
BindingMethod(
type = TitleView::class,
attribute = "isTitleHeading",
method = "setTitleHeading"
),
BindingMethod(
type = TitleView::class,
attribute = "link",
method = "setLink"
),
BindingMethod(
type = TitleView::class,
attribute = "linkOnClick",
method = "setOnLinkClickedListener"
)
)
class TitleView @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
Expand Down
Loading