diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/GridStyle.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/GridStyle.kt new file mode 100644 index 000000000..505564a1c --- /dev/null +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/GridStyle.kt @@ -0,0 +1,16 @@ +package code.name.monkey.retromusic.fragments + +import androidx.annotation.LayoutRes +import code.name.monkey.retromusic.R + +enum class GridStyle constructor( + @param:LayoutRes @field:LayoutRes val layoutResId: Int, + val id: Int +) { + Grid(R.layout.item_grid, 0), + Card(R.layout.item_card, 1), + ColoredCard(R.layout.item_card_color, 2), + Circular(R.layout.item_grid_circle, 3), + Image(R.layout.image, 4), + GradientImage(R.layout.item_image_gradient, 5) +} \ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/albums/AlbumsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/albums/AlbumsFragment.kt index f63cc644c..e7d713b55 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/albums/AlbumsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/albums/AlbumsFragment.kt @@ -26,6 +26,7 @@ import code.name.monkey.retromusic.R import code.name.monkey.retromusic.adapter.album.AlbumAdapter import code.name.monkey.retromusic.extensions.navigate import code.name.monkey.retromusic.extensions.surfaceColor +import code.name.monkey.retromusic.fragments.GridStyle import code.name.monkey.retromusic.fragments.ReloadType import code.name.monkey.retromusic.fragments.base.AbsRecyclerViewCustomGridSizeFragment import code.name.monkey.retromusic.helper.MusicPlayerRemote @@ -131,11 +132,13 @@ class AlbumsFragment : AbsRecyclerViewCustomGridSizeFragment + gridStyle.layoutResId == layoutRes + } } companion object { @@ -307,9 +310,9 @@ class AlbumsFragment : AbsRecyclerViewCustomGridSizeFragment R.layout.item_grid_circle R.id.action_layout_image -> R.layout.image R.id.action_layout_gradient_image -> R.layout.item_image_gradient - else -> PreferenceUtil.albumGridStyle + else -> PreferenceUtil.albumGridStyle.layoutResId } - if (layoutRes != PreferenceUtil.albumGridStyle) { + if (layoutRes != PreferenceUtil.albumGridStyle.layoutResId) { item.isChecked = true setAndSaveLayoutRes(layoutRes) return true diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/artists/ArtistsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/artists/ArtistsFragment.kt index 8739b7665..c0bb41069 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/artists/ArtistsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/artists/ArtistsFragment.kt @@ -25,8 +25,8 @@ import code.name.monkey.retromusic.EXTRA_ARTIST_ID import code.name.monkey.retromusic.EXTRA_ARTIST_NAME import code.name.monkey.retromusic.R import code.name.monkey.retromusic.adapter.artist.ArtistAdapter -import code.name.monkey.retromusic.extensions.navigate import code.name.monkey.retromusic.extensions.surfaceColor +import code.name.monkey.retromusic.fragments.GridStyle import code.name.monkey.retromusic.fragments.ReloadType import code.name.monkey.retromusic.fragments.base.AbsRecyclerViewCustomGridSizeFragment import code.name.monkey.retromusic.helper.MusicPlayerRemote @@ -132,11 +132,13 @@ class ArtistsFragment : AbsRecyclerViewCustomGridSizeFragment + gridStyle.layoutResId == layoutRes + } } companion object { @@ -312,9 +314,9 @@ class ArtistsFragment : AbsRecyclerViewCustomGridSizeFragment R.layout.item_grid_circle R.id.action_layout_image -> R.layout.image R.id.action_layout_gradient_image -> R.layout.item_image_gradient - else -> PreferenceUtil.artistGridStyle + else -> PreferenceUtil.artistGridStyle.layoutResId } - if (layoutRes != PreferenceUtil.artistGridStyle) { + if (layoutRes != PreferenceUtil.artistGridStyle.layoutResId) { item.isChecked = true setAndSaveLayoutRes(layoutRes) return true diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/songs/SongsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/songs/SongsFragment.kt index d0b3095e5..ab20c8e7b 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/songs/SongsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/songs/SongsFragment.kt @@ -21,8 +21,8 @@ import androidx.annotation.LayoutRes import androidx.recyclerview.widget.GridLayoutManager import code.name.monkey.retromusic.R import code.name.monkey.retromusic.adapter.song.SongAdapter -import code.name.monkey.retromusic.extensions.navigate import code.name.monkey.retromusic.extensions.surfaceColor +import code.name.monkey.retromusic.fragments.GridStyle import code.name.monkey.retromusic.fragments.ReloadType import code.name.monkey.retromusic.fragments.base.AbsRecyclerViewCustomGridSizeFragment import code.name.monkey.retromusic.helper.MusicPlayerRemote @@ -114,11 +114,13 @@ class SongsFragment : AbsRecyclerViewCustomGridSizeFragment + gridStyle.layoutResId == layoutRes + } } override fun setSortOrder(sortOrder: String) { @@ -307,9 +309,9 @@ class SongsFragment : AbsRecyclerViewCustomGridSizeFragment R.layout.item_grid_circle R.id.action_layout_image -> R.layout.image R.id.action_layout_gradient_image -> R.layout.item_image_gradient - else -> PreferenceUtil.songGridStyle + else -> PreferenceUtil.songGridStyle.layoutResId } - if (layoutRes != PreferenceUtil.songGridStyle) { + if (layoutRes != PreferenceUtil.songGridStyle.layoutResId) { item.isChecked = true setAndSaveLayoutRes(layoutRes) return true diff --git a/app/src/main/java/code/name/monkey/retromusic/util/PreferenceUtil.kt b/app/src/main/java/code/name/monkey/retromusic/util/PreferenceUtil.kt index eb43004aa..0de2b7b31 100644 --- a/app/src/main/java/code/name/monkey/retromusic/util/PreferenceUtil.kt +++ b/app/src/main/java/code/name/monkey/retromusic/util/PreferenceUtil.kt @@ -12,6 +12,7 @@ import code.name.monkey.retromusic.* import code.name.monkey.retromusic.extensions.getIntRes import code.name.monkey.retromusic.extensions.getStringOrDefault import code.name.monkey.retromusic.fragments.AlbumCoverStyle +import code.name.monkey.retromusic.fragments.GridStyle import code.name.monkey.retromusic.fragments.NowPlayingScreen import code.name.monkey.retromusic.fragments.folder.FoldersFragment import code.name.monkey.retromusic.helper.SortOrder.* @@ -344,22 +345,40 @@ object PreferenceUtil { putInt(LYRICS_OPTIONS, value) } - var songGridStyle - get() = sharedPreferences.getInt(SONG_GRID_STYLE, R.layout.item_grid) + var songGridStyle: GridStyle + get() { + val id: Int = sharedPreferences.getInt(SONG_GRID_STYLE, 0) + // We can directly use "first" kotlin extension function here but + // there maybe layout id stored in this so to avoid a crash we use + // "firstOrNull" + return GridStyle.values().firstOrNull { gridStyle -> + gridStyle.id == id + } ?: GridStyle.Grid + } set(value) = sharedPreferences.edit { - putInt(SONG_GRID_STYLE, value) + putInt(SONG_GRID_STYLE, value.id) } - var albumGridStyle - get() = sharedPreferences.getInt(ALBUM_GRID_STYLE, R.layout.item_grid) + var albumGridStyle: GridStyle + get() { + val id: Int = sharedPreferences.getInt(ALBUM_GRID_STYLE, 0) + return GridStyle.values().firstOrNull { gridStyle -> + gridStyle.id == id + } ?: GridStyle.Grid + } set(value) = sharedPreferences.edit { - putInt(ALBUM_GRID_STYLE, value) + putInt(ALBUM_GRID_STYLE, value.id) } - var artistGridStyle - get() = sharedPreferences.getInt(ARTIST_GRID_STYLE, R.layout.item_grid_circle) + var artistGridStyle: GridStyle + get() { + val id: Int = sharedPreferences.getInt(ARTIST_GRID_STYLE, 4) + return GridStyle.values().firstOrNull { gridStyle -> + gridStyle.id == id + } ?: GridStyle.Circular + } set(value) = sharedPreferences.edit { - putInt(ARTIST_GRID_STYLE, value) + putInt(ARTIST_GRID_STYLE, value.id) } val filterLength get() = sharedPreferences.getInt(FILTER_SONG, 20)