V5 Push
Here's a list of changes/features: https://github.com/RetroMusicPlayer/RetroMusicPlayer/releases/tag/v5.0 Internal Changes: 1) Migrated to ViewBinding 2) Migrated to Glide V4 3) Migrated to kotlin version of Material Dialogs
This commit is contained in:
parent
fc42767031
commit
bce6dbfa27
421 changed files with 13285 additions and 5757 deletions
|
@ -29,10 +29,11 @@ import code.name.monkey.retromusic.model.Song
|
|||
import code.name.monkey.retromusic.repository.SongRepository
|
||||
import code.name.monkey.retromusic.service.MusicService
|
||||
import code.name.monkey.retromusic.util.PreferenceUtil
|
||||
import java.io.File
|
||||
import java.util.*
|
||||
import org.koin.core.KoinComponent
|
||||
import org.koin.core.inject
|
||||
import java.io.File
|
||||
import java.util.*
|
||||
|
||||
|
||||
object MusicPlayerRemote : KoinComponent {
|
||||
val TAG: String = MusicPlayerRemote::class.java.simpleName
|
||||
|
@ -41,6 +42,15 @@ object MusicPlayerRemote : KoinComponent {
|
|||
|
||||
private val songRepository by inject<SongRepository>()
|
||||
|
||||
var isCasting: Boolean = false
|
||||
set(value) {
|
||||
field = value
|
||||
if (value) {
|
||||
musicService?.quit()
|
||||
}
|
||||
println(value.toString() + "" + isCasting.toString())
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
val isPlaying: Boolean
|
||||
get() = musicService != null && musicService!!.isPlaying
|
||||
|
@ -56,6 +66,11 @@ object MusicPlayerRemote : KoinComponent {
|
|||
musicService!!.currentSong
|
||||
} else Song.emptySong
|
||||
|
||||
val nextSong: Song?
|
||||
get() = if (musicService != null) {
|
||||
musicService?.nextSong
|
||||
} else Song.emptySong
|
||||
|
||||
/**
|
||||
* Async
|
||||
*/
|
||||
|
@ -73,7 +88,7 @@ object MusicPlayerRemote : KoinComponent {
|
|||
val playingQueue: List<Song>
|
||||
get() = if (musicService != null) {
|
||||
musicService?.playingQueue as List<Song>
|
||||
} else listOf<Song>()
|
||||
} else listOf()
|
||||
|
||||
val songProgressMillis: Int
|
||||
get() = if (musicService != null) {
|
||||
|
@ -295,7 +310,7 @@ object MusicPlayerRemote : KoinComponent {
|
|||
|
||||
fun playNext(song: Song): Boolean {
|
||||
if (musicService != null) {
|
||||
if (playingQueue.size > 0) {
|
||||
if (playingQueue.isNotEmpty()) {
|
||||
musicService?.addSong(position + 1, song)
|
||||
} else {
|
||||
val queue = ArrayList<Song>()
|
||||
|
@ -314,7 +329,7 @@ object MusicPlayerRemote : KoinComponent {
|
|||
|
||||
fun playNext(songs: List<Song>): Boolean {
|
||||
if (musicService != null) {
|
||||
if (playingQueue.size > 0) {
|
||||
if (playingQueue.isNotEmpty()) {
|
||||
musicService?.addSongs(position + 1, songs)
|
||||
} else {
|
||||
openQueue(songs, 0, false)
|
||||
|
@ -332,7 +347,7 @@ object MusicPlayerRemote : KoinComponent {
|
|||
|
||||
fun enqueue(song: Song): Boolean {
|
||||
if (musicService != null) {
|
||||
if (playingQueue.size > 0) {
|
||||
if (playingQueue.isNotEmpty()) {
|
||||
musicService?.addSong(song)
|
||||
} else {
|
||||
val queue = ArrayList<Song>()
|
||||
|
@ -351,7 +366,7 @@ object MusicPlayerRemote : KoinComponent {
|
|||
|
||||
fun enqueue(songs: List<Song>): Boolean {
|
||||
if (musicService != null) {
|
||||
if (playingQueue.size > 0) {
|
||||
if (playingQueue.isNotEmpty()) {
|
||||
musicService?.addSongs(songs)
|
||||
} else {
|
||||
openQueue(songs, 0, false)
|
||||
|
|
|
@ -19,9 +19,9 @@ import android.os.Bundle
|
|||
import android.provider.MediaStore
|
||||
import code.name.monkey.retromusic.model.Song
|
||||
import code.name.monkey.retromusic.repository.RealSongRepository
|
||||
import java.util.*
|
||||
import org.koin.core.KoinComponent
|
||||
import org.koin.core.inject
|
||||
import java.util.*
|
||||
|
||||
object SearchQueryHelper : KoinComponent {
|
||||
private const val TITLE_SELECTION = "lower(" + MediaStore.Audio.AudioColumns.TITLE + ") = ?"
|
||||
|
@ -44,9 +44,9 @@ object SearchQueryHelper : KoinComponent {
|
|||
songRepository.makeSongCursor(
|
||||
ARTIST_SELECTION + AND + ALBUM_SELECTION + AND + TITLE_SELECTION,
|
||||
arrayOf(
|
||||
artistName.toLowerCase(Locale.getDefault()),
|
||||
albumName.toLowerCase(Locale.getDefault()),
|
||||
titleName.toLowerCase(Locale.getDefault())
|
||||
artistName.lowercase(),
|
||||
albumName.lowercase(),
|
||||
titleName.lowercase()
|
||||
)
|
||||
)
|
||||
)
|
||||
|
@ -59,8 +59,8 @@ object SearchQueryHelper : KoinComponent {
|
|||
songRepository.makeSongCursor(
|
||||
ARTIST_SELECTION + AND + TITLE_SELECTION,
|
||||
arrayOf(
|
||||
artistName.toLowerCase(Locale.getDefault()),
|
||||
titleName.toLowerCase(Locale.getDefault())
|
||||
artistName.lowercase(),
|
||||
titleName.lowercase()
|
||||
)
|
||||
)
|
||||
)
|
||||
|
@ -73,8 +73,8 @@ object SearchQueryHelper : KoinComponent {
|
|||
songRepository.makeSongCursor(
|
||||
ALBUM_SELECTION + AND + TITLE_SELECTION,
|
||||
arrayOf(
|
||||
albumName.toLowerCase(Locale.getDefault()),
|
||||
titleName.toLowerCase(Locale.getDefault())
|
||||
albumName.lowercase(),
|
||||
titleName.lowercase()
|
||||
)
|
||||
)
|
||||
)
|
||||
|
@ -86,7 +86,7 @@ object SearchQueryHelper : KoinComponent {
|
|||
songs = songRepository.songs(
|
||||
songRepository.makeSongCursor(
|
||||
ARTIST_SELECTION,
|
||||
arrayOf(artistName.toLowerCase(Locale.getDefault()))
|
||||
arrayOf(artistName.lowercase())
|
||||
)
|
||||
)
|
||||
}
|
||||
|
@ -97,7 +97,7 @@ object SearchQueryHelper : KoinComponent {
|
|||
songs = songRepository.songs(
|
||||
songRepository.makeSongCursor(
|
||||
ALBUM_SELECTION,
|
||||
arrayOf(albumName.toLowerCase(Locale.getDefault()))
|
||||
arrayOf(albumName.lowercase())
|
||||
)
|
||||
)
|
||||
}
|
||||
|
@ -108,7 +108,7 @@ object SearchQueryHelper : KoinComponent {
|
|||
songs = songRepository.songs(
|
||||
songRepository.makeSongCursor(
|
||||
TITLE_SELECTION,
|
||||
arrayOf(titleName.toLowerCase(Locale.getDefault()))
|
||||
arrayOf(titleName.lowercase())
|
||||
)
|
||||
)
|
||||
}
|
||||
|
@ -118,7 +118,7 @@ object SearchQueryHelper : KoinComponent {
|
|||
songs = songRepository.songs(
|
||||
songRepository.makeSongCursor(
|
||||
ARTIST_SELECTION,
|
||||
arrayOf(query.toLowerCase(Locale.getDefault()))
|
||||
arrayOf(query.lowercase())
|
||||
)
|
||||
)
|
||||
|
||||
|
@ -128,7 +128,7 @@ object SearchQueryHelper : KoinComponent {
|
|||
songs = songRepository.songs(
|
||||
songRepository.makeSongCursor(
|
||||
ALBUM_SELECTION,
|
||||
arrayOf(query.toLowerCase(Locale.getDefault()))
|
||||
arrayOf(query.lowercase())
|
||||
)
|
||||
)
|
||||
if (songs.isNotEmpty()) {
|
||||
|
@ -137,7 +137,7 @@ object SearchQueryHelper : KoinComponent {
|
|||
songs = songRepository.songs(
|
||||
songRepository.makeSongCursor(
|
||||
TITLE_SELECTION,
|
||||
arrayOf(query.toLowerCase(Locale.getDefault()))
|
||||
arrayOf(query.lowercase())
|
||||
)
|
||||
)
|
||||
return if (songs.isNotEmpty()) {
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
package code.name.monkey.retromusic.helper
|
||||
|
||||
import android.provider.MediaStore
|
||||
import code.name.monkey.retromusic.ALBUM_ARTIST
|
||||
|
||||
class SortOrder {
|
||||
|
||||
|
@ -53,7 +54,7 @@ class SortOrder {
|
|||
const val ALBUM_Z_A = "$ALBUM_A_Z DESC"
|
||||
|
||||
/* Album sort order songs */
|
||||
const val ALBUM_NUMBER_OF_SONGS = MediaStore.Audio.Albums.NUMBER_OF_SONGS + " DESC"
|
||||
const val ALBUM_NUMBER_OF_SONGS = MediaStore.Audio.AlbumColumns.NUMBER_OF_SONGS + " DESC"
|
||||
|
||||
/* Album sort order artist */
|
||||
const val ALBUM_ARTIST = (MediaStore.Audio.Artists.DEFAULT_SORT_ORDER +
|
||||
|
@ -80,6 +81,9 @@ class SortOrder {
|
|||
/* Song sort order artist */
|
||||
const val SONG_ARTIST = MediaStore.Audio.Artists.DEFAULT_SORT_ORDER
|
||||
|
||||
/* Song sort order album artist */
|
||||
const val SONG_ALBUM_ARTIST = ALBUM_ARTIST
|
||||
|
||||
/* Song sort order album */
|
||||
const val SONG_ALBUM = MediaStore.Audio.Albums.DEFAULT_SORT_ORDER
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package code.name.monkey.retromusic.helper;
|
||||
|
||||
import android.graphics.Bitmap;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.concurrent.Callable;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
|
|
|
@ -21,6 +21,7 @@ import android.widget.PopupMenu
|
|||
import androidx.core.os.bundleOf
|
||||
import androidx.fragment.app.FragmentActivity
|
||||
import androidx.navigation.findNavController
|
||||
import code.name.monkey.retromusic.App
|
||||
import code.name.monkey.retromusic.EXTRA_ALBUM_ID
|
||||
import code.name.monkey.retromusic.EXTRA_ARTIST_ID
|
||||
import code.name.monkey.retromusic.R
|
||||
|
@ -29,9 +30,12 @@ import code.name.monkey.retromusic.activities.tageditor.SongTagEditorActivity
|
|||
import code.name.monkey.retromusic.dialogs.AddToPlaylistDialog
|
||||
import code.name.monkey.retromusic.dialogs.DeleteSongsDialog
|
||||
import code.name.monkey.retromusic.dialogs.SongDetailDialog
|
||||
import code.name.monkey.retromusic.fragments.LibraryViewModel
|
||||
import code.name.monkey.retromusic.fragments.ReloadType
|
||||
import code.name.monkey.retromusic.helper.MusicPlayerRemote
|
||||
import code.name.monkey.retromusic.interfaces.IPaletteColorHolder
|
||||
import code.name.monkey.retromusic.model.Song
|
||||
import code.name.monkey.retromusic.providers.BlacklistStore
|
||||
import code.name.monkey.retromusic.repository.RealRepository
|
||||
import code.name.monkey.retromusic.util.MusicUtil
|
||||
import code.name.monkey.retromusic.util.RingtoneManager
|
||||
|
@ -39,13 +43,16 @@ import kotlinx.coroutines.CoroutineScope
|
|||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
import org.koin.androidx.viewmodel.ext.android.getViewModel
|
||||
import org.koin.core.KoinComponent
|
||||
import org.koin.core.get
|
||||
import java.io.File
|
||||
|
||||
object SongMenuHelper : KoinComponent {
|
||||
const val MENU_RES = R.menu.menu_item_song
|
||||
|
||||
fun handleMenuClick(activity: FragmentActivity, song: Song, menuItemId: Int): Boolean {
|
||||
val libraryViewModel = activity.getViewModel() as LibraryViewModel
|
||||
when (menuItemId) {
|
||||
R.id.action_set_as_ringtone -> {
|
||||
if (RingtoneManager.requiresDialog(activity)) {
|
||||
|
@ -116,6 +123,11 @@ object SongMenuHelper : KoinComponent {
|
|||
)
|
||||
return true
|
||||
}
|
||||
R.id.action_add_to_blacklist -> {
|
||||
BlacklistStore.getInstance(App.getContext()).addPath(File(song.data))
|
||||
libraryViewModel.forceReload(ReloadType.Songs)
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue