Add checked mark on the current item
This commit is contained in:
parent
4641f77842
commit
f30eb4af8a
@ -16,10 +16,12 @@
|
||||
|
||||
package im.vector.app.features.roomdirectory.picker
|
||||
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.ImageView
|
||||
import android.widget.TextView
|
||||
import androidx.core.view.isInvisible
|
||||
import androidx.core.view.isVisible
|
||||
import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import im.vector.app.R
|
||||
@ -43,6 +45,9 @@ abstract class RoomDirectoryItem : VectorEpoxyModel<RoomDirectoryItem.Holder>()
|
||||
@EpoxyAttribute
|
||||
var includeAllNetworks: Boolean = false
|
||||
|
||||
@EpoxyAttribute
|
||||
var checked: Boolean = false
|
||||
|
||||
@EpoxyAttribute
|
||||
var globalListener: (() -> Unit)? = null
|
||||
|
||||
@ -63,6 +68,7 @@ abstract class RoomDirectoryItem : VectorEpoxyModel<RoomDirectoryItem.Holder>()
|
||||
|
||||
holder.nameView.text = directoryName
|
||||
holder.descriptionView.setTextOrHide(directoryDescription)
|
||||
holder.checkedView.isVisible = checked
|
||||
}
|
||||
|
||||
class Holder : VectorEpoxyHolder() {
|
||||
@ -71,5 +77,6 @@ abstract class RoomDirectoryItem : VectorEpoxyModel<RoomDirectoryItem.Holder>()
|
||||
val avatarView by bind<ImageView>(R.id.itemRoomDirectoryAvatar)
|
||||
val nameView by bind<TextView>(R.id.itemRoomDirectoryName)
|
||||
val descriptionView by bind<TextView>(R.id.itemRoomDirectoryDescription)
|
||||
val checkedView by bind<View>(R.id.itemRoomDirectoryChecked)
|
||||
}
|
||||
}
|
||||
|
@ -39,6 +39,7 @@ class RoomDirectoryPickerController @Inject constructor(
|
||||
private val roomDirectoryListCreator: RoomDirectoryListCreator
|
||||
) : TypedEpoxyController<RoomDirectoryPickerViewState>() {
|
||||
|
||||
var currentRoomDirectoryData: RoomDirectoryData? = null
|
||||
var callback: Callback? = null
|
||||
|
||||
private val dividerColor = colorProvider.getColorFromAttribute(R.attr.vctr_list_divider_color)
|
||||
@ -105,7 +106,7 @@ class RoomDirectoryPickerController @Inject constructor(
|
||||
}
|
||||
directoryAvatarUrl(roomDirectoryData.avatarUrl)
|
||||
includeAllNetworks(roomDirectoryData.includeAllNetworks)
|
||||
|
||||
checked(roomDirectoryData == host.currentRoomDirectoryData)
|
||||
globalListener {
|
||||
host.callback?.onRoomDirectoryClicked(roomDirectoryData)
|
||||
}
|
||||
|
@ -64,6 +64,11 @@ class RoomDirectoryPickerFragment @Inject constructor(val roomDirectoryPickerVie
|
||||
|
||||
sharedActionViewModel = activityViewModelProvider.get(RoomDirectorySharedActionViewModel::class.java)
|
||||
setupRecyclerView()
|
||||
|
||||
// Give the current data to our controller. There maybe a better way to do that...
|
||||
withState(viewModel) {
|
||||
roomDirectoryPickerController.currentRoomDirectoryData = it.roomDirectoryData
|
||||
}
|
||||
}
|
||||
|
||||
override fun onDestroyView() {
|
||||
|
@ -30,7 +30,7 @@
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginEnd="@dimen/layout_horizontal_margin"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:ellipsize="end"
|
||||
android:lines="1"
|
||||
android:maxLines="2"
|
||||
@ -38,10 +38,11 @@
|
||||
android:textSize="15sp"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintBottom_toTopOf="@+id/itemRoomDirectoryDescription"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintEnd_toStartOf="@+id/itemRoomDirectoryChecked"
|
||||
app:layout_constraintStart_toEndOf="@id/itemRoomDirectoryAvatar"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintVertical_chainStyle="packed"
|
||||
app:layout_goneMarginEnd="@dimen/layout_horizontal_margin"
|
||||
tools:text="@tools:sample/lorem/random" />
|
||||
|
||||
<TextView
|
||||
@ -49,7 +50,7 @@
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginEnd="@dimen/layout_horizontal_margin"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:ellipsize="end"
|
||||
android:lines="1"
|
||||
android:maxLines="2"
|
||||
@ -57,10 +58,26 @@
|
||||
android:textSize="14sp"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintEnd_toStartOf="@+id/itemRoomDirectoryChecked"
|
||||
app:layout_constraintStart_toEndOf="@id/itemRoomDirectoryAvatar"
|
||||
app:layout_constraintTop_toBottomOf="@id/itemRoomDirectoryName"
|
||||
app:layout_goneMarginEnd="@dimen/layout_horizontal_margin"
|
||||
tools:text="@string/directory_server_native_rooms"
|
||||
tools:visibility="visible" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/itemRoomDirectoryChecked"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/layout_horizontal_margin"
|
||||
android:layout_marginEnd="@dimen/layout_horizontal_margin"
|
||||
android:contentDescription="@string/avatar"
|
||||
android:padding="8dp"
|
||||
android:src="@drawable/ic_check_on"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:visibility="visible" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
Loading…
x
Reference in New Issue
Block a user