[Playlists] Added Grid size selection for Playlists
This commit is contained in:
parent
c52d02ea10
commit
d6bc78619b
5 changed files with 99 additions and 13 deletions
|
@ -118,6 +118,8 @@ const val ALBUM_GRID_SIZE_LAND = "album_grid_size_land"
|
|||
const val SONG_GRID_SIZE_LAND = "song_grid_size_land"
|
||||
const val ARTIST_GRID_SIZE = "artist_grid_size"
|
||||
const val ARTIST_GRID_SIZE_LAND = "artist_grid_size_land"
|
||||
const val PLAYLIST_GRID_SIZE = "playlist_grid_size"
|
||||
const val PLAYLIST_GRID_SIZE_LAND = "playlist_grid_size_land"
|
||||
const val COLORED_APP_SHORTCUTS = "colored_app_shortcuts"
|
||||
const val AUDIO_DUCKING = "audio_ducking"
|
||||
const val LAST_ADDED_CUTOFF = "last_added_interval"
|
||||
|
|
|
@ -22,6 +22,7 @@ import android.view.View
|
|||
import android.view.ViewGroup
|
||||
import androidx.appcompat.widget.PopupMenu
|
||||
import androidx.core.view.ViewCompat
|
||||
import androidx.core.view.setPadding
|
||||
import androidx.fragment.app.FragmentActivity
|
||||
import code.name.monkey.retromusic.R
|
||||
import code.name.monkey.retromusic.adapter.base.AbsMultiSelectAdapter
|
||||
|
@ -29,6 +30,7 @@ import code.name.monkey.retromusic.adapter.base.MediaEntryViewHolder
|
|||
import code.name.monkey.retromusic.db.PlaylistEntity
|
||||
import code.name.monkey.retromusic.db.PlaylistWithSongs
|
||||
import code.name.monkey.retromusic.db.toSongs
|
||||
import code.name.monkey.retromusic.extensions.dipToPix
|
||||
import code.name.monkey.retromusic.extensions.hide
|
||||
import code.name.monkey.retromusic.extensions.show
|
||||
import code.name.monkey.retromusic.glide.GlideApp
|
||||
|
@ -42,7 +44,7 @@ import code.name.monkey.retromusic.util.MusicUtil
|
|||
|
||||
class PlaylistAdapter(
|
||||
override val activity: FragmentActivity,
|
||||
private var dataSet: List<PlaylistWithSongs>,
|
||||
var dataSet: List<PlaylistWithSongs>,
|
||||
private var itemLayoutRes: Int,
|
||||
ICabHolder: ICabHolder?,
|
||||
private val listener: IPlaylistClickListener
|
||||
|
@ -94,7 +96,12 @@ class PlaylistAdapter(
|
|||
holder.menu?.show()
|
||||
}
|
||||
GlideApp.with(activity)
|
||||
.load(PlaylistPreview(playlist))
|
||||
.load(
|
||||
if (itemLayoutRes == R.layout.item_list) {
|
||||
holder.image?.setPadding(activity.dipToPix(8F).toInt())
|
||||
R.drawable.ic_playlist_play
|
||||
} else PlaylistPreview(playlist)
|
||||
)
|
||||
.playlistOptions()
|
||||
.into(holder.image!!)
|
||||
}
|
||||
|
|
|
@ -25,12 +25,12 @@ import code.name.monkey.retromusic.EXTRA_PLAYLIST
|
|||
import code.name.monkey.retromusic.R
|
||||
import code.name.monkey.retromusic.adapter.playlist.PlaylistAdapter
|
||||
import code.name.monkey.retromusic.db.PlaylistWithSongs
|
||||
import code.name.monkey.retromusic.extensions.navigate
|
||||
import code.name.monkey.retromusic.fragments.ReloadType
|
||||
import code.name.monkey.retromusic.fragments.base.AbsRecyclerViewCustomGridSizeFragment
|
||||
import code.name.monkey.retromusic.helper.SortOrder.PlaylistSortOrder
|
||||
import code.name.monkey.retromusic.interfaces.IPlaylistClickListener
|
||||
import code.name.monkey.retromusic.util.PreferenceUtil
|
||||
import code.name.monkey.retromusic.util.RetroUtil
|
||||
import com.google.android.gms.cast.framework.CastButtonFactory
|
||||
import com.google.android.material.transition.MaterialSharedAxis
|
||||
|
||||
|
@ -66,9 +66,10 @@ class PlaylistsFragment :
|
|||
}
|
||||
|
||||
override fun createAdapter(): PlaylistAdapter {
|
||||
val dataSet = if (adapter == null) mutableListOf() else adapter!!.dataSet
|
||||
return PlaylistAdapter(
|
||||
requireActivity(),
|
||||
ArrayList(),
|
||||
dataSet,
|
||||
itemLayoutRes(),
|
||||
null,
|
||||
this
|
||||
|
@ -77,7 +78,11 @@ class PlaylistsFragment :
|
|||
|
||||
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
|
||||
super.onCreateOptionsMenu(menu, inflater)
|
||||
menu.removeItem(R.id.action_grid_size)
|
||||
val gridSizeItem: MenuItem = menu.findItem(R.id.action_grid_size)
|
||||
if (RetroUtil.isLandscape()) {
|
||||
gridSizeItem.setTitle(R.string.action_grid_size_land)
|
||||
}
|
||||
setupGridSizeMenu(gridSizeItem.subMenu)
|
||||
menu.removeItem(R.id.action_layout_type)
|
||||
menu.add(0, R.id.action_add_to_playlist, 0, R.string.new_playlist_title)
|
||||
menu.add(0, R.id.action_import_playlist, 0, R.string.import_playlist)
|
||||
|
@ -89,12 +94,46 @@ class PlaylistsFragment :
|
|||
}
|
||||
|
||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
||||
if (handleGridSizeMenuItem(item)) {
|
||||
return true
|
||||
}
|
||||
if (handleSortOrderMenuItem(item)) {
|
||||
return true
|
||||
}
|
||||
return super.onOptionsItemSelected(item)
|
||||
}
|
||||
|
||||
private fun setupGridSizeMenu(gridSizeMenu: SubMenu) {
|
||||
when (getGridSize()) {
|
||||
1 -> gridSizeMenu.findItem(R.id.action_grid_size_1).isChecked = true
|
||||
2 -> gridSizeMenu.findItem(R.id.action_grid_size_2).isChecked = true
|
||||
3 -> gridSizeMenu.findItem(R.id.action_grid_size_3).isChecked = true
|
||||
4 -> gridSizeMenu.findItem(R.id.action_grid_size_4).isChecked = true
|
||||
5 -> gridSizeMenu.findItem(R.id.action_grid_size_5).isChecked = true
|
||||
6 -> gridSizeMenu.findItem(R.id.action_grid_size_6).isChecked = true
|
||||
7 -> gridSizeMenu.findItem(R.id.action_grid_size_7).isChecked = true
|
||||
8 -> gridSizeMenu.findItem(R.id.action_grid_size_8).isChecked = true
|
||||
}
|
||||
val gridSize = if (RetroUtil.isLandscape()) 4 else 2
|
||||
if (gridSize < 8) {
|
||||
gridSizeMenu.findItem(R.id.action_grid_size_8).isVisible = false
|
||||
}
|
||||
if (gridSize < 7) {
|
||||
gridSizeMenu.findItem(R.id.action_grid_size_7).isVisible = false
|
||||
}
|
||||
if (gridSize < 6) {
|
||||
gridSizeMenu.findItem(R.id.action_grid_size_6).isVisible = false
|
||||
}
|
||||
if (gridSize < 5) {
|
||||
gridSizeMenu.findItem(R.id.action_grid_size_5).isVisible = false
|
||||
}
|
||||
if (gridSize < 4) {
|
||||
gridSizeMenu.findItem(R.id.action_grid_size_4).isVisible = false
|
||||
}
|
||||
if (gridSize < 3) {
|
||||
gridSizeMenu.findItem(R.id.action_grid_size_3).isVisible = false
|
||||
}
|
||||
}
|
||||
|
||||
private fun setUpSortOrderMenu(subMenu: SubMenu) {
|
||||
val order: String? = getSortOrder()
|
||||
|
@ -142,13 +181,32 @@ class PlaylistsFragment :
|
|||
return false
|
||||
}
|
||||
|
||||
private fun handleGridSizeMenuItem(item: MenuItem): Boolean {
|
||||
val gridSize = when (item.itemId) {
|
||||
R.id.action_grid_size_1 -> 1
|
||||
R.id.action_grid_size_2 -> 2
|
||||
R.id.action_grid_size_3 -> 3
|
||||
R.id.action_grid_size_4 -> 4
|
||||
R.id.action_grid_size_5 -> 5
|
||||
R.id.action_grid_size_6 -> 6
|
||||
R.id.action_grid_size_7 -> 7
|
||||
R.id.action_grid_size_8 -> 8
|
||||
else -> 0
|
||||
}
|
||||
if (gridSize > 0) {
|
||||
item.isChecked = true
|
||||
setAndSaveGridSize(gridSize)
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
private fun createId(menu: SubMenu, id: Int, title: Int, checked: Boolean) {
|
||||
menu.add(0, id, 0, title).isChecked = checked
|
||||
}
|
||||
|
||||
|
||||
override fun setGridSize(gridSize: Int) {
|
||||
TODO("Not yet implemented")
|
||||
adapter?.notifyDataSetChanged()
|
||||
}
|
||||
|
||||
override fun setSortOrder(sortOrder: String) {
|
||||
|
@ -164,23 +222,23 @@ class PlaylistsFragment :
|
|||
}
|
||||
|
||||
override fun loadGridSize(): Int {
|
||||
return 2
|
||||
return PreferenceUtil.playlistGridSize
|
||||
}
|
||||
|
||||
override fun saveGridSize(gridColumns: Int) {
|
||||
//Add grid save
|
||||
PreferenceUtil.playlistGridSize = gridColumns
|
||||
}
|
||||
|
||||
override fun loadGridSizeLand(): Int {
|
||||
return 4
|
||||
return PreferenceUtil.playlistGridSizeLand
|
||||
}
|
||||
|
||||
override fun saveGridSizeLand(gridColumns: Int) {
|
||||
//Add land grid save
|
||||
PreferenceUtil.playlistGridSizeLand = gridColumns
|
||||
}
|
||||
|
||||
override fun loadLayoutRes(): Int {
|
||||
return R.layout.item_card
|
||||
return R.layout.item_grid
|
||||
}
|
||||
|
||||
override fun saveLayoutRes(layoutRes: Int) {
|
||||
|
|
|
@ -40,7 +40,7 @@ public class AutoGeneratedPlaylistBitmap {
|
|||
List<Bitmap> art = new ArrayList<>();
|
||||
for (Long id : albumID) {
|
||||
Bitmap bitmap = getBitmapWithAlbumId(context, id);
|
||||
if (bitmap != null) art.add(BitmapEditor.getRoundedCornerBitmap(bitmap, 10));
|
||||
if (bitmap != null) art.add(BitmapEditor.getRoundedCornerBitmap(bitmap, 20));
|
||||
if (art.size() == 9) break;
|
||||
}
|
||||
return MergedImageUtils.INSTANCE.joinImages(art);
|
||||
|
|
|
@ -498,6 +498,25 @@ object PreferenceUtil {
|
|||
}
|
||||
|
||||
|
||||
var playlistGridSize
|
||||
get() = sharedPreferences.getInt(
|
||||
PLAYLIST_GRID_SIZE,
|
||||
App.getContext().getIntRes(R.integer.default_grid_columns)
|
||||
)
|
||||
set(value) = sharedPreferences.edit {
|
||||
putInt(PLAYLIST_GRID_SIZE, value)
|
||||
}
|
||||
|
||||
|
||||
var playlistGridSizeLand
|
||||
get() = sharedPreferences.getInt(
|
||||
PLAYLIST_GRID_SIZE_LAND,
|
||||
App.getContext().getIntRes(R.integer.default_grid_columns_land)
|
||||
)
|
||||
set(value) = sharedPreferences.edit {
|
||||
putInt(PLAYLIST_GRID_SIZE, value)
|
||||
}
|
||||
|
||||
var albumCoverStyle: AlbumCoverStyle
|
||||
get() {
|
||||
val id: Int = sharedPreferences.getInt(ALBUM_COVER_STYLE, 0)
|
||||
|
|
Loading…
Reference in a new issue