"Learn more" button with click listener

This commit is contained in:
Maxime NATUREL 2022-08-11 12:06:38 +02:00
parent 8f218ce773
commit 60eb9b428d
3 changed files with 40 additions and 1 deletions

View File

@ -17,8 +17,11 @@
package im.vector.app.features.settings.devices.v2 package im.vector.app.features.settings.devices.v2
import android.content.Context import android.content.Context
import android.os.Bundle
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import im.vector.app.R import im.vector.app.R
@ -46,4 +49,24 @@ class VectorSettingsDevicesFragment @Inject constructor() : VectorBaseFragment<F
?.supportActionBar ?.supportActionBar
?.setTitle(R.string.settings_sessions_list) ?.setTitle(R.string.settings_sessions_list)
} }
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
initLearnMoreButtons()
}
override fun onDestroyView() {
cleanUpLearnMoreButtonsListeners()
super.onDestroyView()
}
private fun initLearnMoreButtons() {
views.devicesListHeaderSectionOther.onLearnMoreClickListener = {
Toast.makeText(context, "Learn more other", Toast.LENGTH_LONG).show()
}
}
private fun cleanUpLearnMoreButtonsListeners() {
views.devicesListHeaderSectionOther.onLearnMoreClickListener = null
}
} }

View File

@ -23,6 +23,7 @@ import android.view.LayoutInflater
import androidx.constraintlayout.widget.ConstraintLayout import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.content.res.use import androidx.core.content.res.use
import im.vector.app.R import im.vector.app.R
import im.vector.app.core.extensions.setTextWithColoredPart
import im.vector.app.databinding.ViewDevicesListHeaderBinding import im.vector.app.databinding.ViewDevicesListHeaderBinding
class DevicesListHeaderView @JvmOverloads constructor( class DevicesListHeaderView @JvmOverloads constructor(
@ -36,6 +37,8 @@ class DevicesListHeaderView @JvmOverloads constructor(
this this
) )
var onLearnMoreClickListener: (() -> Unit)? = null
init { init {
context.obtainStyledAttributes( context.obtainStyledAttributes(
attrs, attrs,
@ -55,6 +58,18 @@ class DevicesListHeaderView @JvmOverloads constructor(
private fun setDescription(typedArray: TypedArray) { private fun setDescription(typedArray: TypedArray) {
val description = typedArray.getString(R.styleable.DevicesListHeaderView_devicesListHeaderDescription) val description = typedArray.getString(R.styleable.DevicesListHeaderView_devicesListHeaderDescription)
binding.devicesListHeaderDescription.text = description val learnMore = context.getString(R.string.action_learn_more)
val stringBuilder = StringBuilder()
stringBuilder.append(description)
stringBuilder.append(" ")
stringBuilder.append(learnMore)
binding.devicesListHeaderDescription.setTextWithColoredPart(
fullText = stringBuilder.toString(),
coloredPart = learnMore,
underline = false
) {
onLearnMoreClickListener?.invoke()
}
} }
} }

View File

@ -6,6 +6,7 @@
android:background="?android:colorBackground"> android:background="?android:colorBackground">
<im.vector.app.features.settings.devices.v2.list.DevicesListHeaderView <im.vector.app.features.settings.devices.v2.list.DevicesListHeaderView
android:id="@+id/devices_list_header_section_other"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:devicesListHeaderDescription="@string/settings_sessions_other_description" app:devicesListHeaderDescription="@string/settings_sessions_other_description"