Skip to content
Snippets Groups Projects
Commit 4f82ea73 authored by Nicolas Pomepuy's avatar Nicolas Pomepuy
Browse files

Show the audio playlists in the audio screen

parent 836c1071
No related branches found
No related tags found
1 merge request!1574Refactor playlists
......@@ -37,6 +37,8 @@
<include layout="@layout/audio_recyclerview" />
<include layout="@layout/audio_recyclerview" />
<include layout="@layout/audio_recyclerview" />
</androidx.viewpager.widget.ViewPager>
</org.videolan.vlc.gui.view.SwipeRefreshLayout>
......
......@@ -70,6 +70,7 @@ class AudioBrowserFragment : BaseAudioBrowser<AudioBrowserViewModel>() {
private lateinit var artistsAdapter: AudioBrowserAdapter
private lateinit var albumsAdapter: AudioBrowserAdapter
private lateinit var genresAdapter: AudioBrowserAdapter
private lateinit var playlistAdapter: AudioBrowserAdapter
private lateinit var emptyView: EmptyLoadingStateView
private lateinit var fastScroller: FastScroller
......@@ -118,7 +119,7 @@ class AudioBrowserFragment : BaseAudioBrowser<AudioBrowserViewModel>() {
lists.add(it.findViewById(R.id.audio_list))
}
}
val titles = arrayOf(getString(R.string.artists), getString(R.string.albums), getString(R.string.tracks), getString(R.string.genres))
val titles = arrayOf(getString(R.string.artists), getString(R.string.albums), getString(R.string.tracks), getString(R.string.genres), getString(R.string.playlists))
viewPager.offscreenPageLimit = MODE_TOTAL - 1
val audioPagerAdapter = AudioPagerAdapter(views.toTypedArray(), titles)
@Suppress("UNCHECKED_CAST")
......@@ -186,7 +187,8 @@ class AudioBrowserFragment : BaseAudioBrowser<AudioBrowserViewModel>() {
albumsAdapter = AudioBrowserAdapter(MediaLibraryItem.TYPE_ALBUM, this).apply { stateRestorationPolicy = RecyclerView.Adapter.StateRestorationPolicy.PREVENT_WHEN_EMPTY }
songsAdapter = AudioBrowserAdapter(MediaLibraryItem.TYPE_MEDIA, this).apply { stateRestorationPolicy = RecyclerView.Adapter.StateRestorationPolicy.PREVENT_WHEN_EMPTY }
genresAdapter = AudioBrowserAdapter(MediaLibraryItem.TYPE_GENRE, this).apply { stateRestorationPolicy = RecyclerView.Adapter.StateRestorationPolicy.PREVENT_WHEN_EMPTY }
adapters = arrayOf(artistsAdapter, albumsAdapter, songsAdapter, genresAdapter)
playlistAdapter = AudioBrowserAdapter(MediaLibraryItem.TYPE_PLAYLIST, this).apply { stateRestorationPolicy = RecyclerView.Adapter.StateRestorationPolicy.PREVENT_WHEN_EMPTY }
adapters = arrayOf(artistsAdapter, albumsAdapter, songsAdapter, genresAdapter, playlistAdapter)
setupProvider()
}
......@@ -402,7 +404,7 @@ class AudioBrowserFragment : BaseAudioBrowser<AudioBrowserViewModel>() {
const val TAG = "VLC/AudioBrowserFragment"
private const val KEY_LISTS_POSITIONS = "key_lists_position"
private const val MODE_TOTAL = 4 // Number of audio lists
private const val MODE_TOTAL = 5 // Number of audio lists
const val TAG_ITEM = "ML_ITEM"
}
......
......@@ -33,7 +33,7 @@ class PlaylistsProvider(context: Context, model: SortableModel, val type: Playli
override fun getPage(loadSize: Int, startposition: Int) : Array<Playlist> {
val list = if (model.filterQuery == null) medialibrary.getPagedPlaylists(type, sort, desc, Settings.includeMissing, loadSize, startposition)
else medialibrary.searchPlaylist(model.filterQuery, Playlist.Type.All, sort, desc, Settings.includeMissing, loadSize, startposition)
else medialibrary.searchPlaylist(model.filterQuery, type, sort, desc, Settings.includeMissing, loadSize, startposition)
model.viewModelScope.launch { completeHeaders(list, startposition) }
return list
}
......
......@@ -25,14 +25,12 @@ import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.viewModelScope
import kotlinx.coroutines.launch
import org.videolan.medialibrary.interfaces.media.Playlist
import org.videolan.resources.KEY_AUDIO_CURRENT_TAB
import org.videolan.tools.KEY_ARTISTS_SHOW_ALL
import org.videolan.tools.Settings
import org.videolan.vlc.gui.audio.AudioBrowserFragment
import org.videolan.vlc.providers.medialibrary.AlbumsProvider
import org.videolan.vlc.providers.medialibrary.ArtistsProvider
import org.videolan.vlc.providers.medialibrary.GenresProvider
import org.videolan.vlc.providers.medialibrary.TracksProvider
import org.videolan.vlc.providers.medialibrary.*
import org.videolan.vlc.viewmodels.MedialibraryViewModel
class AudioBrowserViewModel(context: Context) : MedialibraryViewModel(context) {
......@@ -43,11 +41,12 @@ class AudioBrowserViewModel(context: Context) : MedialibraryViewModel(context) {
val albumsProvider = AlbumsProvider(null, context, this)
val tracksProvider = TracksProvider(null, context, this)
val genresProvider = GenresProvider(context, this)
override val providers = arrayOf(artistsProvider, albumsProvider, tracksProvider, genresProvider)
val providersInCard = arrayOf(true, true, false, false)
private val playlistsProvider = PlaylistsProvider(context, this, Playlist.Type.AudioOnly)
override val providers = arrayOf(artistsProvider, albumsProvider, tracksProvider, genresProvider, playlistsProvider)
val providersInCard = arrayOf(true, true, false, false, true)
var showResumeCard = settings.getBoolean("audio_resume_card", true)
val displayModeKeys = arrayOf("display_mode_audio_browser_artists", "display_mode_audio_browser_albums", "display_mode_audio_browser_track", "display_mode_audio_browser_genres")
val displayModeKeys = arrayOf("display_mode_audio_browser_artists", "display_mode_audio_browser_albums", "display_mode_audio_browser_track", "display_mode_audio_browser_genres", "display_mode_playlists")
init {
......@@ -55,6 +54,7 @@ class AudioBrowserViewModel(context: Context) : MedialibraryViewModel(context) {
watchArtists()
watchGenres()
watchMedia()
watchPlaylists()
//Initial state coming from preferences and falling back to [providersInCard] hardcoded values
for (i in displayModeKeys.indices) {
providersInCard[i] = settings.getBoolean(displayModeKeys[i], providersInCard[i])
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment