From d61c2852e619bbc3e894d2bf31a81f3db44e5cf0 Mon Sep 17 00:00:00 2001 From: Alexander Capehart Date: Wed, 1 Jan 2025 15:42:31 -0700 Subject: [PATCH 1/5] home: simplify no music indicator This is not the most ideal communication of the UI, but for the sake of delivering faster this will be the setup until I can implement some kind of scaffold system (which will be annoying and hard). --- .../org/oxycblt/auxio/home/list/AlbumListFragment.kt | 10 ++++------ .../org/oxycblt/auxio/home/list/ArtistListFragment.kt | 10 ++++------ .../org/oxycblt/auxio/home/list/GenreListFragment.kt | 10 ++++------ .../oxycblt/auxio/home/list/PlaylistListFragment.kt | 10 ++++------ .../org/oxycblt/auxio/home/list/SongListFragment.kt | 10 ++++------ app/src/main/res/values-cs/strings.xml | 5 ----- app/src/main/res/values-de/strings.xml | 5 ----- app/src/main/res/values-es/strings.xml | 5 ----- app/src/main/res/values-et/strings.xml | 5 ----- app/src/main/res/values-fi/strings.xml | 5 ----- app/src/main/res/values-fr/strings.xml | 5 ----- app/src/main/res/values-hr/strings.xml | 5 ----- app/src/main/res/values-ko/strings.xml | 5 ----- app/src/main/res/values-nb-rNO/strings.xml | 5 ----- app/src/main/res/values-nn/strings.xml | 5 ----- app/src/main/res/values-pt-rBR/strings.xml | 5 ----- app/src/main/res/values-pt/strings.xml | 5 ----- app/src/main/res/values-ru/strings.xml | 1 - app/src/main/res/values-ta/strings.xml | 5 ----- app/src/main/res/values-uk/strings.xml | 5 ----- app/src/main/res/values-zh-rCN/strings.xml | 5 ----- app/src/main/res/values/strings.xml | 10 +++++----- 22 files changed, 25 insertions(+), 111 deletions(-) diff --git a/app/src/main/java/org/oxycblt/auxio/home/list/AlbumListFragment.kt b/app/src/main/java/org/oxycblt/auxio/home/list/AlbumListFragment.kt index 52b4630d1..dcbb0d219 100644 --- a/app/src/main/java/org/oxycblt/auxio/home/list/AlbumListFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/home/list/AlbumListFragment.kt @@ -37,7 +37,6 @@ import org.oxycblt.auxio.list.adapter.SelectionIndicatorAdapter import org.oxycblt.auxio.list.recycler.AlbumViewHolder import org.oxycblt.auxio.list.recycler.FastScrollRecyclerView import org.oxycblt.auxio.list.sort.Sort -import org.oxycblt.auxio.music.IndexingState import org.oxycblt.auxio.music.MusicViewModel import org.oxycblt.auxio.music.resolve import org.oxycblt.auxio.playback.PlaybackViewModel @@ -82,11 +81,11 @@ class AlbumListFragment : listener = this@AlbumListFragment } - binding.homeNoMusicMsg.text = getString(R.string.lng_no_albums) + binding.homeNoMusicMsg.text = getString(R.string.lng_empty_albums) binding.homeChooseMusicSources.setOnClickListener { homeModel.startChooseMusicLocations() } - collectImmediately(homeModel.albumList, musicModel.indexingState, ::updateAlbums) + collectImmediately(homeModel.albumList, ::updateAlbums) collectImmediately(listModel.selected, ::updateSelection) collectImmediately( playbackModel.song, playbackModel.parent, playbackModel.isPlaying, ::updatePlayback) @@ -150,11 +149,10 @@ class AlbumListFragment : listModel.openMenu(R.menu.album, item) } - private fun updateAlbums(albums: List, indexingState: IndexingState?) { + private fun updateAlbums(albums: List) { requireBinding().apply { homeRecycler.isInvisible = albums.isEmpty() - homeNoMusic.isInvisible = - indexingState !is IndexingState.Completed || albums.isNotEmpty() + homeNoMusic.isInvisible = albums.isNotEmpty() } albumAdapter.update(albums, homeModel.albumInstructions.consume()) } diff --git a/app/src/main/java/org/oxycblt/auxio/home/list/ArtistListFragment.kt b/app/src/main/java/org/oxycblt/auxio/home/list/ArtistListFragment.kt index c7b6a099f..956c230dc 100644 --- a/app/src/main/java/org/oxycblt/auxio/home/list/ArtistListFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/home/list/ArtistListFragment.kt @@ -35,7 +35,6 @@ import org.oxycblt.auxio.list.adapter.SelectionIndicatorAdapter import org.oxycblt.auxio.list.recycler.ArtistViewHolder import org.oxycblt.auxio.list.recycler.FastScrollRecyclerView import org.oxycblt.auxio.list.sort.Sort -import org.oxycblt.auxio.music.IndexingState import org.oxycblt.auxio.music.MusicViewModel import org.oxycblt.auxio.playback.PlaybackViewModel import org.oxycblt.auxio.playback.formatDurationMs @@ -76,11 +75,11 @@ class ArtistListFragment : listener = this@ArtistListFragment } - binding.homeNoMusicMsg.text = getString(R.string.lng_no_artists) + binding.homeNoMusicMsg.text = getString(R.string.lng_empty_artists) binding.homeChooseMusicSources.setOnClickListener { homeModel.startChooseMusicLocations() } - collectImmediately(homeModel.artistList, musicModel.indexingState, ::updateArtists) + collectImmediately(homeModel.artistList, ::updateArtists) collectImmediately(listModel.selected, ::updateSelection) collectImmediately( playbackModel.song, playbackModel.parent, playbackModel.isPlaying, ::updatePlayback) @@ -125,11 +124,10 @@ class ArtistListFragment : listModel.openMenu(R.menu.parent, item) } - private fun updateArtists(artists: List, indexingState: IndexingState?) { + private fun updateArtists(artists: List) { requireBinding().apply { homeRecycler.isInvisible = artists.isEmpty() - homeNoMusic.isInvisible = - indexingState !is IndexingState.Completed || artists.isNotEmpty() + homeNoMusic.isInvisible = artists.isNotEmpty() } artistAdapter.update(artists, homeModel.artistInstructions.consume()) } diff --git a/app/src/main/java/org/oxycblt/auxio/home/list/GenreListFragment.kt b/app/src/main/java/org/oxycblt/auxio/home/list/GenreListFragment.kt index fa9ff98fd..8901247a1 100644 --- a/app/src/main/java/org/oxycblt/auxio/home/list/GenreListFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/home/list/GenreListFragment.kt @@ -35,7 +35,6 @@ import org.oxycblt.auxio.list.adapter.SelectionIndicatorAdapter import org.oxycblt.auxio.list.recycler.FastScrollRecyclerView import org.oxycblt.auxio.list.recycler.GenreViewHolder import org.oxycblt.auxio.list.sort.Sort -import org.oxycblt.auxio.music.IndexingState import org.oxycblt.auxio.music.MusicViewModel import org.oxycblt.auxio.playback.PlaybackViewModel import org.oxycblt.auxio.playback.formatDurationMs @@ -75,11 +74,11 @@ class GenreListFragment : listener = this@GenreListFragment } - binding.homeNoMusicMsg.text = getString(R.string.lng_no_genres) + binding.homeNoMusicMsg.text = getString(R.string.lng_empty_genres) binding.homeChooseMusicSources.setOnClickListener { homeModel.startChooseMusicLocations() } - collectImmediately(homeModel.genreList, musicModel.indexingState, ::updateGenres) + collectImmediately(homeModel.genreList, ::updateGenres) collectImmediately(listModel.selected, ::updateSelection) collectImmediately( playbackModel.song, playbackModel.parent, playbackModel.isPlaying, ::updatePlayback) @@ -124,11 +123,10 @@ class GenreListFragment : listModel.openMenu(R.menu.parent, item) } - private fun updateGenres(genres: List, indexingState: IndexingState?) { + private fun updateGenres(genres: List) { requireBinding().apply { homeRecycler.isInvisible = genres.isEmpty() - homeNoMusic.isInvisible = - indexingState !is IndexingState.Completed || genres.isNotEmpty() + homeNoMusic.isInvisible = genres.isNotEmpty() } genreAdapter.update(genres, homeModel.genreInstructions.consume()) } diff --git a/app/src/main/java/org/oxycblt/auxio/home/list/PlaylistListFragment.kt b/app/src/main/java/org/oxycblt/auxio/home/list/PlaylistListFragment.kt index 1f6692941..e141e25ed 100644 --- a/app/src/main/java/org/oxycblt/auxio/home/list/PlaylistListFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/home/list/PlaylistListFragment.kt @@ -34,7 +34,6 @@ import org.oxycblt.auxio.list.adapter.SelectionIndicatorAdapter import org.oxycblt.auxio.list.recycler.FastScrollRecyclerView import org.oxycblt.auxio.list.recycler.PlaylistViewHolder import org.oxycblt.auxio.list.sort.Sort -import org.oxycblt.auxio.music.IndexingState import org.oxycblt.auxio.music.MusicViewModel import org.oxycblt.auxio.playback.PlaybackViewModel import org.oxycblt.auxio.playback.formatDurationMs @@ -73,11 +72,11 @@ class PlaylistListFragment : listener = this@PlaylistListFragment } - binding.homeNoMusicMsg.text = getString(R.string.lng_no_playlists) + binding.homeNoMusicMsg.text = getString(R.string.lng_empty_playlists) binding.homeChooseMusicSources.setOnClickListener { homeModel.startChooseMusicLocations() } - collectImmediately(homeModel.playlistList, musicModel.indexingState, ::updatePlaylists) + collectImmediately(homeModel.playlistList, ::updatePlaylists) collectImmediately(listModel.selected, ::updateSelection) collectImmediately( playbackModel.song, playbackModel.parent, playbackModel.isPlaying, ::updatePlayback) @@ -122,11 +121,10 @@ class PlaylistListFragment : listModel.openMenu(R.menu.playlist, item) } - private fun updatePlaylists(playlists: List, indexingState: IndexingState?) { + private fun updatePlaylists(playlists: List) { requireBinding().apply { homeRecycler.isInvisible = playlists.isEmpty() - homeNoMusic.isInvisible = - indexingState !is IndexingState.Completed || playlists.isNotEmpty() + homeNoMusic.isInvisible = playlists.isNotEmpty() } playlistAdapter.update(playlists, homeModel.playlistInstructions.consume()) } diff --git a/app/src/main/java/org/oxycblt/auxio/home/list/SongListFragment.kt b/app/src/main/java/org/oxycblt/auxio/home/list/SongListFragment.kt index 7e25435c9..6fc0da2f2 100644 --- a/app/src/main/java/org/oxycblt/auxio/home/list/SongListFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/home/list/SongListFragment.kt @@ -36,7 +36,6 @@ import org.oxycblt.auxio.list.adapter.SelectionIndicatorAdapter import org.oxycblt.auxio.list.recycler.FastScrollRecyclerView import org.oxycblt.auxio.list.recycler.SongViewHolder import org.oxycblt.auxio.list.sort.Sort -import org.oxycblt.auxio.music.IndexingState import org.oxycblt.auxio.music.MusicViewModel import org.oxycblt.auxio.music.resolve import org.oxycblt.auxio.playback.PlaybackViewModel @@ -80,11 +79,11 @@ class SongListFragment : listener = this@SongListFragment } - binding.homeNoMusicMsg.text = getString(R.string.lng_no_songs) + binding.homeNoMusicMsg.text = getString(R.string.lng_empty_songs) binding.homeChooseMusicSources.setOnClickListener { homeModel.startChooseMusicLocations() } - collectImmediately(homeModel.songList, musicModel.indexingState, ::updateSongs) + collectImmediately(homeModel.songList, ::updateSongs) collectImmediately(listModel.selected, ::updateSelection) collectImmediately( playbackModel.song, playbackModel.parent, playbackModel.isPlaying, ::updatePlayback) @@ -150,11 +149,10 @@ class SongListFragment : listModel.openMenu(R.menu.song, item, homeModel.playWith) } - private fun updateSongs(songs: List, indexingState: IndexingState?) { + private fun updateSongs(songs: List) { requireBinding().apply { homeRecycler.isInvisible = songs.isEmpty() - homeNoMusic.isInvisible = - indexingState !is IndexingState.Completed || songs.isNotEmpty() + homeNoMusic.isInvisible = songs.isNotEmpty() } songAdapter.update(songs, homeModel.songInstructions.consume()) } diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index d6dd64aaa..b7c29334c 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -329,11 +329,6 @@ Zpětná vazba Vytvořit problém na GitHubu Poslat e-mail - Vaši umělci se zobrazí zde, jakmile přidáte nějakou hudbu. - Vaše žánry se zobrazí zde, jakmile přidáte nějakou hudbu. - Vaše seznamy skladeb se zobrazí zde, jakmile přidáte nějakou hudbu. - Vaše skladby se zobrazí zde, jakmile přidáte nějakou hudbu. - Vaše alba se zobrazí zde, jakmile přidáte nějakou hudbu. Vybrat složky Neznámé album MPEG-4 obsahující %s diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 1c8f9b443..451a27b0f 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -320,12 +320,7 @@ Ein Issue auf GitHub erstellen Rückmeldung Eine E-Mail senden - Deine Alben werden hier angezeigt, sobald du Musik hinzufügst. Ordner auswählen - Deine Lieder werden hier angezeigt, sobald du Musik hinzufügst. - Deine Künstler werden hier angezeigt, sobald du Musik hinzufügst. - Deine Wiedergabelisten werden hier angezeigt, sobald du Musik hinzufügst. - Deine Genres werden hier angezeigt, sobald du Musik hinzufügst. MPEG-4, enthält %s Apple Lossless Audio Codec (ALAC) Unbekannt diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index a9e7fa5f2..27808856c 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -325,11 +325,6 @@ Enviar un correo electrónico Retroalimentación Seleccionar carpetas - Tus listas de reproducción aparecerán aquí una vez que agregues música. - Tus canciones aparecerán aquí una vez que agregues algo de música. - Tus álbumes aparecerán aquí una vez que agregues algo de música. - Tus artistas aparecerán aquí una vez que agregues algo de música. - Tus géneros musicales aparecerán aquí una vez que agregues algo de música. Álbum desconocido Desconocido El MPEG-4 contiene %s diff --git a/app/src/main/res/values-et/strings.xml b/app/src/main/res/values-et/strings.xml index 0d60ed6b7..2e948c51d 100644 --- a/app/src/main/res/values-et/strings.xml +++ b/app/src/main/res/values-et/strings.xml @@ -313,11 +313,6 @@ Koosta GitHubis veateade või ettepanek Saada e-kiri Vali kaustad - Kui oled muusikat lisanud, siis on sinu palad siin näha. - Kui oled muusikat lisanud, siis on sinu albumid siin näha. - Kui oled muusikat lisanud, siis on sinu esitajad siin näha. - Kui oled muusikat lisanud, siis on žanrid siin näha. - Kui oled muusikat lisanud, siis on sinu esitusloendid siin näha. Tundmatu album MPEG-4 %s koodekiga Apple Lossless Audio Codec (ALAC) diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml index ff0d0a9a8..c28fa5105 100644 --- a/app/src/main/res/values-fi/strings.xml +++ b/app/src/main/res/values-fi/strings.xml @@ -308,12 +308,7 @@ Lisää Palaute Käynnistää Auxion käyttämällä aiemmin tallennettua tilaa. Jos tallennettua tilaa ei ole saatavilla, kaikki kappaleet sekoitetaan. Toisto alkaa välittömästi.\n\nVaroitus: Ole varovainen tämän palvelun hallinnassa. Jos suljet sen ja yrität sitten käyttää sitä uudelleen, sovellus todennäköisesti kaatuu. - Kappaleesi näkyvät täällä, kun lisäät musiikkia. - Artistisi näkyvät täällä, kun lisäät musiikkia. - Soittolistasi näkyvät täällä, kun lisäät musiikkia. Säätö ilman tunnisteita - Albumisi näkyvät täällä, kun lisäät musiikkia. - Tyylilajisi näkyvät tässä, kun lisäät musiikkia. Esivahvistinta käytetään olemassa olevaan säätöön toiston aikana Säätö tunnisteilla \ No newline at end of file diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 5ed26021e..711b2d50c 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -321,9 +321,4 @@ Faire un ticket sur GitHub Envoyer un courriel Choisir des dossiers - Vos titres apparaîtront ici une fois que vous aurez ajouté de la musique. - Vos albums apparaîtront ici une fois que vous aurez ajouté de la musique. - Vos artistes apparaîtront ici une fois que vous aurez ajouté de la musique. - Vos genres apparaîtront ici une fois que vous aurez ajouté de la musique. - Vos listes de lecture apparaîtront ici une fois que vous aurez ajouté de la musique. \ No newline at end of file diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index bd6bd11b9..5bd1c2629 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -316,9 +316,4 @@ Prijavi problem na GitHubu Pošalji e-mail Odaberi mape - Tvoji albumi će se ovdje prikazati kada dodaš neku glazbu. - Tvoji izvođači će se ovdje prikazati kada dodaš neku glazbu. - Tvoj popis pjesama će se ovdje prikazati kada dodaš neku glazbu. - Tvoji žanri će se ovdje prikazati kada dodaš neku glazbu. - Tvoje pjesme će se ovdje prikazati kada dodaš neku glazbu. \ No newline at end of file diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index 1c4599354..bd47b3560 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -319,11 +319,6 @@ 더 보기 폴더 선택 전자우편을 전송합니다 - 당신이 음악을 추가하면 여기에 자신의 앨범이 표시됩니다. - 당신이 음악을 추가하면 여기에 자신의 음악가가 표시됩니다. 깃허브에 문제를 제기합니다 응답 - 당신이 음악을 추가하면 여기에 표시됩니다. - 당신이 음악을 여기에 추가하면 자신의 재생목록이 표시됩니다. - 당신이 음악을 추가하면 여기에 자신의 장르가 표시됩니다. \ No newline at end of file diff --git a/app/src/main/res/values-nb-rNO/strings.xml b/app/src/main/res/values-nb-rNO/strings.xml index 728b73e29..cb76f29f3 100644 --- a/app/src/main/res/values-nb-rNO/strings.xml +++ b/app/src/main/res/values-nb-rNO/strings.xml @@ -311,9 +311,4 @@ Gi tilbakemelding Send en e-post Velg mapper - Sjangrene dine vil dukke opp her etter at du har lagt til musikk i biblioteket ditt. - Spillelistene dine vil dukke opp her etter at du har lagt til musikk i biblioteket ditt. - Artistene dine vil dukke opp her etter at du har lagt til musikk i biblioteket ditt. - Sporene dine vil dukke opp her etter at du har lagt til musikk i biblioteket ditt. - Albumene dine vil dukke opp her etter at du har lagt til musikk i biblioteket ditt. \ No newline at end of file diff --git a/app/src/main/res/values-nn/strings.xml b/app/src/main/res/values-nn/strings.xml index 58f066558..fe4c1ce40 100644 --- a/app/src/main/res/values-nn/strings.xml +++ b/app/src/main/res/values-nn/strings.xml @@ -311,9 +311,4 @@ Innlasta album: %d Total lengd: %s Vel mapper - Spora dine vil dukke opp her etter at du har lagt til musikk i biblioteket ditt. - Artistane dine vil dukke opp her etter at du har lagt til musikk i biblioteket ditt. - Sjangrane dine vil dukke opp her etter at du har lagt til musikk i biblioteket ditt. - Albuma dine vil dukke opp her etter at du har lagt til musikk i biblioteket ditt. - Spelelistene dine vil dukke opp her etter at du har lagt til musikk i biblioteket ditt. \ No newline at end of file diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 17611bd87..f1e1f8574 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -322,14 +322,9 @@ Envie um e-mail Crie uma issue no GitHub Escolher pastas - Os seus álbuns aparecerão aqui quando você adicionar um pouco de música. - As suas músicas aparecerão aqui quando você adicionar um pouco de música. - Os seus gêneros aparecerão aqui quando você adicionar um pouco de música. - As suas playlists aparecerão aqui quando você adicionar um pouco de música. MPEG-4 contendo %s Apple Lossless Audio Codec (ALAC) Desconhecido Álbum desconhecido - Os seus artistas aparecerão aqui quando você adicionar um pouco de música. Feedback \ No newline at end of file diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index 52e9bcda3..76bac3936 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -313,10 +313,5 @@ Opinião Crie um problema no GitHub Envie um e-mail - Seus artistas aparecerão aqui assim que você adicionar alguma música. - Seus gêneros aparecerão aqui assim que você adicionar alguma música. - Suas playlists aparecerão aqui assim que você adicionar alguma música. Escolha pastas - Seus álbuns aparecerão aqui assim que você adicionar alguma música. - Suas músicas aparecerão aqui assim que você adicionar alguma música. \ No newline at end of file diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index fd8d073fa..035e964a8 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -326,5 +326,4 @@ Больше Отзывы Отправить электронное письмо - Ваши песни появятся здесь, как только вы добавите музыку. \ No newline at end of file diff --git a/app/src/main/res/values-ta/strings.xml b/app/src/main/res/values-ta/strings.xml index 266e4e3e2..bb6179527 100644 --- a/app/src/main/res/values-ta/strings.xml +++ b/app/src/main/res/values-ta/strings.xml @@ -171,11 +171,6 @@ உங்கள் பெயரை இங்கே சேர்க்க திட்டத்திற்கு நன்கொடை அளிக்கவும்! உங்கள் நூலகத்தைத் தேடுங்கள்… முன்னர் சேமிக்கப்பட்ட நிலையைப் பயன்படுத்தி ஆக்சியோவைத் தொடங்குகிறது. சேமிக்கப்பட்ட நிலை எதுவும் கிடைக்கவில்லை என்றால், எல்லா பாடல்களும் மாற்றப்படும். பிளேபேக் உடனடியாக தொடங்கும்.\n\n எச்சரிக்கை: இந்த சேவையை கட்டுப்படுத்துவதில் கவனமாக இருங்கள், நீங்கள் அதை மூடிவிட்டு அதை மீண்டும் பயன்படுத்த முயற்சித்தால், நீங்கள் பயன்பாட்டை செயலிழக்கச் செய்வீர்கள். - நீங்கள் சில இசையைச் சேர்த்தவுடன் உங்கள் பாடல்கள் இங்கே காண்பிக்கப்படும். - நீங்கள் சில இசையைச் சேர்த்தவுடன் உங்கள் ஆல்பங்கள் இங்கே காண்பிக்கப்படும். - நீங்கள் சில இசையைச் சேர்த்தவுடன் உங்கள் கலைஞர்கள் இங்கே காண்பிப்பார்கள். - நீங்கள் சில இசையைச் சேர்த்தவுடன் உங்கள் வகைகள் இங்கே காண்பிக்கப்படும். - நீங்கள் சில இசையைச் சேர்த்தவுடன் உங்கள் பிளேலிச்ட்கள் இங்கே காண்பிக்கப்படும். பயன்பாட்டின் கருப்பொருள் மற்றும் வண்ணங்களை மாற்றவும் கருப்பொருள் தானியங்கி diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index c50238664..37b06d7eb 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -323,13 +323,8 @@ Більше Виберіть папки Зворотній зв\'язок - Ваші виконавці з’являться тут, коли ви додасте музику. - Ваші жанри з’являться тут, коли ви додасте музику. - Ваші пісні з’являться тут, коли ви додасте музику. Зробіть випуск на GitHub Надіслати електронний лист - Ваші списки відтворення з’являться тут, коли ви додасте музику. - Ваші альбоми з’являться тут, коли ви додасте музику. Невідомий альбом MPEG-4, що містить %s Невідомий diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 4ef4f86cd..bb25b41ce 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -319,11 +319,6 @@ 发送电子邮件 反馈 选择文件夹 - 一旦添加了一些音乐,艺术家会显示在此处。 - 一旦添加了一些音乐,歌曲会显示在此处。 - 一旦添加了一些音乐,专辑会显示在此处。 - 一旦添加了一些音乐,流派会显示在此处。 - 一旦添加了一些音乐,播放列表会显示在此处。 未知专辑 含 %s 的 MPEG-4 Apple 无损音频编解码器(ALAC) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 17862923b..c34e23ff6 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -215,11 +215,11 @@ Starts Auxio using the previously saved state. If no saved state is available, all songs will be shuffled. Playback will start immediately. \n\nWARNING: Be careful controlling this service, if you close it and then try to use it again, you will probably crash the app. - Your songs will show up here once you add some music. - Your albums will show up here once you add some music. - Your artists will show up here once you add some music. - Your genres will show up here once you add some music. - Your playlists will show up here once you add some music. + Your songs will show up here. + Your albums will show up here. + Your artists will show up here. + Your genres will show up here once. + Your playlists will show up here. From 028fff4c42b1a6573bc729b431227b3b997e1e5c Mon Sep 17 00:00:00 2001 From: Alexander Capehart Date: Wed, 1 Jan 2025 15:50:43 -0700 Subject: [PATCH 2/5] home: use correct icons for no music indicators --- .../org/oxycblt/auxio/home/list/AlbumListFragment.kt | 4 ++++ .../org/oxycblt/auxio/home/list/ArtistListFragment.kt | 4 ++++ .../org/oxycblt/auxio/home/list/GenreListFragment.kt | 4 ++++ .../oxycblt/auxio/home/list/PlaylistListFragment.kt | 4 ++++ .../org/oxycblt/auxio/home/list/SongListFragment.kt | 4 ++++ app/src/main/res/drawable/ic_album_48.xml | 11 +++++++++++ app/src/main/res/drawable/ic_artist_48.xml | 11 +++++++++++ app/src/main/res/drawable/ic_genre_48.xml | 11 +++++++++++ app/src/main/res/drawable/ic_playlist_48.xml | 11 +++++++++++ app/src/main/res/drawable/ic_song_48.xml | 11 +++++++++++ app/src/main/res/layout/fragment_home_list.xml | 4 ++-- 11 files changed, 77 insertions(+), 2 deletions(-) create mode 100644 app/src/main/res/drawable/ic_album_48.xml create mode 100644 app/src/main/res/drawable/ic_artist_48.xml create mode 100644 app/src/main/res/drawable/ic_genre_48.xml create mode 100644 app/src/main/res/drawable/ic_playlist_48.xml create mode 100644 app/src/main/res/drawable/ic_song_48.xml diff --git a/app/src/main/java/org/oxycblt/auxio/home/list/AlbumListFragment.kt b/app/src/main/java/org/oxycblt/auxio/home/list/AlbumListFragment.kt index dcbb0d219..aa2ee541b 100644 --- a/app/src/main/java/org/oxycblt/auxio/home/list/AlbumListFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/home/list/AlbumListFragment.kt @@ -81,6 +81,10 @@ class AlbumListFragment : listener = this@AlbumListFragment } + binding.homeNoMusicPlaceholder.apply { + setImageResource(R.drawable.ic_album_48) + contentDescription = getString(R.string.lbl_albums) + } binding.homeNoMusicMsg.text = getString(R.string.lng_empty_albums) binding.homeChooseMusicSources.setOnClickListener { homeModel.startChooseMusicLocations() } diff --git a/app/src/main/java/org/oxycblt/auxio/home/list/ArtistListFragment.kt b/app/src/main/java/org/oxycblt/auxio/home/list/ArtistListFragment.kt index 956c230dc..7be5a9d14 100644 --- a/app/src/main/java/org/oxycblt/auxio/home/list/ArtistListFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/home/list/ArtistListFragment.kt @@ -75,6 +75,10 @@ class ArtistListFragment : listener = this@ArtistListFragment } + binding.homeNoMusicPlaceholder.apply { + setImageResource(R.drawable.ic_artist_48) + contentDescription = getString(R.string.lbl_artists) + } binding.homeNoMusicMsg.text = getString(R.string.lng_empty_artists) binding.homeChooseMusicSources.setOnClickListener { homeModel.startChooseMusicLocations() } diff --git a/app/src/main/java/org/oxycblt/auxio/home/list/GenreListFragment.kt b/app/src/main/java/org/oxycblt/auxio/home/list/GenreListFragment.kt index 8901247a1..c61e43997 100644 --- a/app/src/main/java/org/oxycblt/auxio/home/list/GenreListFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/home/list/GenreListFragment.kt @@ -74,6 +74,10 @@ class GenreListFragment : listener = this@GenreListFragment } + binding.homeNoMusicPlaceholder.apply { + setImageResource(R.drawable.ic_genre_48) + contentDescription = getString(R.string.lbl_genres) + } binding.homeNoMusicMsg.text = getString(R.string.lng_empty_genres) binding.homeChooseMusicSources.setOnClickListener { homeModel.startChooseMusicLocations() } diff --git a/app/src/main/java/org/oxycblt/auxio/home/list/PlaylistListFragment.kt b/app/src/main/java/org/oxycblt/auxio/home/list/PlaylistListFragment.kt index e141e25ed..db98903a3 100644 --- a/app/src/main/java/org/oxycblt/auxio/home/list/PlaylistListFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/home/list/PlaylistListFragment.kt @@ -72,6 +72,10 @@ class PlaylistListFragment : listener = this@PlaylistListFragment } + binding.homeNoMusicPlaceholder.apply { + setImageResource(R.drawable.ic_playlist_48) + contentDescription = getString(R.string.lbl_playlists) + } binding.homeNoMusicMsg.text = getString(R.string.lng_empty_playlists) binding.homeChooseMusicSources.setOnClickListener { homeModel.startChooseMusicLocations() } diff --git a/app/src/main/java/org/oxycblt/auxio/home/list/SongListFragment.kt b/app/src/main/java/org/oxycblt/auxio/home/list/SongListFragment.kt index 6fc0da2f2..2b031bb76 100644 --- a/app/src/main/java/org/oxycblt/auxio/home/list/SongListFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/home/list/SongListFragment.kt @@ -79,6 +79,10 @@ class SongListFragment : listener = this@SongListFragment } + binding.homeNoMusicPlaceholder.apply { + setImageResource(R.drawable.ic_song_48) + contentDescription = getString(R.string.lbl_songs) + } binding.homeNoMusicMsg.text = getString(R.string.lng_empty_songs) binding.homeChooseMusicSources.setOnClickListener { homeModel.startChooseMusicLocations() } diff --git a/app/src/main/res/drawable/ic_album_48.xml b/app/src/main/res/drawable/ic_album_48.xml new file mode 100644 index 000000000..b06d7c0d1 --- /dev/null +++ b/app/src/main/res/drawable/ic_album_48.xml @@ -0,0 +1,11 @@ + + + + diff --git a/app/src/main/res/drawable/ic_artist_48.xml b/app/src/main/res/drawable/ic_artist_48.xml new file mode 100644 index 000000000..7bd67d49a --- /dev/null +++ b/app/src/main/res/drawable/ic_artist_48.xml @@ -0,0 +1,11 @@ + + + + diff --git a/app/src/main/res/drawable/ic_genre_48.xml b/app/src/main/res/drawable/ic_genre_48.xml new file mode 100644 index 000000000..27851f420 --- /dev/null +++ b/app/src/main/res/drawable/ic_genre_48.xml @@ -0,0 +1,11 @@ + + + + diff --git a/app/src/main/res/drawable/ic_playlist_48.xml b/app/src/main/res/drawable/ic_playlist_48.xml new file mode 100644 index 000000000..780039011 --- /dev/null +++ b/app/src/main/res/drawable/ic_playlist_48.xml @@ -0,0 +1,11 @@ + + + + diff --git a/app/src/main/res/drawable/ic_song_48.xml b/app/src/main/res/drawable/ic_song_48.xml new file mode 100644 index 000000000..0da40bce7 --- /dev/null +++ b/app/src/main/res/drawable/ic_song_48.xml @@ -0,0 +1,11 @@ + + + + diff --git a/app/src/main/res/layout/fragment_home_list.xml b/app/src/main/res/layout/fragment_home_list.xml index f005e4cad..249ea0cd1 100644 --- a/app/src/main/res/layout/fragment_home_list.xml +++ b/app/src/main/res/layout/fragment_home_list.xml @@ -33,7 +33,7 @@ android:layout_width="@dimen/size_icon_huge" android:layout_height="@dimen/size_icon_huge" android:layout_marginBottom="@dimen/spacing_small" - android:src="@drawable/ic_song_24" + android:src="@drawable/ic_song_48" app:tint="?attr/colorOnSurface" /> From 0f4a550775ed963b4c864a3c922908dc793af1c3 Mon Sep 17 00:00:00 2001 From: Alexander Capehart Date: Wed, 1 Jan 2025 15:55:15 -0700 Subject: [PATCH 3/5] home: disable click listener when no error --- app/src/main/java/org/oxycblt/auxio/home/HomeFragment.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/java/org/oxycblt/auxio/home/HomeFragment.kt b/app/src/main/java/org/oxycblt/auxio/home/HomeFragment.kt index fb6b40354..8da7dc046 100644 --- a/app/src/main/java/org/oxycblt/auxio/home/HomeFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/home/HomeFragment.kt @@ -323,6 +323,8 @@ class HomeFragment : findNavController() .navigateSafe(HomeFragmentDirections.reportError(state.error)) } + } else { + binding.homeIndexingContainer.setOnClickListener(null) } } is IndexingState.Indexing -> { From 9161b8f7770ba36be13219d9c29d76cdc17bec4d Mon Sep 17 00:00:00 2001 From: Alexander Capehart Date: Wed, 1 Jan 2025 16:07:36 -0700 Subject: [PATCH 4/5] home: make no music action generic This way the playlist view can switch to "New Playlist" if a load finishes but the user hasn't made any playlists. --- .../org/oxycblt/auxio/home/HomeGenerator.kt | 9 +++++++++ .../org/oxycblt/auxio/home/HomeViewModel.kt | 9 +++++++++ .../auxio/home/list/AlbumListFragment.kt | 13 +++++++----- .../auxio/home/list/ArtistListFragment.kt | 13 +++++++----- .../auxio/home/list/GenreListFragment.kt | 13 +++++++----- .../auxio/home/list/PlaylistListFragment.kt | 20 +++++++++++++------ .../auxio/home/list/SongListFragment.kt | 13 +++++++----- .../main/res/layout/fragment_home_list.xml | 2 +- 8 files changed, 65 insertions(+), 27 deletions(-) diff --git a/app/src/main/java/org/oxycblt/auxio/home/HomeGenerator.kt b/app/src/main/java/org/oxycblt/auxio/home/HomeGenerator.kt index 605088af6..e09d593c8 100644 --- a/app/src/main/java/org/oxycblt/auxio/home/HomeGenerator.kt +++ b/app/src/main/java/org/oxycblt/auxio/home/HomeGenerator.kt @@ -36,6 +36,8 @@ interface HomeGenerator { fun release() + fun empty(): Boolean + fun songs(): List fun albums(): List @@ -49,6 +51,8 @@ interface HomeGenerator { fun tabs(): List interface Invalidator { + fun invalidateEmpty() {} + fun invalidateMusic(type: MusicType, instructions: UpdateInstructions) fun invalidateTabs() @@ -119,6 +123,8 @@ private class HomeGeneratorImpl( } override fun onMusicChanges(changes: MusicRepository.Changes) { + invalidator.invalidateEmpty() + val library = musicRepository.library if (changes.deviceLibrary && library != null) { L.d("Refreshing library") @@ -142,6 +148,9 @@ private class HomeGeneratorImpl( homeSettings.unregisterListener(this) } + override fun empty() = + musicRepository.library == null + override fun songs() = musicRepository.library?.let { listSettings.songSort.songs(it.songs) } ?: emptyList() diff --git a/app/src/main/java/org/oxycblt/auxio/home/HomeViewModel.kt b/app/src/main/java/org/oxycblt/auxio/home/HomeViewModel.kt index 17ee96617..4175fd6a0 100644 --- a/app/src/main/java/org/oxycblt/auxio/home/HomeViewModel.kt +++ b/app/src/main/java/org/oxycblt/auxio/home/HomeViewModel.kt @@ -120,6 +120,10 @@ constructor( val playlistList: StateFlow> get() = _playlistList + private val _empty = MutableStateFlow(false) + val empty: StateFlow + get() = _empty + private val _playlistInstructions = MutableEvent() /** Instructions for how to update [genreList] in the UI. */ val playlistInstructions: Event @@ -129,6 +133,7 @@ constructor( val playlistSort: Sort get() = listSettings.playlistSort + private val homeGenerator = homeGeneratorFactory.create(this) /** @@ -172,6 +177,10 @@ constructor( homeGenerator.release() } + override fun invalidateEmpty() { + _empty.value = homeGenerator.empty() + } + override fun invalidateMusic(type: MusicType, instructions: UpdateInstructions) { when (type) { MusicType.SONGS -> { diff --git a/app/src/main/java/org/oxycblt/auxio/home/list/AlbumListFragment.kt b/app/src/main/java/org/oxycblt/auxio/home/list/AlbumListFragment.kt index aa2ee541b..094986288 100644 --- a/app/src/main/java/org/oxycblt/auxio/home/list/AlbumListFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/home/list/AlbumListFragment.kt @@ -87,9 +87,10 @@ class AlbumListFragment : } binding.homeNoMusicMsg.text = getString(R.string.lng_empty_albums) - binding.homeChooseMusicSources.setOnClickListener { homeModel.startChooseMusicLocations() } + binding.homeNoMusicAction.setOnClickListener { homeModel.startChooseMusicLocations() } collectImmediately(homeModel.albumList, ::updateAlbums) + collectImmediately(homeModel.empty, ::updateNoMusicIndicator) collectImmediately(listModel.selected, ::updateSelection) collectImmediately( playbackModel.song, playbackModel.parent, playbackModel.isPlaying, ::updatePlayback) @@ -154,13 +155,15 @@ class AlbumListFragment : } private fun updateAlbums(albums: List) { - requireBinding().apply { - homeRecycler.isInvisible = albums.isEmpty() - homeNoMusic.isInvisible = albums.isNotEmpty() - } albumAdapter.update(albums, homeModel.albumInstructions.consume()) } + private fun updateNoMusicIndicator(empty: Boolean) { + val binding = requireBinding() + binding.homeRecycler.isInvisible = empty + binding.homeNoMusic.isInvisible = !empty + } + private fun updateSelection(selection: List) { albumAdapter.setSelected(selection.filterIsInstanceTo(mutableSetOf())) } diff --git a/app/src/main/java/org/oxycblt/auxio/home/list/ArtistListFragment.kt b/app/src/main/java/org/oxycblt/auxio/home/list/ArtistListFragment.kt index 7be5a9d14..29a61d652 100644 --- a/app/src/main/java/org/oxycblt/auxio/home/list/ArtistListFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/home/list/ArtistListFragment.kt @@ -81,9 +81,10 @@ class ArtistListFragment : } binding.homeNoMusicMsg.text = getString(R.string.lng_empty_artists) - binding.homeChooseMusicSources.setOnClickListener { homeModel.startChooseMusicLocations() } + binding.homeNoMusicAction.setOnClickListener { homeModel.startChooseMusicLocations() } collectImmediately(homeModel.artistList, ::updateArtists) + collectImmediately(homeModel.empty, ::updateNoMusicIndicator) collectImmediately(listModel.selected, ::updateSelection) collectImmediately( playbackModel.song, playbackModel.parent, playbackModel.isPlaying, ::updatePlayback) @@ -129,13 +130,15 @@ class ArtistListFragment : } private fun updateArtists(artists: List) { - requireBinding().apply { - homeRecycler.isInvisible = artists.isEmpty() - homeNoMusic.isInvisible = artists.isNotEmpty() - } artistAdapter.update(artists, homeModel.artistInstructions.consume()) } + private fun updateNoMusicIndicator(empty: Boolean) { + val binding = requireBinding() + binding.homeRecycler.isInvisible = empty + binding.homeNoMusic.isInvisible = !empty + } + private fun updateSelection(selection: List) { artistAdapter.setSelected(selection.filterIsInstanceTo(mutableSetOf())) } diff --git a/app/src/main/java/org/oxycblt/auxio/home/list/GenreListFragment.kt b/app/src/main/java/org/oxycblt/auxio/home/list/GenreListFragment.kt index c61e43997..cbb1a5c46 100644 --- a/app/src/main/java/org/oxycblt/auxio/home/list/GenreListFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/home/list/GenreListFragment.kt @@ -80,9 +80,10 @@ class GenreListFragment : } binding.homeNoMusicMsg.text = getString(R.string.lng_empty_genres) - binding.homeChooseMusicSources.setOnClickListener { homeModel.startChooseMusicLocations() } + binding.homeNoMusicAction.setOnClickListener { homeModel.startChooseMusicLocations() } collectImmediately(homeModel.genreList, ::updateGenres) + collectImmediately(homeModel.empty, ::updateNoMusicIndicator) collectImmediately(listModel.selected, ::updateSelection) collectImmediately( playbackModel.song, playbackModel.parent, playbackModel.isPlaying, ::updatePlayback) @@ -128,13 +129,15 @@ class GenreListFragment : } private fun updateGenres(genres: List) { - requireBinding().apply { - homeRecycler.isInvisible = genres.isEmpty() - homeNoMusic.isInvisible = genres.isNotEmpty() - } genreAdapter.update(genres, homeModel.genreInstructions.consume()) } + private fun updateNoMusicIndicator(empty: Boolean) { + val binding = requireBinding() + binding.homeRecycler.isInvisible = empty + binding.homeNoMusic.isInvisible = !empty + } + private fun updateSelection(selection: List) { genreAdapter.setSelected(selection.filterIsInstanceTo(mutableSetOf())) } diff --git a/app/src/main/java/org/oxycblt/auxio/home/list/PlaylistListFragment.kt b/app/src/main/java/org/oxycblt/auxio/home/list/PlaylistListFragment.kt index db98903a3..80809aad9 100644 --- a/app/src/main/java/org/oxycblt/auxio/home/list/PlaylistListFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/home/list/PlaylistListFragment.kt @@ -78,9 +78,8 @@ class PlaylistListFragment : } binding.homeNoMusicMsg.text = getString(R.string.lng_empty_playlists) - binding.homeChooseMusicSources.setOnClickListener { homeModel.startChooseMusicLocations() } - collectImmediately(homeModel.playlistList, ::updatePlaylists) + collectImmediately(homeModel.empty, homeModel.playlistList, ::updateNoMusicIndicator) collectImmediately(listModel.selected, ::updateSelection) collectImmediately( playbackModel.song, playbackModel.parent, playbackModel.isPlaying, ::updatePlayback) @@ -126,13 +125,22 @@ class PlaylistListFragment : } private fun updatePlaylists(playlists: List) { - requireBinding().apply { - homeRecycler.isInvisible = playlists.isEmpty() - homeNoMusic.isInvisible = playlists.isNotEmpty() - } playlistAdapter.update(playlists, homeModel.playlistInstructions.consume()) } + private fun updateNoMusicIndicator(empty: Boolean, playlists: List) { + val binding = requireBinding() + binding.homeRecycler.isInvisible = empty + binding.homeNoMusic.isInvisible = !empty && playlists.isNotEmpty() + if (!empty && playlists.isEmpty()) { + binding.homeNoMusicAction.text = getString(R.string.lbl_new_playlist) + binding.homeNoMusicAction.setOnClickListener { musicModel.createPlaylist() } + } else { + binding.homeNoMusicAction.text = getString(R.string.lbl_music_sources) + binding.homeNoMusicAction.setOnClickListener { homeModel.startChooseMusicLocations() } + } + } + private fun updateSelection(selection: List) { playlistAdapter.setSelected(selection.filterIsInstanceTo(mutableSetOf())) } diff --git a/app/src/main/java/org/oxycblt/auxio/home/list/SongListFragment.kt b/app/src/main/java/org/oxycblt/auxio/home/list/SongListFragment.kt index 2b031bb76..1c717b476 100644 --- a/app/src/main/java/org/oxycblt/auxio/home/list/SongListFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/home/list/SongListFragment.kt @@ -85,9 +85,10 @@ class SongListFragment : } binding.homeNoMusicMsg.text = getString(R.string.lng_empty_songs) - binding.homeChooseMusicSources.setOnClickListener { homeModel.startChooseMusicLocations() } + binding.homeNoMusicAction.setOnClickListener { homeModel.startChooseMusicLocations() } collectImmediately(homeModel.songList, ::updateSongs) + collectImmediately(homeModel.empty, ::updateNoMusicIndicator) collectImmediately(listModel.selected, ::updateSelection) collectImmediately( playbackModel.song, playbackModel.parent, playbackModel.isPlaying, ::updatePlayback) @@ -154,13 +155,15 @@ class SongListFragment : } private fun updateSongs(songs: List) { - requireBinding().apply { - homeRecycler.isInvisible = songs.isEmpty() - homeNoMusic.isInvisible = songs.isNotEmpty() - } songAdapter.update(songs, homeModel.songInstructions.consume()) } + private fun updateNoMusicIndicator(empty: Boolean) { + val binding = requireBinding() + binding.homeRecycler.isInvisible = empty + binding.homeNoMusic.isInvisible = !empty + } + private fun updateSelection(selection: List) { songAdapter.setSelected(selection.filterIsInstanceTo(mutableSetOf())) } diff --git a/app/src/main/res/layout/fragment_home_list.xml b/app/src/main/res/layout/fragment_home_list.xml index 249ea0cd1..f4263a65e 100644 --- a/app/src/main/res/layout/fragment_home_list.xml +++ b/app/src/main/res/layout/fragment_home_list.xml @@ -46,7 +46,7 @@ android:textAppearance="?attr/textAppearanceBodyLarge" /> From c3ccb8519e902f13770acab4aa5f70f8a351735f Mon Sep 17 00:00:00 2001 From: Alexander Capehart Date: Wed, 1 Jan 2025 16:10:34 -0700 Subject: [PATCH 5/5] musikr: add empty library check --- app/src/main/java/org/oxycblt/auxio/home/HomeGenerator.kt | 2 +- musikr/src/main/java/org/oxycblt/musikr/Library.kt | 2 ++ musikr/src/main/java/org/oxycblt/musikr/model/LibraryImpl.kt | 2 ++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/oxycblt/auxio/home/HomeGenerator.kt b/app/src/main/java/org/oxycblt/auxio/home/HomeGenerator.kt index e09d593c8..619968c0a 100644 --- a/app/src/main/java/org/oxycblt/auxio/home/HomeGenerator.kt +++ b/app/src/main/java/org/oxycblt/auxio/home/HomeGenerator.kt @@ -149,7 +149,7 @@ private class HomeGeneratorImpl( } override fun empty() = - musicRepository.library == null + musicRepository.library?.empty() ?: true override fun songs() = musicRepository.library?.let { listSettings.songSort.songs(it.songs) } ?: emptyList() diff --git a/musikr/src/main/java/org/oxycblt/musikr/Library.kt b/musikr/src/main/java/org/oxycblt/musikr/Library.kt index c5d73312f..59af89894 100644 --- a/musikr/src/main/java/org/oxycblt/musikr/Library.kt +++ b/musikr/src/main/java/org/oxycblt/musikr/Library.kt @@ -27,6 +27,8 @@ interface Library { val genres: Collection val playlists: Collection + fun empty(): Boolean + fun findSong(uid: Music.UID): Song? fun findSongByPath(path: Path): Song? diff --git a/musikr/src/main/java/org/oxycblt/musikr/model/LibraryImpl.kt b/musikr/src/main/java/org/oxycblt/musikr/model/LibraryImpl.kt index 1740105b0..badcada45 100644 --- a/musikr/src/main/java/org/oxycblt/musikr/model/LibraryImpl.kt +++ b/musikr/src/main/java/org/oxycblt/musikr/model/LibraryImpl.kt @@ -42,6 +42,8 @@ internal data class LibraryImpl( private val genreUidMap = genres.associateBy { it.uid } private val playlistUidMap = playlists.associateBy { it.uid } + override fun empty() = songs.isEmpty() + override fun findSong(uid: Music.UID) = songUidMap[uid] override fun findSongByPath(path: Path) = songs.find { it.path == path }