Adding extra top margin between sections
This commit is contained in:
parent
bf88c16c9d
commit
92888b666c
@ -22,6 +22,7 @@ import im.vector.app.R
|
|||||||
import im.vector.app.core.date.DateFormatKind
|
import im.vector.app.core.date.DateFormatKind
|
||||||
import im.vector.app.core.date.VectorDateFormatter
|
import im.vector.app.core.date.VectorDateFormatter
|
||||||
import im.vector.app.core.resources.StringProvider
|
import im.vector.app.core.resources.StringProvider
|
||||||
|
import im.vector.app.core.utils.DimensionConverter
|
||||||
import org.matrix.android.sdk.api.session.crypto.model.DeviceInfo
|
import org.matrix.android.sdk.api.session.crypto.model.DeviceInfo
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
@ -30,6 +31,7 @@ class SessionDetailsController @Inject constructor(
|
|||||||
private val checkIfSectionDeviceIsVisibleUseCase: CheckIfSectionDeviceIsVisibleUseCase,
|
private val checkIfSectionDeviceIsVisibleUseCase: CheckIfSectionDeviceIsVisibleUseCase,
|
||||||
private val stringProvider: StringProvider,
|
private val stringProvider: StringProvider,
|
||||||
private val dateFormatter: VectorDateFormatter,
|
private val dateFormatter: VectorDateFormatter,
|
||||||
|
private val dimensionConverter: DimensionConverter,
|
||||||
) : TypedEpoxyController<DeviceInfo>() {
|
) : TypedEpoxyController<DeviceInfo>() {
|
||||||
|
|
||||||
var callback: Callback? = null
|
var callback: Callback? = null
|
||||||
@ -40,27 +42,30 @@ class SessionDetailsController @Inject constructor(
|
|||||||
|
|
||||||
override fun buildModels(data: DeviceInfo?) {
|
override fun buildModels(data: DeviceInfo?) {
|
||||||
data?.let { info ->
|
data?.let { info ->
|
||||||
if (hasSectionSession(data)) {
|
val hasSectionSession = hasSectionSession(data)
|
||||||
|
if (hasSectionSession) {
|
||||||
buildSectionSession(info)
|
buildSectionSession(info)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hasSectionDevice(data)) {
|
if (hasSectionDevice(data)) {
|
||||||
// TODO add a marginTop of 48dp if the session section is visible
|
buildSectionDevice(info, addExtraTopMargin = hasSectionSession)
|
||||||
buildSectionDevice(info)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun buildHeaderItem(@StringRes titleResId: Int) {
|
private fun buildHeaderItem(@StringRes titleResId: Int, addExtraTopMargin: Boolean = false) {
|
||||||
val host = this
|
val host = this
|
||||||
sessionDetailsHeaderItem {
|
sessionDetailsHeaderItem {
|
||||||
id(titleResId)
|
id(titleResId)
|
||||||
title(host.stringProvider.getString(titleResId))
|
title(host.stringProvider.getString(titleResId))
|
||||||
|
addExtraTopMargin(addExtraTopMargin)
|
||||||
|
dimensionConverter(host.dimensionConverter)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun buildContentItem(@StringRes titleResId: Int, value: String) {
|
private fun buildContentItem(@StringRes titleResId: Int, value: String) {
|
||||||
val host = this
|
val host = this
|
||||||
|
// TODO bind the longClickListener to copy the description to the clipboard
|
||||||
sessionDetailsContentItem {
|
sessionDetailsContentItem {
|
||||||
id(titleResId)
|
id(titleResId)
|
||||||
title(host.stringProvider.getString(titleResId))
|
title(host.stringProvider.getString(titleResId))
|
||||||
@ -96,10 +101,10 @@ class SessionDetailsController @Inject constructor(
|
|||||||
return checkIfSectionDeviceIsVisibleUseCase.execute(data)
|
return checkIfSectionDeviceIsVisibleUseCase.execute(data)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun buildSectionDevice(data: DeviceInfo) {
|
private fun buildSectionDevice(data: DeviceInfo, addExtraTopMargin: Boolean) {
|
||||||
val lastSeenIp = data.lastSeenIp
|
val lastSeenIp = data.lastSeenIp
|
||||||
|
|
||||||
buildHeaderItem(R.string.device_manager_session_details_section_device_title)
|
buildHeaderItem(R.string.device_manager_session_details_section_device_title, addExtraTopMargin)
|
||||||
|
|
||||||
// TODO hide divider on the last visible item
|
// TODO hide divider on the last visible item
|
||||||
lastSeenIp?.let {
|
lastSeenIp?.let {
|
||||||
|
@ -16,12 +16,18 @@
|
|||||||
|
|
||||||
package im.vector.app.features.settings.devices.v2.details
|
package im.vector.app.features.settings.devices.v2.details
|
||||||
|
|
||||||
|
import android.view.ViewGroup
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
|
import androidx.core.view.updateLayoutParams
|
||||||
|
import androidx.core.view.updateMargins
|
||||||
import com.airbnb.epoxy.EpoxyAttribute
|
import com.airbnb.epoxy.EpoxyAttribute
|
||||||
import com.airbnb.epoxy.EpoxyModelClass
|
import com.airbnb.epoxy.EpoxyModelClass
|
||||||
import im.vector.app.R
|
import im.vector.app.R
|
||||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||||
import im.vector.app.core.epoxy.VectorEpoxyModel
|
import im.vector.app.core.epoxy.VectorEpoxyModel
|
||||||
|
import im.vector.app.core.utils.DimensionConverter
|
||||||
|
|
||||||
|
private const val EXTRA_TOP_MARGIN_DP = 48
|
||||||
|
|
||||||
@EpoxyModelClass
|
@EpoxyModelClass
|
||||||
abstract class SessionDetailsHeaderItem : VectorEpoxyModel<SessionDetailsHeaderItem.Holder>(R.layout.item_session_details_header) {
|
abstract class SessionDetailsHeaderItem : VectorEpoxyModel<SessionDetailsHeaderItem.Holder>(R.layout.item_session_details_header) {
|
||||||
@ -29,9 +35,23 @@ abstract class SessionDetailsHeaderItem : VectorEpoxyModel<SessionDetailsHeaderI
|
|||||||
@EpoxyAttribute
|
@EpoxyAttribute
|
||||||
var title: String? = null
|
var title: String? = null
|
||||||
|
|
||||||
|
@EpoxyAttribute
|
||||||
|
var addExtraTopMargin: Boolean = false
|
||||||
|
|
||||||
|
@EpoxyAttribute(EpoxyAttribute.Option.DoNotHash)
|
||||||
|
var dimensionConverter: DimensionConverter? = null
|
||||||
|
|
||||||
override fun bind(holder: Holder) {
|
override fun bind(holder: Holder) {
|
||||||
super.bind(holder)
|
super.bind(holder)
|
||||||
holder.sessionDetailsHeaderTitle.text = title
|
holder.sessionDetailsHeaderTitle.text = title
|
||||||
|
val topMargin = if (addExtraTopMargin) {
|
||||||
|
dimensionConverter?.dpToPx(EXTRA_TOP_MARGIN_DP) ?: 0
|
||||||
|
} else {
|
||||||
|
0
|
||||||
|
}
|
||||||
|
holder.sessionDetailsHeaderTitle.updateLayoutParams<ViewGroup.MarginLayoutParams> {
|
||||||
|
updateMargins(top = topMargin)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class Holder : VectorEpoxyHolder() {
|
class Holder : VectorEpoxyHolder() {
|
||||||
|
Loading…
Reference in New Issue
Block a user