From 6a2469ca97d2a1487b46381d4519aa6d9ac03d54 Mon Sep 17 00:00:00 2001 From: Jarne Demeulemeester Date: Mon, 14 Jun 2021 14:48:38 +0200 Subject: [PATCH] Improve home layout and clean up code --- app/build.gradle | 2 +- app/src/main/AndroidManifest.xml | 2 ++ .../dev/jdtech/jellyfin/BindingAdapters.kt | 7 ++++--- .../dev/jdtech/jellyfin/api/JellyfinApi.kt | 4 ---- .../fragments/ServerSelectFragment.kt | 2 -- .../jellyfin/viewmodels/HomeViewModel.kt | 19 ++++++++++++++----- app/src/main/res/layout/base_item.xml | 4 +++- app/src/main/res/layout/view_item.xml | 4 +++- app/src/main/res/values/strings.xml | 1 + 9 files changed, 28 insertions(+), 17 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 3628d9a2..68e72ca0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -39,7 +39,7 @@ android { dependencies { def room_version = "2.3.0" - def jellyfin_version = "1.0.0-beta.7" + def jellyfin_version = "1.0.0-beta.8" implementation 'androidx.core:core-ktx:1.5.0' implementation 'androidx.appcompat:appcompat:1.3.0' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 96a0e86d..f98c986c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -2,6 +2,8 @@ + + ?) { @@ -37,6 +37,7 @@ fun bindItemImage(imageView: ImageView, item: ViewItem) { Glide .with(imageView.context) .load(item.primaryImageUrl) - .placeholder(ColorDrawable(Color.GRAY)) + .transition(DrawableTransitionOptions.withCrossFade()) + .placeholder(R.color.neutral_800) .into(imageView) } \ No newline at end of file diff --git a/app/src/main/java/dev/jdtech/jellyfin/api/JellyfinApi.kt b/app/src/main/java/dev/jdtech/jellyfin/api/JellyfinApi.kt index 70d149a4..08238fa4 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/api/JellyfinApi.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/api/JellyfinApi.kt @@ -32,10 +32,6 @@ class JellyfinApi(context: Context, baseUrl: String) { val itemsApi = ItemsApi(api) val userLibraryApi = UserLibraryApi(api) - init { - Log.i("JellyfinApi", "Constructor called!") - } - companion object { @Volatile private var INSTANCE: JellyfinApi? = null diff --git a/app/src/main/java/dev/jdtech/jellyfin/fragments/ServerSelectFragment.kt b/app/src/main/java/dev/jdtech/jellyfin/fragments/ServerSelectFragment.kt index d81d6fe8..ab9d4637 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/fragments/ServerSelectFragment.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/fragments/ServerSelectFragment.kt @@ -36,8 +36,6 @@ class ServerSelectFragment : Fragment() { binding.viewModel = viewModel binding.serversRecyclerView.adapter = ServerGridAdapter(ServerGridAdapter.OnClickListener { server -> - Toast.makeText(application, "You selected server $server", Toast.LENGTH_SHORT) - .show() viewModel.connectToServer(server) }, ServerGridAdapter.OnLongClickListener { server -> DeleteServerDialogFragment(viewModel, server).show( diff --git a/app/src/main/java/dev/jdtech/jellyfin/viewmodels/HomeViewModel.kt b/app/src/main/java/dev/jdtech/jellyfin/viewmodels/HomeViewModel.kt index 5af781a7..0de23340 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/viewmodels/HomeViewModel.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/viewmodels/HomeViewModel.kt @@ -8,6 +8,7 @@ import dev.jdtech.jellyfin.models.View import dev.jdtech.jellyfin.models.ViewItem import kotlinx.coroutines.launch import org.jellyfin.sdk.model.api.BaseItemDto +import java.util.* class HomeViewModel( application: Application @@ -25,6 +26,7 @@ class HomeViewModel( val views: MutableList = mutableListOf() val result by jellyfinApi.viewsApi.getUserViews(jellyfinApi.userId!!) + for (view in result.items!!) { val items: MutableList = mutableListOf() val resultItems by jellyfinApi.userLibraryApi.getLatestMedia(jellyfinApi.userId!!, parentId = view.id) @@ -48,11 +50,18 @@ class HomeViewModel( } private fun BaseItemDto.toViewItem(baseUrl: String) : ViewItem { - return ViewItem( - id = id, - name = name, - primaryImageUrl = baseUrl.plus("/items/${id}/Images/Primary") - ) + return when (type) { + "Episode" -> ViewItem( + id = seriesId!!, + name = seriesName, + primaryImageUrl = baseUrl.plus("/items/${seriesId}/Images/Primary") + ) + else -> ViewItem( + id = id, + name = name, + primaryImageUrl = baseUrl.plus("/items/${id}/Images/Primary") + ) + } } private fun BaseItemDto.toView() : View { diff --git a/app/src/main/res/layout/base_item.xml b/app/src/main/res/layout/base_item.xml index 908ca425..200c42ca 100644 --- a/app/src/main/res/layout/base_item.xml +++ b/app/src/main/res/layout/base_item.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="220dp" android:layout_marginBottom="8dp" + android:scaleType="centerCrop" app:itemImage="@{item}" app:shapeAppearanceOverlay="@style/roundedImageView" /> @@ -29,7 +30,8 @@ style="@style/text_subtitle" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:maxLines="1" + android:ellipsize="end" + android:maxLines="2" android:text="@{item.name}" tools:text="Movie title" /> diff --git a/app/src/main/res/layout/view_item.xml b/app/src/main/res/layout/view_item.xml index cecdef2a..9d18cfc1 100644 --- a/app/src/main/res/layout/view_item.xml +++ b/app/src/main/res/layout/view_item.xml @@ -32,7 +32,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="24dp" - android:text="View all" + android:text="@string/view_all" app:layout_constraintBaseline_toBaselineOf="@id/view_name" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent" /> @@ -42,6 +42,8 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="16dp" + android:paddingHorizontal="12dp" + android:clipToPadding="false" android:orientation="horizontal" app:items="@{view.items}" app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index e51dde91..21fe7180 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -18,4 +18,5 @@ Home My media Settings + View all \ No newline at end of file