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:
Prathamesh More 2021-09-09 00:00:20 +05:30
parent fc42767031
commit bce6dbfa27
421 changed files with 13285 additions and 5757 deletions

View file

@ -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)

View file

@ -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()) {

View file

@ -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

View file

@ -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;

View file

@ -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
}