refactor: remove databinding from base_item, collection_item, episode_item, home_episode_item, person_item, season_header, user_item and user_list_item
Also completely disable databinding in app:phone
This commit is contained in:
parent
b81025b847
commit
1183ae796c
18 changed files with 486 additions and 592 deletions
|
@ -70,7 +70,6 @@ android {
|
||||||
}
|
}
|
||||||
|
|
||||||
buildFeatures {
|
buildFeatures {
|
||||||
dataBinding = true
|
|
||||||
viewBinding = true
|
viewBinding = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,6 @@ package dev.jdtech.jellyfin
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.widget.ImageView
|
import android.widget.ImageView
|
||||||
import androidx.annotation.DrawableRes
|
import androidx.annotation.DrawableRes
|
||||||
import androidx.databinding.BindingAdapter
|
|
||||||
import coil.load
|
import coil.load
|
||||||
import dev.jdtech.jellyfin.api.JellyfinApi
|
import dev.jdtech.jellyfin.api.JellyfinApi
|
||||||
import dev.jdtech.jellyfin.models.FindroidEpisode
|
import dev.jdtech.jellyfin.models.FindroidEpisode
|
||||||
|
@ -17,7 +16,6 @@ import org.jellyfin.sdk.model.api.ImageType
|
||||||
import java.util.UUID
|
import java.util.UUID
|
||||||
import dev.jdtech.jellyfin.core.R as CoreR
|
import dev.jdtech.jellyfin.core.R as CoreR
|
||||||
|
|
||||||
@BindingAdapter("itemImage")
|
|
||||||
fun bindItemImage(imageView: ImageView, item: BaseItemDto) {
|
fun bindItemImage(imageView: ImageView, item: BaseItemDto) {
|
||||||
val itemId =
|
val itemId =
|
||||||
if (item.type == BaseItemKind.EPISODE || item.type == BaseItemKind.SEASON && item.imageTags.isNullOrEmpty()) item.seriesId else item.id
|
if (item.type == BaseItemKind.EPISODE || item.type == BaseItemKind.SEASON && item.imageTags.isNullOrEmpty()) item.seriesId else item.id
|
||||||
|
@ -27,7 +25,6 @@ fun bindItemImage(imageView: ImageView, item: BaseItemDto) {
|
||||||
.posterDescription(item.name)
|
.posterDescription(item.name)
|
||||||
}
|
}
|
||||||
|
|
||||||
@BindingAdapter("itemImage")
|
|
||||||
fun bindItemImage(imageView: ImageView, item: FindroidItem) {
|
fun bindItemImage(imageView: ImageView, item: FindroidItem) {
|
||||||
val itemId = when (item) {
|
val itemId = when (item) {
|
||||||
is FindroidEpisode -> item.seriesId
|
is FindroidEpisode -> item.seriesId
|
||||||
|
@ -39,7 +36,6 @@ fun bindItemImage(imageView: ImageView, item: FindroidItem) {
|
||||||
.posterDescription(item.name)
|
.posterDescription(item.name)
|
||||||
}
|
}
|
||||||
|
|
||||||
@BindingAdapter("itemBackdropImage")
|
|
||||||
fun bindItemBackdropImage(imageView: ImageView, item: FindroidItem?) {
|
fun bindItemBackdropImage(imageView: ImageView, item: FindroidItem?) {
|
||||||
if (item == null) return
|
if (item == null) return
|
||||||
|
|
||||||
|
@ -48,19 +44,16 @@ fun bindItemBackdropImage(imageView: ImageView, item: FindroidItem?) {
|
||||||
.backdropDescription(item.name)
|
.backdropDescription(item.name)
|
||||||
}
|
}
|
||||||
|
|
||||||
@BindingAdapter("itemBackdropById")
|
|
||||||
fun bindItemBackdropById(imageView: ImageView, itemId: UUID) {
|
fun bindItemBackdropById(imageView: ImageView, itemId: UUID) {
|
||||||
imageView.loadImage("/items/$itemId/Images/${ImageType.BACKDROP}")
|
imageView.loadImage("/items/$itemId/Images/${ImageType.BACKDROP}")
|
||||||
}
|
}
|
||||||
|
|
||||||
@BindingAdapter("personImage")
|
|
||||||
fun bindPersonImage(imageView: ImageView, person: BaseItemPerson) {
|
fun bindPersonImage(imageView: ImageView, person: BaseItemPerson) {
|
||||||
imageView
|
imageView
|
||||||
.loadImage("/items/${person.id}/Images/${ImageType.PRIMARY}", placeholderId = CoreR.drawable.person_placeholder)
|
.loadImage("/items/${person.id}/Images/${ImageType.PRIMARY}", placeholderId = CoreR.drawable.person_placeholder)
|
||||||
.posterDescription(person.name)
|
.posterDescription(person.name)
|
||||||
}
|
}
|
||||||
|
|
||||||
@BindingAdapter("cardItemImage")
|
|
||||||
fun bindCardItemImage(imageView: ImageView, item: FindroidItem) {
|
fun bindCardItemImage(imageView: ImageView, item: FindroidItem) {
|
||||||
val imageType = when (item) {
|
val imageType = when (item) {
|
||||||
is FindroidMovie -> ImageType.BACKDROP
|
is FindroidMovie -> ImageType.BACKDROP
|
||||||
|
@ -72,12 +65,10 @@ fun bindCardItemImage(imageView: ImageView, item: FindroidItem) {
|
||||||
.posterDescription(item.name)
|
.posterDescription(item.name)
|
||||||
}
|
}
|
||||||
|
|
||||||
@BindingAdapter("seasonPoster")
|
|
||||||
fun bindSeasonPoster(imageView: ImageView, seasonId: UUID) {
|
fun bindSeasonPoster(imageView: ImageView, seasonId: UUID) {
|
||||||
imageView.loadImage("/items/$seasonId/Images/${ImageType.PRIMARY}")
|
imageView.loadImage("/items/$seasonId/Images/${ImageType.PRIMARY}")
|
||||||
}
|
}
|
||||||
|
|
||||||
@BindingAdapter("userImage")
|
|
||||||
fun bindUserImage(imageView: ImageView, user: User) {
|
fun bindUserImage(imageView: ImageView, user: User) {
|
||||||
imageView
|
imageView
|
||||||
.loadImage("/users/${user.id}/Images/${ImageType.PRIMARY}", placeholderId = CoreR.drawable.user_placeholder)
|
.loadImage("/users/${user.id}/Images/${ImageType.PRIMARY}", placeholderId = CoreR.drawable.user_placeholder)
|
||||||
|
|
|
@ -5,6 +5,7 @@ import android.view.ViewGroup
|
||||||
import androidx.recyclerview.widget.DiffUtil
|
import androidx.recyclerview.widget.DiffUtil
|
||||||
import androidx.recyclerview.widget.ListAdapter
|
import androidx.recyclerview.widget.ListAdapter
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
|
import dev.jdtech.jellyfin.bindCardItemImage
|
||||||
import dev.jdtech.jellyfin.databinding.CollectionItemBinding
|
import dev.jdtech.jellyfin.databinding.CollectionItemBinding
|
||||||
import dev.jdtech.jellyfin.models.FindroidCollection
|
import dev.jdtech.jellyfin.models.FindroidCollection
|
||||||
|
|
||||||
|
@ -14,8 +15,8 @@ class CollectionListAdapter(
|
||||||
class CollectionViewHolder(private var binding: CollectionItemBinding) :
|
class CollectionViewHolder(private var binding: CollectionItemBinding) :
|
||||||
RecyclerView.ViewHolder(binding.root) {
|
RecyclerView.ViewHolder(binding.root) {
|
||||||
fun bind(collection: FindroidCollection) {
|
fun bind(collection: FindroidCollection) {
|
||||||
binding.collection = collection
|
binding.collectionName.text = collection.name
|
||||||
binding.executePendingBindings()
|
bindCardItemImage(binding.collectionImage, collection)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,9 @@ import androidx.core.view.isVisible
|
||||||
import androidx.recyclerview.widget.DiffUtil
|
import androidx.recyclerview.widget.DiffUtil
|
||||||
import androidx.recyclerview.widget.ListAdapter
|
import androidx.recyclerview.widget.ListAdapter
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
|
import dev.jdtech.jellyfin.bindCardItemImage
|
||||||
|
import dev.jdtech.jellyfin.bindItemBackdropById
|
||||||
|
import dev.jdtech.jellyfin.bindSeasonPoster
|
||||||
import dev.jdtech.jellyfin.databinding.EpisodeItemBinding
|
import dev.jdtech.jellyfin.databinding.EpisodeItemBinding
|
||||||
import dev.jdtech.jellyfin.databinding.SeasonHeaderBinding
|
import dev.jdtech.jellyfin.databinding.SeasonHeaderBinding
|
||||||
import dev.jdtech.jellyfin.models.EpisodeItem
|
import dev.jdtech.jellyfin.models.EpisodeItem
|
||||||
|
@ -26,25 +29,24 @@ class EpisodeListAdapter(
|
||||||
class HeaderViewHolder(private var binding: SeasonHeaderBinding) :
|
class HeaderViewHolder(private var binding: SeasonHeaderBinding) :
|
||||||
RecyclerView.ViewHolder(binding.root) {
|
RecyclerView.ViewHolder(binding.root) {
|
||||||
fun bind(header: EpisodeItem.Header) {
|
fun bind(header: EpisodeItem.Header) {
|
||||||
binding.seriesId = header.seriesId
|
|
||||||
binding.seasonId = header.seasonId
|
|
||||||
binding.seasonName.text = header.seasonName
|
binding.seasonName.text = header.seasonName
|
||||||
binding.seriesName.text = header.seriesName
|
binding.seriesName.text = header.seriesName
|
||||||
binding.executePendingBindings()
|
bindItemBackdropById(binding.itemBanner, header.seriesId)
|
||||||
|
bindSeasonPoster(binding.seasonPoster, header.seasonId)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class EpisodeViewHolder(private var binding: EpisodeItemBinding) :
|
class EpisodeViewHolder(private var binding: EpisodeItemBinding) :
|
||||||
RecyclerView.ViewHolder(binding.root) {
|
RecyclerView.ViewHolder(binding.root) {
|
||||||
fun bind(episode: FindroidEpisode) {
|
fun bind(episode: FindroidEpisode) {
|
||||||
binding.episode = episode
|
|
||||||
|
|
||||||
binding.episodeTitle.text = if (episode.indexNumberEnd == null) {
|
binding.episodeTitle.text = if (episode.indexNumberEnd == null) {
|
||||||
binding.root.context.getString(CoreR.string.episode_name, episode.indexNumber, episode.name)
|
binding.root.context.getString(CoreR.string.episode_name, episode.indexNumber, episode.name)
|
||||||
} else {
|
} else {
|
||||||
binding.root.context.getString(CoreR.string.episode_name_with_end, episode.indexNumber, episode.indexNumberEnd, episode.name)
|
binding.root.context.getString(CoreR.string.episode_name_with_end, episode.indexNumber, episode.indexNumberEnd, episode.name)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
binding.episodeOverview.text = episode.overview
|
||||||
|
|
||||||
if (episode.playbackPositionTicks > 0) {
|
if (episode.playbackPositionTicks > 0) {
|
||||||
binding.progressBar.layoutParams.width = TypedValue.applyDimension(
|
binding.progressBar.layoutParams.width = TypedValue.applyDimension(
|
||||||
TypedValue.COMPLEX_UNIT_DIP,
|
TypedValue.COMPLEX_UNIT_DIP,
|
||||||
|
@ -56,9 +58,11 @@ class EpisodeListAdapter(
|
||||||
binding.progressBar.visibility = View.GONE
|
binding.progressBar.visibility = View.GONE
|
||||||
}
|
}
|
||||||
|
|
||||||
|
binding.playedIcon.isVisible = episode.played
|
||||||
|
binding.missingIcon.isVisible = episode.missing
|
||||||
binding.downloadedIcon.isVisible = episode.isDownloaded()
|
binding.downloadedIcon.isVisible = episode.isDownloaded()
|
||||||
|
|
||||||
binding.executePendingBindings()
|
bindCardItemImage(binding.episodeImage, episode)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,7 @@ import androidx.core.view.isVisible
|
||||||
import androidx.recyclerview.widget.DiffUtil
|
import androidx.recyclerview.widget.DiffUtil
|
||||||
import androidx.recyclerview.widget.ListAdapter
|
import androidx.recyclerview.widget.ListAdapter
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
|
import dev.jdtech.jellyfin.bindCardItemImage
|
||||||
import dev.jdtech.jellyfin.databinding.HomeEpisodeItemBinding
|
import dev.jdtech.jellyfin.databinding.HomeEpisodeItemBinding
|
||||||
import dev.jdtech.jellyfin.models.FindroidEpisode
|
import dev.jdtech.jellyfin.models.FindroidEpisode
|
||||||
import dev.jdtech.jellyfin.models.FindroidItem
|
import dev.jdtech.jellyfin.models.FindroidItem
|
||||||
|
@ -22,7 +23,6 @@ class HomeEpisodeListAdapter(private val onClickListener: OnClickListener) : Lis
|
||||||
) :
|
) :
|
||||||
RecyclerView.ViewHolder(binding.root) {
|
RecyclerView.ViewHolder(binding.root) {
|
||||||
fun bind(item: FindroidItem) {
|
fun bind(item: FindroidItem) {
|
||||||
binding.item = item
|
|
||||||
if (item.playbackPositionTicks > 0) {
|
if (item.playbackPositionTicks > 0) {
|
||||||
binding.progressBar.layoutParams.width = TypedValue.applyDimension(
|
binding.progressBar.layoutParams.width = TypedValue.applyDimension(
|
||||||
TypedValue.COMPLEX_UNIT_DIP,
|
TypedValue.COMPLEX_UNIT_DIP,
|
||||||
|
@ -49,7 +49,7 @@ class HomeEpisodeListAdapter(private val onClickListener: OnClickListener) : Lis
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
binding.executePendingBindings()
|
bindCardItemImage(binding.episodeImage, item)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,7 @@ import android.view.ViewGroup
|
||||||
import androidx.recyclerview.widget.DiffUtil
|
import androidx.recyclerview.widget.DiffUtil
|
||||||
import androidx.recyclerview.widget.ListAdapter
|
import androidx.recyclerview.widget.ListAdapter
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
|
import dev.jdtech.jellyfin.bindPersonImage
|
||||||
import dev.jdtech.jellyfin.databinding.PersonItemBinding
|
import dev.jdtech.jellyfin.databinding.PersonItemBinding
|
||||||
import org.jellyfin.sdk.model.api.BaseItemPerson
|
import org.jellyfin.sdk.model.api.BaseItemPerson
|
||||||
|
|
||||||
|
@ -13,8 +14,9 @@ class PersonListAdapter(private val clickListener: (item: BaseItemPerson) -> Uni
|
||||||
class PersonViewHolder(private var binding: PersonItemBinding) :
|
class PersonViewHolder(private var binding: PersonItemBinding) :
|
||||||
RecyclerView.ViewHolder(binding.root) {
|
RecyclerView.ViewHolder(binding.root) {
|
||||||
fun bind(person: BaseItemPerson) {
|
fun bind(person: BaseItemPerson) {
|
||||||
binding.person = person
|
binding.personName.text = person.name
|
||||||
binding.executePendingBindings()
|
binding.personRole.text = person.role
|
||||||
|
bindPersonImage(binding.personImage, person)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,7 @@ import android.view.ViewGroup
|
||||||
import androidx.recyclerview.widget.DiffUtil
|
import androidx.recyclerview.widget.DiffUtil
|
||||||
import androidx.recyclerview.widget.ListAdapter
|
import androidx.recyclerview.widget.ListAdapter
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
|
import dev.jdtech.jellyfin.bindUserImage
|
||||||
import dev.jdtech.jellyfin.databinding.UserListItemBinding
|
import dev.jdtech.jellyfin.databinding.UserListItemBinding
|
||||||
import dev.jdtech.jellyfin.models.User
|
import dev.jdtech.jellyfin.models.User
|
||||||
|
|
||||||
|
@ -15,8 +16,8 @@ class UserListAdapter(
|
||||||
class UserViewHolder(private var binding: UserListItemBinding) :
|
class UserViewHolder(private var binding: UserListItemBinding) :
|
||||||
RecyclerView.ViewHolder(binding.root) {
|
RecyclerView.ViewHolder(binding.root) {
|
||||||
fun bind(user: User) {
|
fun bind(user: User) {
|
||||||
binding.user = user
|
binding.userName.text = user.name
|
||||||
binding.executePendingBindings()
|
bindUserImage(binding.userImage, user)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,7 @@ import android.view.ViewGroup
|
||||||
import androidx.recyclerview.widget.DiffUtil
|
import androidx.recyclerview.widget.DiffUtil
|
||||||
import androidx.recyclerview.widget.ListAdapter
|
import androidx.recyclerview.widget.ListAdapter
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
|
import dev.jdtech.jellyfin.bindUserImage
|
||||||
import dev.jdtech.jellyfin.databinding.UserItemBinding
|
import dev.jdtech.jellyfin.databinding.UserItemBinding
|
||||||
import dev.jdtech.jellyfin.models.User
|
import dev.jdtech.jellyfin.models.User
|
||||||
|
|
||||||
|
@ -14,8 +15,8 @@ class UserLoginListAdapter(
|
||||||
class UserLoginViewHolder(private var binding: UserItemBinding) :
|
class UserLoginViewHolder(private var binding: UserItemBinding) :
|
||||||
RecyclerView.ViewHolder(binding.root) {
|
RecyclerView.ViewHolder(binding.root) {
|
||||||
fun bind(user: User) {
|
fun bind(user: User) {
|
||||||
binding.user = user
|
binding.userName.text = user.name
|
||||||
binding.executePendingBindings()
|
bindUserImage(binding.userImage, user)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,7 @@ import androidx.core.view.isVisible
|
||||||
import androidx.recyclerview.widget.DiffUtil
|
import androidx.recyclerview.widget.DiffUtil
|
||||||
import androidx.recyclerview.widget.ListAdapter
|
import androidx.recyclerview.widget.ListAdapter
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
|
import dev.jdtech.jellyfin.bindItemImage
|
||||||
import dev.jdtech.jellyfin.databinding.BaseItemBinding
|
import dev.jdtech.jellyfin.databinding.BaseItemBinding
|
||||||
import dev.jdtech.jellyfin.models.FindroidEpisode
|
import dev.jdtech.jellyfin.models.FindroidEpisode
|
||||||
import dev.jdtech.jellyfin.models.FindroidItem
|
import dev.jdtech.jellyfin.models.FindroidItem
|
||||||
|
@ -21,7 +22,6 @@ class ViewItemListAdapter(
|
||||||
class ItemViewHolder(private var binding: BaseItemBinding, private val parent: ViewGroup) :
|
class ItemViewHolder(private var binding: BaseItemBinding, private val parent: ViewGroup) :
|
||||||
RecyclerView.ViewHolder(binding.root) {
|
RecyclerView.ViewHolder(binding.root) {
|
||||||
fun bind(item: FindroidItem, fixedWidth: Boolean) {
|
fun bind(item: FindroidItem, fixedWidth: Boolean) {
|
||||||
binding.item = item
|
|
||||||
binding.itemName.text = if (item is FindroidEpisode) item.seriesName else item.name
|
binding.itemName.text = if (item is FindroidEpisode) item.seriesName else item.name
|
||||||
binding.itemCount.visibility =
|
binding.itemCount.visibility =
|
||||||
if (item.unplayedItemCount != null && item.unplayedItemCount!! > 0) View.VISIBLE else View.GONE
|
if (item.unplayedItemCount != null && item.unplayedItemCount!! > 0) View.VISIBLE else View.GONE
|
||||||
|
@ -31,9 +31,11 @@ class ViewItemListAdapter(
|
||||||
(binding.itemLayout.layoutParams as ViewGroup.MarginLayoutParams).bottomMargin = 0
|
(binding.itemLayout.layoutParams as ViewGroup.MarginLayoutParams).bottomMargin = 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
binding.itemCount.text = item.unplayedItemCount.toString()
|
||||||
|
binding.playedIcon.isVisible = item.played
|
||||||
binding.downloadedIcon.isVisible = item.isDownloaded()
|
binding.downloadedIcon.isVisible = item.isDownloaded()
|
||||||
|
|
||||||
binding.executePendingBindings()
|
bindItemImage(binding.itemImage, item)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,7 @@ import androidx.core.view.isVisible
|
||||||
import androidx.paging.PagingDataAdapter
|
import androidx.paging.PagingDataAdapter
|
||||||
import androidx.recyclerview.widget.DiffUtil
|
import androidx.recyclerview.widget.DiffUtil
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
|
import dev.jdtech.jellyfin.bindItemImage
|
||||||
import dev.jdtech.jellyfin.databinding.BaseItemBinding
|
import dev.jdtech.jellyfin.databinding.BaseItemBinding
|
||||||
import dev.jdtech.jellyfin.models.FindroidEpisode
|
import dev.jdtech.jellyfin.models.FindroidEpisode
|
||||||
import dev.jdtech.jellyfin.models.FindroidItem
|
import dev.jdtech.jellyfin.models.FindroidItem
|
||||||
|
@ -21,7 +22,6 @@ class ViewItemPagingAdapter(
|
||||||
class ItemViewHolder(private var binding: BaseItemBinding, private val parent: ViewGroup) :
|
class ItemViewHolder(private var binding: BaseItemBinding, private val parent: ViewGroup) :
|
||||||
RecyclerView.ViewHolder(binding.root) {
|
RecyclerView.ViewHolder(binding.root) {
|
||||||
fun bind(item: FindroidItem, fixedWidth: Boolean) {
|
fun bind(item: FindroidItem, fixedWidth: Boolean) {
|
||||||
binding.item = item
|
|
||||||
binding.itemName.text =
|
binding.itemName.text =
|
||||||
if (item is FindroidEpisode) item.seriesName else item.name
|
if (item is FindroidEpisode) item.seriesName else item.name
|
||||||
binding.itemCount.visibility =
|
binding.itemCount.visibility =
|
||||||
|
@ -32,9 +32,11 @@ class ViewItemPagingAdapter(
|
||||||
(binding.itemLayout.layoutParams as ViewGroup.MarginLayoutParams).bottomMargin = 0
|
(binding.itemLayout.layoutParams as ViewGroup.MarginLayoutParams).bottomMargin = 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
binding.itemCount.text = item.unplayedItemCount.toString()
|
||||||
|
binding.playedIcon.isVisible = item.played
|
||||||
binding.downloadedIcon.isVisible = item.isDownloaded()
|
binding.downloadedIcon.isVisible = item.isDownloaded()
|
||||||
|
|
||||||
binding.executePendingBindings()
|
bindItemImage(binding.itemImage, item)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,18 +1,7 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<layout xmlns:android="http://schemas.android.com/apk/res/android"
|
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
xmlns:tools="http://schemas.android.com/tools">
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
|
||||||
<data>
|
|
||||||
|
|
||||||
<import type="android.view.View" />
|
|
||||||
|
|
||||||
<variable
|
|
||||||
name="item"
|
|
||||||
type="dev.jdtech.jellyfin.models.FindroidItem" />
|
|
||||||
</data>
|
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
|
||||||
android:id="@+id/item_layout"
|
android:id="@+id/item_layout"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
@ -28,7 +17,6 @@
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="0dp"
|
android:layout_height="0dp"
|
||||||
android:scaleType="centerCrop"
|
android:scaleType="centerCrop"
|
||||||
app:itemImage="@{item}"
|
|
||||||
app:layout_constraintDimensionRatio="H,2:3"
|
app:layout_constraintDimensionRatio="H,2:3"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
@ -50,9 +38,9 @@
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="horizontal"
|
|
||||||
android:layout_marginTop="8dp"
|
android:layout_marginTop="8dp"
|
||||||
android:layout_marginEnd="8dp"
|
android:layout_marginEnd="8dp"
|
||||||
|
android:orientation="horizontal"
|
||||||
app:layout_constraintEnd_toEndOf="@id/item_image"
|
app:layout_constraintEnd_toEndOf="@id/item_image"
|
||||||
app:layout_constraintTop_toTopOf="@id/item_image">
|
app:layout_constraintTop_toTopOf="@id/item_image">
|
||||||
|
|
||||||
|
@ -76,7 +64,6 @@
|
||||||
android:layout_marginStart="8dp"
|
android:layout_marginStart="8dp"
|
||||||
android:background="@drawable/circle_background"
|
android:background="@drawable/circle_background"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:text="@{item.unplayedItemCount.toString()}"
|
|
||||||
android:textAppearance="@style/TextAppearance.Material3.BodySmall"
|
android:textAppearance="@style/TextAppearance.Material3.BodySmall"
|
||||||
android:textColor="?attr/colorOnPrimary"
|
android:textColor="?attr/colorOnPrimary"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
@ -92,7 +79,6 @@
|
||||||
android:contentDescription="@string/episode_watched_indicator"
|
android:contentDescription="@string/episode_watched_indicator"
|
||||||
android:padding="4dp"
|
android:padding="4dp"
|
||||||
android:src="@drawable/ic_check"
|
android:src="@drawable/ic_check"
|
||||||
android:visibility="@{item.played == true ? View.VISIBLE : View.GONE}"
|
|
||||||
app:layout_constraintEnd_toEndOf="@id/item_image"
|
app:layout_constraintEnd_toEndOf="@id/item_image"
|
||||||
app:layout_constraintTop_toTopOf="@id/item_image"
|
app:layout_constraintTop_toTopOf="@id/item_image"
|
||||||
app:tint="?attr/colorOnPrimary" />
|
app:tint="?attr/colorOnPrimary" />
|
||||||
|
@ -100,4 +86,3 @@
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
</layout>
|
|
|
@ -1,16 +1,7 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<layout xmlns:android="http://schemas.android.com/apk/res/android"
|
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
xmlns:tools="http://schemas.android.com/tools">
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
|
||||||
<data>
|
|
||||||
|
|
||||||
<variable
|
|
||||||
name="collection"
|
|
||||||
type="dev.jdtech.jellyfin.models.FindroidCollection" />
|
|
||||||
</data>
|
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginHorizontal="12dp"
|
android:layout_marginHorizontal="12dp"
|
||||||
|
@ -26,7 +17,6 @@
|
||||||
android:layout_height="0dp"
|
android:layout_height="0dp"
|
||||||
android:adjustViewBounds="true"
|
android:adjustViewBounds="true"
|
||||||
android:scaleType="centerCrop"
|
android:scaleType="centerCrop"
|
||||||
app:cardItemImage="@{collection}"
|
|
||||||
app:layout_constraintDimensionRatio="H,16:9"
|
app:layout_constraintDimensionRatio="H,16:9"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
@ -34,14 +24,13 @@
|
||||||
app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.Findroid.Image" />
|
app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.Findroid.Image" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
|
android:id="@+id/collection_name"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="4dp"
|
android:layout_marginTop="4dp"
|
||||||
android:text="@{collection.name}"
|
|
||||||
android:textAppearance="@style/TextAppearance.Material3.BodyMedium"
|
android:textAppearance="@style/TextAppearance.Material3.BodyMedium"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@id/collection_image"
|
app:layout_constraintTop_toBottomOf="@id/collection_image"
|
||||||
tools:text="Movies" />
|
tools:text="Movies" />
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
</layout>
|
|
|
@ -1,18 +1,7 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<layout xmlns:android="http://schemas.android.com/apk/res/android"
|
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
xmlns:tools="http://schemas.android.com/tools">
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
|
||||||
<data>
|
|
||||||
|
|
||||||
<import type="android.view.View" />
|
|
||||||
|
|
||||||
<variable
|
|
||||||
name="episode"
|
|
||||||
type="dev.jdtech.jellyfin.models.FindroidEpisode" />
|
|
||||||
</data>
|
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="100dp"
|
android:layout_height="100dp"
|
||||||
android:layout_marginHorizontal="24dp"
|
android:layout_marginHorizontal="24dp"
|
||||||
|
@ -26,7 +15,6 @@
|
||||||
android:layout_width="100dp"
|
android:layout_width="100dp"
|
||||||
android:layout_height="100dp"
|
android:layout_height="100dp"
|
||||||
android:scaleType="centerCrop"
|
android:scaleType="centerCrop"
|
||||||
app:cardItemImage="@{episode}"
|
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
|
@ -63,7 +51,6 @@
|
||||||
android:layout_marginStart="8dp"
|
android:layout_marginStart="8dp"
|
||||||
android:background="@drawable/circle_background"
|
android:background="@drawable/circle_background"
|
||||||
android:backgroundTint="?attr/colorError"
|
android:backgroundTint="?attr/colorError"
|
||||||
android:visibility="@{episode.missing ? View.VISIBLE : View.GONE}"
|
|
||||||
app:layout_constraintEnd_toStartOf="@id/played_icon"
|
app:layout_constraintEnd_toStartOf="@id/played_icon"
|
||||||
app:layout_constraintTop_toTopOf="@id/episode_image"
|
app:layout_constraintTop_toTopOf="@id/episode_image"
|
||||||
tools:visibility="visible">
|
tools:visibility="visible">
|
||||||
|
@ -87,7 +74,6 @@
|
||||||
android:contentDescription="@string/episode_watched_indicator"
|
android:contentDescription="@string/episode_watched_indicator"
|
||||||
android:padding="4dp"
|
android:padding="4dp"
|
||||||
android:src="@drawable/ic_check"
|
android:src="@drawable/ic_check"
|
||||||
android:visibility="@{episode.played ? View.VISIBLE : View.GONE}"
|
|
||||||
app:layout_constraintEnd_toEndOf="@id/episode_image"
|
app:layout_constraintEnd_toEndOf="@id/episode_image"
|
||||||
app:layout_constraintTop_toTopOf="@id/episode_image"
|
app:layout_constraintTop_toTopOf="@id/episode_image"
|
||||||
app:tint="?attr/colorOnPrimary" />
|
app:tint="?attr/colorOnPrimary" />
|
||||||
|
@ -113,18 +99,17 @@
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="12dp"
|
android:layout_marginStart="12dp"
|
||||||
android:textAppearance="@style/TextAppearance.Material3.BodyMedium"
|
android:textAppearance="@style/TextAppearance.Material3.BodyMedium"
|
||||||
app:layout_constraintBottom_toTopOf="@id/episode_desc"
|
app:layout_constraintBottom_toTopOf="@id/episode_overview"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toEndOf="@id/episode_image"
|
app:layout_constraintStart_toEndOf="@id/episode_image"
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
tools:text="1. To You, in 2000 Years: The Fall of Shiganshina, Part 1" />
|
tools:text="1. To You, in 2000 Years: The Fall of Shiganshina, Part 1" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/episode_desc"
|
android:id="@+id/episode_overview"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="0dp"
|
android:layout_height="0dp"
|
||||||
android:scrollbars="none"
|
android:scrollbars="none"
|
||||||
android:text="@{episode.overview}"
|
|
||||||
android:textAppearance="@style/TextAppearance.Material3.BodySmall"
|
android:textAppearance="@style/TextAppearance.Material3.BodySmall"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
@ -136,8 +121,7 @@
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="24dp"
|
android:layout_height="24dp"
|
||||||
android:background="@drawable/header_gradient"
|
android:background="@drawable/header_gradient"
|
||||||
app:layout_constraintBottom_toBottomOf="@id/episode_desc"
|
app:layout_constraintBottom_toBottomOf="@id/episode_overview"
|
||||||
app:layout_constraintEnd_toEndOf="@id/episode_desc"
|
app:layout_constraintEnd_toEndOf="@id/episode_overview"
|
||||||
app:layout_constraintStart_toStartOf="@id/episode_desc" />
|
app:layout_constraintStart_toStartOf="@id/episode_overview" />
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
</layout>
|
|
|
@ -1,16 +1,7 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<layout xmlns:android="http://schemas.android.com/apk/res/android"
|
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
xmlns:tools="http://schemas.android.com/tools">
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
|
||||||
<data>
|
|
||||||
|
|
||||||
<variable
|
|
||||||
name="item"
|
|
||||||
type="dev.jdtech.jellyfin.models.FindroidItem" />
|
|
||||||
</data>
|
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
|
||||||
android:layout_width="240dp"
|
android:layout_width="240dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginHorizontal="12dp"
|
android:layout_marginHorizontal="12dp"
|
||||||
|
@ -23,7 +14,6 @@
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="0dp"
|
android:layout_height="0dp"
|
||||||
android:scaleType="centerCrop"
|
android:scaleType="centerCrop"
|
||||||
app:cardItemImage="@{item}"
|
|
||||||
app:layout_constraintDimensionRatio="H,16:9"
|
app:layout_constraintDimensionRatio="H,16:9"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
@ -85,4 +75,3 @@
|
||||||
tools:visibility="visible" />
|
tools:visibility="visible" />
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
</layout>
|
|
|
@ -1,16 +1,7 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<layout xmlns:android="http://schemas.android.com/apk/res/android"
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
xmlns:tools="http://schemas.android.com/tools">
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
|
||||||
<data>
|
|
||||||
|
|
||||||
<variable
|
|
||||||
name="person"
|
|
||||||
type="org.jellyfin.sdk.model.api.BaseItemPerson" />
|
|
||||||
</data>
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:id="@+id/item_layout"
|
android:id="@+id/item_layout"
|
||||||
android:layout_width="110dp"
|
android:layout_width="110dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
@ -26,7 +17,6 @@
|
||||||
android:layout_height="160dp"
|
android:layout_height="160dp"
|
||||||
android:layout_marginBottom="4dp"
|
android:layout_marginBottom="4dp"
|
||||||
android:scaleType="centerCrop"
|
android:scaleType="centerCrop"
|
||||||
app:personImage="@{person}"
|
|
||||||
app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.Findroid.Image" />
|
app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.Findroid.Image" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
|
@ -35,7 +25,6 @@
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:ellipsize="end"
|
android:ellipsize="end"
|
||||||
android:maxLines="1"
|
android:maxLines="1"
|
||||||
android:text="@{person.name}"
|
|
||||||
android:textAppearance="@style/TextAppearance.Material3.BodyMedium"
|
android:textAppearance="@style/TextAppearance.Material3.BodyMedium"
|
||||||
tools:text="Rosa Salazar" />
|
tools:text="Rosa Salazar" />
|
||||||
|
|
||||||
|
@ -45,8 +34,6 @@
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:ellipsize="end"
|
android:ellipsize="end"
|
||||||
android:maxLines="1"
|
android:maxLines="1"
|
||||||
android:text="@{person.role}"
|
|
||||||
android:textAppearance="@style/TextAppearance.Material3.BodySmall"
|
android:textAppearance="@style/TextAppearance.Material3.BodySmall"
|
||||||
tools:text="Alita" />
|
tools:text="Alita" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</layout>
|
|
|
@ -1,21 +1,7 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
<layout xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
xmlns:tools="http://schemas.android.com/tools">
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
|
||||||
<data>
|
|
||||||
|
|
||||||
<variable
|
|
||||||
name="seriesId"
|
|
||||||
type="java.util.UUID" />
|
|
||||||
|
|
||||||
<variable
|
|
||||||
name="seasonId"
|
|
||||||
type="java.util.UUID" />
|
|
||||||
</data>
|
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
|
||||||
android:id="@+id/header"
|
android:id="@+id/header"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="200dp"
|
android:layout_height="200dp"
|
||||||
|
@ -30,7 +16,6 @@
|
||||||
android:layout_height="200dp"
|
android:layout_height="200dp"
|
||||||
android:contentDescription="@string/series_poster"
|
android:contentDescription="@string/series_poster"
|
||||||
android:scaleType="centerCrop"
|
android:scaleType="centerCrop"
|
||||||
app:itemBackdropById="@{seriesId}"
|
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
@ -57,7 +42,6 @@
|
||||||
app:layout_constraintDimensionRatio="H,3:2"
|
app:layout_constraintDimensionRatio="H,3:2"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
app:seasonPoster="@{seasonId}"
|
|
||||||
app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.Findroid.Image" />
|
app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.Findroid.Image" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
|
@ -83,4 +67,3 @@
|
||||||
tools:text="Season 1" />
|
tools:text="Season 1" />
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
</layout>
|
|
||||||
|
|
|
@ -1,16 +1,7 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<layout xmlns:android="http://schemas.android.com/apk/res/android"
|
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
xmlns:tools="http://schemas.android.com/tools">
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
|
||||||
<data>
|
|
||||||
|
|
||||||
<variable
|
|
||||||
name="user"
|
|
||||||
type="dev.jdtech.jellyfin.models.User" />
|
|
||||||
</data>
|
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
|
||||||
android:layout_width="64dp"
|
android:layout_width="64dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginHorizontal="12dp"
|
android:layout_marginHorizontal="12dp"
|
||||||
|
@ -28,8 +19,7 @@
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.Findroid.Image"
|
app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.Findroid.Image" />
|
||||||
app:userImage="@{user}" />
|
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/user_name"
|
android:id="@+id/user_name"
|
||||||
|
@ -38,7 +28,6 @@
|
||||||
android:layout_marginTop="8dp"
|
android:layout_marginTop="8dp"
|
||||||
android:ellipsize="end"
|
android:ellipsize="end"
|
||||||
android:maxLines="1"
|
android:maxLines="1"
|
||||||
android:text="@{user.name}"
|
|
||||||
android:textAlignment="center"
|
android:textAlignment="center"
|
||||||
android:textAppearance="@style/TextAppearance.Material3.BodyMedium"
|
android:textAppearance="@style/TextAppearance.Material3.BodyMedium"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
@ -47,5 +36,3 @@
|
||||||
app:layout_constraintTop_toBottomOf="@id/user_image"
|
app:layout_constraintTop_toBottomOf="@id/user_image"
|
||||||
tools:text="username" />
|
tools:text="username" />
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
||||||
</layout>
|
|
|
@ -1,16 +1,7 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<layout xmlns:android="http://schemas.android.com/apk/res/android"
|
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
xmlns:tools="http://schemas.android.com/tools">
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
|
||||||
<data>
|
|
||||||
|
|
||||||
<variable
|
|
||||||
name="user"
|
|
||||||
type="dev.jdtech.jellyfin.models.User" />
|
|
||||||
</data>
|
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="50dp"
|
android:layout_height="50dp"
|
||||||
android:layout_marginHorizontal="24dp"
|
android:layout_marginHorizontal="24dp"
|
||||||
|
@ -30,17 +21,15 @@
|
||||||
app:layout_constraintDimensionRatio="w,1:1"
|
app:layout_constraintDimensionRatio="w,1:1"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.Findroid.Image"
|
app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.Findroid.Image" />
|
||||||
app:userImage="@{user}" />
|
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/user_name"
|
android:id="@+id/user_name"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="12dp"
|
||||||
android:ellipsize="end"
|
android:ellipsize="end"
|
||||||
android:maxLines="1"
|
android:maxLines="1"
|
||||||
android:text="@{user.name}"
|
|
||||||
android:layout_marginStart="12dp"
|
|
||||||
android:textAppearance="@style/TextAppearance.Material3.BodyLarge"
|
android:textAppearance="@style/TextAppearance.Material3.BodyLarge"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
@ -48,5 +37,3 @@
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
tools:text="username" />
|
tools:text="username" />
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
||||||
</layout>
|
|
Loading…
Reference in a new issue