From d6d1071535e28b9090787682d0810ebc34603e29 Mon Sep 17 00:00:00 2001 From: Alexander Capehart Date: Tue, 25 Jul 2023 20:45:30 -0600 Subject: [PATCH] all: cleanup Routine code inspection and cleanup, this time with the new lints from android studio giraffe. --- .../oxycblt/auxio/detail/DetailViewModel.kt | 2 +- .../decision/DetailDecisionViewModel.kt | 4 +- .../auxio/detail/sort/AlbumSongSortDialog.kt | 2 +- .../auxio/detail/sort/ArtistSongSortDialog.kt | 2 +- .../auxio/detail/sort/GenreSongSortDialog.kt | 2 +- .../detail/sort/PlaylistSongSortDialog.kt | 2 +- .../org/oxycblt/auxio/home/HomeViewModel.kt | 6 +-- .../auxio/home/list/AlbumListFragment.kt | 2 +- .../auxio/home/list/ArtistListFragment.kt | 2 +- .../auxio/home/list/GenreListFragment.kt | 2 +- .../auxio/home/list/PlaylistListFragment.kt | 2 +- .../auxio/home/list/SongListFragment.kt | 2 +- .../auxio/home/sort/AlbumSortDialog.kt | 2 +- .../auxio/home/sort/ArtistSortDialog.kt | 2 +- .../auxio/home/sort/GenreSortDialog.kt | 2 +- .../auxio/home/sort/PlaylistSortDialog.kt | 2 +- .../oxycblt/auxio/home/sort/SongSortDialog.kt | 2 +- .../auxio/image/extractor/CoverExtractor.kt | 2 +- .../auxio/list/adapter/FlexibleListAdapter.kt | 2 +- .../org/oxycblt/auxio/list/{ => sort}/Sort.kt | 45 +++++-------------- .../org/oxycblt/auxio/list/sort/SortDialog.kt | 3 +- .../auxio/list/sort/SortModeAdapter.kt | 1 - .../java/org/oxycblt/auxio/music/Indexing.kt | 2 +- .../org/oxycblt/auxio/music/MusicSettings.kt | 21 +++------ .../music/decision/PlaylistPickerViewModel.kt | 6 +-- .../auxio/music/device/DeviceMusicImpl.kt | 2 +- .../org/oxycblt/auxio/music/fs/StorageUtil.kt | 27 +++-------- .../java/org/oxycblt/auxio/music/info/Name.kt | 14 +++--- .../oxycblt/auxio/music/info/ReleaseType.kt | 6 +-- .../oxycblt/auxio/music/metadata/TagUtil.kt | 8 ++-- .../music/system/IndexerNotifications.kt | 6 +-- .../auxio/music/user/UserMusicDatabase.kt | 2 +- .../org/oxycblt/auxio/playback/PlaySong.kt | 6 +-- .../auxio/playback/state/InternalPlayer.kt | 4 +- .../playback/system/MediaButtonReceiver.kt | 1 + .../auxio/playback/system/PlaybackService.kt | 16 ++----- .../oxycblt/auxio/search/SearchViewModel.kt | 2 +- .../oxycblt/auxio/settings/AboutFragment.kt | 1 - .../org/oxycblt/auxio/ui/accent/Accent.kt | 22 ++++----- app/src/main/res/layout/dialog_sort.xml | 4 +- .../main/res/layout/fragment_preferences.xml | 4 +- app/src/main/res/layout/item_sort_mode.xml | 1 - app/src/main/res/menu/item_artist_album.xml | 3 +- app/src/main/res/navigation/inner.xml | 6 --- app/src/main/res/values-ar-rSA/strings.xml | 2 +- app/src/main/res/values-hi/strings.xml | 2 +- app/src/main/res/values/settings.xml | 1 - app/src/main/res/values/strings.xml | 2 + .../oxycblt/auxio/music/FakeMusicSettings.kt | 2 +- 49 files changed, 98 insertions(+), 168 deletions(-) rename app/src/main/java/org/oxycblt/auxio/list/{ => sort}/Sort.kt (95%) diff --git a/app/src/main/java/org/oxycblt/auxio/detail/DetailViewModel.kt b/app/src/main/java/org/oxycblt/auxio/detail/DetailViewModel.kt index e7191b13e..665b56835 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/DetailViewModel.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/DetailViewModel.kt @@ -36,8 +36,8 @@ import org.oxycblt.auxio.detail.list.SortHeader import org.oxycblt.auxio.list.BasicHeader import org.oxycblt.auxio.list.Divider import org.oxycblt.auxio.list.Item -import org.oxycblt.auxio.list.Sort import org.oxycblt.auxio.list.adapter.UpdateInstructions +import org.oxycblt.auxio.list.sort.Sort import org.oxycblt.auxio.music.Album import org.oxycblt.auxio.music.Artist import org.oxycblt.auxio.music.Genre diff --git a/app/src/main/java/org/oxycblt/auxio/detail/decision/DetailDecisionViewModel.kt b/app/src/main/java/org/oxycblt/auxio/detail/decision/DetailDecisionViewModel.kt index e8546a133..efe219235 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/decision/DetailDecisionViewModel.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/decision/DetailDecisionViewModel.kt @@ -111,9 +111,7 @@ sealed interface ArtistShowChoices { newLibrary.findSong(uid)?.let { FromSong(it) } } - /** - * Backing implementation of [ArtistShowChoices] that is based on an [AlbumArtistShowChoices]. - */ + /** Backing implementation of [ArtistShowChoices] that is based on an [Album]. */ data class FromAlbum(val album: Album) : ArtistShowChoices { override val uid = album.uid override val choices = album.artists diff --git a/app/src/main/java/org/oxycblt/auxio/detail/sort/AlbumSongSortDialog.kt b/app/src/main/java/org/oxycblt/auxio/detail/sort/AlbumSongSortDialog.kt index ea1fd15bd..de8fe127d 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/sort/AlbumSongSortDialog.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/sort/AlbumSongSortDialog.kt @@ -24,7 +24,7 @@ import androidx.navigation.fragment.findNavController import dagger.hilt.android.AndroidEntryPoint import org.oxycblt.auxio.databinding.DialogSortBinding import org.oxycblt.auxio.detail.DetailViewModel -import org.oxycblt.auxio.list.Sort +import org.oxycblt.auxio.list.sort.Sort import org.oxycblt.auxio.list.sort.SortDialog import org.oxycblt.auxio.music.Album import org.oxycblt.auxio.util.collectImmediately diff --git a/app/src/main/java/org/oxycblt/auxio/detail/sort/ArtistSongSortDialog.kt b/app/src/main/java/org/oxycblt/auxio/detail/sort/ArtistSongSortDialog.kt index 15daaff72..d0d4e355a 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/sort/ArtistSongSortDialog.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/sort/ArtistSongSortDialog.kt @@ -24,7 +24,7 @@ import androidx.navigation.fragment.findNavController import dagger.hilt.android.AndroidEntryPoint import org.oxycblt.auxio.databinding.DialogSortBinding import org.oxycblt.auxio.detail.DetailViewModel -import org.oxycblt.auxio.list.Sort +import org.oxycblt.auxio.list.sort.Sort import org.oxycblt.auxio.list.sort.SortDialog import org.oxycblt.auxio.music.Artist import org.oxycblt.auxio.util.collectImmediately diff --git a/app/src/main/java/org/oxycblt/auxio/detail/sort/GenreSongSortDialog.kt b/app/src/main/java/org/oxycblt/auxio/detail/sort/GenreSongSortDialog.kt index 3191557e4..88c69172b 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/sort/GenreSongSortDialog.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/sort/GenreSongSortDialog.kt @@ -24,7 +24,7 @@ import androidx.navigation.fragment.findNavController import dagger.hilt.android.AndroidEntryPoint import org.oxycblt.auxio.databinding.DialogSortBinding import org.oxycblt.auxio.detail.DetailViewModel -import org.oxycblt.auxio.list.Sort +import org.oxycblt.auxio.list.sort.Sort import org.oxycblt.auxio.list.sort.SortDialog import org.oxycblt.auxio.music.Genre import org.oxycblt.auxio.util.collectImmediately diff --git a/app/src/main/java/org/oxycblt/auxio/detail/sort/PlaylistSongSortDialog.kt b/app/src/main/java/org/oxycblt/auxio/detail/sort/PlaylistSongSortDialog.kt index 58b989679..923d41829 100644 --- a/app/src/main/java/org/oxycblt/auxio/detail/sort/PlaylistSongSortDialog.kt +++ b/app/src/main/java/org/oxycblt/auxio/detail/sort/PlaylistSongSortDialog.kt @@ -24,7 +24,7 @@ import androidx.navigation.fragment.findNavController import dagger.hilt.android.AndroidEntryPoint import org.oxycblt.auxio.databinding.DialogSortBinding import org.oxycblt.auxio.detail.DetailViewModel -import org.oxycblt.auxio.list.Sort +import org.oxycblt.auxio.list.sort.Sort import org.oxycblt.auxio.list.sort.SortDialog import org.oxycblt.auxio.music.Playlist import org.oxycblt.auxio.util.collectImmediately 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 0d7e1e4d0..1e81c18e4 100644 --- a/app/src/main/java/org/oxycblt/auxio/home/HomeViewModel.kt +++ b/app/src/main/java/org/oxycblt/auxio/home/HomeViewModel.kt @@ -24,8 +24,8 @@ import javax.inject.Inject import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import org.oxycblt.auxio.home.tabs.Tab -import org.oxycblt.auxio.list.Sort import org.oxycblt.auxio.list.adapter.UpdateInstructions +import org.oxycblt.auxio.list.sort.Sort import org.oxycblt.auxio.music.Album import org.oxycblt.auxio.music.Artist import org.oxycblt.auxio.music.Genre @@ -312,7 +312,7 @@ constructor( } sealed interface Outer { - object Settings : Outer + data object Settings : Outer - object About : Outer + data object About : Outer } 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 3e38a6e0d..a7c63a455 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 @@ -33,9 +33,9 @@ import org.oxycblt.auxio.home.fastscroll.FastScrollRecyclerView import org.oxycblt.auxio.list.ListFragment import org.oxycblt.auxio.list.ListViewModel import org.oxycblt.auxio.list.SelectableListListener -import org.oxycblt.auxio.list.Sort import org.oxycblt.auxio.list.adapter.SelectionIndicatorAdapter import org.oxycblt.auxio.list.recycler.AlbumViewHolder +import org.oxycblt.auxio.list.sort.Sort import org.oxycblt.auxio.music.Album import org.oxycblt.auxio.music.Music import org.oxycblt.auxio.music.MusicParent 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 920231d2a..84834cb74 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 @@ -31,9 +31,9 @@ import org.oxycblt.auxio.home.fastscroll.FastScrollRecyclerView import org.oxycblt.auxio.list.ListFragment import org.oxycblt.auxio.list.ListViewModel import org.oxycblt.auxio.list.SelectableListListener -import org.oxycblt.auxio.list.Sort import org.oxycblt.auxio.list.adapter.SelectionIndicatorAdapter import org.oxycblt.auxio.list.recycler.ArtistViewHolder +import org.oxycblt.auxio.list.sort.Sort import org.oxycblt.auxio.music.Artist import org.oxycblt.auxio.music.Music import org.oxycblt.auxio.music.MusicParent 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 381422748..a39c0ee2d 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 @@ -31,9 +31,9 @@ import org.oxycblt.auxio.home.fastscroll.FastScrollRecyclerView import org.oxycblt.auxio.list.ListFragment import org.oxycblt.auxio.list.ListViewModel import org.oxycblt.auxio.list.SelectableListListener -import org.oxycblt.auxio.list.Sort import org.oxycblt.auxio.list.adapter.SelectionIndicatorAdapter import org.oxycblt.auxio.list.recycler.GenreViewHolder +import org.oxycblt.auxio.list.sort.Sort import org.oxycblt.auxio.music.Genre import org.oxycblt.auxio.music.Music import org.oxycblt.auxio.music.MusicParent 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 a36db3873..d8a7ac175 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 @@ -30,9 +30,9 @@ import org.oxycblt.auxio.home.fastscroll.FastScrollRecyclerView import org.oxycblt.auxio.list.ListFragment import org.oxycblt.auxio.list.ListViewModel import org.oxycblt.auxio.list.SelectableListListener -import org.oxycblt.auxio.list.Sort import org.oxycblt.auxio.list.adapter.SelectionIndicatorAdapter import org.oxycblt.auxio.list.recycler.PlaylistViewHolder +import org.oxycblt.auxio.list.sort.Sort import org.oxycblt.auxio.music.Music import org.oxycblt.auxio.music.MusicParent import org.oxycblt.auxio.music.MusicViewModel 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 38e63a5bd..fb214b76b 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 @@ -32,9 +32,9 @@ import org.oxycblt.auxio.home.fastscroll.FastScrollRecyclerView import org.oxycblt.auxio.list.ListFragment import org.oxycblt.auxio.list.ListViewModel import org.oxycblt.auxio.list.SelectableListListener -import org.oxycblt.auxio.list.Sort import org.oxycblt.auxio.list.adapter.SelectionIndicatorAdapter import org.oxycblt.auxio.list.recycler.SongViewHolder +import org.oxycblt.auxio.list.sort.Sort import org.oxycblt.auxio.music.Music import org.oxycblt.auxio.music.MusicParent import org.oxycblt.auxio.music.MusicViewModel diff --git a/app/src/main/java/org/oxycblt/auxio/home/sort/AlbumSortDialog.kt b/app/src/main/java/org/oxycblt/auxio/home/sort/AlbumSortDialog.kt index 82426eb71..39efb1ca1 100644 --- a/app/src/main/java/org/oxycblt/auxio/home/sort/AlbumSortDialog.kt +++ b/app/src/main/java/org/oxycblt/auxio/home/sort/AlbumSortDialog.kt @@ -21,7 +21,7 @@ package org.oxycblt.auxio.home.sort import androidx.fragment.app.activityViewModels import dagger.hilt.android.AndroidEntryPoint import org.oxycblt.auxio.home.HomeViewModel -import org.oxycblt.auxio.list.Sort +import org.oxycblt.auxio.list.sort.Sort import org.oxycblt.auxio.list.sort.SortDialog /** diff --git a/app/src/main/java/org/oxycblt/auxio/home/sort/ArtistSortDialog.kt b/app/src/main/java/org/oxycblt/auxio/home/sort/ArtistSortDialog.kt index 5c02f777b..f3aeacd17 100644 --- a/app/src/main/java/org/oxycblt/auxio/home/sort/ArtistSortDialog.kt +++ b/app/src/main/java/org/oxycblt/auxio/home/sort/ArtistSortDialog.kt @@ -21,7 +21,7 @@ package org.oxycblt.auxio.home.sort import androidx.fragment.app.activityViewModels import dagger.hilt.android.AndroidEntryPoint import org.oxycblt.auxio.home.HomeViewModel -import org.oxycblt.auxio.list.Sort +import org.oxycblt.auxio.list.sort.Sort import org.oxycblt.auxio.list.sort.SortDialog /** diff --git a/app/src/main/java/org/oxycblt/auxio/home/sort/GenreSortDialog.kt b/app/src/main/java/org/oxycblt/auxio/home/sort/GenreSortDialog.kt index 96093c9a9..e62ac8272 100644 --- a/app/src/main/java/org/oxycblt/auxio/home/sort/GenreSortDialog.kt +++ b/app/src/main/java/org/oxycblt/auxio/home/sort/GenreSortDialog.kt @@ -21,7 +21,7 @@ package org.oxycblt.auxio.home.sort import androidx.fragment.app.activityViewModels import dagger.hilt.android.AndroidEntryPoint import org.oxycblt.auxio.home.HomeViewModel -import org.oxycblt.auxio.list.Sort +import org.oxycblt.auxio.list.sort.Sort import org.oxycblt.auxio.list.sort.SortDialog /** diff --git a/app/src/main/java/org/oxycblt/auxio/home/sort/PlaylistSortDialog.kt b/app/src/main/java/org/oxycblt/auxio/home/sort/PlaylistSortDialog.kt index eb89c4bdd..d87f126e9 100644 --- a/app/src/main/java/org/oxycblt/auxio/home/sort/PlaylistSortDialog.kt +++ b/app/src/main/java/org/oxycblt/auxio/home/sort/PlaylistSortDialog.kt @@ -21,7 +21,7 @@ package org.oxycblt.auxio.home.sort import androidx.fragment.app.activityViewModels import dagger.hilt.android.AndroidEntryPoint import org.oxycblt.auxio.home.HomeViewModel -import org.oxycblt.auxio.list.Sort +import org.oxycblt.auxio.list.sort.Sort import org.oxycblt.auxio.list.sort.SortDialog /** diff --git a/app/src/main/java/org/oxycblt/auxio/home/sort/SongSortDialog.kt b/app/src/main/java/org/oxycblt/auxio/home/sort/SongSortDialog.kt index bec18719a..a961a39c4 100644 --- a/app/src/main/java/org/oxycblt/auxio/home/sort/SongSortDialog.kt +++ b/app/src/main/java/org/oxycblt/auxio/home/sort/SongSortDialog.kt @@ -21,7 +21,7 @@ package org.oxycblt.auxio.home.sort import androidx.fragment.app.activityViewModels import dagger.hilt.android.AndroidEntryPoint import org.oxycblt.auxio.home.HomeViewModel -import org.oxycblt.auxio.list.Sort +import org.oxycblt.auxio.list.sort.Sort import org.oxycblt.auxio.list.sort.SortDialog /** diff --git a/app/src/main/java/org/oxycblt/auxio/image/extractor/CoverExtractor.kt b/app/src/main/java/org/oxycblt/auxio/image/extractor/CoverExtractor.kt index 537d8e874..899867eb0 100644 --- a/app/src/main/java/org/oxycblt/auxio/image/extractor/CoverExtractor.kt +++ b/app/src/main/java/org/oxycblt/auxio/image/extractor/CoverExtractor.kt @@ -50,7 +50,7 @@ import okio.buffer import okio.source import org.oxycblt.auxio.image.CoverMode import org.oxycblt.auxio.image.ImageSettings -import org.oxycblt.auxio.list.Sort +import org.oxycblt.auxio.list.sort.Sort import org.oxycblt.auxio.music.Album import org.oxycblt.auxio.music.Song import org.oxycblt.auxio.util.logE diff --git a/app/src/main/java/org/oxycblt/auxio/list/adapter/FlexibleListAdapter.kt b/app/src/main/java/org/oxycblt/auxio/list/adapter/FlexibleListAdapter.kt index 3b7d8d476..f01b47f41 100644 --- a/app/src/main/java/org/oxycblt/auxio/list/adapter/FlexibleListAdapter.kt +++ b/app/src/main/java/org/oxycblt/auxio/list/adapter/FlexibleListAdapter.kt @@ -70,7 +70,7 @@ abstract class FlexibleListAdapter( */ sealed interface UpdateInstructions { /** Use an asynchronous diff. Useful for unpredictable updates, but looks chaotic and janky. */ - object Diff : UpdateInstructions + data object Diff : UpdateInstructions /** * Visually replace all items from a given point. More visually coherent than [Diff]. diff --git a/app/src/main/java/org/oxycblt/auxio/list/Sort.kt b/app/src/main/java/org/oxycblt/auxio/list/sort/Sort.kt similarity index 95% rename from app/src/main/java/org/oxycblt/auxio/list/Sort.kt rename to app/src/main/java/org/oxycblt/auxio/list/sort/Sort.kt index 555fd6b9a..d4088358a 100644 --- a/app/src/main/java/org/oxycblt/auxio/list/Sort.kt +++ b/app/src/main/java/org/oxycblt/auxio/list/sort/Sort.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021 Auxio Project + * Copyright (c) 2023 Auxio Project * Sort.kt is part of Auxio. * * This program is free software: you can redistribute it and/or modify @@ -16,7 +16,7 @@ * along with this program. If not, see . */ -package org.oxycblt.auxio.list +package org.oxycblt.auxio.list.sort import kotlin.math.max import org.oxycblt.auxio.IntegerTable @@ -25,7 +25,6 @@ import org.oxycblt.auxio.music.Album import org.oxycblt.auxio.music.Artist import org.oxycblt.auxio.music.Genre import org.oxycblt.auxio.music.Music -import org.oxycblt.auxio.music.MusicParent import org.oxycblt.auxio.music.Playlist import org.oxycblt.auxio.music.Song import org.oxycblt.auxio.music.info.Date @@ -41,22 +40,6 @@ import org.oxycblt.auxio.music.info.Disc * @author Alexander Capehart (OxygenCobalt) */ data class Sort(val mode: Mode, val direction: Direction) { - /** - * Create a new [Sort] with the same [mode], but a different [Direction]. - * - * @param direction The new [Direction] to sort in. - * @return A new sort with the same mode, but with the new [Direction] value applied. - */ - fun withDirection(direction: Direction) = Sort(mode, direction) - - /** - * Create a new [Sort] with the same [direction] value, but different [mode] value. - * - * @param mode Tbe new mode to use for the Sort. - * @return A new sort with the same [direction] value, but with the new [mode] applied. - */ - fun withMode(mode: Mode) = Sort(mode, direction) - /** * Sort a list of [Song]s. * @@ -215,7 +198,7 @@ data class Sort(val mode: Mode, val direction: Direction) { * * @see Music.name */ - object ByName : Mode { + data object ByName : Mode { override val intCode: Int get() = IntegerTable.SORT_BY_NAME @@ -243,7 +226,7 @@ data class Sort(val mode: Mode, val direction: Direction) { * * @see Album.name */ - object ByAlbum : Mode { + data object ByAlbum : Mode { override val intCode: Int get() = IntegerTable.SORT_BY_ALBUM @@ -263,7 +246,7 @@ data class Sort(val mode: Mode, val direction: Direction) { * * @see Artist.name */ - object ByArtist : Mode { + data object ByArtist : Mode { override val intCode: Int get() = IntegerTable.SORT_BY_ARTIST @@ -292,7 +275,7 @@ data class Sort(val mode: Mode, val direction: Direction) { * @see Song.date * @see Album.dates */ - object ByDate : Mode { + data object ByDate : Mode { override val intCode: Int get() = IntegerTable.SORT_BY_YEAR @@ -314,7 +297,7 @@ data class Sort(val mode: Mode, val direction: Direction) { } /** Sort by the duration of an item. */ - object ByDuration : Mode { + data object ByDuration : Mode { override val intCode: Int get() = IntegerTable.SORT_BY_DURATION @@ -344,12 +327,8 @@ data class Sort(val mode: Mode, val direction: Direction) { compareBy(BasicComparator.PLAYLIST)) } - /** - * Sort by the amount of songs an item contains. Only available for [MusicParent]s. - * - * @see MusicParent.songs - */ - object ByCount : Mode { + /** Sort by the amount of songs an item contains. Only available for MusicParents. */ + data object ByCount : Mode { override val intCode: Int get() = IntegerTable.SORT_BY_COUNT @@ -380,7 +359,7 @@ data class Sort(val mode: Mode, val direction: Direction) { * * @see Song.disc */ - object ByDisc : Mode { + data object ByDisc : Mode { override val intCode: Int get() = IntegerTable.SORT_BY_DISC @@ -399,7 +378,7 @@ data class Sort(val mode: Mode, val direction: Direction) { * * @see Song.track */ - object ByTrack : Mode { + data object ByTrack : Mode { override val intCode: Int get() = IntegerTable.SORT_BY_TRACK @@ -419,7 +398,7 @@ data class Sort(val mode: Mode, val direction: Direction) { * @see Song.dateAdded * @see Album.dates */ - object ByDateAdded : Mode { + data object ByDateAdded : Mode { override val intCode: Int get() = IntegerTable.SORT_BY_DATE_ADDED diff --git a/app/src/main/java/org/oxycblt/auxio/list/sort/SortDialog.kt b/app/src/main/java/org/oxycblt/auxio/list/sort/SortDialog.kt index 7976041fd..8bdb31924 100644 --- a/app/src/main/java/org/oxycblt/auxio/list/sort/SortDialog.kt +++ b/app/src/main/java/org/oxycblt/auxio/list/sort/SortDialog.kt @@ -26,7 +26,6 @@ import com.google.android.material.button.MaterialButtonToggleGroup import org.oxycblt.auxio.R import org.oxycblt.auxio.databinding.DialogSortBinding import org.oxycblt.auxio.list.ClickableListListener -import org.oxycblt.auxio.list.Sort import org.oxycblt.auxio.list.adapter.UpdateInstructions import org.oxycblt.auxio.ui.ViewBindingBottomSheetDialogFragment import org.oxycblt.auxio.util.systemBarInsetsCompat @@ -35,7 +34,7 @@ abstract class SortDialog : ViewBindingBottomSheetDialogFragment(), ClickableListListener, MaterialButtonToggleGroup.OnButtonCheckedListener { - private val modeAdapter = SortModeAdapter(this) + private val modeAdapter = SortModeAdapter(@Suppress("LeakingThis") this) abstract fun getInitialSort(): Sort? diff --git a/app/src/main/java/org/oxycblt/auxio/list/sort/SortModeAdapter.kt b/app/src/main/java/org/oxycblt/auxio/list/sort/SortModeAdapter.kt index d945a61ef..25a8d2c69 100644 --- a/app/src/main/java/org/oxycblt/auxio/list/sort/SortModeAdapter.kt +++ b/app/src/main/java/org/oxycblt/auxio/list/sort/SortModeAdapter.kt @@ -23,7 +23,6 @@ import android.view.ViewGroup import androidx.recyclerview.widget.DiffUtil import org.oxycblt.auxio.databinding.ItemSortModeBinding import org.oxycblt.auxio.list.ClickableListListener -import org.oxycblt.auxio.list.Sort import org.oxycblt.auxio.list.adapter.FlexibleListAdapter import org.oxycblt.auxio.list.recycler.DialogRecyclerView import org.oxycblt.auxio.util.context diff --git a/app/src/main/java/org/oxycblt/auxio/music/Indexing.kt b/app/src/main/java/org/oxycblt/auxio/music/Indexing.kt index 545a5f234..a185d5b2f 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/Indexing.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/Indexing.kt @@ -57,7 +57,7 @@ sealed interface IndexingState { */ sealed interface IndexingProgress { /** Other work is being done that does not have a defined progress. */ - object Indeterminate : IndexingProgress + data object Indeterminate : IndexingProgress /** * Songs are currently being loaded. diff --git a/app/src/main/java/org/oxycblt/auxio/music/MusicSettings.kt b/app/src/main/java/org/oxycblt/auxio/music/MusicSettings.kt index b2685fc43..89d4476ad 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/MusicSettings.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/MusicSettings.kt @@ -24,7 +24,7 @@ import androidx.core.content.edit import dagger.hilt.android.qualifiers.ApplicationContext import javax.inject.Inject import org.oxycblt.auxio.R -import org.oxycblt.auxio.list.Sort +import org.oxycblt.auxio.list.sort.Sort import org.oxycblt.auxio.music.fs.Directory import org.oxycblt.auxio.music.fs.MusicDirectories import org.oxycblt.auxio.settings.Settings @@ -178,20 +178,11 @@ class MusicSettingsImpl @Inject constructor(@ApplicationContext context: Context } override var albumSongSort: Sort - get() { - var sort = - Sort.fromIntCode( - sharedPreferences.getInt( - getString(R.string.set_key_album_songs_sort), Int.MIN_VALUE)) - ?: Sort(Sort.Mode.ByDisc, Sort.Direction.ASCENDING) - - // Correct legacy album sort modes to Disc - if (sort.mode is Sort.Mode.ByName) { - sort = sort.withMode(Sort.Mode.ByDisc) - } - - return sort - } + get() = + Sort.fromIntCode( + sharedPreferences.getInt( + getString(R.string.set_key_album_songs_sort), Int.MIN_VALUE)) + ?: Sort(Sort.Mode.ByDisc, Sort.Direction.ASCENDING) set(value) { sharedPreferences.edit { putInt(getString(R.string.set_key_album_songs_sort), value.intCode) diff --git a/app/src/main/java/org/oxycblt/auxio/music/decision/PlaylistPickerViewModel.kt b/app/src/main/java/org/oxycblt/auxio/music/decision/PlaylistPickerViewModel.kt index def23d977..b21d9e991 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/decision/PlaylistPickerViewModel.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/decision/PlaylistPickerViewModel.kt @@ -26,7 +26,7 @@ import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import org.oxycblt.auxio.R import org.oxycblt.auxio.list.Item -import org.oxycblt.auxio.list.Sort +import org.oxycblt.auxio.list.sort.Sort import org.oxycblt.auxio.music.Music import org.oxycblt.auxio.music.MusicRepository import org.oxycblt.auxio.music.Playlist @@ -260,9 +260,9 @@ sealed interface ChosenName { /** The current name already exists. */ data class AlreadyExists(val prior: String) : ChosenName /** The current name is empty. */ - object Empty : ChosenName + data object Empty : ChosenName /** The current name only consists of whitespace. */ - object Blank : ChosenName + data object Blank : ChosenName } /** diff --git a/app/src/main/java/org/oxycblt/auxio/music/device/DeviceMusicImpl.kt b/app/src/main/java/org/oxycblt/auxio/music/device/DeviceMusicImpl.kt index 14497e909..1d2ce2a26 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/device/DeviceMusicImpl.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/device/DeviceMusicImpl.kt @@ -20,7 +20,7 @@ package org.oxycblt.auxio.music.device import org.oxycblt.auxio.R import org.oxycblt.auxio.image.extractor.CoverUri -import org.oxycblt.auxio.list.Sort +import org.oxycblt.auxio.list.sort.Sort import org.oxycblt.auxio.music.Album import org.oxycblt.auxio.music.Artist import org.oxycblt.auxio.music.Genre diff --git a/app/src/main/java/org/oxycblt/auxio/music/fs/StorageUtil.kt b/app/src/main/java/org/oxycblt/auxio/music/fs/StorageUtil.kt index 1a057bd94..87eff7081 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/fs/StorageUtil.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/fs/StorageUtil.kt @@ -83,7 +83,7 @@ inline fun ContentResolver.useQuery( ) = safeQuery(uri, projection, selector, args).use(block) /** Album art [MediaStore] database is not a built-in constant, have to define it ourselves. */ -private val EXTERNAL_COVERS_URI = Uri.parse("content://media/external/audio/albumart") +private val externalCoversUri = Uri.parse("content://media/external/audio/albumart") /** * Convert a [MediaStore] Song ID into a [Uri] to it's audio file. @@ -102,21 +102,11 @@ fun Long.toAudioUri() = * @return An external storage image [Uri]. May not exist. * @see ContentUris.withAppendedId */ -fun Long.toCoverUri() = ContentUris.withAppendedId(EXTERNAL_COVERS_URI, this) +fun Long.toCoverUri() = ContentUris.withAppendedId(externalCoversUri, this) // --- STORAGEMANAGER UTILITIES --- // Largely derived from Material Files: https://github.com/zhanghai/MaterialFiles -/** - * Provides the analogous method to [StorageManager.getStorageVolumes] method that is usable from - * API 21 to API 23, in which the [StorageManager] API was hidden and differed greatly. - * - * @see StorageManager.getStorageVolumes - */ -@Suppress("NewApi") -private val SM_API21_GET_VOLUME_LIST_METHOD: Method by - lazyReflectedMethod(StorageManager::class, "getVolumeList") - /** * Provides the analogous method to [StorageVolume.getDirectory] method that is usable from API 21 * to API 23, in which the [StorageVolume] API was hidden and differed greatly. @@ -124,7 +114,7 @@ private val SM_API21_GET_VOLUME_LIST_METHOD: Method by * @see StorageVolume.getDirectory */ @Suppress("NewApi") -private val SV_API21_GET_PATH_METHOD: Method by lazyReflectedMethod(StorageVolume::class, "getPath") +private val svApi21GetPathMethod: Method by lazyReflectedMethod(StorageVolume::class, "getPath") /** * The [StorageVolume] considered the "primary" volume by the system, obtained in a @@ -143,13 +133,7 @@ val StorageManager.primaryStorageVolumeCompat: StorageVolume * @see StorageManager.getStorageVolumes */ val StorageManager.storageVolumesCompat: List - get() = - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - storageVolumes.toList() - } else { - @Suppress("UNCHECKED_CAST") - (SM_API21_GET_VOLUME_LIST_METHOD.invoke(this) as Array).toList() - } + get() = storageVolumes.toList() /** * The the absolute path to this [StorageVolume]'s directory within the file-system, in a @@ -166,8 +150,7 @@ val StorageVolume.directoryCompat: String? // Replicate API: Analogous method if mounted, null if not when (stateCompat) { Environment.MEDIA_MOUNTED, - Environment.MEDIA_MOUNTED_READ_ONLY -> - SV_API21_GET_PATH_METHOD.invoke(this) as String + Environment.MEDIA_MOUNTED_READ_ONLY -> svApi21GetPathMethod.invoke(this) as String else -> null } } diff --git a/app/src/main/java/org/oxycblt/auxio/music/info/Name.kt b/app/src/main/java/org/oxycblt/auxio/music/info/Name.kt index acef9dbfc..bbde5aca3 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/info/Name.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/info/Name.kt @@ -145,8 +145,8 @@ sealed interface Name : Comparable { } } -private val COLLATOR: Collator = Collator.getInstance().apply { strength = Collator.PRIMARY } -private val PUNCT_REGEX by lazy { Regex("[\\p{Punct}+]") } +private val collator: Collator = Collator.getInstance().apply { strength = Collator.PRIMARY } +private val punctRegex by lazy { Regex("[\\p{Punct}+]") } /** * Plain [Name.Known] implementation that is internationalization-safe. @@ -159,8 +159,8 @@ private data class SimpleKnownName(override val raw: String, override val sort: private fun parseToken(name: String): SortToken { // Remove excess punctuation from the string, as those usually aren't considered in sorting. - val stripped = name.replace(PUNCT_REGEX, "").ifEmpty { name } - val collationKey = COLLATOR.getCollationKey(stripped) + val stripped = name.replace(punctRegex, "").ifEmpty { name } + val collationKey = collator.getCollationKey(stripped) // Always use lexicographic mode since we aren't parsing any numeric components return SortToken(collationKey, SortToken.Type.LEXICOGRAPHIC) } @@ -181,7 +181,7 @@ private data class IntelligentKnownName(override val raw: String, override val s val stripped = name // Remove excess punctuation from the string, as those u - .replace(PUNCT_REGEX, "") + .replace(punctRegex, "") .ifEmpty { name } .run { // Strip any english articles like "the" or "an" from the start, as music @@ -208,10 +208,10 @@ private data class IntelligentKnownName(override val raw: String, override val s val digits = token.trimStart { Character.getNumericValue(it) == 0 }.ifEmpty { token } // Other languages have other types of digit strings, still use collation keys - collationKey = COLLATOR.getCollationKey(digits) + collationKey = collator.getCollationKey(digits) type = SortToken.Type.NUMERIC } else { - collationKey = COLLATOR.getCollationKey(token) + collationKey = collator.getCollationKey(token) type = SortToken.Type.LEXICOGRAPHIC } SortToken(collationKey, type) diff --git a/app/src/main/java/org/oxycblt/auxio/music/info/ReleaseType.kt b/app/src/main/java/org/oxycblt/auxio/music/info/ReleaseType.kt index c4cb00fd3..24260912b 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/info/ReleaseType.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/info/ReleaseType.kt @@ -111,7 +111,7 @@ sealed interface ReleaseType { * A soundtrack. Similar to a [Compilation], but created for a specific piece of (usually * visual) media. */ - object Soundtrack : ReleaseType { + data object Soundtrack : ReleaseType { override val refinement: Refinement? get() = null @@ -123,7 +123,7 @@ sealed interface ReleaseType { * A (DJ) Mix. These are usually one large track consisting of the artist playing several * sub-tracks with smooth transitions between them. */ - object Mix : ReleaseType { + data object Mix : ReleaseType { override val refinement: Refinement? get() = null @@ -135,7 +135,7 @@ sealed interface ReleaseType { * A Mix-tape. These are usually [EP]-sized releases of music made to promote an Artist or a * future release. */ - object Mixtape : ReleaseType { + data object Mixtape : ReleaseType { override val refinement: Refinement? get() = null diff --git a/app/src/main/java/org/oxycblt/auxio/music/metadata/TagUtil.kt b/app/src/main/java/org/oxycblt/auxio/music/metadata/TagUtil.kt index ebc5b6bc6..b5e5e131e 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/metadata/TagUtil.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/metadata/TagUtil.kt @@ -204,14 +204,14 @@ private fun String.parseId3v1Genre(): String? { "RX" -> "Remix" else -> null } - return GENRE_TABLE.getOrNull(numeric) + return genreTable.getOrNull(numeric) } /** * A [Regex] that implements parsing for ID3v2's genre format. Derived from mutagen: * https://github.com/quodlibet/mutagen */ -private val ID3V2_GENRE_RE by lazy { Regex("((?:\\((\\d+|RX|CR)\\))*)(.+)?") } +private val id3v2GenreRe by lazy { Regex("((?:\\((\\d+|RX|CR)\\))*)(.+)?") } /** * Parse an ID3v2 integer genre field, which has support for multiple genre values and combined @@ -220,7 +220,7 @@ private val ID3V2_GENRE_RE by lazy { Regex("((?:\\((\\d+|RX|CR)\\))*)(.+)?") } * @return A list of one or more genres, or null if the field is not a valid ID3v2 integer genre. */ private fun String.parseId3v2Genre(): List? { - val groups = (ID3V2_GENRE_RE.matchEntire(this) ?: return null).groupValues + val groups = (id3v2GenreRe.matchEntire(this) ?: return null).groupValues val genres = mutableSetOf() // ID3v2.3 genres are far more complex and require string grokking to properly implement. @@ -260,7 +260,7 @@ private fun String.parseId3v2Genre(): List? { * A table of the "conventional" mapping between ID3v1 integer genres and their named counterparts. * Includes non-standard extensions. */ -private val GENRE_TABLE = +private val genreTable = arrayOf( // ID3 Standard "Blues", diff --git a/app/src/main/java/org/oxycblt/auxio/music/system/IndexerNotifications.kt b/app/src/main/java/org/oxycblt/auxio/music/system/IndexerNotifications.kt index 301fa1b46..e94e4fe16 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/system/IndexerNotifications.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/system/IndexerNotifications.kt @@ -36,7 +36,7 @@ import org.oxycblt.auxio.util.newMainPendingIntent * @author Alexander Capehart (OxygenCobalt) */ class IndexingNotification(private val context: Context) : - ForegroundServiceNotification(context, INDEXER_CHANNEL) { + ForegroundServiceNotification(context, indexerChannel) { private var lastUpdateTime = -1L init { @@ -98,7 +98,7 @@ class IndexingNotification(private val context: Context) : * @author Alexander Capehart (OxygenCobalt) */ class ObservingNotification(context: Context) : - ForegroundServiceNotification(context, INDEXER_CHANNEL) { + ForegroundServiceNotification(context, indexerChannel) { init { setSmallIcon(R.drawable.ic_indexer_24) setCategory(NotificationCompat.CATEGORY_SERVICE) @@ -115,6 +115,6 @@ class ObservingNotification(context: Context) : } /** Notification channel shared by [IndexingNotification] and [ObservingNotification]. */ -private val INDEXER_CHANNEL = +private val indexerChannel = ForegroundServiceNotification.ChannelInfo( id = BuildConfig.APPLICATION_ID + ".channel.INDEXER", nameRes = R.string.lbl_indexer) diff --git a/app/src/main/java/org/oxycblt/auxio/music/user/UserMusicDatabase.kt b/app/src/main/java/org/oxycblt/auxio/music/user/UserMusicDatabase.kt index 21ba9cda4..b6358ee3b 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/user/UserMusicDatabase.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/user/UserMusicDatabase.kt @@ -51,7 +51,7 @@ abstract class UserMusicDatabase : RoomDatabase() { * @author Alexander Capehart (OxygenCobalt) */ @Dao -abstract class PlaylistDao() { +abstract class PlaylistDao { /** * Read out all playlists stored in the database. * diff --git a/app/src/main/java/org/oxycblt/auxio/playback/PlaySong.kt b/app/src/main/java/org/oxycblt/auxio/playback/PlaySong.kt index 6497e9c87..34dd90929 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/PlaySong.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/PlaySong.kt @@ -44,12 +44,12 @@ sealed interface PlaySong { val intCode: Int /** Play a Song from the entire library of songs. */ - object FromAll : PlaySong { + data object FromAll : PlaySong { override val intCode = IntegerTable.PLAY_SONG_FROM_ALL } /** Play a song from it's album. */ - object FromAlbum : PlaySong { + data object FromAlbum : PlaySong { override val intCode = IntegerTable.PLAY_SONG_FROM_ALBUM } @@ -83,7 +83,7 @@ sealed interface PlaySong { } /** Only play the given song, include nothing else in the queue. */ - object ByItself : PlaySong { + data object ByItself : PlaySong { override val intCode = IntegerTable.PLAY_SONG_BY_ITSELF } diff --git a/app/src/main/java/org/oxycblt/auxio/playback/state/InternalPlayer.kt b/app/src/main/java/org/oxycblt/auxio/playback/state/InternalPlayer.kt index 17186e181..0980a1575 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/state/InternalPlayer.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/state/InternalPlayer.kt @@ -77,13 +77,13 @@ interface InternalPlayer { /** Possible long-running background tasks handled by the background playback task. */ sealed interface Action { /** Restore the previously saved playback state. */ - object RestoreState : Action + data object RestoreState : Action /** * Start shuffled playback of the entire music library. Analogous to the "Shuffle All" * shortcut. */ - object ShuffleAll : Action + data object ShuffleAll : Action /** * Start playing an audio file at the given [Uri]. diff --git a/app/src/main/java/org/oxycblt/auxio/playback/system/MediaButtonReceiver.kt b/app/src/main/java/org/oxycblt/auxio/playback/system/MediaButtonReceiver.kt index b875636b8..65192cf10 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/system/MediaButtonReceiver.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/system/MediaButtonReceiver.kt @@ -37,6 +37,7 @@ import org.oxycblt.auxio.util.logD class MediaButtonReceiver : BroadcastReceiver() { @Inject lateinit var playbackManager: PlaybackStateManager + // TODO: Figure this out override fun onReceive(context: Context, intent: Intent) { if (playbackManager.queue.currentSong != null) { // We have a song, so we can assume that the service will start a foreground state. diff --git a/app/src/main/java/org/oxycblt/auxio/playback/system/PlaybackService.kt b/app/src/main/java/org/oxycblt/auxio/playback/system/PlaybackService.kt index ffcc84b41..96aa107c6 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/system/PlaybackService.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/system/PlaybackService.kt @@ -25,8 +25,8 @@ import android.content.Intent import android.content.IntentFilter import android.media.AudioManager import android.media.audiofx.AudioEffect -import android.os.Build import android.os.IBinder +import androidx.core.content.ContextCompat import androidx.media3.common.AudioAttributes import androidx.media3.common.C import androidx.media3.common.MediaItem @@ -165,18 +165,8 @@ class PlaybackService : addAction(WidgetProvider.ACTION_WIDGET_UPDATE) } - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) { - registerReceiver( - systemReceiver, - intentFilter, - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { - RECEIVER_NOT_EXPORTED - } else { - 0 - }) - } else { - registerReceiver(systemReceiver, intentFilter) - } + ContextCompat.registerReceiver( + this, systemReceiver, intentFilter, ContextCompat.RECEIVER_NOT_EXPORTED) logD("Service created") } diff --git a/app/src/main/java/org/oxycblt/auxio/search/SearchViewModel.kt b/app/src/main/java/org/oxycblt/auxio/search/SearchViewModel.kt index 3b8c9d004..fb60d7ff9 100644 --- a/app/src/main/java/org/oxycblt/auxio/search/SearchViewModel.kt +++ b/app/src/main/java/org/oxycblt/auxio/search/SearchViewModel.kt @@ -32,7 +32,7 @@ import org.oxycblt.auxio.R import org.oxycblt.auxio.list.BasicHeader import org.oxycblt.auxio.list.Divider import org.oxycblt.auxio.list.Item -import org.oxycblt.auxio.list.Sort +import org.oxycblt.auxio.list.sort.Sort import org.oxycblt.auxio.music.MusicRepository import org.oxycblt.auxio.music.MusicType import org.oxycblt.auxio.music.Song diff --git a/app/src/main/java/org/oxycblt/auxio/settings/AboutFragment.kt b/app/src/main/java/org/oxycblt/auxio/settings/AboutFragment.kt index 8288d7443..cd6217a9f 100644 --- a/app/src/main/java/org/oxycblt/auxio/settings/AboutFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/settings/AboutFragment.kt @@ -121,7 +121,6 @@ class AboutFragment : ViewBindingFragment() { // case, we will try to manually handle these cases before we try to launch the // browser. logD("Resolving browser activity for chooser") - @Suppress("DEPRECATION") val pkgName = context.packageManager .resolveActivity(browserIntent, PackageManager.MATCH_DEFAULT_ONLY) diff --git a/app/src/main/java/org/oxycblt/auxio/ui/accent/Accent.kt b/app/src/main/java/org/oxycblt/auxio/ui/accent/Accent.kt index de03d3ba9..60ca375c0 100644 --- a/app/src/main/java/org/oxycblt/auxio/ui/accent/Accent.kt +++ b/app/src/main/java/org/oxycblt/auxio/ui/accent/Accent.kt @@ -22,7 +22,7 @@ import android.os.Build import org.oxycblt.auxio.R import org.oxycblt.auxio.util.logW -private val ACCENT_NAMES = +private val accentNames = intArrayOf( R.string.clr_red, R.string.clr_pink, @@ -42,7 +42,7 @@ private val ACCENT_NAMES = R.string.clr_grey, R.string.clr_dynamic) -private val ACCENT_THEMES = +private val accentThemes = intArrayOf( R.style.Theme_Auxio_Red, R.style.Theme_Auxio_Pink, @@ -63,7 +63,7 @@ private val ACCENT_THEMES = R.style.Theme_Auxio_App // Dynamic colors are on the base theme ) -private val ACCENT_BLACK_THEMES = +private val accentBlackThemes = intArrayOf( R.style.Theme_Auxio_Black_Red, R.style.Theme_Auxio_Black_Pink, @@ -84,7 +84,7 @@ private val ACCENT_BLACK_THEMES = R.style.Theme_Auxio_Black // Dynamic colors are on the base theme ) -private val ACCENT_PRIMARY_COLORS = +private val accentPrimaryColors = intArrayOf( R.color.red_primary, R.color.pink_primary, @@ -115,18 +115,18 @@ private val ACCENT_PRIMARY_COLORS = class Accent private constructor(val index: Int) { /** The name of this [Accent]. */ val name: Int - get() = ACCENT_NAMES[index] + get() = accentNames[index] /** The theme resource for this accent. */ val theme: Int - get() = ACCENT_THEMES[index] + get() = accentThemes[index] /** * The black theme resource for this accent. Identical to [theme], but with a black background. */ val blackTheme: Int - get() = ACCENT_BLACK_THEMES[index] + get() = accentBlackThemes[index] /** The accent's primary color. */ val primary: Int - get() = ACCENT_PRIMARY_COLORS[index] + get() = accentPrimaryColors[index] override fun equals(other: Any?) = other is Accent && index == other.index @@ -152,7 +152,7 @@ class Accent private constructor(val index: Int) { val DEFAULT = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { // Use dynamic coloring on devices that support it. - ACCENT_THEMES.lastIndex + accentThemes.lastIndex } else { // Use blue everywhere else. 5 @@ -161,10 +161,10 @@ class Accent private constructor(val index: Int) { /** The amount of valid accents. */ val MAX = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { - ACCENT_THEMES.size + accentThemes.size } else { // Disable the option for a dynamic accent on unsupported devices. - ACCENT_THEMES.size - 1 + accentThemes.size - 1 } } } diff --git a/app/src/main/res/layout/dialog_sort.xml b/app/src/main/res/layout/dialog_sort.xml index 4fa676852..bf6ba7511 100644 --- a/app/src/main/res/layout/dialog_sort.xml +++ b/app/src/main/res/layout/dialog_sort.xml @@ -23,7 +23,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginHorizontal="@dimen/spacing_medium" - android:text="Sort By" + android:text="@string/lbl_sort_mode" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" @@ -47,7 +47,7 @@ style="@style/Widget.Auxio.TextView.Header" android:layout_width="match_parent" android:layout_height="wrap_content" - android:text="Direction" + android:text="@string/lbl_sort_direction" app:layout_constraintTop_toTopOf="parent" /> + app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior" /> diff --git a/app/src/main/res/layout/item_sort_mode.xml b/app/src/main/res/layout/item_sort_mode.xml index 91638968e..7d8129737 100644 --- a/app/src/main/res/layout/item_sort_mode.xml +++ b/app/src/main/res/layout/item_sort_mode.xml @@ -1,6 +1,5 @@ - + - - \ No newline at end of file diff --git a/app/src/main/res/values-ar-rSA/strings.xml b/app/src/main/res/values-ar-rSA/strings.xml index a6b3daec9..3a0906840 100644 --- a/app/src/main/res/values-ar-rSA/strings.xml +++ b/app/src/main/res/values-ar-rSA/strings.xml @@ -1,2 +1,2 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml index e34f480f0..b4014ff97 100644 --- a/app/src/main/res/values-hi/strings.xml +++ b/app/src/main/res/values-hi/strings.xml @@ -172,7 +172,7 @@ मल्टी-मूल्य विभाजक लोड की गई शैलियाँ: %d लोड किए गए एल्बम: %d - आपकी संगीत लाइब्रेरी लोड कर रहे हैं... (%1$d/%2$d) + आपकी संगीत लाइब्रेरी लोड कर रहे हैं… (%1$d/%2$d) %d kbps आपकी संगीत लाइब्रेरी लोड कर रहे हैं… प्लेलिस्ट बनाई गई diff --git a/app/src/main/res/values/settings.xml b/app/src/main/res/values/settings.xml index 58a073c48..eb07550e3 100644 --- a/app/src/main/res/values/settings.xml +++ b/app/src/main/res/values/settings.xml @@ -161,7 +161,6 @@ 0xA120 0xA121 0xA122 - 0xA123 0xA124 0xA111 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d15b90062..f2bedcee8 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -104,6 +104,8 @@ Date added Sort + Sort by + Direction Ascending Descending diff --git a/app/src/test/java/org/oxycblt/auxio/music/FakeMusicSettings.kt b/app/src/test/java/org/oxycblt/auxio/music/FakeMusicSettings.kt index e1beae695..14924f4f1 100644 --- a/app/src/test/java/org/oxycblt/auxio/music/FakeMusicSettings.kt +++ b/app/src/test/java/org/oxycblt/auxio/music/FakeMusicSettings.kt @@ -18,7 +18,7 @@ package org.oxycblt.auxio.music -import org.oxycblt.auxio.list.Sort +import org.oxycblt.auxio.list.sort.Sort import org.oxycblt.auxio.music.fs.MusicDirectories open class FakeMusicSettings : MusicSettings {