diff --git a/app/src/main/java/dev/jdtech/jellyfin/adapters/ViewItemListAdapter.kt b/app/src/main/java/dev/jdtech/jellyfin/adapters/ViewItemListAdapter.kt index 3b099812..9a854ee0 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/adapters/ViewItemListAdapter.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/adapters/ViewItemListAdapter.kt @@ -7,7 +7,6 @@ import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.ListAdapter import androidx.recyclerview.widget.RecyclerView import dev.jdtech.jellyfin.databinding.BaseItemBinding -import dev.jdtech.jellyfin.models.ViewItem import org.jellyfin.sdk.model.api.BaseItemDto class ViewItemListAdapter : @@ -18,7 +17,7 @@ class ViewItemListAdapter : binding.item = item binding.itemName.text = if (item.type == "Episode") item.seriesName else item.name binding.itemCount.visibility = - if (item.userData?.unplayedItemCount != null) View.VISIBLE else View.GONE + if (item.userData?.unplayedItemCount != null && item.userData?.unplayedItemCount!! > 0) View.VISIBLE else View.GONE binding.executePendingBindings() } } diff --git a/app/src/main/java/dev/jdtech/jellyfin/fragments/LibraryFragment.kt b/app/src/main/java/dev/jdtech/jellyfin/fragments/LibraryFragment.kt new file mode 100644 index 00000000..6ed674af --- /dev/null +++ b/app/src/main/java/dev/jdtech/jellyfin/fragments/LibraryFragment.kt @@ -0,0 +1,39 @@ +package dev.jdtech.jellyfin.fragments + +import androidx.lifecycle.ViewModelProvider +import android.os.Bundle +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import dev.jdtech.jellyfin.viewmodels.LibraryViewModel +import dev.jdtech.jellyfin.adapters.ViewItemListAdapter +import dev.jdtech.jellyfin.databinding.FragmentLibraryBinding + +class LibraryFragment : Fragment() { + + companion object { + fun newInstance() = LibraryFragment() + } + + private lateinit var binding: FragmentLibraryBinding + private lateinit var viewModel: LibraryViewModel + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + binding = FragmentLibraryBinding.inflate(inflater, container, false) + + binding.lifecycleOwner = this + + return binding.root + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + viewModel = ViewModelProvider(this).get(LibraryViewModel::class.java) + binding.viewModel = viewModel + binding.itemsRecyclerView.adapter = ViewItemListAdapter() + } +} \ No newline at end of file diff --git a/app/src/main/java/dev/jdtech/jellyfin/fragments/MediaFragment.kt b/app/src/main/java/dev/jdtech/jellyfin/fragments/MediaFragment.kt index d51b8066..2dbf70b7 100644 --- a/app/src/main/java/dev/jdtech/jellyfin/fragments/MediaFragment.kt +++ b/app/src/main/java/dev/jdtech/jellyfin/fragments/MediaFragment.kt @@ -6,6 +6,8 @@ import android.view.View import android.view.ViewGroup import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider +import androidx.navigation.fragment.findNavController +import dev.jdtech.jellyfin.R import dev.jdtech.jellyfin.adapters.CollectionListAdapter import dev.jdtech.jellyfin.databinding.FragmentMediaBinding import dev.jdtech.jellyfin.viewmodels.MediaViewModel @@ -32,6 +34,10 @@ class MediaFragment : Fragment() { } }) + binding.button.setOnClickListener { + findNavController().navigate(R.id.action_navigation_media_to_libraryFragment) + } + return binding.root } } \ No newline at end of file diff --git a/app/src/main/java/dev/jdtech/jellyfin/viewmodels/LibraryViewModel.kt b/app/src/main/java/dev/jdtech/jellyfin/viewmodels/LibraryViewModel.kt new file mode 100644 index 00000000..14e428a0 --- /dev/null +++ b/app/src/main/java/dev/jdtech/jellyfin/viewmodels/LibraryViewModel.kt @@ -0,0 +1,35 @@ +package dev.jdtech.jellyfin.viewmodels + +import android.app.Application +import androidx.lifecycle.* +import dev.jdtech.jellyfin.api.JellyfinApi +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext +import org.jellyfin.sdk.model.api.BaseItemDto +import java.util.* + +class LibraryViewModel(application: Application) : AndroidViewModel(application) { + private val jellyfinApi = JellyfinApi.getInstance(application, "") + + private val _items = MutableLiveData>() + val items: LiveData> = _items + + private val _finishedLoading = MutableLiveData() + val finishedLoading: LiveData = _finishedLoading + + init { + viewModelScope.launch { + _items.value = getItems(jellyfinApi.userId!!, UUID.fromString("0c419071-40d8-02bb-5843-0fed7e2cd79e")) + _finishedLoading.value = true + } + } + + private suspend fun getItems(userId: UUID, parentId: UUID): List { + val items: List + withContext(Dispatchers.IO) { + items = jellyfinApi.itemsApi.getItems(userId, parentId = parentId).content.items!! + } + return items + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_library.xml b/app/src/main/res/layout/fragment_library.xml new file mode 100644 index 00000000..02fcd406 --- /dev/null +++ b/app/src/main/res/layout/fragment_library.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/fragment_media.xml b/app/src/main/res/layout/fragment_media.xml index 29ac1683..df83efc4 100644 --- a/app/src/main/res/layout/fragment_media.xml +++ b/app/src/main/res/layout/fragment_media.xml @@ -43,5 +43,13 @@ app:spanCount="@integer/collection_colums" tools:itemCount="4" tools:listitem="@layout/collection_item" /> + +