From ba0d2cd879de6b55e230800616d1fda93e34d365 Mon Sep 17 00:00:00 2001 From: Alexander Capehart Date: Sun, 9 Jun 2024 20:25:33 -0600 Subject: [PATCH] playback: add tab icons --- .../music/service/MediaItemTranslation.kt | 62 +++++++++++++++--- .../res/drawable-hdpi/ic_album_bitmap_24.png | Bin 0 -> 676 bytes .../res/drawable-hdpi/ic_artist_bitmap_24.png | Bin 0 -> 531 bytes .../res/drawable-hdpi/ic_genre_bitmap_24.png | Bin 0 -> 432 bytes .../drawable-hdpi/ic_playlist_bitmap_24.png | Bin 0 -> 259 bytes .../res/drawable-hdpi/ic_song_bitmap_24.png | Bin 0 -> 291 bytes .../res/drawable-mdpi/ic_album_bitmap_24.png | Bin 0 -> 375 bytes .../res/drawable-mdpi/ic_artist_bitmap_24.png | Bin 0 -> 313 bytes .../res/drawable-mdpi/ic_genre_bitmap_24.png | Bin 0 -> 241 bytes .../drawable-mdpi/ic_playlist_bitmap_24.png | Bin 0 -> 182 bytes .../res/drawable-mdpi/ic_song_bitmap_24.png | Bin 0 -> 175 bytes .../res/drawable-xhdpi/ic_album_bitmap_24.png | Bin 0 -> 894 bytes .../drawable-xhdpi/ic_artist_bitmap_24.png | Bin 0 -> 642 bytes .../res/drawable-xhdpi/ic_genre_bitmap_24.png | Bin 0 -> 422 bytes .../drawable-xhdpi/ic_playlist_bitmap_24.png | Bin 0 -> 328 bytes .../res/drawable-xhdpi/ic_song_bitmap_24.png | Bin 0 -> 326 bytes .../drawable-xxhdpi/ic_album_bitmap_24.png | Bin 0 -> 1644 bytes .../drawable-xxhdpi/ic_artist_bitmap_24.png | Bin 0 -> 1092 bytes .../drawable-xxhdpi/ic_genre_bitmap_24.png | Bin 0 -> 812 bytes .../drawable-xxhdpi/ic_playlist_bitmap_24.png | Bin 0 -> 559 bytes .../res/drawable-xxhdpi/ic_song_bitmap_24.png | Bin 0 -> 560 bytes .../drawable-xxxhdpi/ic_album_bitmap_24.png | Bin 0 -> 1774 bytes .../drawable-xxxhdpi/ic_artist_bitmap_24.png | Bin 0 -> 1150 bytes .../drawable-xxxhdpi/ic_genre_bitmap_24.png | Bin 0 -> 784 bytes .../ic_playlist_bitmap_24.png | Bin 0 -> 672 bytes .../drawable-xxxhdpi/ic_song_bitmap_24.png | Bin 0 -> 687 bytes 26 files changed, 52 insertions(+), 10 deletions(-) create mode 100644 app/src/main/res/drawable-hdpi/ic_album_bitmap_24.png create mode 100644 app/src/main/res/drawable-hdpi/ic_artist_bitmap_24.png create mode 100644 app/src/main/res/drawable-hdpi/ic_genre_bitmap_24.png create mode 100644 app/src/main/res/drawable-hdpi/ic_playlist_bitmap_24.png create mode 100644 app/src/main/res/drawable-hdpi/ic_song_bitmap_24.png create mode 100644 app/src/main/res/drawable-mdpi/ic_album_bitmap_24.png create mode 100644 app/src/main/res/drawable-mdpi/ic_artist_bitmap_24.png create mode 100644 app/src/main/res/drawable-mdpi/ic_genre_bitmap_24.png create mode 100644 app/src/main/res/drawable-mdpi/ic_playlist_bitmap_24.png create mode 100644 app/src/main/res/drawable-mdpi/ic_song_bitmap_24.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_album_bitmap_24.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_artist_bitmap_24.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_genre_bitmap_24.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_playlist_bitmap_24.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_song_bitmap_24.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_album_bitmap_24.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_artist_bitmap_24.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_genre_bitmap_24.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_playlist_bitmap_24.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_song_bitmap_24.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ic_album_bitmap_24.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ic_artist_bitmap_24.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ic_genre_bitmap_24.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ic_playlist_bitmap_24.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ic_song_bitmap_24.png diff --git a/app/src/main/java/org/oxycblt/auxio/music/service/MediaItemTranslation.kt b/app/src/main/java/org/oxycblt/auxio/music/service/MediaItemTranslation.kt index 13fdb581e..9a5bb53c2 100644 --- a/app/src/main/java/org/oxycblt/auxio/music/service/MediaItemTranslation.kt +++ b/app/src/main/java/org/oxycblt/auxio/music/service/MediaItemTranslation.kt @@ -19,10 +19,15 @@ package org.oxycblt.auxio.music.service import android.content.Context +import android.graphics.Bitmap +import android.graphics.BitmapFactory import android.os.Bundle +import androidx.annotation.DrawableRes import androidx.annotation.StringRes +import androidx.media.utils.MediaConstants import androidx.media3.common.MediaItem import androidx.media3.common.MediaMetadata +import java.io.ByteArrayOutputStream import org.oxycblt.auxio.BuildConfig import org.oxycblt.auxio.R import org.oxycblt.auxio.music.Album @@ -37,14 +42,27 @@ import org.oxycblt.auxio.music.resolveNames import org.oxycblt.auxio.util.getPlural fun MediaSessionUID.Category.toMediaItem(context: Context): MediaItem { + // TODO: Make custom overflow menu for compat + val style = + Bundle().apply { + putInt( + MediaConstants.DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_SINGLE_ITEM, + MediaConstants.DESCRIPTION_EXTRAS_VALUE_CONTENT_STYLE_CATEGORY_LIST_ITEM) + } val metadata = MediaMetadata.Builder() .setTitle(context.getString(nameRes)) .setIsPlayable(false) .setIsBrowsable(true) .setMediaType(mediaType) - .build() - return MediaItem.Builder().setMediaId(toString()).setMediaMetadata(metadata).build() + .setExtras(style) + if (bitmapRes != null) { + val data = ByteArrayOutputStream() + BitmapFactory.decodeResource(context.resources, bitmapRes) + .compress(Bitmap.CompressFormat.PNG, 100, data) + metadata.setArtworkData(data.toByteArray(), MediaMetadata.PICTURE_TYPE_FILE_ICON) + } + return MediaItem.Builder().setMediaId(toString()).setMediaMetadata(metadata.build()).build() } fun Song.toMediaItem(context: Context, parent: MusicParent?): MediaItem { @@ -205,14 +223,38 @@ fun MediaItem.toSong(deviceLibrary: DeviceLibrary): Song? { } sealed interface MediaSessionUID { - enum class Category(val id: String, @StringRes val nameRes: Int, val mediaType: Int?) : - MediaSessionUID { - ROOT("root", R.string.info_app_name, null), - SONGS("songs", R.string.lbl_songs, MediaMetadata.MEDIA_TYPE_MUSIC), - ALBUMS("albums", R.string.lbl_albums, MediaMetadata.MEDIA_TYPE_FOLDER_ALBUMS), - ARTISTS("artists", R.string.lbl_artists, MediaMetadata.MEDIA_TYPE_FOLDER_ARTISTS), - GENRES("genres", R.string.lbl_genres, MediaMetadata.MEDIA_TYPE_FOLDER_GENRES), - PLAYLISTS("playlists", R.string.lbl_playlists, MediaMetadata.MEDIA_TYPE_FOLDER_PLAYLISTS); + enum class Category( + val id: String, + @StringRes val nameRes: Int, + @DrawableRes val bitmapRes: Int?, + val mediaType: Int? + ) : MediaSessionUID { + ROOT("root", R.string.info_app_name, null, null), + SONGS( + "songs", + R.string.lbl_songs, + R.drawable.ic_song_bitmap_24, + MediaMetadata.MEDIA_TYPE_MUSIC), + ALBUMS( + "albums", + R.string.lbl_albums, + R.drawable.ic_album_bitmap_24, + MediaMetadata.MEDIA_TYPE_FOLDER_ALBUMS), + ARTISTS( + "artists", + R.string.lbl_artists, + R.drawable.ic_artist_bitmap_24, + MediaMetadata.MEDIA_TYPE_FOLDER_ARTISTS), + GENRES( + "genres", + R.string.lbl_genres, + R.drawable.ic_genre_bitmap_24, + MediaMetadata.MEDIA_TYPE_FOLDER_GENRES), + PLAYLISTS( + "playlists", + R.string.lbl_playlists, + R.drawable.ic_playlist_bitmap_24, + MediaMetadata.MEDIA_TYPE_FOLDER_PLAYLISTS); override fun toString() = "$ID_CATEGORY:$id" diff --git a/app/src/main/res/drawable-hdpi/ic_album_bitmap_24.png b/app/src/main/res/drawable-hdpi/ic_album_bitmap_24.png new file mode 100644 index 0000000000000000000000000000000000000000..c25d1465bb0b14a71d84918535366c314adb091f GIT binary patch literal 676 zcmV;V0$crwP)<;T&hfF=cgFUen|sDnhnX#jJK{&NC;kzyGimeeAZwOl|EWRduf#p^ zcOLxT5TZfbrEm1R6J+>S{8brrR9=X?(RXafWKsMa%=zbEEUng>xFRlO(&ia4G;t+) zm5Xtlkw8cBNc@}4`28wwi7%o)0!`L_4<2}qKPh$k6pUD@mr*wi^vQj_*Fn^^!cxwZ zWyav0xDa)tg1*_KObU*cQK#C*@a)L?2##61{i-f}9!nniN|X_r+uJ zB)8Y2t^hAfIaU0-QF9BHHa+$Z#8k*u)BrtyEuJ~!$Wt`2AJFsd?2V4G25+7UcAS{9 zZB!Eji9g)ngNUXvDLlpVtYNH9)bwHLI4FjDF%GPKWg<^wf1u|doMv#vSvrS`aIF&G zs0=!c8x@~7F5ZjrJ`}uk!j(##q>Te!iHDiAV|>5j!;W6!moeUl-QFh}rEaN`;($zK zK9hEgA6IXeTjd!?`Q}J+Z;A>#UeF3` zmaeeC>X&@pKS|lBz6dl~OCRqs*(D$3NwHF8nPL14TDF_dAlf{mFevTmeFk}0%Bhm* zlW;m8iXN7#uWPgLDeYlt^Xyn!{+^`+nZY4#o)JUSzUe*VDd0crP+S}ed4}x(0000< KMNUMnLSTaB3_*4P literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/ic_artist_bitmap_24.png b/app/src/main/res/drawable-hdpi/ic_artist_bitmap_24.png new file mode 100644 index 0000000000000000000000000000000000000000..7a4ec1d2444c353938c1df8d8fd96a30e3c93510 GIT binary patch literal 531 zcmV+u0_^>XP)Ap1wn$nop0#@enVFltyPL@b1qB5K{hvf+92|jnh2u%r*Kna}3z!Ba@a@34 zS$f>Oh6&Ajz?0`;49}p~&1;y@Y{qJS1^N|^&3wVlt637giac0W1~}*OtyzsXtoaRV ze$~#=c&hrb5FC?exlPd*FyZmpD|9J;E5vct6-rw_mQyfp=<#t6J$Sr^M|wPYsp`i< z@Y9p<;qh_lr=00oLh#&^P;`Aph>d~+@T%}08h3q0wbp0Ckdz;1zVBhz zSFh@-FVW^)1WOW~h_a=}?@llR*1;|~0k_I2*wYwSFK6d!eq#O9LSj~;eRB=Iq;lz9 z=(&+-KV{u|i9$jS%z;C2Cx4r7UE{4_(`i@>JD^Q#t>_$kuoru>cb9pXJUElef6dd9 zSI@i_FtK}yniRkw=uo#FTL~oF7S|n|3W9y=5)m9LCizI>;Z6X4*cbd+0=fW`k zf3^7MVsH<9D5K*!-s7*NQ=OQYvNpk@jcDHiT&owbqaFa63Z#8k4MY~(M=x;S$ zQo@tTHGLE1no1;LW}_w+jN0I}AVefhO;IqLr|?(e%>+qTQ;}eNU_$xUgcn}|r{Eq; zN$K;T%T`E5@sat+`{v(P!#IhbPdCza56TCre}9t1;ep2KLSm;jkB@caTA3a z_=<_h8RF4!XV4V{%W atNH}xJ-DD@A%!#m0000-OL+cZHC1c40^ z4e+^uL+zUB{u!n44{o%O2cpoY=xS`MkONZw002ov JPDHLkV1oK>a#8>Q literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/ic_song_bitmap_24.png b/app/src/main/res/drawable-hdpi/ic_song_bitmap_24.png new file mode 100644 index 0000000000000000000000000000000000000000..9eb67934bbdc24017eef30d7e418c90402bb32a6 GIT binary patch literal 291 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbBUU|AWhE&A8o$AQfWFX-BkSXR! z1@mLK{6=kYIhTBwp2D}2DwcmV-*my>TXE(_y=SWWic{v>D{cvy`uGp0QqifClEDE# z&H%|BHfrfU4?oSAW7v8+x#*aPUO!N9Ma`DOO>+#F-k9z2kooC{#-bk%mR-CphuHES zFv>kF+wuK&V?fAZ**$gB_{&t;vJ&Mb(^S&0I-ZoW+hL*l9LQ+(UjAf{mB!BEms941 zyQkGzH`_kHIx#i>#j(oLl$+)y&-Pdu)lY9t51V7|`005-M7Cvm+aCW{dzbjX+7MQJ mPUh#o>8yuK51+U6(~O(nzJ0d< literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/ic_album_bitmap_24.png b/app/src/main/res/drawable-mdpi/ic_album_bitmap_24.png new file mode 100644 index 0000000000000000000000000000000000000000..1047e230c8d87418588c3dc9a40b29eaf53be049 GIT binary patch literal 375 zcmV--0f_#IP)o5{OPbK*3XB`zA- zmJ8#lY6sI=Ks>2AavJOH7kg29ZRPU3!qkqYwQw6eI_<6-WG_+nL(YCp^L}Uqj8a3t zX%(;0??8S!=`GD}8~p^5w(DA&!{ZIHcFi$0dX{4s9&XnLY07o~AC8CQ{AK<0SpXGNuEXV0R9GIV$RqTC^IIPqL7kzI@WgA$+fu@GPV(7hLP1LVc$Tvjb#$*K$Ql00000 LNkvXXu0mjf1^0(S literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/ic_genre_bitmap_24.png b/app/src/main/res/drawable-mdpi/ic_genre_bitmap_24.png new file mode 100644 index 0000000000000000000000000000000000000000..d5034c0d851153d009c18af7c3951cd2396ac345 GIT binary patch literal 241 zcmVgpJ(l z9NmwK6U9GY2QBShFo@k0T}U1`b}tBorV8FQ=bBr)>kT3^cu6coG(0l`~Np1cYE0l|}pK*0YX;whjcEO^K%|Ecnd z*PT3Sy4UI1+2G0+6b#e#>b;%m&)JogC6-uXW&l_m&SF?GZ$E*edDB1$gKQf+}C`g z0p8Ew6cT5$pC7Xb;}*gb<#oEpHfrMdQ1WezJ3h>C&G?~^jJ!1NwIroB#V}U=NakA8 zxIswCO2to%&sEd&0LA4(Nw^15JtWqhjIp`cgt)I7(kZ34W{s_AEp^?C#7 znY=aMuz?L9coQ+>QyRVajPxV)O>lNq_tyRu`#W1J-oA z@aguO@h#jTaJE;u*CXuQ1IQi91qF5%6hK z_cnW~i?H?`_|w*6YovBZeIl4sVp!At(<*$Y7z4R#Rs-QrzNPp~#%!uz2K+&C0LPeZ z)pY>h633va0|@=PO^s*j7XjaPME#*^Ixx|x1Xbr@_<+@-T3H>~*7i)ar>f}y-FbLR zH5t}+QYfgEC+eF4-vCDKm1;Ubx8GG45o^0H6qNZMJ{^<1*7nS6_051UrcryNnhrF9 zwnw15Rz&`tw|QM?&%BGC3e{_S2Q2}3pg-WJ1U*qr2BvqRclg(Zc&+W3EnVnVH67p) z4B~~KMq3xM+OeKhT`O zr`UX;;Wh772W$jpJsb U?VH8hAOHXW07*qoM6N<$f)wev00000 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ic_artist_bitmap_24.png b/app/src/main/res/drawable-xhdpi/ic_artist_bitmap_24.png new file mode 100644 index 0000000000000000000000000000000000000000..880afde6446edbeb9bb3cf9dba96e7f93f5fbaff GIT binary patch literal 642 zcmV-|0)737P)Nkl`w&uZ5GGfBb=+*j~Js=HQ4 zQRZ~p(bo`~FM(t5FEe0Qn0qQ6zLicwp-pfi;r;!OYQ$fLv|AE>Z3;8Y5Ppd|A`c0FYR}^TrQW( c<@(?B1nD=xwcIFRtpET307*qoM6N<$f`^$fY5)KL literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ic_genre_bitmap_24.png b/app/src/main/res/drawable-xhdpi/ic_genre_bitmap_24.png new file mode 100644 index 0000000000000000000000000000000000000000..7ac11d34d6934ddc3f5e3b0c9aa14cddbabccbdd GIT binary patch literal 422 zcmV;X0a^ZuP)7oV%ECtwtn7S*fDfQxqmaVZTCfsKX+Ve=6g$Bxg&^de)_=HJS%3C& z7Yk>E`QV3zxmmv1+k=q7AP9mWP*O@m z1wG{@3+^>%4SC6g`%PI>{temYJYbr6(Mg$$Xf!T>xyVC{^W(! z?+y5r&vXpoTRzh=guOfjHj!iG9$9E)J(3zdTMpquUW8^UREyMxm7a+Qc{%x2^5qae z-h>NMb8T3*EhFwX2U1g#yh+XVkjT2MO}XD3NPUpx_g&W^%9^jgKOnS4g3FG&y8-q| z@R90=RG*i1Q}lEnNbr*C&r~0mdzheNN60J5N%piZC(rVq$S&{q=Ro43BHkzVr=Nk$ zSw(PFZjlY%$CT83z%LcqGIDLk?&LEfh8!SQ$Xuo6N1Uuh-2To7K@gbo1^MOZyy)kd QMgRZ+07*qoM6N<$g3)Znx&QzG literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ic_playlist_bitmap_24.png b/app/src/main/res/drawable-xhdpi/ic_playlist_bitmap_24.png new file mode 100644 index 0000000000000000000000000000000000000000..d88b412c9306a4e85140534b33c784c92ab6ccfe GIT binary patch literal 328 zcmV-O0k{5%P)i0dFUGHo>m+7+tvXPH~3n<~3Fngb+fA87ZaL zFSWNHeMM-jt-bx|D?(#!?d?Zj5gKc2Z$J9F;co^lp#@q~eE|m6)>=Q-!!WS6*7~s? zhJm%U){pft46LoSeyn$o7HEwYAPkI(d0(t{G+j(L)A%`m-Rj>A1EXS|W7kinJJ04s zZx{wfmC5rvziIfKKMVt-%H;WDGdouj{mrqV1`fF-`kP}zJvro(=xoThie|4O+0vtR4;&I=)g a=$1E>9tr8wnhKc!0000@>|@4Ay3*;8{5Ey=SFTfIo5YyYt`>vR+M%5bF-BIZ0~ zHO^u%HEozB<>1S^U>RG0@gD}gtsmdmxS!7y>wO&2egBxufz)gBbXg~IU%%mgNT+_m z9rZ+g&S~*KwYX3|0ZvWKwSLH^zzR};S^$Bn13l+YbRlDSjbIO00oY@xXIzQ9j)cLoh*vx%Y mY$bGjquH@}`dy2DNScQ{Xs~iG)BOev9|liXKbLh*2~7a{UyOwS literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ic_album_bitmap_24.png b/app/src/main/res/drawable-xxhdpi/ic_album_bitmap_24.png new file mode 100644 index 0000000000000000000000000000000000000000..68d136f59d9d79d1064349c3a04152ec6063b65d GIT binary patch literal 1644 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 QHUIzs07*qoM6N<$f|cG__5c6? literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ic_artist_bitmap_24.png b/app/src/main/res/drawable-xxxhdpi/ic_artist_bitmap_24.png new file mode 100644 index 0000000000000000000000000000000000000000..e515a4134a20a006477d86a68f6a4726f0e14203 GIT binary patch literal 1150 zcmV-^1cCdBP)o8+5_Zn9AM1_V2*ODkYiIT+?3`o&P26U6gdnbhp0T?Z zW5=%8z7|fHqmvE*4jg|L#Nd8%K#sO%%k4|SbRECpHVHfD*pJm*f^ekxU53uzoX&DG z+op@a^h4NY+m3HLHk@Pov6>#jgYTon?}B)HaVJySvY!%AwhXmIUn3^QWPeX3-_*1W z#S!D*0kP(>^HNpUL@ew@3`dTChu~!6I4;$O{gp7Y&zv^gPYKq}@l~n~`>O_Jw{}kN z?5_mG&A3m;-yAh<#^D6JzI`ALguN%&%i8$G$o{rtcCL4yr;i_Pvta({FN8(JkIGkZZohUG5kJaig4y)j z2U!q{h##>gS|?nC?IAh;)q6zncZs;qW8VjD5x;oj&k~c;=ZQ(y<~Hb({mubLjQ{8i z!CB&JZue4|PuouJ^I-f}K-|r=k7~VHeJEL9HqeJF6>DHf!iSTfW9b9`<3J#mnnRSC zR@oh~%=(S5A3Vkn!d$tq<9mPfK%f1cL+PHccMRfBp1FyW76DttTwP<%orSo9FlXG+ zl(Jg@Sa$N0vR_jpPR38C%|2~|ZrN8B#8J-8@F`{A{;-bZCuQ$qw8vpN%?||P=sr6Q zYvj&;#G3!%*q11+v2CBnejd!$>U4gvwKlnOQ6hJ_ikK(1t@nDtEJ+3ASt0TQ5h4zR;72<4LextNJ<0 zz;8l*DCfagb+dqA%qY@2qAV7l(<;uum9_jc~Zz{dt6u9q2j za~Mq=m@^xg7BEQNU<#1-W)#^F?Xa!k?aOs>Zw#I(MfW8y=AUm|-0rg`-T1lcwtxdN zd_dzMpup{t^SSkNg8zR#dHjG|%FTYu|6G+{H*PQz{*-y>+L;Od!rLBk{WM9;6+5w< zGrO?4W>$gruGoL7=lA8WSn&0U`@P!#294LI*7wOXyIo-WRDAD`MS#QY6a6+nHXgW8 z_No3Cn3^ol&7-(q)~U|AaKWjcI%e1IitJLk#o z{Kglod_DHX?_j!nt>ww@W>%dXr%!(m@W$M1dGd7wlkw~cd-ATQD1Nu}fAwzT2Ri}L z{`22sPyBpXnw+tV^W^dO(gVP3%W zn%{YbhTg@#!jtUxM^`E86=$ZIGFDxg``Mp$qIdD7Guccs=XgC>JGZO-EL_mAYvr=j z(b{{svr;_Ivlh;?w>&;)x7|mJd7lgA^6CPWy{oi4ihq{3?#ggk%lYSJeXq{Ta>qLc z?(267+~#`R{_vf$Dc2>N__)8~NzsXamRImf=$(1|SXTc1$BzaM#%T_5#wl*L%NJ;d z{C`>gNomzDo~%uE-&aHjm1Q3Gxp&C*D|f{wsTYB@Y{HVUmjnM^mA9;tm9aZ_cX`u> z#D7^SY*()T{-OWT%3{vby*pM+R9Vk^rIzbivbSg4?&vFflbrvoRLIi#9wz@N`}rU5 zM|Tff1uV!7v&ydg_&)jii|W}2?(A>bx1956tM!YEf4DzPYWdUunyqKSyZTjErcGS$ z`)8iO`ajtL-}5?dcAeg%7I>buT=Uhm$;q}EKce%Cg|CY&o0TnSbX8ZsCF1`S9VwCX iN4G7$&IC(_ZyNubZ8L4{eZjL9B;@Jp=d#Wzp$PyuD0O52 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ic_playlist_bitmap_24.png b/app/src/main/res/drawable-xxxhdpi/ic_playlist_bitmap_24.png new file mode 100644 index 0000000000000000000000000000000000000000..b0a08a8b3387b5aff03fcf1c7cb93a9c0baf5c83 GIT binary patch literal 672 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7Ro>U`qFNaSW-5dwc7l?-WM?wuDy; z7*AJwM(&9bSV$y?U_ed5>EAOED9-OwdUVMQ~y z$u)OF@w_$tNqTo8*wd;Z&Wo6U2XOOIFHOSUVw{(N<_ zUS~Sc0q-o%M?W(zH$FeFIMZf7Si!&4In(|>>X~|DF_;@?yl%rEl^nO)w{d5oVuZJF#XGmOIpeM z55!z5pB^Upn>8k)^o@8y;?<4u33@Nvy|vFw{>$`um;RytZ`?hv|4CHk??15Po%F`& z-$x}MTgkiH+)$4*^pijK*Jkq(@8UUA|NoUY%(Cy>_xVpndvam=w4WDKerorz_MP4* zD|gTe~DWM4fpGH!F literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ic_song_bitmap_24.png b/app/src/main/res/drawable-xxxhdpi/ic_song_bitmap_24.png new file mode 100644 index 0000000000000000000000000000000000000000..c0869bc1d56a02d2e443c9a52b324b9bdb13e69a GIT binary patch literal 687 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7Ro>U@G%;aSW-5dwZ+VSK3j;HPCzl zn?{4#Bc>qs+#|UyOd1NB4I&ff)unCX(7n#a`ll=`$#dF0t;Tc0CAib6tMIyZ zRAhYAzHK%6KQDf2F#4VRcV~WWS?Qg~m#^1czreb7$?WAx=TB8D_xm6JlKk^dcY*EN zEluwtZdiY=c(_sg;Vdhg`FRyxH&tS)tJY4rJ#D^D*6M=4E3bZAfqH}=ZATsK-T$^C{FijMn*tJ*73{! z{NIh|h8?o?mXv&#Ze{wTSN!l_pZ3-szVF7eVn$YA)%zn(9k3~|zr3$yqEBfDjxkL~;Z-7Pv?>$CRQKj&wCuU~(7Ki%L_ z{G@xo_b;2q{b^eMnP1uV_1S*nS3Yf>qFcxL*EE0UJiQfv#5e!S{yF`BT