Skip to content

Commit

Permalink
ANDROID-15230 Fix suppressed long method (#391)
Browse files Browse the repository at this point in the history
* ANDROID-15230 Fix suppressed long method

* ANDROID-15230 remove unneded experimental annotations

* ANDROID-15230 split init in private methods
  • Loading branch information
jeprubio authored Sep 26, 2024
1 parent 54c84c7 commit 54074d1
Show file tree
Hide file tree
Showing 5 changed files with 201 additions and 134 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,7 @@ class ListsCatalogFragment : Fragment() {


@SuppressLint("SetTextI18n")
@Suppress("LongMethod", "CyclomaticComplexMethod")
@Suppress("CyclomaticComplexMethod")
private fun ListRowView.configureView(
withLongTitle: Boolean = false,
withTitleMaxLines: Int? = null,
Expand Down Expand Up @@ -249,11 +249,7 @@ class ListsCatalogFragment : Fragment() {
isClickable = false
}

when {
withBadge -> setBadge(true, withBadgeDescription)
withBadgeNumeric > 0 -> setNumericBadge(withBadgeNumeric, withBadgeDescription)
else -> setBadge(false, withBadgeDescription)
}
setBadge(withBadge, withBadgeDescription, withBadgeNumeric)
}

private fun getAssetResource(withAsset: Boolean, @AssetType withAssetType: Int): Int? =
Expand All @@ -271,6 +267,14 @@ class ListsCatalogFragment : Fragment() {
} else {
null
}

private fun ListRowView.setBadge(withBadge: Boolean, withBadgeDescription: String?, withBadgeNumeric: Int) {
when {
withBadge -> setBadge(true, withBadgeDescription)
withBadgeNumeric > 0 -> setNumericBadge(withBadgeNumeric, withBadgeDescription)
else -> setBadge(false, withBadgeDescription)
}
}
}

class ListViewHolder(val rowView: ListRowView) : ViewHolder(rowView)
Expand Down
141 changes: 82 additions & 59 deletions library/src/main/java/com/telefonica/mistica/button/ProgressButton.kt
Original file line number Diff line number Diff line change
Expand Up @@ -66,8 +66,72 @@ class ProgressButton : FrameLayout {
}

@SuppressLint("ClickableViewAccessibility")
@Suppress("LongMethod")
private fun init(attrs: AttributeSet? = null, defStyleAttr: Int = 0) {
setupAttributes(attrs, defStyleAttr)
setupViewProperties()
setupButtonNormal()
setupButtonLoading()
setupProgressBar()
setButtonBackground()
addViews()
setVisibilityAndColors()
}

fun getText(): CharSequence =
buttonBackground.text

fun setText(text: CharSequence) {
buttonNormal.text = text
if (!isLoading) {
buttonBackground.text = text
}
}

fun setText(@StringRes textId: Int) {
setText(context.getString(textId))
}

fun setLoadingText(text: CharSequence) {
buttonLoading.text = text
if (isLoading) {
buttonBackground.text = text
}
}

override fun setOnClickListener(l: OnClickListener?) {
buttonBackground.setOnClickListener(l)
}

override fun setEnabled(enabled: Boolean) {
super.setEnabled(enabled)
setAlpha(enabled)
buttonBackground.isEnabled = enabled
buttonNormal.isEnabled = enabled
buttonLoading.isEnabled = enabled
progressBar.isEnabled = enabled
}

fun setIsLoading(loading: Boolean) {
if (loading) {
showLoading()
} else {
hideLoading()
}
}

fun showLoading() {
if (!isLoading) {
switchState()
}
}

fun hideLoading() {
if (isLoading) {
switchState()
}
}

private fun setupAttributes(attrs: AttributeSet?, defStyleAttr: Int) {
if (attrs != null) {
val theme = context.theme
val styledAttrs =
Expand All @@ -78,13 +142,17 @@ class ProgressButton : FrameLayout {
styledAttrs.recycle()
}
}
}

private fun setupViewProperties() {
this.importantForAccessibility = IMPORTANT_FOR_ACCESSIBILITY_NO
isClickable = false
setPadding(0, 0, 0, 0)
setBackgroundColor(Color.TRANSPARENT)
originalTextColors = buttonNormal.textColors
}

private fun setupButtonNormal() {
buttonNormal.apply {
id = NO_ID
importantForAccessibility = IMPORTANT_FOR_ACCESSIBILITY_NO
Expand All @@ -94,7 +162,9 @@ class ProgressButton : FrameLayout {
)
showTextOnly()
}
}

private fun setupButtonLoading() {
buttonLoading.apply {
id = NO_ID
importantForAccessibility = IMPORTANT_FOR_ACCESSIBILITY_NO
Expand All @@ -106,7 +176,9 @@ class ProgressButton : FrameLayout {
icon = AppCompatResources.getDrawable(context, R.drawable.empty_material_button_icon)
text = ""
}
}

private fun setupProgressBar() {
progressBar.apply {
layoutParams = LayoutParams(buttonLoading.iconSize, buttonLoading.iconSize)
.apply {
Expand All @@ -115,9 +187,11 @@ class ProgressButton : FrameLayout {
importantForAccessibility = IMPORTANT_FOR_ACCESSIBILITY_NO
isIndeterminate = true
indeterminateTintMode = PorterDuff.Mode.SRC_IN
visibility = View.INVISIBLE
visibility = INVISIBLE
}
}

private fun setButtonBackground() {
buttonBackground.apply {
id = NO_ID
importantForAccessibility = IMPORTANT_FOR_ACCESSIBILITY_YES
Expand All @@ -127,88 +201,37 @@ class ProgressButton : FrameLayout {
)
icon = null
setTextColor(Color.TRANSPARENT)
visibility = View.VISIBLE
visibility = VISIBLE
setOnTouchListener { view, event ->
when (event.action) {
MotionEvent.ACTION_DOWN -> {
buttonNormal.isPressed = true
buttonLoading.isPressed = true
}

MotionEvent.ACTION_MOVE -> {
val outsideBounds =
event.x < 0 || event.y < 0 || event.x > view.measuredWidth || event.y > view.measuredHeight
buttonNormal.isPressed = !outsideBounds
buttonLoading.isPressed = !outsideBounds
}

MotionEvent.ACTION_UP, MotionEvent.ACTION_CANCEL -> {
buttonNormal.isPressed = false
buttonLoading.isPressed = false
view.performClick()
}
}
false
}
}
}

private fun addViews() {
addView(buttonBackground)
addView(buttonNormal)
addView(buttonLoading)
addView(progressBar)

setVisibilityAndColors()
}

fun getText(): CharSequence =
buttonBackground.text

fun setText(text: CharSequence) {
buttonNormal.text = text
if (!isLoading) {
buttonBackground.text = text
}
}

fun setText(@StringRes textId: Int) {
setText(context.getString(textId))
}

fun setLoadingText(text: CharSequence) {
buttonLoading.text = text
if (isLoading) {
buttonBackground.text = text
}
}

override fun setOnClickListener(l: OnClickListener?) {
buttonBackground.setOnClickListener(l)
}

override fun setEnabled(enabled: Boolean) {
super.setEnabled(enabled)
setAlpha(enabled)
buttonBackground.isEnabled = enabled
buttonNormal.isEnabled = enabled
buttonLoading.isEnabled = enabled
progressBar.isEnabled = enabled
}

fun setIsLoading(loading: Boolean) {
if (loading) {
showLoading()
} else {
hideLoading()
}
}

fun showLoading() {
if (!isLoading) {
switchState()
}
}

fun hideLoading() {
if (isLoading) {
switchState()
}
}

private fun switchState() {
Expand Down
Loading

0 comments on commit 54074d1

Please sign in to comment.