From d65314f4b810d83877f94ecca4b339a39ba9b0a1 Mon Sep 17 00:00:00 2001 From: h4h13 Date: Tue, 25 Feb 2020 18:45:23 +0530 Subject: [PATCH] Added default color drawable --- .../activities/AlbumDetailsActivity.kt | 15 +- .../tageditor/AbsTagEditorActivity.kt | 2 +- .../tageditor/AlbumTagEditorActivity.kt | 2 +- .../adapter/CategoryInfoAdapter.java | 8 +- .../monkey/retromusic/adapter/GenreAdapter.kt | 2 +- .../monkey/retromusic/adapter/HomeAdapter.kt | 9 +- .../retromusic/adapter/SearchAdapter.kt | 15 +- .../retromusic/adapter/SongFileAdapter.kt | 9 +- .../retromusic/adapter/album/AlbumAdapter.kt | 16 +- .../adapter/album/AlbumCoverPagerAdapter.kt | 4 +- .../adapter/album/AlbumFullWidthAdapter.kt | 15 +- .../adapter/album/HorizontalAlbumAdapter.kt | 8 +- .../adapter/artist/ArtistAdapter.kt | 8 +- .../adapter/song/SimpleSongAdapter.kt | 2 +- .../retromusic/adapter/song/SongAdapter.kt | 7 +- .../retromusic/appwidgets/AppWidgetBig.kt | 4 +- .../retromusic/appwidgets/AppWidgetCard.kt | 2 +- .../retromusic/appwidgets/AppWidgetClassic.kt | 2 +- .../retromusic/appwidgets/AppWidgetSmall.kt | 2 +- .../appwidgets/base/BaseAppWidget.kt | 2 +- .../retromusic/glide/AlbumGlideRequest.java | 138 ++++++++++++++++++ .../retromusic/glide/ArtistGlideRequest.java | 40 +++-- .../retromusic/glide/SongGlideRequest.java | 11 +- .../notification/PlayingNotificationImpl.kt | 2 +- .../notification/PlayingNotificationOreo.kt | 4 +- .../retromusic/views/ColorIconsImageView.kt | 28 ++-- .../views/RetroShapeableImageView.kt | 12 +- .../retromusic/views/SettingListItemView.kt | 35 ++--- .../res/drawable-hdpi/default_album_art.webp | Bin 1840 -> 5936 bytes .../res/drawable-hdpi/default_artist_art.webp | Bin 2410 -> 4062 bytes .../res/drawable-hdpi/default_audio_art.webp | Bin 0 -> 2748 bytes .../res/drawable-mdpi/default_album_art.webp | Bin 996 -> 3538 bytes .../res/drawable-mdpi/default_artist_art.webp | Bin 1432 -> 2410 bytes .../res/drawable-mdpi/default_audio_art.webp | Bin 0 -> 1546 bytes .../res/drawable-xhdpi/default_album_art.webp | Bin 2940 -> 8320 bytes .../drawable-xhdpi/default_artist_art.webp | Bin 3724 -> 6056 bytes .../res/drawable-xhdpi/default_audio_art.webp | Bin 0 -> 4188 bytes .../drawable-xxhdpi/default_album_art.webp | Bin 5942 -> 14094 bytes .../drawable-xxhdpi/default_artist_art.webp | Bin 7142 -> 10834 bytes .../drawable-xxhdpi/default_audio_art.webp | Bin 0 -> 8136 bytes .../drawable-xxxhdpi/default_album_art.webp | Bin 9894 -> 21488 bytes .../drawable-xxxhdpi/default_artist_art.webp | Bin 11418 -> 16950 bytes .../drawable-xxxhdpi/default_audio_art.webp | Bin 0 -> 13032 bytes app/src/main/res/layout/app_widget_card.xml | 2 +- app/src/main/res/layout/app_widget_small.xml | 2 +- app/src/main/res/layout/item_grid.xml | 21 +-- app/src/main/res/layout/sub_header.xml | 2 +- 47 files changed, 306 insertions(+), 125 deletions(-) create mode 100644 app/src/main/java/code/name/monkey/retromusic/glide/AlbumGlideRequest.java create mode 100644 app/src/main/res/drawable-hdpi/default_audio_art.webp create mode 100644 app/src/main/res/drawable-mdpi/default_audio_art.webp create mode 100644 app/src/main/res/drawable-xhdpi/default_audio_art.webp create mode 100644 app/src/main/res/drawable-xxhdpi/default_audio_art.webp create mode 100644 app/src/main/res/drawable-xxxhdpi/default_audio_art.webp diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/AlbumDetailsActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/AlbumDetailsActivity.kt index 16409717..02466a3f 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/AlbumDetailsActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/AlbumDetailsActivity.kt @@ -27,6 +27,7 @@ import code.name.monkey.retromusic.dialogs.AddToPlaylistDialog import code.name.monkey.retromusic.dialogs.DeleteSongsDialog import code.name.monkey.retromusic.extensions.ripAlpha import code.name.monkey.retromusic.extensions.show +import code.name.monkey.retromusic.glide.AlbumGlideRequest import code.name.monkey.retromusic.glide.ArtistGlideRequest import code.name.monkey.retromusic.glide.RetroMusicColoredTarget import code.name.monkey.retromusic.glide.SongGlideRequest @@ -250,19 +251,25 @@ class AlbumDetailsActivity : AbsSlidingMusicPanelActivity(), AlbumDetailsView, C } override fun loadArtistImage(artist: Artist) { - ArtistGlideRequest.Builder.from(Glide.with(this), artist).generatePalette(this).build() - .dontAnimate().dontTransform().into(object : RetroMusicColoredTarget(artistImage) { + ArtistGlideRequest.Builder.from(Glide.with(this), artist) + .generatePalette(this) + .build() + .dontAnimate() + .dontTransform() + .into(object : RetroMusicColoredTarget(artistImage) { override fun onColorReady(color: Int) { } }) } private fun loadAlbumCover() { - SongGlideRequest.Builder.from(Glide.with(this), album.safeGetFirstSong()) + AlbumGlideRequest.Builder.from(Glide.with(this), album.safeGetFirstSong()) .checkIgnoreMediaStore(this) .ignoreMediaStore(PreferenceUtil.getInstance(this).ignoreMediaStoreArtwork()) .generatePalette(this) - .build().dontAnimate().dontTransform() + .build() + .dontAnimate() + .dontTransform() .into(object : RetroMusicColoredTarget(image) { override fun onColorReady(color: Int) { setColors(color) diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/tageditor/AbsTagEditorActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/tageditor/AbsTagEditorActivity.kt index a51a8976..c26551d5 100755 --- a/app/src/main/java/code/name/monkey/retromusic/activities/tageditor/AbsTagEditorActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/tageditor/AbsTagEditorActivity.kt @@ -322,7 +322,7 @@ abstract class AbsTagEditorActivity : AbsBaseActivity() { protected fun setImageBitmap(bitmap: Bitmap?, bgColor: Int) { if (bitmap == null) { - editorImage.setImageResource(drawable.default_album_art) + editorImage.setImageResource(drawable.default_audio_art) } else { editorImage.setImageBitmap(bitmap) } diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/tageditor/AlbumTagEditorActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/tageditor/AlbumTagEditorActivity.kt index e90f205d..b4c5da25 100755 --- a/app/src/main/java/code/name/monkey/retromusic/activities/tageditor/AlbumTagEditorActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/tageditor/AlbumTagEditorActivity.kt @@ -154,7 +154,7 @@ class AlbumTagEditorActivity : AbsTagEditorActivity(), TextWatcher { override fun deleteImage() { setImageBitmap( - BitmapFactory.decodeResource(resources, R.drawable.default_album_art), + BitmapFactory.decodeResource(resources, R.drawable.default_audio_art), ATHUtil.resolveColor(this, R.attr.defaultFooterColor) ) deleteAlbumArt = true diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/CategoryInfoAdapter.java b/app/src/main/java/code/name/monkey/retromusic/adapter/CategoryInfoAdapter.java index fbafe636..b502d172 100644 --- a/app/src/main/java/code/name/monkey/retromusic/adapter/CategoryInfoAdapter.java +++ b/app/src/main/java/code/name/monkey/retromusic/adapter/CategoryInfoAdapter.java @@ -22,15 +22,19 @@ import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import android.widget.Toast; + import androidx.annotation.NonNull; import androidx.recyclerview.widget.ItemTouchHelper; import androidx.recyclerview.widget.RecyclerView; + +import com.google.android.material.checkbox.MaterialCheckBox; + +import java.util.List; + import code.name.monkey.appthemehelper.ThemeStore; import code.name.monkey.retromusic.R; import code.name.monkey.retromusic.model.CategoryInfo; import code.name.monkey.retromusic.util.SwipeAndDragHelper; -import com.google.android.material.checkbox.MaterialCheckBox; -import java.util.List; public class CategoryInfoAdapter extends RecyclerView.Adapter implements SwipeAndDragHelper.ActionCompletionContract { diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/GenreAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/adapter/GenreAdapter.kt index df4bf73b..d83516f1 100644 --- a/app/src/main/java/code/name/monkey/retromusic/adapter/GenreAdapter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/adapter/GenreAdapter.kt @@ -9,7 +9,7 @@ import code.name.monkey.retromusic.R import code.name.monkey.retromusic.adapter.base.MediaEntryViewHolder import code.name.monkey.retromusic.model.Genre import code.name.monkey.retromusic.util.NavigationUtil -import java.util.Locale +import java.util.* /** * @author Hemanth S (h4h13). diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/HomeAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/adapter/HomeAdapter.kt index 6819051c..c186a14b 100644 --- a/app/src/main/java/code/name/monkey/retromusic/adapter/HomeAdapter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/adapter/HomeAdapter.kt @@ -115,7 +115,8 @@ class HomeAdapter( if (list.isNotEmpty()) { recyclerView.apply { show() - layoutManager = LinearLayoutManager(activity, LinearLayoutManager.HORIZONTAL, false) + layoutManager = + LinearLayoutManager(activity, LinearLayoutManager.HORIZONTAL, false) val artistAdapter = ArtistAdapter( activity, list, @@ -136,8 +137,10 @@ class HomeAdapter( if (songs.isNotEmpty()) { recyclerView.apply { show() - val songAdapter = SongAdapter(activity, songs, R.layout.item_album_card, null) - layoutManager = GridLayoutManager(activity, 1, GridLayoutManager.HORIZONTAL, false) + val songAdapter = + SongAdapter(activity, songs, R.layout.item_album_card, null) + layoutManager = + GridLayoutManager(activity, 1, GridLayoutManager.HORIZONTAL, false) adapter = songAdapter } title.text = activity.getString(titleRes) diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/SearchAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/adapter/SearchAdapter.kt index e2f7efdb..00255a13 100644 --- a/app/src/main/java/code/name/monkey/retromusic/adapter/SearchAdapter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/adapter/SearchAdapter.kt @@ -9,16 +9,12 @@ import androidx.recyclerview.widget.RecyclerView import code.name.monkey.appthemehelper.ThemeStore import code.name.monkey.retromusic.R import code.name.monkey.retromusic.adapter.base.MediaEntryViewHolder +import code.name.monkey.retromusic.glide.AlbumGlideRequest import code.name.monkey.retromusic.glide.ArtistGlideRequest -import code.name.monkey.retromusic.glide.SongGlideRequest import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.helper.menu.SongMenuHelper import code.name.monkey.retromusic.loaders.PlaylistSongsLoader -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.model.* import code.name.monkey.retromusic.model.smartplaylist.AbsSmartPlaylist import code.name.monkey.retromusic.util.MusicUtil import code.name.monkey.retromusic.util.NavigationUtil @@ -52,7 +48,10 @@ class SearchAdapter( ), viewType ) else - ViewHolder(LayoutInflater.from(activity).inflate(R.layout.item_list, parent, false), viewType) + ViewHolder( + LayoutInflater.from(activity).inflate(R.layout.item_list, parent, false), + viewType + ) } override fun onBindViewHolder(holder: ViewHolder, position: Int) { @@ -61,7 +60,7 @@ class SearchAdapter( val album = dataSet?.get(position) as Album holder.title?.text = album.title holder.text?.text = album.artistName - SongGlideRequest.Builder.from(Glide.with(activity), album.safeGetFirstSong()) + AlbumGlideRequest.Builder.from(Glide.with(activity), album.safeGetFirstSong()) .checkIgnoreMediaStore(activity).build().into(holder.image) } ARTIST -> { diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/SongFileAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/adapter/SongFileAdapter.kt index 9bcb3c8c..ab7a83dc 100644 --- a/app/src/main/java/code/name/monkey/retromusic/adapter/SongFileAdapter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/adapter/SongFileAdapter.kt @@ -20,7 +20,7 @@ import com.bumptech.glide.signature.MediaStoreSignature import me.zhanghai.android.fastscroll.PopupTextProvider import java.io.File import java.text.DecimalFormat -import java.util.ArrayList +import java.util.* import kotlin.math.log10 import kotlin.math.pow @@ -87,7 +87,12 @@ class SongFileAdapter( it.setColorFilter(iconColor, PorterDuff.Mode.SRC_IN) it.setImageResource(R.drawable.ic_folder_white_24dp) } - holder.imageTextContainer?.setCardBackgroundColor(ATHUtil.resolveColor(activity, R.attr.colorSurface)) + holder.imageTextContainer?.setCardBackgroundColor( + ATHUtil.resolveColor( + activity, + R.attr.colorSurface + ) + ) } else { val error = RetroUtil.getTintedVectorDrawable( activity, R.drawable.ic_file_music_white_24dp, iconColor diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumAdapter.kt index 11be9867..d2edf716 100644 --- a/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumAdapter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumAdapter.kt @@ -13,8 +13,8 @@ import code.name.monkey.appthemehelper.util.MaterialValueHelper import code.name.monkey.retromusic.R import code.name.monkey.retromusic.adapter.base.AbsMultiSelectAdapter import code.name.monkey.retromusic.adapter.base.MediaEntryViewHolder +import code.name.monkey.retromusic.glide.AlbumGlideRequest import code.name.monkey.retromusic.glide.RetroMusicColoredTarget -import code.name.monkey.retromusic.glide.SongGlideRequest import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.helper.SortOrder import code.name.monkey.retromusic.helper.menu.SongsMenuHelper @@ -106,12 +106,14 @@ open class AlbumAdapter( return } - SongGlideRequest.Builder.from(Glide.with(activity), album.safeGetFirstSong()) - .checkIgnoreMediaStore(activity).generatePalette(activity).build() + AlbumGlideRequest.Builder.from(Glide.with(activity), album.safeGetFirstSong()) + .checkIgnoreMediaStore(activity) + .generatePalette(activity) + .build() .into(object : RetroMusicColoredTarget(holder.image!!) { override fun onLoadCleared(placeholder: Drawable?) { super.onLoadCleared(placeholder) - setColors(defaultFooterColor, holder) + //setColors(defaultFooterColor, holder) } override fun onColorReady(color: Int) { @@ -185,7 +187,11 @@ open class AlbumAdapter( imageContainerCard ?: image, "${activity.getString(R.string.transition_album_art)}_${dataSet[adapterPosition].id}" ) - NavigationUtil.goToAlbumOptions(activity, dataSet[adapterPosition].id, activityOptions) + NavigationUtil.goToAlbumOptions( + activity, + dataSet[adapterPosition].id, + activityOptions + ) } } diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumCoverPagerAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumCoverPagerAdapter.kt index e50fdabf..441a6588 100644 --- a/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumCoverPagerAdapter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumCoverPagerAdapter.kt @@ -16,7 +16,7 @@ import code.name.monkey.retromusic.model.Song import code.name.monkey.retromusic.util.NavigationUtil import code.name.monkey.retromusic.util.PreferenceUtil import com.bumptech.glide.Glide -import java.util.ArrayList +import java.util.* class AlbumCoverPagerAdapter( fragmentManager: FragmentManager, @@ -85,7 +85,7 @@ class AlbumCoverPagerAdapter( override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) if (arguments != null) { - song = arguments!!.getParcelable(SONG_ARG)!! + song = requireArguments().getParcelable(SONG_ARG)!! } } diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumFullWidthAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumFullWidthAdapter.kt index 52864f2e..08bb5736 100644 --- a/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumFullWidthAdapter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/adapter/album/AlbumFullWidthAdapter.kt @@ -22,8 +22,8 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import code.name.monkey.retromusic.R +import code.name.monkey.retromusic.glide.AlbumGlideRequest import code.name.monkey.retromusic.glide.RetroMusicColoredTarget -import code.name.monkey.retromusic.glide.SongGlideRequest import code.name.monkey.retromusic.helper.MusicPlayerRemote import code.name.monkey.retromusic.model.Album import code.name.monkey.retromusic.util.NavigationUtil @@ -37,7 +37,13 @@ class AlbumFullWidthAdapter( ) : MetalRecyclerViewPager.MetalAdapter(metrics) { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): FullMetalViewHolder { - return FullMetalViewHolder(LayoutInflater.from(parent.context).inflate(R.layout.pager_item, parent, false)) + return FullMetalViewHolder( + LayoutInflater.from(parent.context).inflate( + R.layout.pager_item, + parent, + false + ) + ) } override fun onBindViewHolder(holder: FullMetalViewHolder, position: Int) { @@ -70,7 +76,7 @@ class AlbumFullWidthAdapter( if (holder.image == null) { return } - SongGlideRequest.Builder.from(Glide.with(activity), album.safeGetFirstSong()) + AlbumGlideRequest.Builder.from(Glide.with(activity), album.safeGetFirstSong()) .checkIgnoreMediaStore(activity) .generatePalette(activity) .build() @@ -84,7 +90,8 @@ class AlbumFullWidthAdapter( return dataSet.size } - inner class FullMetalViewHolder(itemView: View) : MetalRecyclerViewPager.MetalViewHolder(itemView) { + inner class FullMetalViewHolder(itemView: View) : + MetalRecyclerViewPager.MetalViewHolder(itemView) { override fun onClick(v: View?) { val activityOptions = ActivityOptions.makeSceneTransitionAnimation( diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/album/HorizontalAlbumAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/adapter/album/HorizontalAlbumAdapter.kt index be289bab..e8150213 100644 --- a/app/src/main/java/code/name/monkey/retromusic/adapter/album/HorizontalAlbumAdapter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/adapter/album/HorizontalAlbumAdapter.kt @@ -5,8 +5,8 @@ import android.view.View import android.view.ViewGroup import androidx.appcompat.app.AppCompatActivity import code.name.monkey.appthemehelper.util.ATHUtil +import code.name.monkey.retromusic.glide.AlbumGlideRequest import code.name.monkey.retromusic.glide.RetroMusicColoredTarget -import code.name.monkey.retromusic.glide.SongGlideRequest import code.name.monkey.retromusic.helper.HorizontalAdapterHelper import code.name.monkey.retromusic.interfaces.CabHolder import code.name.monkey.retromusic.model.Album @@ -34,8 +34,10 @@ class HorizontalAlbumAdapter( override fun loadAlbumCover(album: Album, holder: ViewHolder) { if (holder.image == null) return - SongGlideRequest.Builder.from(Glide.with(activity), album.safeGetFirstSong()) - .checkIgnoreMediaStore(activity).generatePalette(activity).build() + AlbumGlideRequest.Builder.from(Glide.with(activity), album.safeGetFirstSong()) + .checkIgnoreMediaStore(activity) + .generatePalette(activity) + .build() .into(object : RetroMusicColoredTarget(holder.image!!) { override fun onLoadCleared(placeholder: Drawable?) { super.onLoadCleared(placeholder) diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/artist/ArtistAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/adapter/artist/ArtistAdapter.kt index 0b7188e0..ae566b65 100644 --- a/app/src/main/java/code/name/monkey/retromusic/adapter/artist/ArtistAdapter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/adapter/artist/ArtistAdapter.kt @@ -24,7 +24,7 @@ import code.name.monkey.retromusic.util.MusicUtil import code.name.monkey.retromusic.util.NavigationUtil import com.bumptech.glide.Glide import me.zhanghai.android.fastscroll.PopupTextProvider -import java.util.ArrayList +import java.util.* class ArtistAdapter( val activity: AppCompatActivity, @@ -85,8 +85,10 @@ class ArtistAdapter( if (holder.image == null) { return } - ArtistGlideRequest.Builder.from(Glide.with(activity), artist).generatePalette(activity) - .build().into(object : RetroMusicColoredTarget(holder.image!!) { + ArtistGlideRequest.Builder.from(Glide.with(activity), artist) + .generatePalette(activity) + .build() + .into(object : RetroMusicColoredTarget(holder.image!!) { override fun onLoadCleared(placeholder: Drawable?) { super.onLoadCleared(placeholder) setColors(defaultFooterColor, holder) diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/song/SimpleSongAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/adapter/song/SimpleSongAdapter.kt index ffe273e0..53a95242 100755 --- a/app/src/main/java/code/name/monkey/retromusic/adapter/song/SimpleSongAdapter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/adapter/song/SimpleSongAdapter.kt @@ -6,7 +6,7 @@ import androidx.appcompat.app.AppCompatActivity import code.name.monkey.retromusic.interfaces.CabHolder import code.name.monkey.retromusic.model.Song import code.name.monkey.retromusic.util.MusicUtil -import java.util.ArrayList +import java.util.* class SimpleSongAdapter( context: AppCompatActivity, diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/song/SongAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/adapter/song/SongAdapter.kt index 9835e8c2..a39e10b8 100644 --- a/app/src/main/java/code/name/monkey/retromusic/adapter/song/SongAdapter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/adapter/song/SongAdapter.kt @@ -26,7 +26,7 @@ import code.name.monkey.retromusic.util.PreferenceUtil import com.afollestad.materialcab.MaterialCab import com.bumptech.glide.Glide import me.zhanghai.android.fastscroll.PopupTextProvider -import java.util.ArrayList +import java.util.* /** * Created by hemanths on 13/08/17. @@ -86,8 +86,6 @@ open class SongAdapter( private fun setColors(color: Int, holder: ViewHolder) { if (holder.paletteColorContainer != null) { holder.paletteColorContainer?.setBackgroundColor(color) - //holder.title?.setTextColor(MaterialValueHelper.getPrimaryTextColor(activity, ColorUtil.isColorLight(color))) - //holder.text?.setTextColor(MaterialValueHelper.getSecondaryTextColor(activity, ColorUtil.isColorLight(color))) } } @@ -95,7 +93,8 @@ open class SongAdapter( if (holder.image == null) { return } - SongGlideRequest.Builder.from(Glide.with(activity), song).checkIgnoreMediaStore(activity) + SongGlideRequest.Builder.from(Glide.with(activity), song) + .checkIgnoreMediaStore(activity) .generatePalette(activity).build() .into(object : RetroMusicColoredTarget(holder.image!!) { override fun onLoadCleared(placeholder: Drawable?) { diff --git a/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetBig.kt b/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetBig.kt index 3a152aad..a440b0bc 100644 --- a/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetBig.kt +++ b/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetBig.kt @@ -52,7 +52,7 @@ class AppWidgetBig : BaseAppWidget() { code.name.monkey.retromusic.R.id.media_titles, View.INVISIBLE ) - appWidgetView.setImageViewResource(R.id.image, R.drawable.default_album_art) + appWidgetView.setImageViewResource(R.id.image, R.drawable.default_audio_art) appWidgetView.setImageViewBitmap( R.id.button_next, BaseAppWidget.createBitmap( RetroUtil.getTintedVectorDrawable( @@ -176,7 +176,7 @@ class AppWidgetBig : BaseAppWidget() { if (bitmap == null) { appWidgetView.setImageViewResource( R.id.image, - R.drawable.default_album_art + R.drawable.default_audio_art ) } else { appWidgetView.setImageViewBitmap(R.id.image, bitmap) diff --git a/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetCard.kt b/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetCard.kt index bf72379d..c92772e5 100644 --- a/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetCard.kt +++ b/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetCard.kt @@ -46,7 +46,7 @@ class AppWidgetCard : BaseAppWidget() { val appWidgetView = RemoteViews(context.packageName, R.layout.app_widget_card) appWidgetView.setViewVisibility(R.id.media_titles, View.INVISIBLE) - appWidgetView.setImageViewResource(R.id.image, R.drawable.default_album_art) + appWidgetView.setImageViewResource(R.id.image, R.drawable.default_audio_art) appWidgetView.setImageViewBitmap( R.id.button_next, createBitmap( RetroUtil.getTintedVectorDrawable( diff --git a/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetClassic.kt b/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetClassic.kt index 7972413d..24f24c09 100644 --- a/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetClassic.kt +++ b/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetClassic.kt @@ -53,7 +53,7 @@ class AppWidgetClassic : BaseAppWidget() { appWidgetView.setViewVisibility(R.id.media_titles, View.INVISIBLE) - appWidgetView.setImageViewResource(R.id.image, R.drawable.default_album_art) + appWidgetView.setImageViewResource(R.id.image, R.drawable.default_audio_art) appWidgetView.setImageViewBitmap( R.id.button_next, createBitmap( diff --git a/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetSmall.kt b/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetSmall.kt index a67bf87f..53715e96 100644 --- a/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetSmall.kt +++ b/app/src/main/java/code/name/monkey/retromusic/appwidgets/AppWidgetSmall.kt @@ -48,7 +48,7 @@ class AppWidgetSmall : BaseAppWidget() { val appWidgetView = RemoteViews(context.packageName, R.layout.app_widget_small) appWidgetView.setViewVisibility(R.id.media_titles, View.INVISIBLE) - appWidgetView.setImageViewResource(R.id.image, R.drawable.default_album_art) + appWidgetView.setImageViewResource(R.id.image, R.drawable.default_audio_art) appWidgetView.setImageViewBitmap(R.id.button_next, createBitmap(RetroUtil.getTintedVectorDrawable(context, R.drawable.ic_skip_next_white_24dp, MaterialValueHelper.getSecondaryTextColor(context, true))!!, 1f)) appWidgetView.setImageViewBitmap(R.id.button_prev, createBitmap(RetroUtil.getTintedVectorDrawable(context, R.drawable.ic_skip_previous_white_24dp, MaterialValueHelper.getSecondaryTextColor(context, true))!!, 1f)) appWidgetView.setImageViewBitmap(R.id.button_toggle_play_pause, createBitmap(RetroUtil.getTintedVectorDrawable(context, R.drawable.ic_play_arrow_white_32dp, MaterialValueHelper.getSecondaryTextColor(context, true))!!, 1f)) diff --git a/app/src/main/java/code/name/monkey/retromusic/appwidgets/base/BaseAppWidget.kt b/app/src/main/java/code/name/monkey/retromusic/appwidgets/base/BaseAppWidget.kt index 13b9347e..c8a2e905 100644 --- a/app/src/main/java/code/name/monkey/retromusic/appwidgets/base/BaseAppWidget.kt +++ b/app/src/main/java/code/name/monkey/retromusic/appwidgets/base/BaseAppWidget.kt @@ -98,7 +98,7 @@ abstract class BaseAppWidget : AppWidgetProvider() { protected fun getAlbumArtDrawable(resources: Resources, bitmap: Bitmap?): Drawable { return if (bitmap == null) { - ContextCompat.getDrawable(App.getContext(), R.drawable.default_album_art)!! + ContextCompat.getDrawable(App.getContext(), R.drawable.default_audio_art)!! } else { BitmapDrawable(resources, bitmap) } diff --git a/app/src/main/java/code/name/monkey/retromusic/glide/AlbumGlideRequest.java b/app/src/main/java/code/name/monkey/retromusic/glide/AlbumGlideRequest.java new file mode 100644 index 00000000..41b2744a --- /dev/null +++ b/app/src/main/java/code/name/monkey/retromusic/glide/AlbumGlideRequest.java @@ -0,0 +1,138 @@ +package code.name.monkey.retromusic.glide; + +import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.Color; +import android.graphics.drawable.ColorDrawable; +import android.graphics.drawable.Drawable; + +import androidx.annotation.NonNull; + +import com.bumptech.glide.BitmapRequestBuilder; +import com.bumptech.glide.DrawableRequestBuilder; +import com.bumptech.glide.DrawableTypeRequest; +import com.bumptech.glide.RequestManager; +import com.bumptech.glide.load.Key; +import com.bumptech.glide.load.engine.DiskCacheStrategy; +import com.bumptech.glide.load.resource.drawable.GlideDrawable; +import com.bumptech.glide.signature.MediaStoreSignature; + +import code.name.monkey.appthemehelper.ThemeStore; +import code.name.monkey.appthemehelper.util.TintHelper; +import code.name.monkey.retromusic.R; +import code.name.monkey.retromusic.glide.audiocover.AudioFileCover; +import code.name.monkey.retromusic.glide.palette.BitmapPaletteTranscoder; +import code.name.monkey.retromusic.glide.palette.BitmapPaletteWrapper; +import code.name.monkey.retromusic.model.Song; +import code.name.monkey.retromusic.util.MusicUtil; +import code.name.monkey.retromusic.util.PreferenceUtil; + +public class AlbumGlideRequest { + private static final DiskCacheStrategy DEFAULT_DISK_CACHE_STRATEGY = DiskCacheStrategy.NONE; + private static final int DEFAULT_ERROR_IMAGE = R.drawable.default_album_art; + private static final int DEFAULT_ANIMATION = android.R.anim.fade_in; + + public static class Builder { + final RequestManager requestManager; + final Song song; + boolean ignoreMediaStore; + + @NonNull + public static Builder from(@NonNull RequestManager requestManager, Song song) { + return new Builder(requestManager, song); + } + + private Builder(@NonNull RequestManager requestManager, Song song) { + this.requestManager = requestManager; + this.song = song; + } + + @NonNull + public PaletteBuilder generatePalette(@NonNull Context context) { + return new PaletteBuilder(this, context); + } + + @NonNull + public BitmapBuilder asBitmap() { + return new BitmapBuilder(this); + } + + @NonNull + public Builder checkIgnoreMediaStore(@NonNull Context context) { + return ignoreMediaStore(PreferenceUtil.getInstance(context).ignoreMediaStoreArtwork()); + } + + @NonNull + public Builder ignoreMediaStore(boolean ignoreMediaStore) { + this.ignoreMediaStore = ignoreMediaStore; + return this; + } + + @NonNull + public DrawableRequestBuilder build() { + //noinspection unchecked + return createBaseRequest(requestManager, song, ignoreMediaStore) + .diskCacheStrategy(DEFAULT_DISK_CACHE_STRATEGY) + .error(new ColorDrawable(Color.RED)) + .animate(DEFAULT_ANIMATION) + .signature(createSignature(song)); + } + } + + public static class BitmapBuilder { + private final Builder builder; + + public BitmapBuilder(Builder builder) { + this.builder = builder; + } + + public BitmapRequestBuilder build() { + //noinspection unchecked + return createBaseRequest(builder.requestManager, builder.song, builder.ignoreMediaStore) + .asBitmap() + .diskCacheStrategy(DEFAULT_DISK_CACHE_STRATEGY) + .error(new ColorDrawable(Color.GREEN)) + .animate(DEFAULT_ANIMATION) + .signature(createSignature(builder.song)); + } + } + + public static class PaletteBuilder { + final Context context; + private final Builder builder; + + public PaletteBuilder(Builder builder, Context context) { + this.builder = builder; + this.context = context; + } + + public BitmapRequestBuilder build() { + Drawable drawable = TintHelper.createTintedDrawable(context, DEFAULT_ERROR_IMAGE, ThemeStore.Companion.accentColor(context)); + //noinspection unchecked + return createBaseRequest(builder.requestManager, builder.song, builder.ignoreMediaStore) + .asBitmap() + .transcode(new BitmapPaletteTranscoder(context), BitmapPaletteWrapper.class) + .diskCacheStrategy(DEFAULT_DISK_CACHE_STRATEGY) + .placeholder(drawable) + .error(drawable) + .animate(DEFAULT_ANIMATION) + .signature(createSignature(builder.song)); + } + } + + @NonNull + private static DrawableTypeRequest createBaseRequest(@NonNull RequestManager requestManager, + @NonNull Song song, + boolean ignoreMediaStore) { + if (ignoreMediaStore) { + return requestManager.load(new AudioFileCover(song.getData())); + } else { + return requestManager.loadFromMediaStore(MusicUtil.getMediaStoreAlbumCoverUri(song.getAlbumId())); + } + } + + @NonNull + private static Key createSignature(@NonNull Song song) { + return new MediaStoreSignature("", song.getDateModified(), 0); + } +} diff --git a/app/src/main/java/code/name/monkey/retromusic/glide/ArtistGlideRequest.java b/app/src/main/java/code/name/monkey/retromusic/glide/ArtistGlideRequest.java index bf849e67..1e566f8a 100644 --- a/app/src/main/java/code/name/monkey/retromusic/glide/ArtistGlideRequest.java +++ b/app/src/main/java/code/name/monkey/retromusic/glide/ArtistGlideRequest.java @@ -16,15 +16,10 @@ package code.name.monkey.retromusic.glide; import android.content.Context; import android.graphics.Bitmap; +import android.graphics.drawable.Drawable; + import androidx.annotation.NonNull; -import code.name.monkey.retromusic.App; -import code.name.monkey.retromusic.R; -import code.name.monkey.retromusic.glide.artistimage.ArtistImage; -import code.name.monkey.retromusic.glide.palette.BitmapPaletteTranscoder; -import code.name.monkey.retromusic.glide.palette.BitmapPaletteWrapper; -import code.name.monkey.retromusic.model.Artist; -import code.name.monkey.retromusic.util.ArtistSignatureUtil; -import code.name.monkey.retromusic.util.CustomArtistImageUtil; + import com.bumptech.glide.BitmapRequestBuilder; import com.bumptech.glide.DrawableRequestBuilder; import com.bumptech.glide.DrawableTypeRequest; @@ -35,8 +30,24 @@ import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.bumptech.glide.load.resource.drawable.GlideDrawable; import com.bumptech.glide.request.target.Target; +import code.name.monkey.appthemehelper.ThemeStore; +import code.name.monkey.appthemehelper.util.TintHelper; +import code.name.monkey.retromusic.App; +import code.name.monkey.retromusic.R; +import code.name.monkey.retromusic.glide.artistimage.ArtistImage; +import code.name.monkey.retromusic.glide.palette.BitmapPaletteTranscoder; +import code.name.monkey.retromusic.glide.palette.BitmapPaletteWrapper; +import code.name.monkey.retromusic.model.Artist; +import code.name.monkey.retromusic.util.ArtistSignatureUtil; +import code.name.monkey.retromusic.util.CustomArtistImageUtil; + public class ArtistGlideRequest { + private static final int DEFAULT_ANIMATION = android.R.anim.fade_in; + + private static final DiskCacheStrategy DEFAULT_DISK_CACHE_STRATEGY = DiskCacheStrategy.SOURCE; + + private static final int DEFAULT_ERROR_IMAGE = R.drawable.default_artist_art; public static class Builder { @@ -121,13 +132,15 @@ public class ArtistGlideRequest { } public BitmapRequestBuilder build() { + Drawable drawable = TintHelper.createTintedDrawable(context, DEFAULT_ERROR_IMAGE, ThemeStore.Companion.accentColor(context)); //noinspection unchecked return createBaseRequest(builder.requestManager, builder.artist, builder.noCustomImage, builder.forceDownload) .asBitmap() .transcode(new BitmapPaletteTranscoder(context), BitmapPaletteWrapper.class) .diskCacheStrategy(DEFAULT_DISK_CACHE_STRATEGY) - .error(DEFAULT_ERROR_IMAGE) + .placeholder(drawable) + .error(drawable) .animate(DEFAULT_ANIMATION) .priority(Priority.LOW) .override(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL) @@ -135,11 +148,6 @@ public class ArtistGlideRequest { } } - private static final int DEFAULT_ANIMATION = android.R.anim.fade_in; - - private static final DiskCacheStrategy DEFAULT_DISK_CACHE_STRATEGY = DiskCacheStrategy.SOURCE; - - private static final int DEFAULT_ERROR_IMAGE = R.drawable.default_artist_art; @NonNull public static Key createSignature(@NonNull Artist artist) { @@ -148,8 +156,8 @@ public class ArtistGlideRequest { @NonNull private static DrawableTypeRequest createBaseRequest(@NonNull RequestManager requestManager, - @NonNull Artist artist, - boolean noCustomImage, boolean forceDownload) { + @NonNull Artist artist, + boolean noCustomImage, boolean forceDownload) { boolean hasCustomImage = CustomArtistImageUtil.Companion.getInstance(App.Companion.getContext()) .hasCustomArtistImage(artist); if (noCustomImage || !hasCustomImage) { diff --git a/app/src/main/java/code/name/monkey/retromusic/glide/SongGlideRequest.java b/app/src/main/java/code/name/monkey/retromusic/glide/SongGlideRequest.java index 71ee1629..8bbfb935 100644 --- a/app/src/main/java/code/name/monkey/retromusic/glide/SongGlideRequest.java +++ b/app/src/main/java/code/name/monkey/retromusic/glide/SongGlideRequest.java @@ -16,6 +16,7 @@ package code.name.monkey.retromusic.glide; import android.content.Context; import android.graphics.Bitmap; +import android.graphics.drawable.Drawable; import androidx.annotation.NonNull; @@ -28,6 +29,8 @@ import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.bumptech.glide.load.resource.drawable.GlideDrawable; import com.bumptech.glide.signature.MediaStoreSignature; +import code.name.monkey.appthemehelper.ThemeStore; +import code.name.monkey.appthemehelper.util.TintHelper; import code.name.monkey.retromusic.R; import code.name.monkey.retromusic.glide.audiocover.AudioFileCover; import code.name.monkey.retromusic.glide.palette.BitmapPaletteTranscoder; @@ -42,7 +45,7 @@ import code.name.monkey.retromusic.util.PreferenceUtil; public class SongGlideRequest { private static final DiskCacheStrategy DEFAULT_DISK_CACHE_STRATEGY = DiskCacheStrategy.NONE; - private static final int DEFAULT_ERROR_IMAGE = R.drawable.default_album_art; + private static final int DEFAULT_ERROR_IMAGE = R.drawable.default_audio_art; private static final int DEFAULT_ANIMATION = android.R.anim.fade_in; public static class Builder { @@ -87,6 +90,7 @@ public class SongGlideRequest { return createBaseRequest(requestManager, song, ignoreMediaStore) .diskCacheStrategy(DEFAULT_DISK_CACHE_STRATEGY) .error(DEFAULT_ERROR_IMAGE) + .placeholder(DEFAULT_ERROR_IMAGE) .animate(DEFAULT_ANIMATION) .signature(createSignature(song)); } @@ -105,6 +109,7 @@ public class SongGlideRequest { .asBitmap() .diskCacheStrategy(DEFAULT_DISK_CACHE_STRATEGY) .error(DEFAULT_ERROR_IMAGE) + .placeholder(DEFAULT_ERROR_IMAGE) .animate(DEFAULT_ANIMATION) .signature(createSignature(builder.song)); } @@ -120,12 +125,14 @@ public class SongGlideRequest { } public BitmapRequestBuilder build() { + Drawable drawable = TintHelper.createTintedDrawable(context, DEFAULT_ERROR_IMAGE, ThemeStore.Companion.accentColor(context)); //noinspection unchecked return createBaseRequest(builder.requestManager, builder.song, builder.ignoreMediaStore) .asBitmap() .transcode(new BitmapPaletteTranscoder(context), BitmapPaletteWrapper.class) .diskCacheStrategy(DEFAULT_DISK_CACHE_STRATEGY) - .error(DEFAULT_ERROR_IMAGE) + .placeholder(drawable) + .error(drawable) .animate(DEFAULT_ANIMATION) .signature(createSignature(builder.song)); } diff --git a/app/src/main/java/code/name/monkey/retromusic/service/notification/PlayingNotificationImpl.kt b/app/src/main/java/code/name/monkey/retromusic/service/notification/PlayingNotificationImpl.kt index c4890a69..47072a8b 100644 --- a/app/src/main/java/code/name/monkey/retromusic/service/notification/PlayingNotificationImpl.kt +++ b/app/src/main/java/code/name/monkey/retromusic/service/notification/PlayingNotificationImpl.kt @@ -87,7 +87,7 @@ class PlayingNotificationImpl : PlayingNotification() { fun update(bitmap: Bitmap?, color: Int) { var bitmapFinal = bitmap if (bitmapFinal == null) { - bitmapFinal = BitmapFactory.decodeResource(service.resources, R.drawable.default_album_art) + bitmapFinal = BitmapFactory.decodeResource(service.resources, R.drawable.default_audio_art) } val toggleFavorite = NotificationCompat.Action(favoriteResId, service.getString(R.string.action_toggle_favorite), retrievePlaybackAction(TOGGLE_FAVORITE)) diff --git a/app/src/main/java/code/name/monkey/retromusic/service/notification/PlayingNotificationOreo.kt b/app/src/main/java/code/name/monkey/retromusic/service/notification/PlayingNotificationOreo.kt index 0d2f1ccf..ebf79e47 100644 --- a/app/src/main/java/code/name/monkey/retromusic/service/notification/PlayingNotificationOreo.kt +++ b/app/src/main/java/code/name/monkey/retromusic/service/notification/PlayingNotificationOreo.kt @@ -112,8 +112,8 @@ class PlayingNotificationOreo : PlayingNotification() { notificationLayout.setImageViewBitmap(R.id.largeIcon, bitmap) notificationLayoutBig.setImageViewBitmap(R.id.largeIcon, bitmap) } else { - notificationLayout.setImageViewResource(R.id.largeIcon, R.drawable.default_album_art) - notificationLayoutBig.setImageViewResource(R.id.largeIcon, R.drawable.default_album_art) + notificationLayout.setImageViewResource(R.id.largeIcon, R.drawable.default_audio_art) + notificationLayoutBig.setImageViewResource(R.id.largeIcon, R.drawable.default_audio_art) } if (!PreferenceUtil.getInstance(service).coloredNotification()) { diff --git a/app/src/main/java/code/name/monkey/retromusic/views/ColorIconsImageView.kt b/app/src/main/java/code/name/monkey/retromusic/views/ColorIconsImageView.kt index f6cb4862..5fe36008 100644 --- a/app/src/main/java/code/name/monkey/retromusic/views/ColorIconsImageView.kt +++ b/app/src/main/java/code/name/monkey/retromusic/views/ColorIconsImageView.kt @@ -26,24 +26,19 @@ import code.name.monkey.retromusic.util.PreferenceUtil import code.name.monkey.retromusic.util.RetroColorUtil -class ColorIconsImageView : AppCompatImageView { +class ColorIconsImageView @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = -1 +) : AppCompatImageView(context, attrs, defStyleAttr) { - constructor(context: Context) : super(context) { - init(context, null) - } - constructor(context: Context, attrs: AttributeSet) : super(context, attrs) { - init(context, attrs) - } - - constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int) : super(context, attrs, defStyleAttr) { - init(context, attrs) - } - - private fun init(context: Context, attrs: AttributeSet?) { + init { // Load the styled attributes and set their properties - val attributes = context.obtainStyledAttributes(attrs, R.styleable.ColorIconsImageView, 0, 0) - val color = attributes.getColor(R.styleable.ColorIconsImageView_iconBackgroundColor, Color.RED); + val attributes = + context.obtainStyledAttributes(attrs, R.styleable.ColorIconsImageView, 0, 0) + val color = + attributes.getColor(R.styleable.ColorIconsImageView_iconBackgroundColor, Color.RED); setIconBackgroundColor(color) attributes.recycle() } @@ -53,7 +48,8 @@ class ColorIconsImageView : AppCompatImageView { if (ATHUtil.isWindowBackgroundDark(context) && PreferenceUtil.getInstance(context).desaturatedColor()) { val desaturatedColor = RetroColorUtil.desaturateColor(color, 0.4f) backgroundTintList = ColorStateList.valueOf(desaturatedColor) - imageTintList = ColorStateList.valueOf(ATHUtil.resolveColor(context, R.attr.colorSurface)) + imageTintList = + ColorStateList.valueOf(ATHUtil.resolveColor(context, R.attr.colorSurface)) } else { backgroundTintList = ColorStateList.valueOf(ColorUtil.adjustAlpha(color, 0.22f)) imageTintList = ColorStateList.valueOf(ColorUtil.withAlpha(color, 0.75f)) diff --git a/app/src/main/java/code/name/monkey/retromusic/views/RetroShapeableImageView.kt b/app/src/main/java/code/name/monkey/retromusic/views/RetroShapeableImageView.kt index c81341eb..5e305122 100644 --- a/app/src/main/java/code/name/monkey/retromusic/views/RetroShapeableImageView.kt +++ b/app/src/main/java/code/name/monkey/retromusic/views/RetroShapeableImageView.kt @@ -27,14 +27,24 @@ class RetroShapeableImageView @JvmOverloads constructor( defStyle: Int = -1 ) : ShapeableImageView(context, attrs, defStyle) { + init { val typedArray = context.obtainStyledAttributes(attrs, R.styleable.RetroShapeableImageView, defStyle, -1) val cornerSize = typedArray.getDimension(R.styleable.RetroShapeableImageView_retroCornerSize, 0f); + updateCornerSize(cornerSize) + typedArray.recycle() + } + + fun updateCornerSize(cornerSize: Float) { shapeAppearanceModel = ShapeAppearanceModel.Builder() .setAllCorners(CornerFamily.ROUNDED, cornerSize) .build() - typedArray.recycle() + } + + //For square + override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { + super.onMeasure(widthMeasureSpec, widthMeasureSpec) } } \ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/views/SettingListItemView.kt b/app/src/main/java/code/name/monkey/retromusic/views/SettingListItemView.kt index cca4c97e..42831ece 100644 --- a/app/src/main/java/code/name/monkey/retromusic/views/SettingListItemView.kt +++ b/app/src/main/java/code/name/monkey/retromusic/views/SettingListItemView.kt @@ -24,31 +24,26 @@ import kotlinx.android.synthetic.main.list_setting_item_view.view.* /** * Created by hemanths on 2019-12-10. */ -class SettingListItemView : FrameLayout { - constructor(context: Context) : super(context) { - init(context, null) - } - - constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) { - init(context, attrs) - } - - constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr) { - init(context, attrs) - } - - constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int, defStyleRes: Int) : super(context, attrs, defStyleAttr, defStyleRes) { - init(context, attrs) - } - - private fun init(context: Context, attributeSet: AttributeSet?) { +class SettingListItemView @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = -1, + defStyleRes: Int = -1 +) : FrameLayout(context, attrs, defStyleAttr, defStyleRes) { + init { View.inflate(context, R.layout.list_setting_item_view, this) - val typedArray = context.obtainStyledAttributes(attributeSet, R.styleable.SettingListItemView) + val typedArray = + context.obtainStyledAttributes(attrs, R.styleable.SettingListItemView) icon as ColorIconsImageView if (typedArray.hasValue(R.styleable.SettingListItemView_settingListItemIcon)) { icon.setImageDrawable(typedArray.getDrawable(R.styleable.SettingListItemView_settingListItemIcon)) } - icon.setIconBackgroundColor(typedArray.getColor(R.styleable.SettingListItemView_settingListItemIconColor, Color.WHITE)) + icon.setIconBackgroundColor( + typedArray.getColor( + R.styleable.SettingListItemView_settingListItemIconColor, + Color.WHITE + ) + ) title.text = typedArray.getText(R.styleable.SettingListItemView_settingListItemTitle) text.text = typedArray.getText(R.styleable.SettingListItemView_settingListItemText) typedArray.recycle() diff --git a/app/src/main/res/drawable-hdpi/default_album_art.webp b/app/src/main/res/drawable-hdpi/default_album_art.webp index 31557bc7e09e06bdd811ad4ec9375474704c6d7d..11a82d86d6dc3017f9870d9fa389ebdbb803f575 100644 GIT binary patch literal 5936 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 Dz$}HU literal 1840 zcmWIYbaT^SXJ80-bqWXzuuzZzvICYf%w^QlV%B1|o9Hp$XX#R5 zSRM=DFEziom9KCL^IhLBqY6k4hi5FmPu{Y6I_;l^Em!O@#&^qpnJqkL)KI;0U+;?I zo&|CbIGlso<9u&7++&FUA;pIg)-`{wp8sZW@{V!&Lqm+1VA3viFyY=|{Duu9rW_~S zae2Yn$-M5EL;alddgn1>RX2NOtoO1ddC#|FMz4^xZ*3rEjNAOkHT~*_nIb+v+;aUY zmK1Zo?Q(nwmK0@&)p(v8e+#zhJSt@2^xjZ^R^ikX+apP@@)u{xJl0^}HT%V_c8imD z8<^rc&K!7eBzAR5S4I&=VC6{|E@YqoG3rc)CNms%;$ zi3#{F*bR#oh&IKAa~H>lq`Y(2Q@D=imQ#%H7y}f}1{6+sz)&yvTm&O~m~j1C#IeH0 z+J;HJt*s&lGgEa$vzET$Fs=Q(7(_e&KnId3&Z03*N z{5AI)$`&o36kcA>+St{wi<8y)iB?G73P41ub`5yC&mS-N> z|Ff?nL9vSYmdn>x<~J)K4pk0JY8QG|uWFeen3Q>P@%BdyT}wMNpPpmXcyA{c<3R| zeFn~^^9TM+bzz-U%)20n?b4PU=0n?0onQUGT>P<^Z=U2VDY*?Tq2&cnlNy-6r)Zt} z8LXa?GE;0LC*PV>rEs=8)AlFpah`NYQJAMRe}Y!i1`qXT{5OM5E``{Nsx$9%X?AZv z(YJKXWT(l=`{ISPn^vv+sKRl-CvfgBN$quv=LNUD>k?$2p5xf@N8!i2ZM%NsZ=ZUO}({008b^ zd6DTKX`5LZefm{mXoN_cBjkUwe9yqWJ!hy*gIf2N?mJPqZs^tc(Gp{;ufPr&$9zM7 zc&b&{dWN(%8dV87tv5{q%9oz75rgo)Pj|Q&ttbhP;Al_D^S6L9Q-dH*W8rKCDtWVz z@Z@%Zt~Iz{sYde_to!nWSDvSD>l&Sw33a9iq8b(nm;g^{`TvJ zCU&G`Z^qOs5-W077%}}x`NdOcP!BtnFj+6ge|zxYEWYthM3O$-zm%n8r;3phfRW3% zKc37+c@j+$+HfzBqfFbIExwPP5vD|4O%5b9O&w*Hah>T9-iD<6j3^_~=`?tCW0cy~YJVNF~FXM`RzA%&kOiPWMG z`S{3_hcq@gz<;QysqaS=DG~M~!b@+ov?{|irFZ_0%~+C*!AUzXdOi68F&a#5fX))mQ+1I=RXxHx_kGHam5qZd+QRa?^ECpPr>N)HLSK z60dY5BOiH=e=VJ_Z*ED^=W-gm2ee6h%g-adD6o9+tWx_L!JrW+c)no!)-xyJwp5L}#Fku!F_UZQx9#1m>GpDmx({|g}p6mECPG?@8<9@F3`Y0MD8Q=(|C6%RS z9bMT>$dDO^>L_hlc{LX81kNFIn~EClww6F*%nDF(?<39gk5D-hU-8f7tl)E#mEIs14uQip zp>WcP+dFj~UfNhqc$P%^i=_(XAAj3Zc*Wi_n=O;0S;ya^EEPF0);nY37m$-&j! zi7>R=+ece>n(F-nkBhmH{+S$zYOMb+tejY5e8Dm=ko}q`7~=KT<951z7&TbeD-t=P zb7JTcJn-=~a-aHcefwbBu~gjrK$IQtt#;=DeHHs(b-LkK)Jmd0yY#Eg%sh9{X!Me9 zu*H7b$O*l@pLpQh;5ktr2uE8_jIJNglz72GuDqJ)-Pu`8*f)}Z z=`HguBgeS~W%@o0i0(YxT{pqoMxG0Z#kywaelhhpm`a!1m@!$5zuxJkJ^`{wUooxQ zaLN)FRBR>MCx;-PirO7CGQE3=8K{-MFqwDpN?p+P!HiY=nc^QK>DOny>e(R}*N6Cv z)Xw8%b$>oSXJnM_yFb4seZfRO#L-1MWkK6;Pq^7hYcbDDDX!)95i zo%>SWiS@|e<+5l>|5<`mc{6A!ljIRU{2tQRI-;_?i5*H*${ceMN^Ey&ZcchoTvK65 zlP;op=Pb-1IW$jLiX!8Y)k1MuL#TZQp=LHl^?8qp^ErVtnZe&M5H`4-NtBt4`MhEWZb^w7w?CIyxZMnonZn%ye4y6+c_Cm+!DixO<9>Y!gcPDWtBzos)SH)yNLYGizpM?B#D& zSg5_&5Z47xMMD;d7mrjVRuFH=2@};<(iyI|yrOn66033UU1`HRZVWb1-2#<>UY`-u zaMwf@3Crd}EmmDm!JZfc^6Vv6!{Gp4ri|I)7tC@+WoClm)O+(d#N}=&V8}G5hS3^S zTLbw0wuMPtC(-2<7h_bOnq2J4_aZQ^U3oDr+Dpa9khz1prS8UyRV2DlqH|1AclZD_GGb#=U& zj_;~M{u*nVNZfy!rDG^xXp;dFB|MQNfONflBPK^c;^Hkt69h+9?QNS|%(!`&$Rf|x zkmLA2&S#v1%s(a0#fbVukh&?-J$+j8i;~*Bm@h8}E-}8kJDfsKVUzOj_Y+d?UhJ&H z1!v)AhwjNeJ*Q$IXJ>P2z^mTy%&Q7t7Wg{lN4WwqgLo}PEFmM+uFt7Q_DYAcKUULd zM^F}FbqSItOL#n3`)M&DvzY|#yBet1Y-Vereh!@Z{X?7Ny?jI74x3D?XS^56jvpbl zt7_PP0k8c>Rmy}Sb6$CK%HB@aHCzok;L-8(H>UB!34gsLJB~Mt(7P2+32QnVE!BP@HKof}7``*HRH<25xUzk3iij!W>T;+;t2@?N_T!!rrzQ$~3XCBaG kB)7>Hy1(1M$MSm}exJerMh64{KtG)a)~NmZ!~ehd4_j6~*#H0l literal 2410 zcmeH{YdjNb9LG0volDG8ZdoqlqjNIC!Md2j>|z?n$o(>D%_Wtl$hE~M&1BUSagsx% zTsF$YMC%N>b}STz3P~x^#pQIaaq8_kuX^5mpU?B+xqN@m|4(#sa0rwG07&+BF77T? zF!xXMR~$et(AXGc4BDQF&c_vADbU@>x(O(U$n6UkM~B5lY%oo7>_Co)*pW-kWDJCX zkH2E-9kVRia2qIsF^yidupZ0JsALV`8U` zXGZU3Y}iWs69=VXAi|4E#Q^9KFLD>R2_7Nl#6xNrnK|#ScPZ|@Sb*6Pb4T(qO*&Q zKAZjBv$w^^BWD`sO-a)o25h+a*TlW3st1NJ?$gt+{8yf{CWW=Js!ubuhp6{_?#(sv9fhqDF}Q8Eb5JbD$Y!7|U9%oVwGgO-o~5r}FtKzWCROS0xTW_} z?BsSzzuL%l3MrrNi<*+>8o?WQi-owV7RTp~r9S*xjD2R7&@!hFBhnqFE{^~B6x`f^kO3cIbsgIAwgP)pD-fgxS zJ*GUXna)M`A_8p+j}B$Lccg^Qrvhy?Tg|e=u|c@By76(KYuk@Q`r$HAh`$@HrjU+x zLlnaD7RjO0Wy0#ez(=E z5+zf}yWH;P2$E^su$=E)Z`rMYJaAemz8kCV4m+1dD6|ih4jW>r%kg5-88MSLq7UEp zlBJF5Lw)!;J=l;&fAs9)aaECOh)8QGEN_d|oEn*!40`UzA4AvLQ)j|GQszVI=4U5| zz`53`U5+9S3!3yH-kFs^42&u;*V=6z6Hpp4=|92eO$F!}m#cIxHN?e40c->yymx<$ z@=M0S*CMHfoxH0LX)XC>hu8{Cd53y;(@L8X1d>vi50R*|jx!zVWte9xE_zdU>)#t=0>+0FKJ4&Lp9i#mz#?6vhhQzANeX{jukNp!H*euaNH>;~4(#IAxckQ3LGH%46|Ql< z5L!DSHU!U0TJI~O`8RAwa5$q8))d>|H(S@X+CNVfdKLn8+t4S|3s8*e^D=L>8 z;ng7hJFRkWwR7YlZzn*B9|FY)P!MGz5+=bk!7%~fr6G}Sx!}s(@ROapaJE>dzhRLu z-_xxweZV%cT~EkofYE0Q&}LFi0gt&<51_F}QUnN2xfm*$Y~sIwyd1*k0*oJOfa2T$30wZ!NN6SMRbdpuR2s{P zQGP1=R0OIHLI}h7<&F{X7zMX_NG=s2bSgO#Q|!i~cwN@MrRpzi@c~g^NgVN4MVv|w zO7!bR_Dd#MFroml4XEb|KpDHD<$V%dy@${X=hr4>0UBkq+vG1o4Z&bQH45VV_~ zBiFv&$lYE$T_Dqi=f^ffWRJ0z?qKx@c6)PVaV#TQ*j~IK(-#$`34AfqFf=J^37-L* zvC;(Ld|4^{U0}1GmMATa<2ZF0DN31iP2tBl`%xRID0w-!Ebsf`;U(zthGHiqXBzfk zNtDa#D8Dwfmrpsn^Qk44hp~~LGM26;u^VDp7&9DJS;Ht83V?k_Yr;03uFkPJ$T{(9 zWt09UD$8@7isMju}-uj6zy3n!UHHX>*x?>&->PfN*i?rU&pPvBrx zJ>MPU%|66~m5D0_D2cTdS59}ZK-*2vQHdRswfm7&k?C=8hh210y}K6n9cTt)%JyCO z*#O)6q=+;Jz#{j~9+=K1O9@x21*TdG6=*%*R@!Y4KS zwdxLrSvy_R_E>}H@E~U)zls~o4o8V&p%bq#A=|yr$Og{5o!=Uc{{T1P9B@c?xn3{; zXr%!}9yK+P8ptTas_2?hsiJ}$AMo-7e_-fLq_3n2|1xMgI1k@GdPxLVdq-yP<~*F! s^X@+DN&42fiu`IL;_^}XXe>wTaC8R$jSj8=aKN47D}x<=ng7rJ2Ay=#;s5{u literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/default_album_art.webp b/app/src/main/res/drawable-mdpi/default_album_art.webp index e0faff68f671a5cb96376e7e9c6c4991cb366c20..2ead5c5f9c77947b1ff4932ada868293312f6bfd 100644 GIT binary patch literal 3538 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 literal 996 zcmWIYbaT7I%)k)t>J$(bV4-jU$PVyln9Hao!z9CGH_>CE&(bA}l@xMoZ}DJLhZ`OGu| zQgX@%Vvg$kaa^Sq(EfI|SUdg|_l5h-wJLdec{z~Ef1<+v{n#&-NahunGmm7>hlvBF7th#mC!rwzL5;=sV6K0I zF~%T?NRol!-~T2N1}I?UO*+EU~FX{qQrJh`lU152C;^oU5xrH|6F|GYS-+6!Ryu_`( zRaR#fK0fpJ@x4lI(Ixs`&wU@h7K(Re+5ERP*HK?N>+yloBDIdiA6D6}$o3IdJN&!t z?Q)fT^NLId{^Xw)d*bdfyjmnY_1O~-n*+C0=CCX~ROa1y$F54_R-Z1*g86&i)G2lr zs7G-Ae$FY*VYiOm$oHh3tj)P2FLWe-9&nkzQ*Kj7o80}m5BPLfq~C~c65LzGAUf;j k%*MQR>`ND0sGCH6+q6lr+vtSFk`&9SvlcbL0uM+70L41ESpWb4 diff --git a/app/src/main/res/drawable-mdpi/default_artist_art.webp b/app/src/main/res/drawable-mdpi/default_artist_art.webp index 1af6b65c77a0fa85b041f403824867c68699aae0..6b9f55676e4aeb0873c4894e950b97d7a85c815c 100644 GIT binary patch literal 2410 zcmeHJ`9Bj51D?$-zNmP`91)pFCJ}SQHWM~lj!DWDBD462nw#b>G&yq2HLI^_i%8}O zAzxQHN{)n0DZaH_8+&{If%o(I{`!92=lJRQ?fK<-Tu}&wuLJ<#4nK!+!dWadm%9ZK&a48J@^&*%ic`3B8jAeO48ctUK9u#@&m1I$onOwjWIqlG%y!P z(zVqEtK=fGCn+21yotBVLc}gR#0dyft!)1HuTgPfQDQI3%&N})h;E=7bIbGIg?mxxtyCWpuAAA zqM%Z3#|_N;+Z2MuyEMB(nnzF~L?y5i=xHWHLo&ctpc+nhpy-S9)6$}`$Z6Ysv$PcU z4*NjBF)JPylU6r9l-P?Hy1qR-Mg6=R6BO9pdW;{i#PO)Q+>L znqXAVx-N8ogGIv1f2=a$Op?#~Xfza}Vy;Yl0u_AdU6v|_=NpeJ-Z?8KStRakR{{l6O=`cnw=?#~Q&RRM+pRsR)KxR*F zJ4`7_aofUkAM(`Ki>c06dfjj`9lqMzMFm0&wVfs!o>z3J%z^&9N|K9MQ+8t2m8>+^ z1Ggjt?YC81XrZYI*E`)7ys+Po7%FsD<7%`v6tbvGmw?}s8Yo8L!@zi(iSuwHjRnKT z8)~{&wvs7)Abz(svdCcpn$Ux+zZ{kD!UELQm1InpSHLSLSUo88{W)WVDGmb+;@Dw@ zmX41^CX~bgIlYQosqGF(eN1_DoKHz!rGu-cQmOtfrTh&v8Cpj12j)T$KzF_Is(>l|#PEP)1>xchdkJk+i ztP}IQ_R4iayD%Ee&s=9#Wh;zeqYezy6@tVWB%$Qk=>#d2z(f8HrA;z2v~2FWV<*-7yke>s7z*8U4BVM$hC zTg^ga3*hAYd>NNy6@v0AUGdk!w~X zBoQ<|1w1<1@HA~qS>J_cd}-93Ma(rd2+2(oB~E0jD#X|CzOpxpAy*TqlD>0j}Sm9pO)`|4cmx*&-3M1t=v@XO~ zrVvFVw^(&|#7W5;IY4K!|!0|>MHs&Bd?*?C5c;kaX+?>;^EqjeliI)QrnR(SX2j2C|3 zSOVE;DkE8e!^I9&OS{LR;TB>~&Sn41L1PtNir&cNLKoi}Jj@J}enmjnFXM)k8m003_T zcq9Z-0jdBk@7q^89jn$nsxA&_l$Qv;@hSSMvbDq-Xg;*`F6+J7A4CR0mFK?%+Z^b> j{Vo6A){KtEdb6|b|KtCyS`GmK`+_-fn#%9j^xyDr=(E|z literal 1432 zcmWIYbaR`)%D@or>J$(bV4=_gWN(OJn9Hao!z9CGH_>CEkLproCB-QCMNNn z)tPlkkNFF)r51}zRQGMxp0VTbozj^xM~}%pUUTZ1p22t7G`efr)ceD@*7r5X7YBF$ z3RQt0J^m|KFhQMJ^mo&ZZEKH(rW#+L+_P8};Z)7pt>2ExpZ+c1VlP_P{Zfeabr1yy;WXjeUvt(v zYnD7^UEIfh`G~{uT}vu+(gccal0<^{b%+NCu!2JOe%HTiU(MUqe7v%9g|!y5taiG3 z->dEYB35WDt!1!?YTp%?e9|`}NRY2!=c12Hud*0c1Ec5Kr|(;)O^vBac~*6PN`-XFwC z0Fpu{J23qFuU^6c2YssfWvbh>xU)<|&xq8NO+LI_)|~JA^=vMgKYJJtX6y>B(8}dF z#QoXw&*x>``&~Wf?X_7qL1xw8SG<;strvY!nr}Ma`+>y)*_{4MEc2pQOgQKG>nZD} zU(ufqe>0NWruUjB=7@frZg6lLyV|R1e%y+#e?m3>-9N1SZpYQ=%n}*-ITteyF0AFL z7p!Z`n%z9VS^mjU#;$!^x6NkXZJc)CB?IGh%_D5n)DE;P(5bvSKeOqoPAYeAgqlj- zq<5!0Vq0HY=_=}dczIdPU(0C2l=9SYK`r~D2oA2qz@z% zUTTDuOT9U>QgFA=)4ff1su#ICvt_;eXq9KW)0jOcD$!5d#ZNG*vDD0Js!}em#XH@# zAN$tsHJQh;D7{ADmcVwcI|-Hyfx5L1On0Rne){-qs^JmFn2fGi&YKEN!dG_AIAAjE zc4pdT{pFGigvB5AZ}VStU)#LoL(_-D-D?{Ie->#6Je{#A_Ws?+nU2jK$9i{Z1Oj0;Z(NkNng+7DnwqWZhu7@|vy1w%hxi10H=7>}s}ubY$nB zX=bNgRAt!mg*{&^3~%1RrvJTrfv$*Evf?f0|39VIrfn3SeD!pW%}$Zj=luQj=9?3^-&!R1-|JOfaQ1$| zak+mIJq=M0Evx@*hE=0&d3p|l$}FB{Zs-FR60gVw*Y zPWA($dlHxLzr5kN#8!u-?zFbAN92oUYX|VjG0RorT^!eig*j=Nzij z9nrgrNwO*+RQ<5ds;HC*$I$6K(JNj}OpG;tQ?x26v!>#H)4DXIz zj&YT6{B!;t|G$d*>e5YH5BO{R-&`2f_|5+J{J-b_rT^dj|K|TU_20H6xSc)l>D$An zcTe9v`tMjxc;qI3&Xy@Xu{9sx-!I#3^icfro{tCX>+Pf8FvlJH!v6oeZ@A2}n$+8G zPOd*1azHeGQ~LhrlMYVXaAw}WU2ahe9`~lUgxq5F?p$#yJdFFFqnL=_#Mx`alk_9> zUFL3#>##}ND^Pf%N^!&KuEZ8mXG!h0BkD&5ZloW*aJozJU##(&jY%g`&Td#Nc`Cv< zC$lZ(8c*{q#e(IMT9L*&E8E=9PB=DeVIU}!tj`LZo~0OUI%Q>>+Es%EQfZ-wH)SM$ zh!n}?u=~8|>w)yJEoMJ_y00*?zM4C40~Zw>eTyMRQH8SyJye>deoKSTw~vu#MyF*-3L+4|SS7 zsqj~}Id0c+(V^p9op@58LF_l(LuCvhS9A_WvK*{Buy?i#Q`z$Da88!DyY!czOXj?@ zG@tLSoA4gv^>b!&2pl-P?Cy^h>J!54EH}*eGU$*0a?5@9{0Z~+K3;h=#i{ycYx*`L z&JX(@P1WbG(R(8J>Tz}c|Cg)Or!AO&bLZcW;q9@ROBfD&?SB4ke*Kr4eRl#y{AL+g zY42aLWzjAhbwdxFnFTE?O<@A&T?H#928IGhhPjMdGE6c|b`w1o`l>EbR#M<#*dWB2 znfI_fQQCp?4fFk+IqmyyTJqO!Dw6x1^2GMr$rIIYCr|i(TV3(}Hb3W4>ERVDA`A@w O{@>$RB?Bzg@c{sTry*AW literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/default_album_art.webp b/app/src/main/res/drawable-xhdpi/default_album_art.webp index 3e65bf37eba0f157aea269cedc9e211790595467..05cb419efa5960a34b5bd3c7038fdcb0467d5053 100644 GIT binary patch literal 8320 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 F{TJ3O-qrvB literal 2940 zcmWIYbaN}=W?%?+bqWXzuu#YVvNwn`&SliHV6kAao9MC7XX%o~N(x&ZuTX6F5= znfcE$Jw4|B`s&NCckP<({#$TrfZI)-RTrxK*%tKZ>oCXqzEk>i!1T(!N28q4FrZ#K zcyUnc`I=21{LV3*(q3d1!M1Dm9oMG~*(>)Ri9_ND`26H~aPP7j%`m z-24ADGi+&F&iCt;I7KI2<6GMW>pvYsaS+Uu`ERe>W<1Qqk*k)qaijP&#&yfS3sxpb zy~;0ybHo$_PO#5@a7*p+IW?I*+~Gb5x1u<_y7ls(j*zY59s7SKCt=BCiZ4P;w4%C? z#Q(u+lfV}(DN$Wl9HCO(Q6 zcW12*aloF&-Y#WeJH2k+!Dq?Q86ukgTmI)^hB(MYViy^AmK^yCbZ%}|2aZ%FT=;y6+<6E-*a9opk)Qs8s*&{iHL+9&*IQ=ybl-wPy z4MuB3EM*k7Vw9T7ZZk0a`+s#m13@s)=KlTg6GhV_CdI}Wtd|N|-0}DbgFf3Vix`d@ zj?KOno31~~tW|uz+ho(d{GLt07WNWC61gTR8_%S=3g6G~SYmX=e8>FT)eHPSG&IJ= z=ia*SH>)wCQ($(`x>qlyKVNCuSWw0wbg0&kFY?X9v)9kv{S^0VdC+tQ?j0)OlNhqYitAHV;Xm$2Rd54563p^J*ac^6;;8XJ3b8 z9p?mR9rD}tx#vjH^uD|R28~AzNSA!Y#wXp`1a7J zfb%!<&15D7rH2;GtLr@XtR8~0@pvWr`9;-fz zN|}ECc1z{*W7n&q`L-V^tTcb@ zcs*O7!eF7Qc9!v$Ej2o9Us%0Y=CI6}JmsF?5r!@A6GBp-U+O)Uu*PJu>oJX6PmP{W ak4&uT&8$+I;gxgfKSTNHKBO4I%>)2jf{9iD diff --git a/app/src/main/res/drawable-xhdpi/default_artist_art.webp b/app/src/main/res/drawable-xhdpi/default_artist_art.webp index 5057fbaf7a20df08fa11217a430cccba6b30a308..aec9f594de1bd3a213c70cd27e3de345d4379b73 100644 GIT binary patch literal 6056 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 F{{!m^YZCwf literal 3724 zcmeH{c{tSV8pnSaVkCt!CWOXL2@{e%2FEhUjGZK8tWDXMNm5J;vXv#WW-msO#!{Bb z$Y3h_GIsAVLM9o!x~}(J=N#2_y?>lP&L2Jh+|PC0_wzjW^SwX!ZE0j+5VH>e(E7Sa z6jD_rcxT^zoGFV*MirzA(o8hWH7Ur?6BFhA1XS^GT=Zpl3k;44Z`<`VOrOAx8?2?x zRMg<}s@tE0SjLzqddzw2XXCdY!lQ^x+VVaTr!LR+7MW%JHoqnKKcXNnk?y-9#-rE$ zhS#Y0#FAv5G8*C#HG{0BJxYCb7YY>Q7em><&VE$8UeOkP3fnp6(uVR%L92U z_Rc^3G(wrNe`G`$Yk~wTwAfl^IhzL*r-YPO?rIc-GR0;=<-q{Gn^ae^vdj6`#Rx@< zaR2cc<+Z1k5jiA{wnx^}wZvVlsdQHgYwg6VMcJd2E;Q9{oPqnd@wP{zl?wB$7jP$v z*R5CS&^Yvifp7on*4aq~V@RKIP7m!X*Q$TPas9FRYsfFS%AupRKVJV@`8}G;CqiWw z@Hdy;f6grii$^jK+>pKB-PTg6*)!}&+MSc>Mls}!FY2KSfk3;_WM&SXfZ&axu8V$f z!s@PhL4N08$d2_>1lf?5LOb7~D!r|~uwiz=L^?Pf1sS$UZ4z&& z0BWUJ^R5*YJ?}IA?}IAMqhBU&j&AcDVS*EAr5(g9uZL#%z?WE9@7rE}>~4C<9eZ?E z;Hvhox-L%XBWSN;=A9!>`8D_U4ta??VKDy|8Nm-~oMS88;ig*9JIg^0E(e+yM`kPi zfbJc>4`)c&?}_Dfp0(gnjhX0E-*dPT>Pc9?u*9w0 z-2yl6G2bEo9*g|JZskH&TYo2IXVYbuz%?JlPTGrbp348gfe7B#0YksnDBnb?aNCP- zwKbt3%sE-lQ9^WUxNYUZ?()q}e*TDI1yy(yPhm9>viIlJ9Nt^p9}TYtlQiH4kR%6x zPdzW)(nH!mzV(al{;TDFo1c%O-@5#7bunE6wzf+nfxor5*P&rW1ztgQF!j+O4PMWv zlRXhAU5Yl5APKnta7p!boUmYP_U6XlU}~D+C;exF&d#2R&z)8Xc+w3mxC|X=oo6tW`~z8P8Z(pjs~% zHitJHF0W*^rM!M*r%04O8xUrcni1N{&f4M{O|yTxf<77TE)a`1SR$#Eu#|frcIh}$ zlT;T=Y&j%KL68j_#xTr)HmHv@gpKTe9a|}Oc%QU0zr*a!>tJ5l>Jzy_v59h+#`gF~ zuX9L<5(51phH~{c@lJGGrq(fsyFmh1)ZedFO7-aS)auiw+NuDYa=;*}M@Y$-g11jao}V_wc`DsR`nw-nI6tD4`n>6})iVkG zvMc$vEZQutY`xn2HWSL>;yGp>XzPzmKKPHeL(-?O>m-mZKHC$Q7H#J`hBR-!Z*}Ii zl!!WQung^lW->JPt2+ha)r?*Q*WU@(HHsorgJQS8xMm z^bnCPcrdr~?%kJE>QN;Wpv-DDza-9Rz+~`$+v4p#?EA<=fO~6LN-~%%qqnT6CqEb~ zG&bN(=A5o{>#!=#l>?JelFaO1vUK)#)q9O^HK$W+NfZZ{_D_7BZvXt&d_Bey4l%0B zr;GHTk9;0MX4+DpG^`L5B8<((47qjCo>URdF3A|3r5VB@x|9*EG$3hn+%t+9gA36$ zp)Yp&r;f2fTPb-5U`B~ASgAGAZEF;AzjvlU_M3W{8SY|x5Reb1vBnsb=jdeP-lFv+{9FXlCRX1L&!-N!61$q^{?jxUGCh9JVco9f{m=+zJ`h2%xa34l><`} zsvU);q&Otr9K7Xiu)qH?r^&%oUJYm*mRcO%{mihhM!f9}G4C?JqNa8CD;d3`Hj$d@ bv$2=L_IywT*oN&TIrWy8a{kr?`yTWs+!%we diff --git a/app/src/main/res/drawable-xhdpi/default_audio_art.webp b/app/src/main/res/drawable-xhdpi/default_audio_art.webp new file mode 100644 index 0000000000000000000000000000000000000000..cfea182a4088c240c0753a6ff7fd224760eae180 GIT binary patch literal 4188 zcmeHK={FmQ7Eee?G_llHG3}sQYdVymOe+%mUQ{DW)z(TxHx(LmY_YaY7qzwa7DF_) zSWmT4Wh@avN<-0N7&|H2BF}s8FL+<(%?J1V&b{Y%@3(vIy}xr^Y%DF^Bmsa67HDU8 zXCtf_007vd07KBfVP@}a-6aYD027PziHepsHtD8~M?g{!r!nHEC>KVq4>O3W$$zyj z+}mx|Q8|HXHL@?v)MH^bJG38Z=zA4KoY2Tl+r5FWuR}N$nV{oDNSkj(>~1iNAAR<= zm?w%PhO+CkP}!7-oKaJr z`dm)yGa>!Tk0#!ZE~K%6ch1K=IQRO`!0>N<_Vin~iSLJ1Ts!*2u2%-mQE0bGox(Q| zCc$r4%k0DFjr>y`wWm;?tMZJMhH)TaN#ikXr$KJ;_mjhGuIrBGih3jBo9mN3HSGop z1W~@5IgPwL zHZnVuS*x`R_0E!FEUOKFjU|q1TUHt~zB;{`hVm3iU${oRZIU6rQ6;RyuN28-Tr<+` zjtIK@Ym!Hl_M2Nh-!*|DsEU>+V0Wo`-Bg_=kqTFZ>k{76HIkPmhw^2hEx5-*^33z* z(6+1T9lnvt?ueVi7_HWye6QB2in2iEzr>b`mP?z3#ttPYMf%9fzEj5@2T1|6|$SyGmucNqf;7BX9JC~$Sg$1-rHP6BZKc^^-rGfil>=e&Zk?S~y*KHZ7w6ofQ8i>Nv=(O0ZSn$5 zJ2b$qrKL+gv*KNB1GRlELUUnss^{)&Qt5<(% z+uV4%?1wjWj*ko(&$tx%fD{$N*78hSjS^I0?~^JM$-(!2#05EL%oq+Ef3b_u$=Ky* z(}phc(HC(#EH2q3BjK8`6l3O{n+OB>oPJvnE*AWW_*B&e*6tCY4z1F;+?D5(uDpJx zTe=7iYaI;lC3@u9jmX0^KtGV#NymiYgAf%@*TrPuODGVt&?w<(6{kowk?& z7s9aLi-Od2k&ZI%gx`y|5oO3UI%h(^mJ-5+ht*NwTsXH@~wiZXjmrZ@Vb5-S`NnySo5EOf&Nw3Zm4upUZv}2YicX zfKcbr>p-fBMvV%f@ZiHSNug`03&%hQ%;nh3-ucULqiB<_i;^tW|OQE8Y{U+xQK$4q}r}NPd z=W))<;M6OiArZ?)8(l9c__dTd$WKUXja;BrsCuyt^NWE(yB;7}+=8Db+30{a(nPU9D*g1lrFL^X zE6T;@33D$KKwUY#Eltsch zGxIg@?}S6XNf#usB-MnK@`Q;yZeU^1u$~I|kpC+&pQk7?XCoHGE3zTyC`~M#S`2=Y z->e(r`9~t?)3j91DKhx=dSCDy83qiW88@iS!ALGWt9l-wRuJyli|-;z=HyQf_Cv zat+q}!vYpD>M~+cJ8P4@oT+y{gsRkN!MI>&4}#7Ag#VJi*$eK8?Po%F(-KkDH;?}CpE|SgM<;pl xF?Extro7B>#O#;%+p<3n`)ja&9rmx{z8d^PMX~|_*cE&NmmW~v`|1B~`xozh+9d!0 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/default_album_art.webp b/app/src/main/res/drawable-xxhdpi/default_album_art.webp index b9e49f47a64c3c35575e5f521d09c1b1c2898734..6f679760d59f61f8149d22455f6fc48abc4f2fdd 100644 GIT binary patch literal 14094 zcmeHuWl&sQ&?fHgok z>#N;wx4zn6`)ljVt-e+F+;i*HsqWL=Pe0Wc29cA)5J5uHmIbM5slL|1K|(?z`g5ye z{3}vQs$d}&BqZbzM7A9*grMXUv+*;Lj7(JFOR2<%p$|Y&t3`0k`q>9@_iI8%Cf1*3 zn?fMad*)xB5u=eyqmiSLp)s@lBepK~7Zq+T7rO5H5(lpL#Wk9bX14kgl?^4+SNipn zpRRe2^^bVdY#x1{YoD3~+L&b)mqPm^cbB62ZC%=fy_G|kLZd=xJtKEhc2kO8+AqEn zwYIQCVJuRMz?!x?AR$cZ#g8!N?=elIY59`xR_)4#F0HPMQ2bfIN*QAd7`m3oqVK(J zJ0I0O0}?-GA=xzAr8VT;M$EYlHXM~iH;^wj#9wv=wyEfs_uAOXUP$l{F9<8!(qcs?m5tG)J%^63WswdYE^`-Qyy zBW!UsPRj?JM|n9`3BMbcb7hbFyKVK!fmr58xcB?x@oL(0mHp3aNvcN!t%Ja3VW6$YafV;KNc~V&UxR}ZI6k)qkr!53bhq_u46XSdh6%jM7_S0bezd+*-sGR zeah6`Ui_jzl>T97P)^dZ>&O_R>|l7O-oK#Kb*uI6)8ltqzGa`o#I5~yhv#p}M@E*@ zXL_i|;+0|8Y40Cj$CE=w61ov1AuZ0@kEFM$$&K8~zR8v0Kb~R3k4?5wC7(AUTL zD_-6#365~gC+(o;zne&b(A>C4$LzmKmB1mSM60w<6%u>b22A!TPvi=Z;K6npX?Z0R z#!D|%d0=d5#m-ChzQ#Ky<4M_}%;FcyB~%M-sG#Ri#e0GHZA*LBrRe2%#^jm%#3Kkf z+Wfop4eV%g^yTf;`T4A6qM&>Hq1`%(6^evXeO5NFSz^RJ_sBmo?}~61?3&*=Pd+{s z0NyVP2(Ky0s(xzbRX1Dp=I)`hwbD>-R{1AyK$pPnsp|o~>rnYy z_g=4l?$R3j#>)x!kQ$EjAB~w#Be@Z+o+EdIe(L>MWec{C7Fp)dUWq0P@$F{b4>h;R zm#O#`iUsX;nYF*)4v>B*Kfdq|Hh-#|@molu_1vqu{O7<)%Y0AxpeLWOhB5DWsmk}k zdg2UVd#!J@Z;WBS8Mru;CZ^f%^K!vjd>_>_x>UPN<;b)*Zzt#Cpmj$K`poEir8wfG zGar1jxSzNh${YS{m%2#h*iCp{T_$%Cd$Uz>8&L~9{dMHQ+SNWwCSlmd9OCGr`{4Er z@Z+xoKHb|68Jg>__mzI&&aGXawN+_fziGa?wrL8tU0mNOwcse@IK7`fBdrd&d9G** zo3t?bsXU?>F$+gs79cSsgk$csI1!&}nt&$Xc8?`Gtl17pMTo%hr)vmvI80=?H|d+R zu-Tfo=uC$?!z*rsJK|1qzd7L#l1fw2%mTNClZ`~$xwzpI|qdxAq29GjlxLbo$%P z8u8{X$$L;c+@X@wrP%P3GL9ixKgxn-)u>v^Alsyj^>*?G&EO%NRk0t2l)aj6iZdL2 z-xe`SJDapj8+0H#vk9}!NpSaN9qtRIg=GU zVQJ^j8Cgq0c;HUcM+2R?L8P^wsvNoLa5kLtBz&q zqk?X9P)0^|1+D~_Q4f89lLeQp8r6bWKPMO6k%4Qo6wE84*z1WX(RWYgQq{vNv#

Pz?a1S7%%L}i}q7`4J=oNO`U(G37ChX_nO>gT~ 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 H|LgT%CGNeU literal 7142 zcmeHKWl&W88b7;qcgd0htF)8|lETs{N+Tsmh|(!i5)w)`tggfhC?E@h0@5x0Dk0GE;0b_9Md+iSS7kZye;R zH=4-4r0f35tn+pa#GtAFQj;c$>&2c@V#hd)QMHZRSJG|*+gI<=YtGS0OZ1PyP7j>c z;S>+2yg1c||6iR{p>#{13GR+aSQKv@?Hgeto5PG)=O{jzrpx@xmEdkFu1(!Inaw*6 z0vl#Zg%@@w6aE^S+)3QRGG9HMa+216`N26=n?>6|pR#vEo^%TMdH+%!nd=+@XI#94 zu!T&W!+D)LKNNCsU@qNj9&Dw2U@eVx$`?2zQZKfjz;aZ{0#=r&2T&#lw}Crez?LLA z;bceL@Oucac-E}FDGu$72COlu13rP%g$i6_&OeOE2klf`)nxH=Lo^cb#j=?>OgKU= zIY0dbl`keQs5Snc^i4hH1aHhY5?@wd8GP3`0>HK|Xl^pOV4)=?1j5r3{+ z5pT72@e_^q*K^4{&b&blkG^+h{EF+Q&CGrHGpFbz9nH~&ss-k*jIDX`V*;t7cJcU- zJn*fNdMjF#U!qLKjVYosXc9nkSrq~Ak7+wUrjUupH$a5@lUsW1_75kZaL(Z)pgVH9 z{#2kzH?JSy_`P+%^)@rmJB=Y(zC6NM?ejVd9hNXRSY+CXF1MYMdsyUMiMC9e&a$G` zapMaQXaEz=#&!OzEo5?hQ?#Wd9j%i(-_YYjMDr7*OLf~-Lc1xq^@c+D8FT394BsFu zCOly$_)}Vl!1QGX2qws^z;6o3-ruFYIV^raf&}CZ4EfEU;ZPzMs-L`}+Pg^W<``69 z^vIF+nW@x%J-N@pfM%o~Gfj8mvCTA{y+!aJSojZxKA>r>n95`86Hhz=E{V*?G5ybX zU@q{={EST88eFMGZPk)5__XWwW8R9=K{3Gcq{{7^EqLK+xumhH>RWj18|FOKmYD7F zMp_pYiP!I2P-?n*-^>j93GvjY7Cs^3c9HVlF45bPp>uRZ6g_(oR(C4!)GJw8YwF@s z?Bl~zF$Gwp_9CgaS7q|N4uuRZm&}M5-^S@nN4w)V(!Mq){DaE%*@v?JxJSY3@piy+Du(?5 znK2iH|5<1cLx9(OEw}KGFZw2x;lY8u_LVHEM#hKt{DGFuAtgaZgZ41qqcpypOo71j$Kv3xQxR65LM|wMxMN5#B@Rg+JxHpkT@*S{ z_Ct%%tL->jJC}#i5_mw@agbc6nc>lzBr^X4+cuWux9C-(%OazV@GQ+2?|1>2R$dM> z$5@g6)17ac)4CU=PioPEtOLchsny*MZR`V~{kxkwj^U^j*EAFt`F%Me!bJ$;;5@v$ zY36_VefB=A0S+RgjEys$lRvt+rPw%i3N1Lxir+I1;m1Qw+f11=)llf-gCp=4EK<|y zy17>Ni^HQ(G89vPa?iiuD)=LVnQ+u|F6Cb2-(I|C+N9gs?^l;5qTI!fQ|F^l_ea)cW%u>BE2@u(zM@3;a(W{GykTwbTpui=-hoyK2m3 z5_x-$v?06$oKti?83q#ZQ8be>EY*&7rgN>)y+Pd&)<}#n7zuN|8mm?OxdCo2T#UGP zo3p6^z?+ie#N;jU#9%6=@|9(Qr8 zamZCsQ$)lUOZOPs$K8zOl{e zUU4Sf`JLz#BE4rSVqiIZlAn7R?U6*t*NdD<-nHCsG7UE4B2-U-xR%55A1TXo_Pv#; zee>SGUfgEA;SJW?y4&pZYnjsuDeGY|c)Oc)vE}evR{GtZd@rSI&p{3C(lnmO*Nv+h z`<3PUgaX(S)H#=hW(o0{@nNz`jD79OVsh9h#5^qAic`B1_v%pIv$NGgTyefpQv@UK zHz%I@Cl~c3I zL!1eGp$Q3>6*!^+5Dv-9HA`wZ25R5*);-QJz_S3qbbNL_czsHOGDIn}Y=s2L!<$xd z2bgBp5Iw|KrW=QmPdf7K38yr;(4V6>Ry(o=<)wh zW(s8rA?{OZ7VOXjWSwneE=W;m2Kmen5v%My$kk*s;C0OJe9!&FZ#dwqL*7}jRJLqc13G(cH4xa`rpez&1k!v$ff7LH~e z^#BFMcib#83B%{FF}PfIh9z2~Ql6>ga0qFjU+WIOw<(=8_|#$1Q9G0L*7n9D0Q7qH zF8nuk^X=p`By<_~gmqRBmDuJ!%{AXb@CC9GEDBO&*x_9r6QMJ9C|S}XNL(-3)@ecu znIm$uc@-Lkd)4`q6}IeT<&i9U?PPD3y?U`xp%#~Vizmg35yrd&1?2gaO$9iH>I*?4 zh~%(fRN=kO>8gqjgVYvsv2^;>m40^U5+e5^^A*PqQB_${u!T` zsRYlMD~q5+3$*K{w!+ql!W+xW97C8}mNSMV03a@zkS0!_wA-b_XPTc!3u0}~TBeob zu)@HtsFq%0&|QP%O^-HHv#*hD#3fO$5XIuw5r=T#&EgvjioveMX{Y*Cdio`U>ebVc zYj@ZbTP{2ZPFtpTWW47DW4VC}8&k=JgZMQ_`}<5DFz_UoT(!SVuln_20AJpO!o4R- zCeEoe4k>`-rO3k2XGGSJU$<4MmfES~vRSrytBHTfge)(ZU924SiB+qEHZAx8kRH(| z6h0kV?ap1=Yh3WIN^^Cl;+KAkb-1J6Pn(>;0%EY1cF$L~mh-haX0z4JagG{dPU=RX ztn6|5<8VN?-7h4aeS`SpREFI-8alvC@n)?5mYaJX6V}zDFP5q$8SegLW7FMdb4)|V zz*;Pd^!_b;jeap{y@Z1~oRG=nj{haYI79;KLmBMIz{p_J&)M>qM1)Iq7fGE zrM>rDjtag}7=lH(NWG0fz> z10LoH%wBrX;BG~bZD+Ixvb=#+O58n+E7VfQ-(hH_l|p6fe$BUdq#U6o+9&C}Xo2CT z4}+5dbQj(C+Me+aMu}dT>cFb#?qa)}s|0K1ef5%FOjELU_N&@XrWp?A5IZ`p;wxpR ry<}`I1GUrAE^Y(;Gy^0MT1dQrbZJJ4peP-=2t*)1ARtmiYNYqj z4M;~o1V&McbWrKNDqJ$S*1XQV%)>lP⁣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 P|MB0D{~rHyBk;cffV!{X literal 9894 zcmeHMc{o&U8-Hdp@>xf=Y}vB5p_Dh<)Y!8xnIw%R4Pi!>B+Fz;R1DcmAzO&Cj5Qf8 zD6cKNwj{lhC6a_U#d}EqeSf^Cf4=wnt~u9r=A5~%bIyI=&vQTb?|1(m3joeVUz+!d1OEa14bFF;J+~?cQP_IoMd_E(d4jNp3iKgddgjyEysQVH;(`? zFhsRtZx~Q?Mn9Aqml;bZ8`*5>g3sItWI!_?@*VYn_+LFcc~Cn|FA+A?!+b;0c-unP z3F75t1xfs#-&EpkV6sO`e2YcnH|@7cU8K+jz5{luu*qk>L`i*>%m#Ngk~^Cd8B}ww z3ziqG{92bwbRZrq7Nxu>g=w{qhR1waH3h13)_Js8Xe)&v2-CVCLeFhs13jE5a>02y zduvSKJ4Nx?hvi-FVmuBD&g4v9H6x1m+ zR^Kl@++orm8tpksO`(x~o5L!w3uJ1&;>{DJ3a?a(vju(P}};Lje-Gxoo#)SkSr9_L}v^6PAFT-wp%vN-;O!w z%5`~2gmR7wyMS*WBLnxD{&)0Na|o4tMdCQ8jQwC2p3ntlWRGmm;Azi|`hOmF1wb)l zY~oyH!T0Bo~N1$iWcBWT3g>N#?~p%{{Xx0 z3l3T#BfRirMG1);MBkrP==_e!arz0E1SDS=hwg2U*ZZMXqL3%iIxtnt19a}0AdStJ z@XqpH9OAz4)X{;AEc})+i|kFc6vyW5SAb^ur|I`|%rkiIf1A)Db2WTj4t7G6n;ObX;owWe z0{4>4M5b*|@Wm{fVU1Wv65jBhZ9)7BrMr^CkA0#@K_2!7lDg+vUsH?lhaZf0dhGl3 zX3yGnOxe;MhKLv-=}(=IR-Txxe>RZ(M5iz8`>M2%1_1I9u>`PxIGxpZ@WpujN?lcH zVnrZ3Ps>F~og78ASh3xl3l$xU5*;zewae3T2tZT5QX>#K({I5kR_m@N6p{A|3bg80 z{1>^%8V(UhhlbSR^bDLe9V2UIf|bxOdD7ap`mo}Pk23&l!=i#NqSh*3ZM_ZO*W0Yd zG5NgjTTJR3>zJE^9LZ|>fX~ooN|DgL-BNf$wJNnvr|%6tld72msQ$ z&Z55yFVB4#m#=-IB6@N%8jaxBm_@l%loS0wvAp}v7WA|Uvbg<$ck^(4TPGcf@L%Lo z>BSC;4(nmYVjJtF^N?>0S2Lk!UZ&?lzdUHjmN)=hod9g30Kks{K$s4IBpCo%=&A@^ zwJ-n}Lgxtp01-N)q4O>jKgM}tr+RA|-F#JyMw0Xz2(}N@O5d^ec`fzeL!J^WSHqI%FZZ0TI?Hfo+z5TMs zIL~Qk7=IYIPC9MhD-$-AQ(s8~GrAIZK-;FfFmWsPSYeZVj9rPnALK5u+=+~6rLJ+t zWvykDdSzL)`-}8N`Q3LGBsQA3M3@N2y)B%<&DTuTN>7mi5Uuz8%YjKcQt`6FgCupX z$;-#`(r~IN&w{v5T?1P!_&U(09SJkOA0tt(GaYATt-(sX_m!bx5Y3 z=GGwk^V2?mvS>J7vB{<>$y#~R0U}dwtl_nPimYO8MA!?dyWvjVxl-(FPIVnlya3_Q z-J;X`a$#{vm!=+S+C6SO63lG!xKzD*Q7CW$8Z@#>dGp{$O6!mmlhEK=l8O1T(YEX! z$Y7dPP~dz-e{yE5i0{g?whKJF=25pX0VRm5`Dg6Wbb#FV7eVQ2qyf5bxyn|r|62Ru z42>El_tVd~O{*{fWgH;hbhL8TBN#-FbE+c3^$nRlA4unBS29U0Rr2s00ARm+;I?>d zS(^S{i4((mG?4>9VP3n>k?$Su5?@Mr^s+g(iFYrq z^LzVI!!;sqKT%vuyWn+uU2w@+t4BDigt9~UCZ)V^0GRGuY7UPHTv9My;nL~6!Fg(J zFA^-pY diff --git a/app/src/main/res/drawable-xxxhdpi/default_artist_art.webp b/app/src/main/res/drawable-xxxhdpi/default_artist_art.webp index 4f74e964e1db7a729b7d6b9c4a15d7c681e4099a..aef914a89d636e96f63700f3cab10802a33cc972 100644 GIT binary patch literal 16950 zcmeI4RZv_(*RCOi1Og-hg1Zf_g9mqaclUwdF2NamupooG5AFnKaQ8rh1`kfqKVSVf zr_SA}`fg4YUAr&3cJ1BOtJdyb>wQ*jHCZVs7BK__ZAmc|Efrp!cL)dwAOCeHl>c0! z3Mw-06bJ~2HPiq_9me~&mvNC}*ip`_QgMY(tJy8Szlbp3tu?7SqVxEKW9n#R^wk5H z86HcBBA;vqWN~x(oX}`Vhi`qkAzW_~7c4(qrhEi@&vP)ydtiRB9S(m))S%%fjWS<5n!xkl4hLnA~Fg!yri&#Ii`89y+yD zcquHoM=h7b6}V=a5ILQjSb;ZWyw)l>xg`+LGBFVOq#X48_}oFi|Lmlrm5Qu~876Wz z3Z#ztM3w*coP7FsR5+z-E;T+ti2OT>S11IMPyzAN)lI$6dAJQY;R6n_d)8n+<{Oph;J@exInVz*>bbo%&C>25F6S<{^-9cF-(G%pfAG$H9_KVW zfp6CNYIkX_*Qw_G{FJ%FyGsE0G_GyPJcM=Xk>KEP+77(A&wk*+tBbyQ(>9^i=%!zhO(R6X?kyU;abCY@^<%?nI&YyB%O9d^Cv2jwU4#0@y9p1RMvoh9D)3an=YT#L<~%>zh!H3 z&^xl}S6ThQ(Qe6Bt&{2}5vovuy&0epQli&++{8^AnX52zj*W+m%v*1gk{xI%dcURU z%h3Fh$_pp$EO!xKv&hq|kb7dN=2$G%P>gE#Gpthcr((IVmCHN$)XZ0<4D~wX-Ok`n zS^v1`{Y5D~1Lvkyvp^0b63ri?Q7DAV!=EQjvg$!SQy@vB)t|CUlw2z6T%w%BprPKA zHyrsUWdf}JDD${>>@+mY6w2O2c8vo zuGiPJQ_pN!xz|&_YphSyDza5r192B|a7B%hOn;Npf-2=1nI7Oa-^&;?Y`6)y7#R}c zF18z$GtKWp<1gvuftvxIgaB6swGz_CNPANC_+6-a zmmHtn#~XoMVnyCk9@%-iBu|x@0zwRMbU-x$jnQX%TdkOtenn*lsronu<2+nVJmQqg za!KRpihyFA6boodmMWM9Vi3{OU# z|1xuxs*mB$=d!b}GR_Bcm;p*sa_QiI)8wXjg0DqT7*yIz1=YTWOM=vq^*(Zy%>}K)S9Fm}gDg7b5z9X{AtL{V)c#Np;tvC< zA`*UVs(i&s?+_OHR1a`)QFw;S>PO#U18h�_6sd8Lvu|*1A*!S-`6;cdmwOR&zO@ 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 Nj{k{ZZ2!F(_y@NeuDJjJ literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout/app_widget_card.xml b/app/src/main/res/layout/app_widget_card.xml index d0eea349..142524de 100755 --- a/app/src/main/res/layout/app_widget_card.xml +++ b/app/src/main/res/layout/app_widget_card.xml @@ -17,7 +17,7 @@ android:layout_height="@dimen/app_widget_card_image_size" android:scaleType="centerInside" tools:ignore="ContentDescription" - tools:src="@drawable/default_album_art" /> + tools:src="@drawable/default_audio_art" /> + tools:src="@drawable/default_audio_art" /> - - - - + android:scaleType="centerCrop" + app:retroCornerSize="8dp" + tools:ignore="ContentDescription" + tools:srcCompat="@tools:sample/backgrounds/scenic" /> \ No newline at end of file