diff --git a/app/build.gradle b/app/build.gradle index 039701b1d..4d8768b46 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -32,8 +32,8 @@ android { vectorDrawables.useSupportLibrary = true applicationId "code.name.monkey.retromusic" - versionCode 277 - versionName '3.0.530' + versionCode 281 + versionName '3.0.540' multiDexEnabled true @@ -166,6 +166,7 @@ dependencies { implementation 'com.github.takahirom.downloadable.calligraphy:downloadable-calligraphy:0.1.3' kapt 'com.github.bumptech.glide:compiler:4.8.0' + implementation 'androidx.constraintlayout:constraintlayout:1.1.3' } repositories { mavenCentral() diff --git a/app/normal/release/app.aab b/app/normal/release/app.aab new file mode 100644 index 000000000..f101357ec Binary files /dev/null and b/app/normal/release/app.aab differ diff --git a/app/src/main/assets/retro-changelog.html b/app/src/main/assets/retro-changelog.html index 43acdcc44..3647f65b8 100644 --- a/app/src/main/assets/retro-changelog.html +++ b/app/src/main/assets/retro-changelog.html @@ -1 +1 @@ -

v3.0.501

Highlights

Changelog

If you see entire app white or dark or black select same theme in settings to fix

FAQ's

*If you face any UI related issues you clear app data and cache, if its not working try to uninstall and install again.

\ No newline at end of file +

v3.0.540

Highlights

Changelog

If you see entire app white or dark or black select same theme in settings to fix

FAQ's

*If you face any UI related issues you clear app data and cache, if its not working try to uninstall and install again.

\ No newline at end of file diff --git a/app/src/main/ic_launcher-web.png b/app/src/main/ic_launcher-web.png index c3dd3afbe..084d18d3e 100644 Binary files a/app/src/main/ic_launcher-web.png and b/app/src/main/ic_launcher-web.png differ diff --git a/app/src/main/java/code/name/monkey/retromusic/dialogs/RemoveFromPlaylistDialog.kt b/app/src/main/java/code/name/monkey/retromusic/dialogs/RemoveFromPlaylistDialog.kt index b24dbb6da..eeb3645a2 100644 --- a/app/src/main/java/code/name/monkey/retromusic/dialogs/RemoveFromPlaylistDialog.kt +++ b/app/src/main/java/code/name/monkey/retromusic/dialogs/RemoveFromPlaylistDialog.kt @@ -9,6 +9,7 @@ import android.view.ViewGroup import code.name.monkey.appthemehelper.ThemeStore import code.name.monkey.retromusic.R import code.name.monkey.retromusic.model.PlaylistSong +import code.name.monkey.retromusic.model.Song import code.name.monkey.retromusic.util.PlaylistsUtil import code.name.monkey.retromusic.views.RoundedBottomSheetDialogFragment import kotlinx.android.synthetic.main.dialog_remove_from_playlist.* @@ -28,7 +29,7 @@ class RemoveFromPlaylistDialog : RoundedBottomSheetDialogFragment() { val songs = arguments!!.getParcelableArrayList("songs") val title: Int val content: CharSequence - if (songs != null && songs.size > 1) { + if (songs!!.size > 1) { title = R.string.remove_songs_from_playlist_title content = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { Html.fromHtml(getString(R.string.remove_x_songs_from_playlist, songs.size), Html.FROM_HTML_MODE_LEGACY) @@ -37,7 +38,7 @@ class RemoveFromPlaylistDialog : RoundedBottomSheetDialogFragment() { } } else { title = R.string.remove_song_from_playlist_title - content = Html.fromHtml(getString(R.string.remove_song_x_from_playlist, songs!![0].title)) + content = Html.fromHtml(getString(R.string.remove_song_x_from_playlist, songs[0].title)) } actionRemove.text = content bannerTitle.setText(title) @@ -48,6 +49,7 @@ class RemoveFromPlaylistDialog : RoundedBottomSheetDialogFragment() { actionRemove.setOnClickListener { PlaylistsUtil.removeFromPlaylist(activity!!, songs) + dismiss() } actionCancel.setOnClickListener { dismiss() } } diff --git a/app/src/main/java/code/name/monkey/retromusic/glide/RetroGlideExtension.java b/app/src/main/java/code/name/monkey/retromusic/glide/RetroGlideExtension.java index 1f7927bb9..338ed471e 100644 --- a/app/src/main/java/code/name/monkey/retromusic/glide/RetroGlideExtension.java +++ b/app/src/main/java/code/name/monkey/retromusic/glide/RetroGlideExtension.java @@ -63,7 +63,7 @@ public final class RetroGlideExtension { } public static Key createSignature(Song song) { - return new MediaStoreSignature("", song.getDateModified(), 0); + return new MediaStoreSignature("", song.dateModified, 0); } public static Object getArtistModel(Artist artist) { @@ -88,9 +88,9 @@ public final class RetroGlideExtension { public static Object getSongModel(Song song, boolean ignoreMediaStore) { if (ignoreMediaStore) { - return new AudioFileCover(song.getData()); + return new AudioFileCover(song.data); } else { - return MusicUtil.getMediaStoreAlbumCoverUri(song.getAlbumId()); + return MusicUtil.getMediaStoreAlbumCoverUri(song.albumId); } } diff --git a/app/src/main/java/code/name/monkey/retromusic/helper/MusicPlayerRemote.kt b/app/src/main/java/code/name/monkey/retromusic/helper/MusicPlayerRemote.kt index 36923f995..07b28fd2a 100644 --- a/app/src/main/java/code/name/monkey/retromusic/helper/MusicPlayerRemote.kt +++ b/app/src/main/java/code/name/monkey/retromusic/helper/MusicPlayerRemote.kt @@ -32,7 +32,7 @@ object MusicPlayerRemote { val currentSong: Song get() = if (musicService != null) { musicService!!.currentSong - } else Song.emptySong + } else Song.EMPTY_SONG /** * Async diff --git a/app/src/main/java/code/name/monkey/retromusic/helper/ShuffleHelper.kt b/app/src/main/java/code/name/monkey/retromusic/helper/ShuffleHelper.kt index aa50421b1..1236bcb36 100644 --- a/app/src/main/java/code/name/monkey/retromusic/helper/ShuffleHelper.kt +++ b/app/src/main/java/code/name/monkey/retromusic/helper/ShuffleHelper.kt @@ -2,8 +2,6 @@ package code.name.monkey.retromusic.helper import code.name.monkey.retromusic.model.Song -import java.util.Collections - object ShuffleHelper { diff --git a/app/src/main/java/code/name/monkey/retromusic/helper/menu/GenreMenuHelper.kt b/app/src/main/java/code/name/monkey/retromusic/helper/menu/GenreMenuHelper.kt index f9c127ceb..a490c763b 100644 --- a/app/src/main/java/code/name/monkey/retromusic/helper/menu/GenreMenuHelper.kt +++ b/app/src/main/java/code/name/monkey/retromusic/helper/menu/GenreMenuHelper.kt @@ -39,10 +39,7 @@ object GenreMenuHelper { return false } - private fun getGenreSongs(activity: Activity, - genre: Genre): ArrayList { - val songs: ArrayList - songs = GenreLoader.getSongs(activity, genre.id).blockingFirst() - return songs + private fun getGenreSongs(activity: Activity, genre: Genre): ArrayList { + return GenreLoader.getSongs(activity, genre.id).blockingFirst() } } diff --git a/app/src/main/java/code/name/monkey/retromusic/loaders/AlbumLoader.kt b/app/src/main/java/code/name/monkey/retromusic/loaders/AlbumLoader.kt index b0dc7da4d..583a1110a 100644 --- a/app/src/main/java/code/name/monkey/retromusic/loaders/AlbumLoader.kt +++ b/app/src/main/java/code/name/monkey/retromusic/loaders/AlbumLoader.kt @@ -86,7 +86,7 @@ open class AlbumLoader { } } - fun getSongLoaderSortOrder(): String { + private fun getSongLoaderSortOrder(): String { return PreferenceUtil.getInstance().albumSortOrder + ", " + //PreferenceUtil.getInstance().getAlbumSongSortOrder() + "," + PreferenceUtil.getInstance().albumDetailSongSortOrder diff --git a/app/src/main/java/code/name/monkey/retromusic/loaders/HomeLoader.kt b/app/src/main/java/code/name/monkey/retromusic/loaders/HomeLoader.kt index 930d72b38..34a23f18c 100644 --- a/app/src/main/java/code/name/monkey/retromusic/loaders/HomeLoader.kt +++ b/app/src/main/java/code/name/monkey/retromusic/loaders/HomeLoader.kt @@ -2,9 +2,7 @@ package code.name.monkey.retromusic.loaders import android.content.Context -import code.name.monkey.retromusic.misc.DisposingObserver import code.name.monkey.retromusic.model.Playlist -import code.name.monkey.retromusic.model.Song import code.name.monkey.retromusic.model.smartplaylist.AbsSmartPlaylist import code.name.monkey.retromusic.model.smartplaylist.HistoryPlaylist import code.name.monkey.retromusic.model.smartplaylist.LastAddedPlaylist diff --git a/app/src/main/java/code/name/monkey/retromusic/loaders/SongLoader.kt b/app/src/main/java/code/name/monkey/retromusic/loaders/SongLoader.kt index 193651960..a96fcba9d 100644 --- a/app/src/main/java/code/name/monkey/retromusic/loaders/SongLoader.kt +++ b/app/src/main/java/code/name/monkey/retromusic/loaders/SongLoader.kt @@ -58,7 +58,7 @@ object SongLoader { val artistId = cursor.getInt(9) val artistName = cursor.getString(10) - return Song(id, title, trackNumber, year, duration, data, dateModified, albumId, albumName, + return Song(id, title, trackNumber, year, duration, data, dateModified, albumId, albumName?:"", artistId, artistName) } @@ -119,7 +119,7 @@ object SongLoader { val song: Song = if (cursor != null && cursor.moveToFirst()) { getSongFromCursorImpl(cursor) } else { - Song.emptySong + Song.EMPTY_SONG } cursor?.close() e.onNext(song) diff --git a/app/src/main/java/code/name/monkey/retromusic/model/Album.kt b/app/src/main/java/code/name/monkey/retromusic/model/Album.kt index dc9df05ce..27405c44b 100644 --- a/app/src/main/java/code/name/monkey/retromusic/model/Album.kt +++ b/app/src/main/java/code/name/monkey/retromusic/model/Album.kt @@ -36,6 +36,6 @@ class Album { } fun safeGetFirstSong(): Song { - return if (songs!!.isEmpty()) Song.emptySong else songs[0] + return if (songs!!.isEmpty()) Song.EMPTY_SONG else songs[0] } } diff --git a/app/src/main/java/code/name/monkey/retromusic/model/PlaylistSong.java b/app/src/main/java/code/name/monkey/retromusic/model/PlaylistSong.java index 778c7fba5..c44f1f6ac 100644 --- a/app/src/main/java/code/name/monkey/retromusic/model/PlaylistSong.java +++ b/app/src/main/java/code/name/monkey/retromusic/model/PlaylistSong.java @@ -1,18 +1,10 @@ package code.name.monkey.retromusic.model; import android.os.Parcel; -import android.os.Parcelable; public class PlaylistSong extends Song { - public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { - public PlaylistSong createFromParcel(Parcel source) { - return new PlaylistSong(source); - } + public static PlaylistSong EMPTY_PLAYLIST_SONG = new PlaylistSong(-1, "", -1, -1, -1, "", -1, -1, "", -1, "", -1, -1); - public PlaylistSong[] newArray(int size) { - return new PlaylistSong[size]; - } - }; public final int playlistId; public final int idInPlayList; @@ -22,12 +14,6 @@ public class PlaylistSong extends Song { this.idInPlayList = idInPlayList; } - protected PlaylistSong(Parcel in) { - super(in); - this.playlistId = in.readInt(); - this.idInPlayList = in.readInt(); - } - @Override public boolean equals(Object o) { if (this == o) return true; @@ -58,6 +44,7 @@ public class PlaylistSong extends Song { '}'; } + @Override public int describeContents() { return 0; @@ -69,4 +56,20 @@ public class PlaylistSong extends Song { dest.writeInt(this.playlistId); dest.writeInt(this.idInPlayList); } + + protected PlaylistSong(Parcel in) { + super(in); + this.playlistId = in.readInt(); + this.idInPlayList = in.readInt(); + } + + public static final Creator CREATOR = new Creator() { + public PlaylistSong createFromParcel(Parcel source) { + return new PlaylistSong(source); + } + + public PlaylistSong[] newArray(int size) { + return new PlaylistSong[size]; + } + }; } diff --git a/app/src/main/java/code/name/monkey/retromusic/model/Song.java b/app/src/main/java/code/name/monkey/retromusic/model/Song.java new file mode 100644 index 000000000..05e33a237 --- /dev/null +++ b/app/src/main/java/code/name/monkey/retromusic/model/Song.java @@ -0,0 +1,137 @@ +package code.name.monkey.retromusic.model; + +import android.os.Parcel; +import android.os.Parcelable; + +/** + * @author Karim Abou Zeid (kabouzeid) + */ +public class Song implements Parcelable { + public static final Song EMPTY_SONG = new Song(-1, "", -1, -1, -1, "", -1, -1, "", -1, ""); + + public final int id; + public final String title; + public final int trackNumber; + public final int year; + public final long duration; + public final String data; + public final long dateModified; + public final int albumId; + public final String albumName; + public final int artistId; + public final String artistName; + + public Song(int id, String title, int trackNumber, int year, long duration, String data, long dateModified, int albumId, String albumName, int artistId, String artistName) { + this.id = id; + this.title = title; + this.trackNumber = trackNumber; + this.year = year; + this.duration = duration; + this.data = data; + this.dateModified = dateModified; + this.albumId = albumId; + this.albumName = albumName; + this.artistId = artistId; + this.artistName = artistName; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + Song song = (Song) o; + + if (id != song.id) return false; + if (trackNumber != song.trackNumber) return false; + if (year != song.year) return false; + if (duration != song.duration) return false; + if (dateModified != song.dateModified) return false; + if (albumId != song.albumId) return false; + if (artistId != song.artistId) return false; + if (title != null ? !title.equals(song.title) : song.title != null) return false; + if (data != null ? !data.equals(song.data) : song.data != null) return false; + if (albumName != null ? !albumName.equals(song.albumName) : song.albumName != null) + return false; + return artistName != null ? artistName.equals(song.artistName) : song.artistName == null; + + } + + @Override + public int hashCode() { + int result = id; + result = 31 * result + (title != null ? title.hashCode() : 0); + result = 31 * result + trackNumber; + result = 31 * result + year; + result = 31 * result + (int) (duration ^ (duration >>> 32)); + result = 31 * result + (data != null ? data.hashCode() : 0); + result = 31 * result + (int) (dateModified ^ (dateModified >>> 32)); + result = 31 * result + albumId; + result = 31 * result + (albumName != null ? albumName.hashCode() : 0); + result = 31 * result + artistId; + result = 31 * result + (artistName != null ? artistName.hashCode() : 0); + return result; + } + + @Override + public String toString() { + return "Song{" + + "id=" + id + + ", title='" + title + '\'' + + ", trackNumber=" + trackNumber + + ", year=" + year + + ", duration=" + duration + + ", data='" + data + '\'' + + ", dateModified=" + dateModified + + ", albumId=" + albumId + + ", albumName='" + albumName + '\'' + + ", artistId=" + artistId + + ", artistName='" + artistName + '\'' + + '}'; + } + + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeInt(this.id); + dest.writeString(this.title); + dest.writeInt(this.trackNumber); + dest.writeInt(this.year); + dest.writeLong(this.duration); + dest.writeString(this.data); + dest.writeLong(this.dateModified); + dest.writeInt(this.albumId); + dest.writeString(this.albumName); + dest.writeInt(this.artistId); + dest.writeString(this.artistName); + } + + protected Song(Parcel in) { + this.id = in.readInt(); + this.title = in.readString(); + this.trackNumber = in.readInt(); + this.year = in.readInt(); + this.duration = in.readLong(); + this.data = in.readString(); + this.dateModified = in.readLong(); + this.albumId = in.readInt(); + this.albumName = in.readString(); + this.artistId = in.readInt(); + this.artistName = in.readString(); + } + + public static final Creator CREATOR = new Creator() { + public Song createFromParcel(Parcel source) { + return new Song(source); + } + + public Song[] newArray(int size) { + return new Song[size]; + } + }; +} diff --git a/app/src/main/java/code/name/monkey/retromusic/model/Song.kt b/app/src/main/java/code/name/monkey/retromusic/model/Song.kt deleted file mode 100644 index a395b6994..000000000 --- a/app/src/main/java/code/name/monkey/retromusic/model/Song.kt +++ /dev/null @@ -1,81 +0,0 @@ -package code.name.monkey.retromusic.model - -import android.os.Parcel -import android.os.Parcelable - - -open class Song : Parcelable { - val id: Int - val title: String? - val trackNumber: Int - val year: Int - val duration: Long - val data: String? - val dateModified: Long - val albumId: Int - val albumName: String? - val artistId: Int - val artistName: String? - - constructor(id: Int, title: String, trackNumber: Int, year: Int, duration: Long, data: String, dateModified: Long, albumId: Int, albumName: String, artistId: Int, artistName: String) { - this.id = id - this.title = title - this.trackNumber = trackNumber - this.year = year - this.duration = duration - this.data = data - this.dateModified = dateModified - this.albumId = albumId - this.albumName = albumName - this.artistId = artistId - this.artistName = artistName - } - - protected constructor(`in`: Parcel) { - this.id = `in`.readInt() - this.title = `in`.readString() - this.trackNumber = `in`.readInt() - this.year = `in`.readInt() - this.duration = `in`.readLong() - this.data = `in`.readString() - this.dateModified = `in`.readLong() - this.albumId = `in`.readInt() - this.albumName = `in`.readString() - this.artistId = `in`.readInt() - this.artistName = `in`.readString() - } - - override fun describeContents(): Int { - return 0 - } - - override fun writeToParcel(dest: Parcel, flags: Int) { - dest.writeInt(this.id) - dest.writeString(this.title) - dest.writeInt(this.trackNumber) - dest.writeInt(this.year) - dest.writeLong(this.duration) - dest.writeString(this.data) - dest.writeLong(this.dateModified) - dest.writeInt(this.albumId) - dest.writeString(this.albumName) - dest.writeInt(this.artistId) - dest.writeString(this.artistName) - } - - companion object { - - var emptySong = Song(-1, "", -1, -1, -1, "", -1, -1, "", -1, "") - - @JvmField - val CREATOR: Parcelable.Creator = object : Parcelable.Creator { - override fun createFromParcel(source: Parcel): Song { - return Song(source) - } - - override fun newArray(size: Int): Array { - return emptyArray() - } - } - } -} diff --git a/app/src/main/java/code/name/monkey/retromusic/mvp/contract/HomeContract.kt b/app/src/main/java/code/name/monkey/retromusic/mvp/contract/HomeContract.kt index 418e07642..d7272c331 100644 --- a/app/src/main/java/code/name/monkey/retromusic/mvp/contract/HomeContract.kt +++ b/app/src/main/java/code/name/monkey/retromusic/mvp/contract/HomeContract.kt @@ -1,13 +1,8 @@ package code.name.monkey.retromusic.mvp.contract +import code.name.monkey.retromusic.model.* import java.util.ArrayList -import code.name.monkey.retromusic.model.AbsCustomPlaylist -import code.name.monkey.retromusic.model.Album -import code.name.monkey.retromusic.model.Artist -import code.name.monkey.retromusic.model.Genre -import code.name.monkey.retromusic.model.Playlist -import code.name.monkey.retromusic.model.Song import code.name.monkey.retromusic.mvp.BasePresenter import code.name.monkey.retromusic.mvp.BaseView diff --git a/app/src/main/java/code/name/monkey/retromusic/providers/MusicPlaybackQueueStore.java b/app/src/main/java/code/name/monkey/retromusic/providers/MusicPlaybackQueueStore.java index ab8ce8440..1e7c652f8 100644 --- a/app/src/main/java/code/name/monkey/retromusic/providers/MusicPlaybackQueueStore.java +++ b/app/src/main/java/code/name/monkey/retromusic/providers/MusicPlaybackQueueStore.java @@ -162,17 +162,17 @@ public class MusicPlaybackQueueStore extends SQLiteOpenHelper { Song song = queue.get(i); ContentValues values = new ContentValues(4); - values.put(BaseColumns._ID, song.getId()); - values.put(AudioColumns.TITLE, song.getTitle()); - values.put(AudioColumns.TRACK, song.getTrackNumber()); - values.put(AudioColumns.YEAR, song.getYear()); - values.put(AudioColumns.DURATION, song.getDuration()); - values.put(AudioColumns.DATA, song.getData()); - values.put(AudioColumns.DATE_MODIFIED, song.getDateModified()); - values.put(AudioColumns.ALBUM_ID, song.getAlbumId()); - values.put(AudioColumns.ALBUM, song.getAlbumName()); - values.put(AudioColumns.ARTIST_ID, song.getArtistId()); - values.put(AudioColumns.ARTIST, song.getArtistName()); + values.put(BaseColumns._ID, song.id); + values.put(AudioColumns.TITLE, song.title); + values.put(AudioColumns.TRACK, song.trackNumber); + values.put(AudioColumns.YEAR, song.year); + values.put(AudioColumns.DURATION, song.duration); + values.put(AudioColumns.DATA, song.data); + values.put(AudioColumns.DATE_MODIFIED, song.dateModified); + values.put(AudioColumns.ALBUM_ID, song.albumId); + values.put(AudioColumns.ALBUM, song.albumName); + values.put(AudioColumns.ARTIST_ID, song.artistId); + values.put(AudioColumns.ARTIST, song.artistName); database.insert(tableName, null, values); } diff --git a/app/src/main/java/code/name/monkey/retromusic/service/MusicService.java b/app/src/main/java/code/name/monkey/retromusic/service/MusicService.java index d3cb7d65c..2c3afc707 100644 --- a/app/src/main/java/code/name/monkey/retromusic/service/MusicService.java +++ b/app/src/main/java/code/name/monkey/retromusic/service/MusicService.java @@ -248,7 +248,7 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP }; private static String getTrackUri(@NonNull Song song) { - return MusicUtil.getSongFileUri(song.getId()).toString(); + return MusicUtil.getSongFileUri(song.id).toString(); } private static Bitmap copy(Bitmap bitmap) { @@ -649,7 +649,7 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP } public void updateNotification() { - if (playingNotification != null && getCurrentSong().getId() != -1) { + if (playingNotification != null && getCurrentSong().id != -1) { playingNotification.update(); } } @@ -666,19 +666,19 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP private void updateMediaSessionMetaData() { final Song song = getCurrentSong(); - if (song.getId() == -1) { + if (song.id == -1) { mediaSession.setMetadata(null); return; } final MediaMetadataCompat.Builder metaData = new MediaMetadataCompat.Builder() - .putString(MediaMetadataCompat.METADATA_KEY_ARTIST, song.getArtistName()) - .putString(MediaMetadataCompat.METADATA_KEY_ALBUM_ARTIST, song.getArtistName()) - .putString(MediaMetadataCompat.METADATA_KEY_ALBUM, song.getAlbumName()) - .putString(MediaMetadataCompat.METADATA_KEY_TITLE, song.getTitle()) - .putLong(MediaMetadataCompat.METADATA_KEY_DURATION, song.getDuration()) + .putString(MediaMetadataCompat.METADATA_KEY_ARTIST, song.artistName) + .putString(MediaMetadataCompat.METADATA_KEY_ALBUM_ARTIST, song.artistName) + .putString(MediaMetadataCompat.METADATA_KEY_ALBUM, song.albumName) + .putString(MediaMetadataCompat.METADATA_KEY_TITLE, song.title) + .putLong(MediaMetadataCompat.METADATA_KEY_DURATION, song.duration) .putLong(MediaMetadataCompat.METADATA_KEY_TRACK_NUMBER, getPosition() + 1) - .putLong(MediaMetadataCompat.METADATA_KEY_YEAR, song.getYear()) + .putLong(MediaMetadataCompat.METADATA_KEY_YEAR, song.year) .putBitmap(MediaMetadataCompat.METADATA_KEY_ALBUM_ART, null); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { @@ -730,7 +730,7 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP if (position >= 0 && position < getPlayingQueue().size()) { return getPlayingQueue().get(position); } else { - return Song.Companion.getEmptySong(); + return Song.EMPTY_SONG; } } @@ -847,13 +847,13 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP public void removeSong(@NonNull Song song) { for (int i = 0; i < playingQueue.size(); i++) { - if (playingQueue.get(i).getId() == song.getId()) { + if (playingQueue.get(i).id == song.id) { playingQueue.remove(i); rePosition(i); } } for (int i = 0; i < originalPlayingQueue.size(); i++) { - if (originalPlayingQueue.get(i).getId() == song.getId()) { + if (originalPlayingQueue.get(i).id == song.id) { originalPlayingQueue.remove(i); } } @@ -1019,7 +1019,7 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP public long getQueueDurationMillis(int position) { long duration = 0; for (int i = position + 1; i < playingQueue.size(); i++) - duration += playingQueue.get(i).getDuration(); + duration += playingQueue.get(i).duration; return duration; } @@ -1073,11 +1073,11 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP break; case SHUFFLE_MODE_NONE: this.shuffleMode = shuffleMode; - int currentSongId = getCurrentSong().getId(); + int currentSongId = getCurrentSong().id; playingQueue = new ArrayList<>(originalPlayingQueue); int newPosition = 0; for (Song song : getPlayingQueue()) { - if (song.getId() == currentSongId) { + if (song.id == currentSongId) { newPosition = getPlayingQueue().indexOf(song); } } @@ -1104,11 +1104,11 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP final Song song = getCurrentSong(); - intent.putExtra("id", song.getId()); - intent.putExtra("artist", song.getArtistName()); - intent.putExtra("album", song.getAlbumName()); - intent.putExtra("track", song.getTitle()); - intent.putExtra("duration", song.getDuration()); + intent.putExtra("id", song.id); + intent.putExtra("artist", song.artistName); + intent.putExtra("album", song.albumName); + intent.putExtra("track", song.title); + intent.putExtra("duration", song.duration); intent.putExtra("position", (long) getSongProgressMillis()); intent.putExtra("playing", isPlaying()); intent.putExtra("scrobbling_source", RETRO_MUSIC_PACKAGE_NAME); @@ -1143,9 +1143,9 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP savePosition(); savePositionInTrack(); final Song currentSong = getCurrentSong(); - HistoryStore.getInstance(this).addSongId(currentSong.getId()); + HistoryStore.getInstance(this).addSongId(currentSong.id); if (songPlayCountHelper.shouldBumpPlayCount()) { - SongPlayCountStore.getInstance(this).bumpPlayCount(songPlayCountHelper.getSong().getId()); + SongPlayCountStore.getInstance(this).bumpPlayCount(songPlayCountHelper.getSong().id); } songPlayCountHelper.notifySongChanged(currentSong); break; @@ -1375,14 +1375,14 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP public static final String TAG = SongPlayCountHelper.class.getSimpleName(); private StopWatch stopWatch = new StopWatch(); - private Song song = Song.Companion.getEmptySong(); + private Song song = Song.EMPTY_SONG; public Song getSong() { return song; } boolean shouldBumpPlayCount() { - return song.getDuration() * 0.5d < stopWatch.getElapsedTime(); + return song.duration * 0.5d < stopWatch.getElapsedTime(); } void notifySongChanged(Song song) { diff --git a/app/src/main/java/code/name/monkey/retromusic/service/WearBrowserService.java b/app/src/main/java/code/name/monkey/retromusic/service/WearBrowserService.java index 00c5ff7ec..c8a56d550 100644 --- a/app/src/main/java/code/name/monkey/retromusic/service/WearBrowserService.java +++ b/app/src/main/java/code/name/monkey/retromusic/service/WearBrowserService.java @@ -241,9 +241,9 @@ public class WearBrowserService extends MediaBrowserService { List songList = SongLoader.INSTANCE.getAllSongs(mContext).blockingFirst(); for (Song song : songList) { fillMediaItems(mediaItems, - String.valueOf(song.getId()), - song.getTitle(), - song.getArtistName(), + String.valueOf(song.id), + song.title, + song.albumName, Uri.parse("android.resource://code.name.monkey.retromusic/drawable/default_album_art"), MediaBrowser.MediaItem.FLAG_PLAYABLE); } @@ -253,9 +253,9 @@ public class WearBrowserService extends MediaBrowserService { List albumSongList = AlbumLoader.Companion.getAlbum(mContext, Integer.parseInt(parentId.substring(1))).blockingFirst().getSongs(); for (Song song : albumSongList) { fillMediaItems(mediaItems, - String.valueOf(song.getId()), - song.getTitle(), - song.getArtistName(), + String.valueOf(song.id), + song.title, + song.albumName, Uri.parse("android.resource://code.name.monkey.retromusic/drawable/default_album_art"), MediaBrowser.MediaItem.FLAG_PLAYABLE); } @@ -264,9 +264,9 @@ public class WearBrowserService extends MediaBrowserService { List artistSongs = ArtistLoader.INSTANCE.getArtist(mContext, Integer.parseInt(parentId.substring(1))).blockingFirst().getSongs(); for (Song song : artistSongs) { fillMediaItems(mediaItems, - String.valueOf(song.getId()), - song.getTitle(), - song.getAlbumName(), + String.valueOf(song.id), + song.title, + song.albumName, Uri.parse("android.resource://code.name.monkey.retromusic/drawable/default_album_art"), MediaBrowser.MediaItem.FLAG_PLAYABLE); } @@ -288,9 +288,9 @@ public class WearBrowserService extends MediaBrowserService { List playlistSongs = PlaylistSongsLoader.INSTANCE.getPlaylistSongList(mContext, Integer.parseInt(parentId.substring(1))).blockingFirst(); for (Song song : playlistSongs) { fillMediaItems(mediaItems, - String.valueOf(song.getId()), - song.getTitle(), - song.getAlbumName(), + String.valueOf(song.id), + song.title, + song.albumName, Uri.parse("android.resource://code.name.monkey.retromusic/drawable/default_album_art"), MediaBrowser.MediaItem.FLAG_PLAYABLE); } diff --git a/app/src/main/java/code/name/monkey/retromusic/ui/activities/ArtistDetailActivity.kt b/app/src/main/java/code/name/monkey/retromusic/ui/activities/ArtistDetailActivity.kt index 5ee55743b..b0b667414 100755 --- a/app/src/main/java/code/name/monkey/retromusic/ui/activities/ArtistDetailActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/ui/activities/ArtistDetailActivity.kt @@ -82,7 +82,7 @@ class ArtistDetailActivity : AbsSlidingMusicPanelActivity(), ArtistDetailContrac setUpViews() - artistDetailsPresenter = ArtistDetailsPresenter(this, intent.extras) + artistDetailsPresenter = ArtistDetailsPresenter(this, intent.extras!!) artistDetailsPresenter!!.subscribe() contentContainer.setOnScrollChangeListener { _: NestedScrollView?, _: Int, scrollY: Int, _: Int, oldScrollY: Int -> diff --git a/app/src/main/java/code/name/monkey/retromusic/ui/activities/PlaylistDetailActivity.kt b/app/src/main/java/code/name/monkey/retromusic/ui/activities/PlaylistDetailActivity.kt index 1d17003e7..7fa702327 100644 --- a/app/src/main/java/code/name/monkey/retromusic/ui/activities/PlaylistDetailActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/ui/activities/PlaylistDetailActivity.kt @@ -195,7 +195,6 @@ class PlaylistDetailActivity : AbsSlidingMusicPanelActivity(), CabHolder, Playli } private fun setToolbarTitle(title: String) { - supportActionBar!!.title = title } @@ -230,11 +229,6 @@ class PlaylistDetailActivity : AbsSlidingMusicPanelActivity(), CabHolder, Playli super.onDestroy() } - override fun onPlayingMetaChanged() { - super.onPlayingMetaChanged() - songsPresenter!!.subscribe() - } - override fun loading() {} override fun showEmptyView() { @@ -249,7 +243,6 @@ class PlaylistDetailActivity : AbsSlidingMusicPanelActivity(), CabHolder, Playli } companion object { - var EXTRA_PLAYLIST = "extra_playlist" } } diff --git a/app/src/main/java/code/name/monkey/retromusic/ui/activities/SupportDevelopmentActivity.kt b/app/src/main/java/code/name/monkey/retromusic/ui/activities/SupportDevelopmentActivity.kt index 62378566f..383162bc8 100644 --- a/app/src/main/java/code/name/monkey/retromusic/ui/activities/SupportDevelopmentActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/ui/activities/SupportDevelopmentActivity.kt @@ -13,6 +13,7 @@ import android.view.ViewGroup import android.widget.TextView import android.widget.Toast import androidx.annotation.LayoutRes +import androidx.annotation.UiThread import androidx.recyclerview.widget.DefaultItemAnimator import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.RecyclerView @@ -63,6 +64,7 @@ class SupportDevelopmentActivity : AbsBaseActivity(), BillingProcessor.IBillingH setContentView(R.layout.activity_donation) + setStatusbarColorAuto() setNavigationbarColorAuto() setTaskDescriptionColorAuto() diff --git a/app/src/main/java/code/name/monkey/retromusic/ui/adapter/album/AlbumAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/ui/adapter/album/AlbumAdapter.kt index 2c108ee24..5c6111ec0 100644 --- a/app/src/main/java/code/name/monkey/retromusic/ui/adapter/album/AlbumAdapter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/ui/adapter/album/AlbumAdapter.kt @@ -26,7 +26,6 @@ import code.name.monkey.retromusic.ui.adapter.base.MediaEntryViewHolder import code.name.monkey.retromusic.util.MusicUtil import code.name.monkey.retromusic.util.NavigationUtil import code.name.monkey.retromusic.util.PreferenceUtil -import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions import com.simplecityapps.recyclerview_fastscroll.views.FastScrollRecyclerView import java.util.* diff --git a/app/src/main/java/code/name/monkey/retromusic/ui/adapter/song/AbsOffsetSongAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/ui/adapter/song/AbsOffsetSongAdapter.kt index 935867e72..7d49591a5 100644 --- a/app/src/main/java/code/name/monkey/retromusic/ui/adapter/song/AbsOffsetSongAdapter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/ui/adapter/song/AbsOffsetSongAdapter.kt @@ -61,7 +61,7 @@ abstract class AbsOffsetSongAdapter : SongAdapter { override// could also return null, just to be safe return empty song val song: Song - get() = if (itemViewType == OFFSET_ITEM) Song.emptySong else dataSet[adapterPosition - 1] + get() = if (itemViewType == OFFSET_ITEM) Song.EMPTY_SONG else dataSet[adapterPosition - 1] override fun onClick(v: View?) { if (isInQuickSelectMode && itemViewType != OFFSET_ITEM) { diff --git a/app/src/main/java/code/name/monkey/retromusic/ui/adapter/song/OrderablePlaylistSongAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/ui/adapter/song/OrderablePlaylistSongAdapter.kt index 8889c5168..55ff84998 100644 --- a/app/src/main/java/code/name/monkey/retromusic/ui/adapter/song/OrderablePlaylistSongAdapter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/ui/adapter/song/OrderablePlaylistSongAdapter.kt @@ -24,7 +24,7 @@ class OrderablePlaylistSongAdapter(activity: AppCompatActivity, private val onMoveItemListener: OnMoveItemListener?) : PlaylistSongAdapter(activity, dataSet, itemLayoutRes, usePalette, cabHolder), DraggableItemAdapter { init { - setMultiSelectMenuRes(R.menu.menu_playlists_songs_selection) + setMultiSelectMenuRes(code.name.monkey.retromusic.R.menu.menu_playlists_songs_selection) } override fun createViewHolder(view: View): SongAdapter.ViewHolder { @@ -49,9 +49,7 @@ class OrderablePlaylistSongAdapter(activity: AppCompatActivity, override fun onMultipleItemAction(menuItem: MenuItem, selection: ArrayList) { when (menuItem.itemId) { R.id.action_remove_from_playlist -> { - val songs = ArrayList() - songs.addAll(songs) - RemoveFromPlaylistDialog.create(songs).show(activity.supportFragmentManager, "ADD_PLAYLIST") + RemoveFromPlaylistDialog.create(selection as ArrayList).show(activity.supportFragmentManager, "ADD_PLAYLIST") return } } @@ -94,8 +92,8 @@ class OrderablePlaylistSongAdapter(activity: AppCompatActivity, private var mDragStateFlags: Int = 0 override var songMenuRes: Int - get() = R.menu.menu_item_playlist_song - set(value: Int) { + get() = code.name.monkey.retromusic.R.menu.menu_item_playlist_song + set(value) { super.songMenuRes = value } @@ -111,7 +109,7 @@ class OrderablePlaylistSongAdapter(activity: AppCompatActivity, override fun onSongMenuItemClick(item: MenuItem): Boolean { when (item.itemId) { - R.id.action_remove_from_playlist -> { + code.name.monkey.retromusic.R.id.action_remove_from_playlist -> { RemoveFromPlaylistDialog.create(song as PlaylistSong).show(activity.supportFragmentManager, "REMOVE_FROM_PLAYLIST") return true } @@ -130,7 +128,6 @@ class OrderablePlaylistSongAdapter(activity: AppCompatActivity, } companion object { - - val TAG = OrderablePlaylistSongAdapter::class.java.simpleName + val TAG: String = OrderablePlaylistSongAdapter::class.java.simpleName } } diff --git a/app/src/main/java/code/name/monkey/retromusic/ui/adapter/song/PlaylistSongAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/ui/adapter/song/PlaylistSongAdapter.kt index e9a2069a4..3f6a0a1cb 100644 --- a/app/src/main/java/code/name/monkey/retromusic/ui/adapter/song/PlaylistSongAdapter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/ui/adapter/song/PlaylistSongAdapter.kt @@ -2,14 +2,12 @@ package code.name.monkey.retromusic.ui.adapter.song import android.view.MenuItem import android.view.View -import android.widget.ImageView import androidx.annotation.LayoutRes import androidx.appcompat.app.AppCompatActivity import androidx.core.util.Pair import code.name.monkey.appthemehelper.ThemeStore import code.name.monkey.retromusic.R import code.name.monkey.retromusic.interfaces.CabHolder -import code.name.monkey.retromusic.model.PlaylistSong import code.name.monkey.retromusic.model.Song import code.name.monkey.retromusic.util.MusicUtil import code.name.monkey.retromusic.util.NavigationUtil diff --git a/app/src/main/java/code/name/monkey/retromusic/ui/fragments/VolumeFragment.kt b/app/src/main/java/code/name/monkey/retromusic/ui/fragments/VolumeFragment.kt index e4052ca8f..30db56967 100755 --- a/app/src/main/java/code/name/monkey/retromusic/ui/fragments/VolumeFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/ui/fragments/VolumeFragment.kt @@ -12,7 +12,6 @@ import android.view.ViewGroup import android.widget.SeekBar import androidx.fragment.app.Fragment import code.name.monkey.appthemehelper.ThemeStore -import code.name.monkey.appthemehelper.util.TintHelper import code.name.monkey.retromusic.R import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.util.PreferenceUtil @@ -95,17 +94,14 @@ class VolumeFragment : Fragment(), SeekBar.OnSeekBarChangeListener, OnAudioVolum } fun tintWhiteColor() { - setProgressBarColor(Color.WHITE) + setTintable(Color.WHITE) } private fun setProgressBarColor(newColor: Int) { - val text = ColorStateList(arrayOf(intArrayOf(-android.R.attr.state_checked), intArrayOf(android.R.attr.state_checked)), intArrayOf(ThemeStore.textColorSecondary(context!!), ThemeStore.textColorPrimary(context!!))) - - volumeSeekBar.progressTintList = text - volumeSeekBar.progressBackgroundTintList = text - - //TintHelper.setTint(volumeSeekBar, newColor, false) + volumeSeekBar.thumbTintList = ColorStateList.valueOf(newColor) + volumeSeekBar.progressTintList = ColorStateList.valueOf(newColor) + volumeSeekBar.progressBackgroundTintList = ColorStateList.valueOf(newColor) volumeDown.setColorFilter(newColor, PorterDuff.Mode.SRC_IN) volumeUp.setColorFilter(newColor, PorterDuff.Mode.SRC_IN) } diff --git a/app/src/main/java/code/name/monkey/retromusic/ui/fragments/mainactivity/folders/FoldersFragment.java b/app/src/main/java/code/name/monkey/retromusic/ui/fragments/mainactivity/folders/FoldersFragment.java index c813557f4..77e711f52 100644 --- a/app/src/main/java/code/name/monkey/retromusic/ui/fragments/mainactivity/folders/FoldersFragment.java +++ b/app/src/main/java/code/name/monkey/retromusic/ui/fragments/mainactivity/folders/FoldersFragment.java @@ -364,7 +364,7 @@ public class FoldersFragment extends AbsMainActivityFragment implements File file1 = (File) extra; int startIndex = -1; for (int i = 0; i < songs.size(); i++) { - if (file1.getPath().equals(songs.get(i).getData())) { // path is already canonical here + if (file1.getPath().equals(songs.get(i).data)) { // path is already canonical here startIndex = i; break; } diff --git a/app/src/main/java/code/name/monkey/retromusic/ui/fragments/player/blur/BlurPlaybackControlsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/ui/fragments/player/blur/BlurPlaybackControlsFragment.kt index b5f995a96..1bbeb3285 100644 --- a/app/src/main/java/code/name/monkey/retromusic/ui/fragments/player/blur/BlurPlaybackControlsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/ui/fragments/player/blur/BlurPlaybackControlsFragment.kt @@ -14,6 +14,7 @@ import android.view.animation.DecelerateInterpolator import android.view.animation.LinearInterpolator import android.widget.SeekBar import androidx.core.content.ContextCompat +import code.name.monkey.appthemehelper.ThemeStore import code.name.monkey.appthemehelper.util.ColorUtil import code.name.monkey.appthemehelper.util.MaterialValueHelper import code.name.monkey.appthemehelper.util.TintHelper @@ -129,8 +130,12 @@ class BlurPlaybackControlsFragment : AbsPlayerControlsFragment() { private fun setProgressBarColor(newColor: Int) { val ld = progressSlider.progressDrawable as LayerDrawable - val clipDrawable = ld.findDrawableByLayerId(android.R.id.progress) as ClipDrawable - clipDrawable.setColorFilter(newColor, PorterDuff.Mode.SRC_IN) + val clipDrawableProgress = ld.findDrawableByLayerId(android.R.id.progress) as ClipDrawable + clipDrawableProgress.setColorFilter(newColor, PorterDuff.Mode.SRC_IN) + + val clipDrawableBackground = ld.findDrawableByLayerId(android.R.id.background) + clipDrawableBackground.setColorFilter(MaterialValueHelper.getPrimaryDisabledTextColor(context!!, ColorUtil.isColorLight(ThemeStore.primaryColor(context!!))), PorterDuff.Mode.SRC_IN) + } private fun setUpPlayPauseFab() { diff --git a/app/src/main/java/code/name/monkey/retromusic/ui/fragments/player/color/ColorPlaybackControlsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/ui/fragments/player/color/ColorPlaybackControlsFragment.kt index ec9b4dc77..b3dfc159f 100644 --- a/app/src/main/java/code/name/monkey/retromusic/ui/fragments/player/color/ColorPlaybackControlsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/ui/fragments/player/color/ColorPlaybackControlsFragment.kt @@ -1,8 +1,11 @@ package code.name.monkey.retromusic.ui.fragments.player.color import android.animation.ObjectAnimator +import android.content.res.ColorStateList import android.graphics.Color import android.graphics.PorterDuff +import android.graphics.drawable.ClipDrawable +import android.graphics.drawable.LayerDrawable import android.os.Bundle import android.view.LayoutInflater import android.view.View @@ -21,7 +24,7 @@ import code.name.monkey.retromusic.service.MusicService import code.name.monkey.retromusic.ui.fragments.VolumeFragment import code.name.monkey.retromusic.ui.fragments.base.AbsPlayerControlsFragment import code.name.monkey.retromusic.util.MusicUtil -import kotlinx.android.synthetic.main.fragment_color_player_playback_controls.* +import kotlinx.android.synthetic.main.fragment_player_playback_controls.* import kotlinx.android.synthetic.main.media_button.* import kotlinx.android.synthetic.main.player_time.* @@ -38,7 +41,6 @@ class ColorPlaybackControlsFragment : AbsPlayerControlsFragment() { } override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { - return inflater.inflate(R.layout.fragment_color_player_playback_controls, container, false) } @@ -103,7 +105,7 @@ class ColorPlaybackControlsFragment : AbsPlayerControlsFragment() { title!!.setTextColor(lastPlaybackControlsColor) text!!.setTextColor(lastDisabledPlaybackControlsColor) - TintHelper.setTintAuto(progressSlider!!, lastPlaybackControlsColor, false) + setProgressBarColor(lastPlaybackControlsColor, lastDisabledPlaybackControlsColor) volumeFragment.setTintable(lastPlaybackControlsColor) @@ -115,6 +117,16 @@ class ColorPlaybackControlsFragment : AbsPlayerControlsFragment() { updatePrevNextColor() } + private fun setProgressBarColor(c1: Int, c2: Int) { + progressSlider.thumbTintList = ColorStateList.valueOf(c1) + val ld = progressSlider.progressDrawable as LayerDrawable + + val clipDrawableProgress = ld.findDrawableByLayerId(android.R.id.progress) as ClipDrawable + clipDrawableProgress.setColorFilter(c1, PorterDuff.Mode.SRC_IN) + + val clipDrawableBackground = ld.findDrawableByLayerId(android.R.id.background) + clipDrawableBackground.setColorFilter(c2, PorterDuff.Mode.SRC_IN) + } private fun setUpPlayPauseFab() { TintHelper.setTintAuto(playPauseButton, Color.WHITE, true) diff --git a/app/src/main/java/code/name/monkey/retromusic/ui/fragments/player/flat/FlatPlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/ui/fragments/player/flat/FlatPlayerFragment.kt index 3ace53035..be1f5b129 100644 --- a/app/src/main/java/code/name/monkey/retromusic/ui/fragments/player/flat/FlatPlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/ui/fragments/player/flat/FlatPlayerFragment.kt @@ -56,7 +56,7 @@ class FlatPlayerFragment : AbsPlayerFragment(), PlayerAlbumCoverFragment.Callbac valueAnimator!!.addUpdateListener { animation -> val drawable = DrawableGradient(GradientDrawable.Orientation.TOP_BOTTOM, intArrayOf(animation.animatedValue as Int, android.R.color.transparent), 0) - colorGradientBackground.background = drawable + colorGradientBackground!!.background = drawable } valueAnimator!!.setDuration(ViewUtil.RETRO_MUSIC_ANIM_TIME.toLong()).start() diff --git a/app/src/main/java/code/name/monkey/retromusic/ui/fragments/player/material/MaterialControlsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/ui/fragments/player/material/MaterialControlsFragment.kt index 33f05de71..1735c814f 100644 --- a/app/src/main/java/code/name/monkey/retromusic/ui/fragments/player/material/MaterialControlsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/ui/fragments/player/material/MaterialControlsFragment.kt @@ -1,6 +1,7 @@ package code.name.monkey.retromusic.ui.fragments.player.material import android.animation.ObjectAnimator +import android.content.res.ColorStateList import android.graphics.PorterDuff import android.os.Bundle import android.view.LayoutInflater @@ -21,6 +22,7 @@ import code.name.monkey.retromusic.ui.fragments.base.AbsPlayerControlsFragment import code.name.monkey.retromusic.util.MusicUtil import code.name.monkey.retromusic.util.PreferenceUtil import kotlinx.android.synthetic.main.fragment_material_playback_controls.* +import kotlinx.android.synthetic.main.fragment_volume.* import kotlinx.android.synthetic.main.player_time.* /** @@ -105,6 +107,10 @@ class MaterialControlsFragment : AbsPlayerControlsFragment() { if (PreferenceUtil.getInstance().adaptiveColor) { lastPlaybackControlsColor = color text.setTextColor(color) + + progressSlider.thumbTintList = ColorStateList.valueOf(color) + progressSlider.progressTintList = ColorStateList.valueOf(color) + progressSlider.progressBackgroundTintList = ColorStateList.valueOf(color) } updatePlayPauseColor() diff --git a/app/src/main/java/code/name/monkey/retromusic/ui/fragments/player/normal/PlayerFragment.kt b/app/src/main/java/code/name/monkey/retromusic/ui/fragments/player/normal/PlayerFragment.kt index d9c605abd..fa1fcd1e1 100644 --- a/app/src/main/java/code/name/monkey/retromusic/ui/fragments/player/normal/PlayerFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/ui/fragments/player/normal/PlayerFragment.kt @@ -1,20 +1,14 @@ package code.name.monkey.retromusic.ui.fragments.player.normal -import android.animation.Animator -import android.animation.AnimatorSet import android.animation.ArgbEvaluator import android.animation.ValueAnimator import android.graphics.drawable.GradientDrawable -import android.os.Build import android.os.Bundle import android.view.LayoutInflater import android.view.View -import android.view.ViewAnimationUtils import android.view.ViewGroup import androidx.appcompat.widget.Toolbar -import code.name.monkey.appthemehelper.ThemeStore import code.name.monkey.appthemehelper.util.ATHUtil -import code.name.monkey.appthemehelper.util.ColorUtil import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.model.Song @@ -24,8 +18,6 @@ import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.ViewUtil import code.name.monkey.retromusic.views.DrawableGradient import kotlinx.android.synthetic.main.fragment_player.* -import kotlinx.android.synthetic.main.fragment_player_playback_controls.* -import kotlinx.android.synthetic.main.media_button.* class PlayerFragment : AbsPlayerFragment(), PlayerAlbumCoverFragment.Callbacks { @@ -45,9 +37,8 @@ class PlayerFragment : AbsPlayerFragment(), PlayerAlbumCoverFragment.Callbacks { valueAnimator = ValueAnimator.ofObject(ArgbEvaluator(), android.R.color.transparent, i) valueAnimator!!.addUpdateListener { animation -> - val drawable = DrawableGradient(GradientDrawable.Orientation.TOP_BOTTOM, - intArrayOf(animation.animatedValue as Int, android.R.color.transparent), 0) - colorGradientBackground.background = drawable + val drawable = DrawableGradient(GradientDrawable.Orientation.TOP_BOTTOM, intArrayOf(animation.animatedValue as Int, android.R.color.transparent), 0) + colorGradientBackground!!.background = drawable } valueAnimator!!.setDuration(ViewUtil.RETRO_MUSIC_ANIM_TIME.toLong()).start() } diff --git a/app/src/main/java/code/name/monkey/retromusic/ui/fragments/player/normal/PlayerPlaybackControlsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/ui/fragments/player/normal/PlayerPlaybackControlsFragment.kt index 30c7dcce6..d9073eef4 100644 --- a/app/src/main/java/code/name/monkey/retromusic/ui/fragments/player/normal/PlayerPlaybackControlsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/ui/fragments/player/normal/PlayerPlaybackControlsFragment.kt @@ -28,7 +28,6 @@ import code.name.monkey.retromusic.util.PreferenceUtil import kotlinx.android.synthetic.main.fragment_player_playback_controls.* import kotlinx.android.synthetic.main.media_button.* import kotlinx.android.synthetic.main.player_time.* -import kotlinx.android.synthetic.main.volume_controls.* class PlayerPlaybackControlsFragment : AbsPlayerControlsFragment() { @@ -130,8 +129,12 @@ class PlayerPlaybackControlsFragment : AbsPlayerControlsFragment() { private fun setProgressBarColor(newColor: Int) { val ld = progressSlider.progressDrawable as LayerDrawable - val clipDrawable = ld.findDrawableByLayerId(android.R.id.progress) as ClipDrawable - clipDrawable.setColorFilter(newColor, PorterDuff.Mode.SRC_IN) + + val clipDrawableProgress = ld.findDrawableByLayerId(android.R.id.progress) as ClipDrawable + clipDrawableProgress.setColorFilter(newColor, PorterDuff.Mode.SRC_IN) + + val clipDrawableBackground = ld.findDrawableByLayerId(android.R.id.background) + clipDrawableBackground.setColorFilter(MaterialValueHelper.getPrimaryDisabledTextColor(context!!, ColorUtil.isColorLight(ThemeStore.primaryColor(context!!))), PorterDuff.Mode.SRC_IN) } private fun setUpPlayPauseFab() { diff --git a/app/src/main/java/code/name/monkey/retromusic/ui/fragments/player/plain/PlainPlaybackControlsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/ui/fragments/player/plain/PlainPlaybackControlsFragment.kt index 7e8def138..5fb4bf614 100644 --- a/app/src/main/java/code/name/monkey/retromusic/ui/fragments/player/plain/PlainPlaybackControlsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/ui/fragments/player/plain/PlainPlaybackControlsFragment.kt @@ -1,6 +1,7 @@ package code.name.monkey.retromusic.ui.fragments.player.plain import android.animation.ObjectAnimator +import android.content.res.ColorStateList import android.graphics.PorterDuff import android.graphics.drawable.ClipDrawable import android.graphics.drawable.LayerDrawable @@ -28,7 +29,6 @@ import code.name.monkey.retromusic.util.PreferenceUtil import kotlinx.android.synthetic.main.fragment_plain_controls_fragment.* import kotlinx.android.synthetic.main.media_button.* import kotlinx.android.synthetic.main.player_time.* -import kotlinx.android.synthetic.main.volume_controls.* /** * @author Hemanth S (h4h13). @@ -130,15 +130,16 @@ class PlainPlaybackControlsFragment : AbsPlayerControlsFragment() { if (PreferenceUtil.getInstance().adaptiveColor) { TintHelper.setTintAuto(playPauseButton, MaterialValueHelper.getPrimaryTextColor(context!!, ColorUtil.isColorLight(color)), false) TintHelper.setTintAuto(playPauseButton, color, true) - setProgressBarColor(progressSlider, color) + setProgressBarColor(color) } updateRepeatState() updateShuffleState() updatePrevNextColor() } - private fun setProgressBarColor(progressBar: SeekBar?, newColor: Int) { - val ld = progressBar!!.progressDrawable as LayerDrawable + private fun setProgressBarColor(newColor: Int) { + progressSlider.thumbTintList = ColorStateList.valueOf(newColor) + val ld = progressSlider.progressDrawable as LayerDrawable val clipDrawable = ld.findDrawableByLayerId(android.R.id.progress) as ClipDrawable clipDrawable.setColorFilter(newColor, PorterDuff.Mode.SRC_IN) } diff --git a/app/src/main/java/code/name/monkey/retromusic/util/MusicUtil.java b/app/src/main/java/code/name/monkey/retromusic/util/MusicUtil.java index 4d076fd46..239ca41a5 100644 --- a/app/src/main/java/code/name/monkey/retromusic/util/MusicUtil.java +++ b/app/src/main/java/code/name/monkey/retromusic/util/MusicUtil.java @@ -16,6 +16,10 @@ import android.text.TextUtils; import android.util.Log; import android.widget.Toast; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.core.content.FileProvider; + import org.jaudiotagger.audio.AudioFileIO; import org.jaudiotagger.tag.FieldKey; @@ -26,9 +30,6 @@ import java.util.List; import java.util.Locale; import java.util.regex.Pattern; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.core.content.FileProvider; import code.name.monkey.retromusic.R; import code.name.monkey.retromusic.helper.MusicPlayerRemote; import code.name.monkey.retromusic.loaders.PlaylistLoader; @@ -60,7 +61,7 @@ public class MusicUtil { public static Intent createShareSongFileIntent(@NonNull final Song song, Context context) { try { return new Intent().setAction(Intent.ACTION_SEND).putExtra(Intent.EXTRA_STREAM, - FileProvider.getUriForFile(context, context.getApplicationContext().getPackageName(), new File(song.getData()))) + FileProvider.getUriForFile(context, context.getApplicationContext().getPackageName(), new File(song.data))) .addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) .setType("audio/*"); } catch (IllegalArgumentException e) { @@ -135,7 +136,7 @@ public class MusicUtil { long duration = 0; for (int i = 0; i < songs.size(); i++) { - duration += songs.get(i).getDuration(); + duration += songs.get(i).duration; } return songCount + " " + songString + " • " + MusicUtil.getReadableDurationString(duration); @@ -200,7 +201,7 @@ public class MusicUtil { final StringBuilder selection = new StringBuilder(); selection.append(BaseColumns._ID + " IN ("); for (int i = 0; i < songs.size(); i++) { - selection.append(songs.get(i).getId()); + selection.append(songs.get(i).id); if (i < songs.size() - 1) { selection.append(","); } @@ -264,7 +265,7 @@ public class MusicUtil { public static String getLyrics(Song song) { String lyrics = null; - File file = new File(song.getData()); + File file = new File(song.data); try { lyrics = AudioFileIO.read(file).getTagOrCreateDefault().getFirst(FieldKey.LYRICS); @@ -279,7 +280,7 @@ public class MusicUtil { if (dir != null && dir.exists() && dir.isDirectory()) { String format = ".*%s.*\\.(lrc|txt)"; String filename = Pattern.quote(FileUtil.stripExtension(file.getName())); - String songtitle = Pattern.quote(song.getTitle()); + String songtitle = Pattern.quote(song.title); final ArrayList patterns = new ArrayList<>(); patterns.add(Pattern.compile(String.format(format, filename), @@ -352,7 +353,7 @@ public class MusicUtil { //getFavoritesPlaylist(context).blockingFirst().id.subscribe(MusicUtil::setPlaylist); //return PlaylistsUtil.doPlaylistContains(context, getFavoritesPlaylist(context).blockingFirst().id, song.id); return PlaylistsUtil - .doPlaylistContains(context, getFavoritesPlaylist(context).blockingFirst().id, song.getId()); + .doPlaylistContains(context, getFavoritesPlaylist(context).blockingFirst().id, song.id); } public static boolean isArtistNameUnknown(@Nullable String artistName) { @@ -394,7 +395,7 @@ public class MusicUtil { public static long getTotalDuration(@NonNull final Context context, @NonNull List songs) { long duration = 0; for (int i = 0; i < songs.size(); i++) { - duration += songs.get(i).getDuration(); + duration += songs.get(i).duration; } return duration; } diff --git a/app/src/main/java/code/name/monkey/retromusic/util/PlaylistsUtil.java b/app/src/main/java/code/name/monkey/retromusic/util/PlaylistsUtil.java index c016d6de9..29ad1e0f6 100644 --- a/app/src/main/java/code/name/monkey/retromusic/util/PlaylistsUtil.java +++ b/app/src/main/java/code/name/monkey/retromusic/util/PlaylistsUtil.java @@ -149,7 +149,7 @@ public class PlaylistsUtil { for (int i = 0; i < len; i++) { contentValues[i] = new ContentValues(); contentValues[i].put(MediaStore.Audio.Playlists.Members.PLAY_ORDER, base + offset + i); - contentValues[i].put(MediaStore.Audio.Playlists.Members.AUDIO_ID, songs.get(offset + i).getId()); + contentValues[i].put(MediaStore.Audio.Playlists.Members.AUDIO_ID, songs.get(offset + i).id); } return contentValues; } @@ -158,7 +158,7 @@ public class PlaylistsUtil { Uri uri = MediaStore.Audio.Playlists.Members.getContentUri( "external", playlistId); String selection = MediaStore.Audio.Playlists.Members.AUDIO_ID + " =?"; - String[] selectionArgs = new String[]{String.valueOf(song.getId())}; + String[] selectionArgs = new String[]{String.valueOf(song.id)}; try { context.getContentResolver().delete(uri, selection, selectionArgs); diff --git a/app/src/main/res/layout-xlarge-land/fragment_banner_home.xml b/app/src/main/res/layout-xlarge-land/fragment_banner_home.xml index 4769476a2..cd7ccfb76 100644 --- a/app/src/main/res/layout-xlarge-land/fragment_banner_home.xml +++ b/app/src/main/res/layout-xlarge-land/fragment_banner_home.xml @@ -85,7 +85,6 @@ + + + + - - + \ No newline at end of file diff --git a/app/src/main/res/menu/menu_playlists_songs_selection.xml b/app/src/main/res/menu/menu_playlists_songs_selection.xml index ff356b620..20e6c8738 100644 --- a/app/src/main/res/menu/menu_playlists_songs_selection.xml +++ b/app/src/main/res/menu/menu_playlists_songs_selection.xml @@ -18,12 +18,12 @@ android:id="@+id/action_add_to_playlist" android:icon="@drawable/ic_playlist_add_white_24dp" android:title="@string/action_add_to_playlist" - app:showAsAction="always" /> + app:showAsAction="ifRoom" /> + app:showAsAction="ifRoom" /> \ No newline at end of file diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png index 708b3491d..3f04ce5a9 100644 Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher.png and b/app/src/main/res/mipmap-hdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_background.png b/app/src/main/res/mipmap-hdpi/ic_launcher_background.png index 278b1604f..c53feb5d5 100644 Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher_background.png and b/app/src/main/res/mipmap-hdpi/ic_launcher_background.png differ diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png index 4ccf37af7..6584b113d 100644 Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png and b/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png differ diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/app/src/main/res/mipmap-hdpi/ic_launcher_round.png index 708b3491d..3f04ce5a9 100644 Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher_round.png and b/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.png b/app/src/main/res/mipmap-mdpi/ic_launcher.png index 5d7f4d8a5..aea8b3b40 100644 Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher.png and b/app/src/main/res/mipmap-mdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_background.png b/app/src/main/res/mipmap-mdpi/ic_launcher_background.png index af1e5d56e..9ce5f7246 100644 Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher_background.png and b/app/src/main/res/mipmap-mdpi/ic_launcher_background.png differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png index c3833d63b..e7a04db87 100644 Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png and b/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/app/src/main/res/mipmap-mdpi/ic_launcher_round.png index 5d7f4d8a5..aea8b3b40 100644 Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher_round.png and b/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/app/src/main/res/mipmap-xhdpi/ic_launcher.png index eadda1bf4..401fd0d4d 100644 Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher.png and b/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_background.png b/app/src/main/res/mipmap-xhdpi/ic_launcher_background.png index fe7517d88..ae2ee6f4c 100644 Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher_background.png and b/app/src/main/res/mipmap-xhdpi/ic_launcher_background.png differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png index 555f7deb9..ce793d87b 100644 Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png and b/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png index eadda1bf4..401fd0d4d 100644 Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png and b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png index 62538edcc..19a04881c 100644 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png and b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_background.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher_background.png index 61b257517..841a0a2c4 100644 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher_background.png and b/app/src/main/res/mipmap-xxhdpi/ic_launcher_background.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png index 3a14131a7..a2489ea3c 100644 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png and b/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png index 62538edcc..19a04881c 100644 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png and b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png index 7344ed9ba..13f0a3cb4 100644 Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png index 493ff3176..aa8d71675 100644 Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png index 821a47a5d..5c2ab3a82 100644 Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png index 7344ed9ba..13f0a3cb4 100644 Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 1522b120c..da1f8f286 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -67,7 +67,6 @@