From 07e916e08be0cb3b44144ee854127d3e57638227 Mon Sep 17 00:00:00 2001 From: Moritz Weber Date: Thu, 29 Dec 2022 17:16:30 +0100 Subject: [PATCH] notification changes - add like button - switch to rounded icons --- .../src/main/res/drawable-hdpi/favorite_0.png | Bin 0 -> 1039 bytes .../src/main/res/drawable-hdpi/favorite_1.png | Bin 0 -> 943 bytes .../src/main/res/drawable-hdpi/favorite_2.png | Bin 0 -> 891 bytes .../src/main/res/drawable-hdpi/favorite_3.png | Bin 0 -> 748 bytes .../res/drawable-hdpi/ic_action_pause.png | Bin 140 -> 0 bytes .../drawable-hdpi/ic_action_play_arrow.png | Bin 272 -> 0 bytes .../main/res/drawable-hdpi/ic_action_stop.png | Bin 102 -> 0 bytes .../app/src/main/res/drawable-hdpi/pause.png | Bin 0 -> 603 bytes .../app/src/main/res/drawable-hdpi/play.png | Bin 0 -> 672 bytes .../src/main/res/drawable-hdpi/skip_next.png | Bin 0 -> 614 bytes .../src/main/res/drawable-hdpi/skip_prev.png | Bin 0 -> 687 bytes .../src/main/res/drawable-mdpi/favorite_0.png | Bin 0 -> 594 bytes .../src/main/res/drawable-mdpi/favorite_1.png | Bin 0 -> 539 bytes .../src/main/res/drawable-mdpi/favorite_2.png | Bin 0 -> 505 bytes .../src/main/res/drawable-mdpi/favorite_3.png | Bin 0 -> 457 bytes .../res/drawable-mdpi/ic_action_pause.png | Bin 108 -> 0 bytes .../drawable-mdpi/ic_action_play_arrow.png | Bin 159 -> 0 bytes .../main/res/drawable-mdpi/ic_action_stop.png | Bin 92 -> 0 bytes .../app/src/main/res/drawable-mdpi/pause.png | Bin 0 -> 372 bytes .../app/src/main/res/drawable-mdpi/play.png | Bin 0 -> 428 bytes .../src/main/res/drawable-mdpi/skip_next.png | Bin 0 -> 367 bytes .../src/main/res/drawable-mdpi/skip_prev.png | Bin 0 -> 386 bytes .../main/res/drawable-xhdpi/favorite_0.png | Bin 0 -> 1384 bytes .../main/res/drawable-xhdpi/favorite_1.png | Bin 0 -> 1249 bytes .../main/res/drawable-xhdpi/favorite_2.png | Bin 0 -> 1116 bytes .../main/res/drawable-xhdpi/favorite_3.png | Bin 0 -> 926 bytes .../res/drawable-xhdpi/ic_action_pause.png | Bin 162 -> 0 bytes .../drawable-xhdpi/ic_action_play_arrow.png | Bin 288 -> 0 bytes .../res/drawable-xhdpi/ic_action_stop.png | Bin 114 -> 0 bytes .../app/src/main/res/drawable-xhdpi/pause.png | Bin 0 -> 716 bytes .../app/src/main/res/drawable-xhdpi/play.png | Bin 0 -> 751 bytes .../src/main/res/drawable-xhdpi/skip_next.png | Bin 0 -> 670 bytes .../src/main/res/drawable-xhdpi/skip_prev.png | Bin 0 -> 759 bytes .../main/res/drawable-xxhdpi/favorite_0.png | Bin 0 -> 1930 bytes .../main/res/drawable-xxhdpi/favorite_1.png | Bin 0 -> 1713 bytes .../main/res/drawable-xxhdpi/favorite_2.png | Bin 0 -> 1584 bytes .../main/res/drawable-xxhdpi/favorite_3.png | Bin 0 -> 1276 bytes .../res/drawable-xxhdpi/ic_action_pause.png | Bin 202 -> 0 bytes .../drawable-xxhdpi/ic_action_play_arrow.png | Bin 547 -> 0 bytes .../res/drawable-xxhdpi/ic_action_stop.png | Bin 196 -> 0 bytes .../src/main/res/drawable-xxhdpi/pause.png | Bin 0 -> 1258 bytes .../app/src/main/res/drawable-xxhdpi/play.png | Bin 0 -> 1191 bytes .../main/res/drawable-xxhdpi/skip_next.png | Bin 0 -> 1161 bytes .../main/res/drawable-xxhdpi/skip_prev.png | Bin 0 -> 1265 bytes .../main/res/drawable-xxxhdpi/favorite_0.png | Bin 0 -> 2937 bytes .../main/res/drawable-xxxhdpi/favorite_1.png | Bin 0 -> 2596 bytes .../main/res/drawable-xxxhdpi/favorite_2.png | Bin 0 -> 2359 bytes .../main/res/drawable-xxxhdpi/favorite_3.png | Bin 0 -> 1884 bytes .../res/drawable-xxxhdpi/ic_action_pause.png | Bin 244 -> 0 bytes .../drawable-xxxhdpi/ic_action_play_arrow.png | Bin 488 -> 0 bytes .../res/drawable-xxxhdpi/ic_action_stop.png | Bin 244 -> 0 bytes .../src/main/res/drawable-xxxhdpi/pause.png | Bin 0 -> 1820 bytes .../src/main/res/drawable-xxxhdpi/play.png | Bin 0 -> 2014 bytes .../main/res/drawable-xxxhdpi/skip_next.png | Bin 0 -> 1805 bytes .../main/res/drawable-xxxhdpi/skip_prev.png | Bin 0 -> 1883 bytes .../actors/platform_integration_actor.dart | 12 ++- .../repositories/music_data_repository.dart | 1 + .../platform_integration_repository.dart | 8 +- src/lib/injection_container.dart | 1 + ...platform_integration_data_source_impl.dart | 74 +++++++++++++++++- .../music_data_repository_impl.dart | 6 ++ 61 files changed, 91 insertions(+), 11 deletions(-) create mode 100644 src/android/app/src/main/res/drawable-hdpi/favorite_0.png create mode 100644 src/android/app/src/main/res/drawable-hdpi/favorite_1.png create mode 100644 src/android/app/src/main/res/drawable-hdpi/favorite_2.png create mode 100644 src/android/app/src/main/res/drawable-hdpi/favorite_3.png delete mode 100644 src/android/app/src/main/res/drawable-hdpi/ic_action_pause.png delete mode 100644 src/android/app/src/main/res/drawable-hdpi/ic_action_play_arrow.png delete mode 100644 src/android/app/src/main/res/drawable-hdpi/ic_action_stop.png create mode 100644 src/android/app/src/main/res/drawable-hdpi/pause.png create mode 100644 src/android/app/src/main/res/drawable-hdpi/play.png create mode 100644 src/android/app/src/main/res/drawable-hdpi/skip_next.png create mode 100644 src/android/app/src/main/res/drawable-hdpi/skip_prev.png create mode 100644 src/android/app/src/main/res/drawable-mdpi/favorite_0.png create mode 100644 src/android/app/src/main/res/drawable-mdpi/favorite_1.png create mode 100644 src/android/app/src/main/res/drawable-mdpi/favorite_2.png create mode 100644 src/android/app/src/main/res/drawable-mdpi/favorite_3.png delete mode 100644 src/android/app/src/main/res/drawable-mdpi/ic_action_pause.png delete mode 100644 src/android/app/src/main/res/drawable-mdpi/ic_action_play_arrow.png delete mode 100644 src/android/app/src/main/res/drawable-mdpi/ic_action_stop.png create mode 100644 src/android/app/src/main/res/drawable-mdpi/pause.png create mode 100644 src/android/app/src/main/res/drawable-mdpi/play.png create mode 100644 src/android/app/src/main/res/drawable-mdpi/skip_next.png create mode 100644 src/android/app/src/main/res/drawable-mdpi/skip_prev.png create mode 100644 src/android/app/src/main/res/drawable-xhdpi/favorite_0.png create mode 100644 src/android/app/src/main/res/drawable-xhdpi/favorite_1.png create mode 100644 src/android/app/src/main/res/drawable-xhdpi/favorite_2.png create mode 100644 src/android/app/src/main/res/drawable-xhdpi/favorite_3.png delete mode 100644 src/android/app/src/main/res/drawable-xhdpi/ic_action_pause.png delete mode 100644 src/android/app/src/main/res/drawable-xhdpi/ic_action_play_arrow.png delete mode 100644 src/android/app/src/main/res/drawable-xhdpi/ic_action_stop.png create mode 100644 src/android/app/src/main/res/drawable-xhdpi/pause.png create mode 100644 src/android/app/src/main/res/drawable-xhdpi/play.png create mode 100644 src/android/app/src/main/res/drawable-xhdpi/skip_next.png create mode 100644 src/android/app/src/main/res/drawable-xhdpi/skip_prev.png create mode 100644 src/android/app/src/main/res/drawable-xxhdpi/favorite_0.png create mode 100644 src/android/app/src/main/res/drawable-xxhdpi/favorite_1.png create mode 100644 src/android/app/src/main/res/drawable-xxhdpi/favorite_2.png create mode 100644 src/android/app/src/main/res/drawable-xxhdpi/favorite_3.png delete mode 100644 src/android/app/src/main/res/drawable-xxhdpi/ic_action_pause.png delete mode 100644 src/android/app/src/main/res/drawable-xxhdpi/ic_action_play_arrow.png delete mode 100644 src/android/app/src/main/res/drawable-xxhdpi/ic_action_stop.png create mode 100644 src/android/app/src/main/res/drawable-xxhdpi/pause.png create mode 100644 src/android/app/src/main/res/drawable-xxhdpi/play.png create mode 100644 src/android/app/src/main/res/drawable-xxhdpi/skip_next.png create mode 100644 src/android/app/src/main/res/drawable-xxhdpi/skip_prev.png create mode 100644 src/android/app/src/main/res/drawable-xxxhdpi/favorite_0.png create mode 100644 src/android/app/src/main/res/drawable-xxxhdpi/favorite_1.png create mode 100644 src/android/app/src/main/res/drawable-xxxhdpi/favorite_2.png create mode 100644 src/android/app/src/main/res/drawable-xxxhdpi/favorite_3.png delete mode 100644 src/android/app/src/main/res/drawable-xxxhdpi/ic_action_pause.png delete mode 100644 src/android/app/src/main/res/drawable-xxxhdpi/ic_action_play_arrow.png delete mode 100644 src/android/app/src/main/res/drawable-xxxhdpi/ic_action_stop.png create mode 100644 src/android/app/src/main/res/drawable-xxxhdpi/pause.png create mode 100644 src/android/app/src/main/res/drawable-xxxhdpi/play.png create mode 100644 src/android/app/src/main/res/drawable-xxxhdpi/skip_next.png create mode 100644 src/android/app/src/main/res/drawable-xxxhdpi/skip_prev.png diff --git a/src/android/app/src/main/res/drawable-hdpi/favorite_0.png b/src/android/app/src/main/res/drawable-hdpi/favorite_0.png new file mode 100644 index 0000000000000000000000000000000000000000..4f8a4316ab26f3154c03563086e57196f8939b1b GIT binary patch literal 1039 zcmV+q1n~QbP)DYmlgp3+W5)m^RVsa>MXylM&8ix`WPBX<6quGXSkdzCD;fkW|jz~f> z4q=9A=0eHTgc@p`+Ro?gdGxN`vi4f*zt>tWT)9z2F1*7tX?I_%D@8)uuPXzCE8mhoR6Ln!yz~38&zC zrhT@+yhn!PrWg-_nJ@@CLThl%L%0o>U^g6qCn0(|bARXnZQ#SOzZLeov`5taY%zY% zDF`u5_-`V74}G9HJcG28R($>lo`W0hfV=Pw^aP{gf7-tQ?e*brH((QNLsU(+sC)$Xd`h4UV_K_6n+bl7nway?I*(|&|W_)p&C)IGDX!BM07ls zAK*Li|Lw35JbRC&A|j~cZ($yM8crWD{|cMo2KJ9L>_6tS$3GuFfjv-#jmKU$atSgS zD`6BIf)y+>f$I%~wdBVoun0UtqqqwDYkBOu@cVL@4gZAi>LfviRzc>%FR+pgJo}sj zQ6_F%@Zs)3P4+RQ7h>xhIyXeQ#)n;#BxqI$G9O&9KA)IUen-><*8K#1K{4)O-n|*Q zj?BDpL1%?wysngu3q;hHLI2jYRUyb1BCnuvv0wnR3GEYHe^;W2(Bkm_D12K2>PD^z zS$8VII&>ly9eWpo5TkFSqwhb$_rWAVCZ09uNAR;b$m+iCAT{b5ibYeae;XPc6D8%#&U*mmVSPeht zDkp^mStlxCVL0&uHNh_wBMLFyu(udmrM+mqT=ipNtTzfaXyMFUngL$8CSVnu%UAr; zJFr&YJzyz#>6(vLehclnd=Hh_G2-}37AtB@INi@|{rIy$Mb__U;GJkY;=`PG9czqq z-jOKCm53S^qDE$jG7m1WL0wS`TO*McW06&i$82QxV_(;A)s=Y$d=2K*aoCC& zd+Cx!S%N~8)z@au*ZXc}vsH?svIUj0X`wZZf|4TI7@?#Hy$0T(LNpY@t&9Kw002ov JPDHLkV1lw7=4}7~ literal 0 HcmV?d00001 diff --git a/src/android/app/src/main/res/drawable-hdpi/favorite_1.png b/src/android/app/src/main/res/drawable-hdpi/favorite_1.png new file mode 100644 index 0000000000000000000000000000000000000000..5ab61942f97d3f792c31a737cf95d77df3369db9 GIT binary patch literal 943 zcmV;g15o^lP)loqaWVi#LU*VGkKqPfgJ-E!sysar_N{pC4@02`G=wK`1+K#LO#5tskxPc-`WO#^ z*)R~=K{Ig7CwK!7;3%AeuR-)I`aaMGnnT@S|2o(o(H>DBvc>p!PCQJEnW8EPB04V1N>~d1eh_wnYwxlY zg$U|+CMC8?Q=Fnxp7;7ANL;KWiLZ| zAhw>+`9YLp{MfB=g60H4?gt0#h!T_JJ)$NtZY}fz#W;ui?r+PrWbO+GbWj+^+mlS3 zC!!t({hQM^20kU&|FC^G*qvhc1Uf7pg-L zV)Siv^nEM%J{>2>jb{#84L-YvJUM3Pf*OJr1wmdfrUtjftGt5zk%5Cll*Z7%33pN+0!U*?LF?jnI(mdK`eiQA@C`YjsBccWcQDf`;Jr3D31 z9$8BhkFW(-zUKX8WVV47;(v8d)W9kU3ZnYaTXKwp#u1LKo2<9J2hYVVQ{o7v2ePNU zslAiDxvhyZn?;#d%{GKs*jK4lIYJqty7KH*Fde)K()EzpcPC=Z##L^K1vwLu>O@xz z6Trg$BJ4wqwRECZkf0#Se{(G6Jb7iA#a0qU1q(_tX}&SFg5n}t8=<%e{Q(8)8#LTv ROO^lt002ovPDHLkV1ld4uQLDu literal 0 HcmV?d00001 diff --git a/src/android/app/src/main/res/drawable-hdpi/favorite_2.png b/src/android/app/src/main/res/drawable-hdpi/favorite_2.png new file mode 100644 index 0000000000000000000000000000000000000000..fdc92478e127835dc6593869fd2fb318e39ffcfa GIT binary patch literal 891 zcmV->1BCpEP)HAUP!s*fjE?Sa4$R{!#T$-DG%iGMA7j^Bt;?=qIgiE zB*l4fIgU&2#_z9hpSC@F?LD(+rq08x`nC6&`PSOM`PSNNeJ7o2VJ+Rld{PymxEZNr zsOSu3v)LXDG8U%7FlYtO;SSt}SLt**>ph70p4^XtNiZBbzzetux8SuuJ}Bs%G6rr- z@I+V!i^g(j^`yocYQ>HQ8jO!6^TO{d})z#ZbDiQ>Ttj%ljL)x=F)Emj0DN(8CrM$TG*6nU8uug_+Y;} z$+KO3I$1`wt<;*3UI?eqY!ez?N{f)O-k6NGfaVsKA?-UE&^}bocF%+^#R+NQX%E^4 z?aFARts%quQKsA((l;!;36`Z9WfFR5GUtQiN1bIWZ7uaHv6Ob^-LNZcJBbp~KB2X= zuEat*T=lAJW6Wuh1sYQ~$ktLdSG}giG`-r|`L)sBbqy3-F(NhIq-Jte6_BJ!=050H zQK{l=u|n#J)MS&ImOx4}51Q z8s>ls`|EHN8P(E>T2VqKrGIl&%<0W*^cP!6jEWXY^3bS06`{C{Rx%Wqp}&OC`6cdZ RsJH+C002ovPDHLkV1lATA`c-wm>ZoRnm1vCl)KrB+ zGg6IE#StnL3RCH11vJ3|sD%M|0QcZk6h(#NK-8bc@8z%-7QzG=guBL2Y5lmMbIRy= zJeAkLZdeI3paIn8BaFaH=!9$V#Uysx4NT`a8OFgUcn#0sGTcDwLtIAZi9*QKacv9i zg~c!_sWJb3hc|Eu-oZAQ4-*~rzw!StT!0Rw-pA{?gfu+|VI3$^q4JgrKS9&0oAH%j zTzmn?p%W>c|1G10h>pU10QP_@G9kgxbw##YQV3}py+T@y?XV%#YlYXJ)BY$zT_K^Z zR5${9Lh>wMP3TlesKp{QJ5L+>)~n*QNlETcNm@fYEJE}CgU|^R`r#AWWD#1Hvyh%l zt)cUwDO+Sh%{dD_);I`V4+$wX=pA$z>T{Ipum}x#g>;d3(P~>q8*>tRVlqAP{(ZTu z)ud+SAa%xsKBp0yVnTXj|I4DNXfZ2Fql$Nf#?;NB#UW6}FDIw@#Fgvrz%gWcT@`~n zMx<8JSPNY1DU>)}<4C3tlu)l`+7FfXjFj@5q?F&%N=Zi3a}s*u**$&-!3Y%_Af>H{ zq}Hd9lFU<3zUoFs=iXAbkb1F5X=|cLxi(?N0ks+H2R%_&%8^mSR6-`Tl;eKb46gl> zWFDE!&2nWj37OOqj{88{TuGJQnD*B9;Vj(tE#RcNOC6zNCrsa5ez(DPXf!Ep+;71- zL>?v$82T@>kVR@H$6XdFeeUQ}=OQwC#50wOgiK1GIf{^uBgkm|WG)p8WggkluqqUa eXf;Bi2>k|CA;TrbwWWXn0000|k1|%Oc%$NbBf<0XvLn2z=UUTGPP~cz(#q8sy1`p(u}#?|$tO`(ZHsRK+bh;Pn| kzu}R0%jWwN<{!rx1O3`=oI3ka3urupr>mdKI;Vst0Ape?I{*Lx diff --git a/src/android/app/src/main/res/drawable-hdpi/ic_action_play_arrow.png b/src/android/app/src/main/res/drawable-hdpi/ic_action_play_arrow.png deleted file mode 100644 index 326a6aabc9ab1dae84f0a3521c76793a7203bdf4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 272 zcmV+r0q_2aP)yRb1%qJYwDO)=8Z(6|k1|%Oc%$NbBbUj@hLn2z=p4-UFz`${M!@cuY z|1``vFm01MW5SYYMkyyIC_1zopr0E?L* Ap#T5? diff --git a/src/android/app/src/main/res/drawable-hdpi/pause.png b/src/android/app/src/main/res/drawable-hdpi/pause.png new file mode 100644 index 0000000000000000000000000000000000000000..6ddb7c013335ab57312f0b124efce9c446cb40ae GIT binary patch literal 603 zcmV-h0;K(kP)m`kx>s9FGHEso}ye$gGYd>4Tfah93z<~RT+jeYciBYz`X%<11R5M zsEPW3E{3{kIHR!`dNhD;0p%GCHB&F^O;_gN_^lz$5ZMv3Ye=~~*ck1v%M$uVovSx9Sm+8bIYdW>6eE|Y*U^MLIl!E{O002ovPDHLkV1k&>4X^+J literal 0 HcmV?d00001 diff --git a/src/android/app/src/main/res/drawable-hdpi/play.png b/src/android/app/src/main/res/drawable-hdpi/play.png new file mode 100644 index 0000000000000000000000000000000000000000..c33d6dad8e236c2e29762f39ca3bf0a2153589a6 GIT binary patch literal 672 zcmV;R0$=@!P)B(ZX=nZ&;#z~if5261x9Y}qghe1ixRJ`yLS1BNV zY&ecnvHcGO3L(=*;5%>`j^Qmlfd!<#*pxB}T_xxcTyTT` zwq6Eh%OsTJp+4}Jj(XD{+omLLo`dJBSC*6ampl(x*Uf{?=NFAoKvJ7?0 zhfN{%Nu!|kQVLu7Z3*evH0%MApLwiE^JwsE0REfxQS`R#cVe;Ca0^G>Sm=y(XbnZXAS5?iA_U zkH^)$OOn8*X9I*qagn00008zlLtAs9MyBJ6dDk?>A>tIaj)=Z`1 zAfgE3AR>a67BQl=t?~1fJ2V8yWN( zI$;u0OguN$ztnR#J9CVA?2c2p;;j3nq!1GyGGH7=-GP6(FGB*>S>R74Vyqiy-Yhix z=C|EO=n)f=&=&}-)V_xq7C9?dDhwexEW>ZKG>ZiA`fRy^|pUbw81oY-@LpxHZL8B;yJO^c{ z16KVdj8aHqS?ERR(6fwMXbq8mgjB+tD@q}~X&<2vp^K=6)YuC!gv_PCv2ADQH^H@? z7(_(<6X|QOtfXLGQpJ88ZDr^Li7xnN+5vq3wL9*E2 zgsmRZzk3FzAzkjy@qaQ@Prx_u()Uf(E7~n8EBm)8(Os5ICy{QL0-Y2NT)EGswihPJ ziZi5znOwu|2{ge5B1fixrsu5rlrc-t;*M3;pR@K?|6H5rvRVRw5j_ZYy)cZg3$-m_4mL#ak+QK;~ej~D0tvu=H5B)dw%oGnfIKDst#F;4jE6?F_7zt z91Vx^`Fsm^au;1hOK2sEqCc*?E64Q`hk!Xl;$bv|biRiA0a`A{fUX=#KurXFL_HS# zgX0)L)2?KDUFSxtx!#GMp;a_P&duVOB%o$G<G{FCErg5UcB0aHutQ}ha*wLG(W z6696>|1BsGASW2n9RlVYBQBzwu93?ImsYXXb@>4`!sKdO6riglY^qy zhs0vMfs!0jg@1x3QM?pnWh)<$M#d#UX*tlMs|8t$XO`v-wCBeOExZ890MhbOTpqlEyf$bBk5E-zZ=h;cM}bufoIhfNwpD0f+7@<>PIs)M z9MX002ovPDHLkV1n=oIQswq literal 0 HcmV?d00001 diff --git a/src/android/app/src/main/res/drawable-mdpi/favorite_0.png b/src/android/app/src/main/res/drawable-mdpi/favorite_0.png new file mode 100644 index 0000000000000000000000000000000000000000..b623280d273ceea9256a23b404aad796500177d3 GIT binary patch literal 594 zcmV-Y02z#l956ouH2{)Qih8VL<|yWc(Ij!apc9_Ls~<2pw9HpulYm??DNl<2Yn?9Ah4bA`|$>?0CS~o0uozDl`!HF-%|( zLpLN~1jnRx#j)yr_c%ORVs4qrxTdf@u3EXjq`}Gd%ftN@SWH@VI_)Un1?xt!JI_5WrV~km(y@6 gkyEA+r;9Ie3@vT48IDX4kpKVy07*qoM6N<$f+=$bE&u=k literal 0 HcmV?d00001 diff --git a/src/android/app/src/main/res/drawable-mdpi/favorite_1.png b/src/android/app/src/main/res/drawable-mdpi/favorite_1.png new file mode 100644 index 0000000000000000000000000000000000000000..31383b591408eb64a8331810b11bd623409f1ce6 GIT binary patch literal 539 zcmV+$0_6RPP)c|8u_c7|WC3W+gbk=bs9M!{H1{*9(1+1RF48 zS=ODD6niFJH}pUbtV6)IJIfwXA_C=iJ4`?!JSk@pyoW`&g%QYyXZV0DWuK-GBJ^&H zxCKfv9D*bq!!f94+)BR;xhn8c&3IDTo9R~}4H}6%)(HeK41pgOa17gytge#r5u`vH zwq4t%L>lN11Z+(@fl~|>IHWp*O~*{)0^bryCC8`4xl44;w<3($rb%6^kQLTRsmSpf zO&}!8hbkP-Vi95Xve7qiMQpjQL@gM$VGDdX$_X)Q2+ZQx4}-+X_`A7Fl*hMyD1#37 zM(UJEUW081)UIQ>?k{zFU7)C&ZeiyJkSji}3c^1+&LUI&Wz;B=XSOvTUbitBFK%RFwzW4r<~ky_XTd8&O7a=uk@2{`sdUP~{DWd%mfs6+7@6^3|GtJHQUbEoVulwembN>H#&wcNX6Uy;$a;zWvrv|R;me9Hp7=?V; zg(b&v?xdx}OPPjX7%E@~;yUhads>Sql;6ED2et5|lEv^I*5DSVpa!1d1IkoJse4B>8USLrWVbg95U~V8KS6oFq(QAVxnM=nPge&9xj0#RemJ z6*nQK-}~Phgee$=b%TK%6|;!HnO17`f51ux5Lkh7CG?<#zhB3o2J#@Sa0qf#_e08i vRs}Nf?1`L~VT5G`R>P`AR!WAXzi;pb!|R3_L~6JQ00000NkvXXu0mjf3!mUT literal 0 HcmV?d00001 diff --git a/src/android/app/src/main/res/drawable-mdpi/favorite_3.png b/src/android/app/src/main/res/drawable-mdpi/favorite_3.png new file mode 100644 index 0000000000000000000000000000000000000000..9f5df373e7b715d1d646edc4bb49c5534b04737b GIT binary patch literal 457 zcmV;)0XF`LP)naph2`KD5z*q1U-;LY+~>b1&j5<6@x{a-DDOK zM8!{Be}B1!b#CXF+vUm){F$A3^WJag&CXjdRpaK>IDV>50lx3Ikh)nkj~dVk%6Xo5 zuashMrJE_OX`|1hEcOR8<^NKIqs9|x3w0TbpBV2WL6%UbVSi-2TY8bNz-9t^FkGOH zn1}z0-!MD5v;ndhmSYAF+zJ3jY=A2ag9!oO_%{LhQ5-WxH_Y`W1o-%80DMFN&X^oe z2)HG9w=G4Z7|xMC&A4q1z_tz0j-i11Vn)BiZwP?;zgAW%xC;Z!U&jPYuzX*y8d8K{>P;KG3Rn5K5I^q#qTLO7#>v z4a$M-?KSVTgAgdgbDF@6a1dd=D9ppv zxs*X_0Rz{8U`DCV!vdQ^lNYpTdz4LDJ#WU7zbisEEb`{cn=@ll)2B4&`641QGcGP+ zi7(^vbgazgzBT2+>Bf)Kn=-nSocq>gzPYeyz0$uoTK3NwqrxTJjcCpDi pxPo=DSWlD#H@DkC4Fx_1hB+sE7cO8c{|Hph;OXk;vd$@?2>`@N7=8c% diff --git a/src/android/app/src/main/res/drawable-mdpi/pause.png b/src/android/app/src/main/res/drawable-mdpi/pause.png new file mode 100644 index 0000000000000000000000000000000000000000..8c44a3b85a751a1ecc0bff5ffef5aa59cea286fe GIT binary patch literal 372 zcmV-)0gL{LP)G6CgPftU@5ZvoZ+L{^Vt0Z=iBzY>T;p^DxD zX+xl<$2c6q3KZWB#P(467eHDUsQwL1J-P+?K#2)xhJkz_4Ak@&-4dXKwgJUF(ZoTP zNCVaX1Bs(s05XgZO#?`wAW*|6EEYTg8HUAoDnRvjv03mRi(-5hJO`?mz@kSRXu-8n z3mAZrJQ_sc^f8)>5ZMHnDn>IJEI5X7QSk@pM`jX=Yg|Qz7O*tEj;%DsR)PG6)(2m) z)CX6AVp>>=YZ0IYpxO|l!Vv(9-2!4!s3uS@E(0p=#bOAkumjb_XOJo>PzZzo)o+BU z$Efsynk0de5kSlf#K(Y&_h2&|CI(cm0%QjQF*^|N1*$)etR8Et0-u4T$^ihN-18Zo SfrU~40000I9EY2!gS%hAO%VJbf`UVFR1m4?A`Ut@cCdq!ilb9?@nurPMHIh)78NWVtsvq% zzM<#y7Y@#N=_R?lzz;$$d7dOqLRBH>qI7-`1YNXsk_)BOU0VMi0q|ac2c&~E$RLul zG!k7f25cn){Gz@<<`Lcch;+d?kfj*VJ8c7GACX9{i>*L_A7q=%B5B$hTm&IgRx?bt z5WOXdd<4S$B$s3e$w@njuOMVTQJEt(L^pAww1SZNK&2bWl`hc*WjZV;?W^JYEA4A! z3XuqZOO}F=xksfRi5!Mp1jlgu5Zvb>I0rfne8;p!rkiZ@vux051o&gLa~7xQ6yOZm z1s)`wB9|3B16u_;*=~8hD>wo=LFx#;vlLtdtCB^)@?0bq+ZD*(%1bJI|-sO~CSGI~83}VzgX$X_qZnCuP7dPSi+eT~OrPDCr?Ja_F)hag+G>uflhxrg1;u W1d$n`=_dF90000*5a~+ zQVT%l{s-b3AnpKK^bg%4YFGd>^DB^H1hnK9vL)2C0A_9mkTC~n(Opidt&0#H!^s%Su&Dj2BnAF&qTQb+$P glTsI>>!-O70E1ws87q!3TL1t607*qoM6N<$g3;}c1ONa4 literal 0 HcmV?d00001 diff --git a/src/android/app/src/main/res/drawable-xhdpi/favorite_0.png b/src/android/app/src/main/res/drawable-xhdpi/favorite_0.png new file mode 100644 index 0000000000000000000000000000000000000000..fe12733d6037b9c6bc9339eb9502870eb382f70f GIT binary patch literal 1384 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 A>Hq)$ literal 0 HcmV?d00001 diff --git a/src/android/app/src/main/res/drawable-xhdpi/ic_action_pause.png b/src/android/app/src/main/res/drawable-xhdpi/ic_action_pause.png deleted file mode 100644 index fbdee8354ef0723411aebb21704719890d02a995..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 162 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpUtOivfbkc`H+Hx}|TC^8%k2s^Hj z_v&_o(h7x_-V;n}PD^-BdZL?M{OsUgPTsrQE!FuWE?h8WklMxO;C!7Slo1`?|x>U_dm*KlFIf!rg|S_i!51Z0xf0mboFyt=akR{0O1BU@&Et; diff --git a/src/android/app/src/main/res/drawable-xhdpi/ic_action_play_arrow.png b/src/android/app/src/main/res/drawable-xhdpi/ic_action_play_arrow.png deleted file mode 100644 index 62d2067cbda361605dcc65ac2536f3a934599c68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 288 zcmV+*0pI?KP)tjG*Oq5r}mI zRznAm^dS&i?h%*{8^1q+YRlb7z(BzDE9CYgcHKtZ{>a>p60V0ix8t3XSm mdscCM*m8eb6ha6gL|Z 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 Eg0EvMi~s-t literal 0 HcmV?d00001 diff --git a/src/android/app/src/main/res/drawable-xhdpi/skip_prev.png b/src/android/app/src/main/res/drawable-xhdpi/skip_prev.png new file mode 100644 index 0000000000000000000000000000000000000000..76b0e176c7af2f21b9af53c90c43c04024d0e6aa GIT binary patch literal 759 zcmV63kGY-Qoj138umfLq?{4P3?|0stnRgSkGVSfrtf((Ng5;Kw@E~n2)x7Cs74Aw{w#K;!EKAZPJHecN&w_B&z3#Cu`446fQ( z#{8a-0LTxA`F_TMeB)CH;*#UDU<7FV=TMEnTlVC!dNT@nNtI8a?&+B!8d5-h*E$F4 z)E~A*uq5Co$yPVem_txR-Ol7y$%y;ceHG0M!T>*Fad5Z6Tn~g9!fu zgft>#;eG*9q-i$QT`0C14cEd;*vn3(wU`?xpgQdckrG*oHjVAH@dCn>l3R^MFaTT* zw0s0aq9N%t4`i#&(()A$Mx&eOCXhetX>LeK^g4;}Hex2#_+}*s=(Cjlp|qQzdEtuoPLK{}7nN*F@Y{n*h07 ztu4%MVf15CLcaUi1jr5{x5d@=74nySlS*UXTAvWoehgj&d*D3+exz~WyRTJ%Zvw9N pO98Gk=sLcPfa?spj&J%18~}HUML>aE!ao22002ovPDHLkV1nqvQjh=u literal 0 HcmV?d00001 diff --git a/src/android/app/src/main/res/drawable-xxhdpi/favorite_0.png b/src/android/app/src/main/res/drawable-xxhdpi/favorite_0.png new file mode 100644 index 0000000000000000000000000000000000000000..23247b3688d857a1b9fe54dea094ebff578c7cd2 GIT binary patch literal 1930 zcmV;52X**~P)@6vullwpwY@VvCg~f+-o5wonF983wj5mhD7E zd$w4%YdtayG>RzN?e+V|d~)A7^Ud5l_gjK{;Bde9&CLIt`G05T&Y79lv05c{8R)3^ zsn0+~P#{7of+~X2CXp(FstBqgD2;(Cg3|b_=AbHqst8JBpxF`B)z!5IHV2}cq3fZm zqrad(pi4VCI=)Zok-^`_;BUxtUG!IDV=?&4Qt<7zrOZJ%EfRJ@&q7ZOIQSmrH=)nO zb_RU;xeIy$?yl7_ zllZ~>eHywOx@jIKt-1^O`(gAhYbe)4eo0`i~#@3Q0K6r$@vo06@{Pi{ZMf9V+JLfAdD)6ze9UDP#?tL zF+ppY3g8XmPt9W*ej$0%kgwqyCEyRG;_K-8jt1lKcV-Mw9)iXIxN_KJz+c7K-Z94P zI&@+azWdhmOV_H;0{`TK`1{lDX>={C{c`^93+~?`+&lzn2o13SH3|2^(4QegzH&&? zoA3)yx!z=hz+aJoe-CY4i`S9hJ{!V~B8X0G571%<*ldi1R?Z)CC-L0IC>~1#z`^{V+p2}c9PtgHZ z@j~$J5wQwFEI|`!Io)c#1OrMM+g>2(Je<7N;b@Q0+botKkt33_67>tT1A7p31b#f? z@TFgNE#>kxmLR17XIlXC0e8(C?ZAm^_`czAY`f69Eta6EfKRdvd;<93wqwKL5D_$* zuje|7^s3j|&MUD5jRnC@^nL`q_y2?-r67|nUsvG&nj!yV2~r;Qlml!SMwENCwGcti z;h^@Fva$f*waHgkVhP$Bl$D8L2Jr!m92+vy%5sxnYfs4DI+=#=_O!8zt5F206^2BR zh|0<`jA-wM+w59sg)| zGFoyIWTHqrh_5)TXnenb69+|mP+~>1`KC?%9uC-h@#}=V<_ZyHNV<~eMIMrLsuA3b z%Ij>s`est@q|U~Uddjy3;FI?R*N2@#kWM7D(6X2CvZYCTG7eo;CJ8<)$kDLZnf&IS zI{ooQ<+-IWK_-gin6_fKa9IBDY#hg28&$a-twWAZTXZDk@b&OCL-2xC_yHYbWo=QJ7+NPX8IF+R~kk+S?YjW?GDDDN#B( zGEn*)WOtSh>UL_k`-ho2dIf(<=bXn!wAKAbMThV7VIpNSXdm1ejEPiNorV)+B1w0F zK1N*`wyG?mlilt+LXP&4mFxN1=sK`2Pb95#Lc}$NAVX4ro*$vUc|?211L^SZkaIPk zb>iS7=V2K5<3^~f$n<_0K$dIJ{B;9!o?eb~Z4S^iZQB9YY z5oAb`ecd~{&eLjNvX#fBK literal 0 HcmV?d00001 diff --git a/src/android/app/src/main/res/drawable-xxhdpi/favorite_1.png b/src/android/app/src/main/res/drawable-xxhdpi/favorite_1.png new file mode 100644 index 0000000000000000000000000000000000000000..956ec7c3e3b49af71b0e1f5c943fc463fbe9b2c5 GIT binary patch literal 1713 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 literal 0 HcmV?d00001 diff --git a/src/android/app/src/main/res/drawable-xxhdpi/ic_action_pause.png b/src/android/app/src/main/res/drawable-xxhdpi/ic_action_pause.png deleted file mode 100644 index 8ac598d28b8b89a4108e0a0c664a26a65bae125f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 202 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!6FprVLn`LHyX)fztF77kYKrImW<<2zpAblrB^ zCk2$MiyPu=`s43_`q;z^T*jVyt+m6bfKo_ZJhH>TrvC*rTwibzdn@%=)g%G+4OY7q zoT<}hJ(C8Me!I`OX$Q?s(*!ge)H58z?(!{{HA_ILI=GD^#k(%3NkE%e$6H(|-FPWY z0vfIj+`-|p?dLbIfcp4}H@JoaB?pnyJOfJA!xJ1WIF4*`1eEG4u3}%Y(PWS_pfoo< z#raYLnz!5mrPZ#3yB2V6DiP3dP%m-H0&Or$29&Cc`#4@;e2vuzsBf?(c#kXjhuBQb zfIb*chcJ>DM@CfeznFE%R%5AeQ-mDmIE+)Hhtmp<<)SAV)y!1}Bb71;>$1 z9CwT{&jYi2w#ipBtm%>K4}8R>(v6oAhxTL4dhPQZC+&dyv1u<3J6N_rJK?6{>UoSw z0$MdVme^mZ$Evn^{?fx^@%&|EIPrk$w^2{$cNA@eFv36`T+c l$wLSsgb+dqA%qax;1}a#b8*acw$T6p002ovPDHLkV1k7r|C;~+ diff --git a/src/android/app/src/main/res/drawable-xxhdpi/ic_action_stop.png b/src/android/app/src/main/res/drawable-xxhdpi/ic_action_stop.png deleted file mode 100644 index 17da4a363780a5c933e8bec01e68b0e9f9a88fc4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 196 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 b6vFQxp#~&p%DCFb00000NkvXXu0mjf!=6cq literal 0 HcmV?d00001 diff --git a/src/android/app/src/main/res/drawable-xxxhdpi/favorite_0.png b/src/android/app/src/main/res/drawable-xxxhdpi/favorite_0.png new file mode 100644 index 0000000000000000000000000000000000000000..7866e757c6f6ec31b89b21061a4a05b722a13810 GIT binary patch literal 2937 zcmV-<3x@QGP)Nkl( z*~Vv^l%0^o>-YQSJk8_nKKFf}dwI_DyzXn}n)myj``qWc&hF^WaW$=CAdj}By#^1ldH^Mi---GAjYca;( z+ZqG;52222;mzU4zz>5T1m73FCwvR6oIk@qf`15q9=;6uc8cDpHvmF!)9^>Y`-X<5 zHbgMq1fP!~Zccd_`Hr%+;iH0ldwVMVmKP3(FGjwdq;u*802=>zG<`Mv!eE59ivO4j z&VbLs5Pz+z4EbAA<`wXBVMkgUa(Z$^z85|d`TuBB+2VIQ1t9dg-4XJh4jNw6&Q<)l zGkiUUaK8Q@LjK+P;Yj$6T^ebuuA74V>yR%nt*J8rXuONt$?z*%YgJx>^R&~_85qI2 zdo>~d5&U@vyeq6OebH~IcqOvW>_R}709=7WJ9eQ|%{q?52(J&ucR~Fu{FIvSc2Vpg zJy#PKQ#aE5LLp=}W|9ivMw{Fe)Qj586TmzpC zU%uG0LWj-x{Vj=LZbCg@OI2i4z7+r{ycHE)T|@Y%Df3}izxsDo<*D~+l+lA)0YAK| ze2wQ{r_5RKmB{}^Re9vQSJ@+Uh{siw|02(KrQY9H)m!wuF#sreFDm??!Yc$H&GQpb z@SiCPhJC~`-uXDZe#*OJWu0c6rjAW@AA@|`co}R*i;<&hf9iKsB~u#!wh6|$M~T$^ zP|Tj!m@vcxc=|V>efj-D zl&Nd1S_%gve1O7k^vd)$kmrIxYwKC-8q`TScT>y)kmXU$Z%@i!}kj z9&i=>jEEqI>hp_21u2Tf%3=h=497&C+xxaf_BXnawYUysyI1)E{K!cChavl<6xmGx zFv9pPSiil9miN*7M}oq75c9m;SY3tu-a^R8H_l~rw}`Glwy~<()C7PhQhRKe-GBmy zpqDHGz)NV{xv+;ii^(|ES}CKy2>`}>jQbSPJi@nJveu_z0PyV4{#clMZERrFv=%i1 z;APYt^Dr(&_-?f%&uF3G4b7vz`;#Kt5F6+b)uJW{)-rZoY;ln#g30}E<&_xaS6Avo;@U#uSh9LsNSfQxMRCEEV1lr}X1U`+&g zsA0^$h|Wfd*hVEqx2Y@(04}f_MwB~>w!b+=@g@K`^?V36C{{#`L$fK0=O~NuH$|=o zFh$d^yYI~a;HxRRB?DmPC}P<4tr0=S-Va0(^Jta~g=p-jXi&___$kk}pxwVtX>?Nn zmLcS45kam4SEGojfJ=q|z`6Z1aO?oe!}%A{?xeidMgW9SP?m<`G2KomV~<%91OOfg ztte^C?zH#f)W)^}U?YUh!-i;!$h=BDqS`)js`8U6kMWIfc>rblN)dVJzd3D9I`_7s zHUOy1`Ec3J_au}$Y*L2mLk`9_x@&C54C^BD0LrWgH)qMz7yu=qoU!lAOQimhXWOBi zJ!B?{HlB#$hrqGyYNuJJpUR}+A_KGnAb?PnlIT(0`Y5<+mJkR>uZG@DODS?YZH}(z z&TZDZE&wno*63ha0@cTOz6XllIx8Rmz%$X+c|R6*wke)JA3(eAkf~j_om~K69iG#! ztPuKkp1&4l8|UcMZB*NG7~kE#=iUb1V&qL4H(rf0;zpIW2Ed9?*yLKXlVjnD)y3e0 z;nPsM^NfYIMjyRTTMRQ_3Rflj?n9Xi+P0+=00Ib);;&PY!MYfEXs*XF-<83-tS9Vt z-$k9?u8ENwE#qA#5x1r;0kAGl!`!fxk*Onk4UU+pp9wn<362G9{|{Uyf5I{aT)!RhkMc( zql?)n^nBy{ZWv>`diAr@?1H|vj~nYWs&fDo8Wv^4vQ@eD2K4l!%{H4jp{M@6>GNJ? zEhF9M73gUgzEkQ2fB=F=lb#(LGb*E>hsMo!+Omqug7J@`nA2rh&-WtWL9kb38~gh) zb$SCJfZ&xMPtU6EUOA_l()g=MfDq<Uq`G&Jc%DHSk`Z%pSkuv1UfC2sGty{apZr%2b{0SF-M$zPMXyz)~<-iY6-uaOXX zzKd<_G;gGv8^sIZz0f7;fF-puawK@9+37w3;tmiw= z8{;_=9g;3vq#EDy69M4%Znd!BbmXZ~*`jB0lUujO0N-uWsKxJKeAghu$}Xm5WY2f8 zE!zoqq0;SjOcVg6VhlsPPDfQ~>|S`&L%FEU0vKFkFHP(PmpKE5mR)d*q#tg$ z`;?UP1dMMAr9FE4iuzq-{qTl!zQMwYQZ@hr2!7Yckx-RS>B4v@2J&kxm4xw)$X*G1 zv$2e<*N=Ww?Sw03HZ719fB?es&;$L*Q6PF=dR%R^6_5Wa*Cj-HJ{> z!ju9=b^rnhPvY;ja4hG3yiKQLutIMJ<9jAy?tbhR!MoK(7N?>QVt{9bB!H&A-jy6 zyY1=QW5io{&!f;!!d06*qnd`mTYclFlg5ThrV4;C5=?+{$Lvjj)Sbh-t+y zAezeJ$(sLeLIPxT)x#98RZSgD

x9!H=&Rvp=+<Wkl^o@$y20LDgwp#>wG%VDRd#iWn#>6<-nh|d%NHjKsDX~<2Ri?jE&{CJZWBTj`4zTMRKDOQSstIEzC096f|wdVr>nGqWR z7y!s@fz0BE5ikId*#eox4BEJ<}^tYzQVFp(w8m~2IsTMN?IWyzjB%M21( zqKqY3W*QR0M7A1v+<(IJ;+*s1bFS}ou5-?dZ<3jb(MgumEC7I$##ar@kE`>40b@GO zU$etd0KnIb4K7=TJFeqd#{wo0{eNcl<&w-Pt(Oe0n3vqWt0*%_;yD?_=1^98dLp|# zO_|4mN8sFZxpL*X67f&sDVIGEmdd$`D(Cj(w8W4&%L^W z=R0>Jn3CmVKWPeXZki1z4}IGPF*U{Q^Q;2^jj5$W^T?+_?R&@#J8AA=r)$b!24 zLS{C=v#aa!Q=bC?q<`G+`T9Ua0hmog6Z$x`$VYITRi!n2-;He4oeryF{VTlhM343k z2-ql;qn}#T$$29xa8sD%W97UP&UtY3Ll0|}%e?|YbZPg5-FJcqGRoi2hv|spXdq@Y zVKZ?vHio?xSKBWTHsg(nbOdRmAJ_iGKhQj0FG zvf;*N?$R@8+TCOJ`i#_G+5zh8Uwl?Zpu8Qww)#Lz)AFaya0+by)Z&+`wq+)OxX)j> zB2L@rhX2ER#LJ6^bH#e>l?cIOr>9s1VB#Hv0v@9|9YqHDB8mvcvZ^Y1%lt+3gs)^y$7sX&+FU-5m0k+M)QoKUy6x{xkw+F4tW zB3tf3W1)1&reA`_W@_9!k9`nMe__Bg1k)e(+@;Axa5FBVO4 zV-y|Q=0?**)mRdv-=3O3VClH?p`CS5eHe8^IIBI1ZL8_$wdq7Y$;b&TDX@016bWvN z;xmAX)m)!-g27ikA@X$tRi?QHY?y8>JfKJAd;FnhtSrfH- z8}g?{ZaGx3gJzr`*~W`UjMJjKg! zRY&Nv)bc0pIGyy(%Xl>I>yl~o5NLBUe$U^jL^WTw3QkxFjrkvnc-h0^L!Q1 zTz%6+8rsc>oWF)ofevBnhXgIstsCzuCO@nkh5&_mx7o5}YccxH#kFWQD6Ts0uwG&B z%|5Z*=hOs*JVz3;bFojP%{@M2>Qh*E+V=kM4bxZN7E$D6>7-+E5#O}+-yih%+yCR@ z0JFIb-CyD2zSPUCT9RYK44|INhK%;f7&p|#>wqlu9qYXQFyjR|F8`%^0Xq=cZX;C{ zt#NA01U!Ca6F3ARev|gX{50k|JJrve=OKj_29CNTs=Zc~xOOfPyFBDM(w^S2jF)?h zj9iG$Zhz?Dv(gC&@hN-z^tg=g-Mxb?yxery1Nlh~kVb9c=&|bhquorn)L*I&GzB0c zzKDj}q6V}?Gy46<>MRck5gt1JFv!U5&rh}FDG0G}`Fh>udYM4$DCqb6{L71+O4sIHrH*GSQ%{&cT)rLxEfHZt5CE7_vZ#6%Bm+5Ik!i}>o zRAXr@LTIQaG&^Kp;DxgN67C9M(ha2tx^`8WYt<@;)@D658F^77~(x2ayGCX4mkP_RbBhaMmb%V_jN zX*&%gsfqH^B}`X)^l0bFj=q5x$^jj|9&bl%W)MJD&*h2Vh)G(4lr?|cN!K=)m5cWp zJO!sk6q0wpQBHs{=|4rhfB`o8tyVvy`^_z+s_nb>8xjFG{281b@)Fxzo_oA5+hhVF zMAgzskUbSo89;n2#F&V9x#=SW{$R6RK481mqvLtuj#YGTqvjR^dkZ?_}-G& z>4D4`MS9vSG}E4nJb??EXM1t$c4$cc`#bZ9Q8Y?t?X{tBF_MAU;aZg@l%}bYEc}&J zUpNwW`@p0b>*Xq;j0Qaz_lHxI@<5*-iJ7^W^!1=&rJT%{t^On#m5v%?>a!uNzfLCS`3R&J z!R)K&xgE)>fI9n0b;_=~Mx-skC|zRxQ}h;DvHef>jvcA9v;sI^Hl-CCW7$2={h&2w z+fyTdd$PFK&-t@|wK$=h%`cQV+o+}%=`@tCdQb7|-D%90mP5Yl5-QyOa|P5He|da2 z3KS@~Lc#xKlAJ+79W%=#(Fh{Yb>ZOQI}&AXDvGHnyHk1W{(!Nei9wB?bL{^B@>JH` literal 0 HcmV?d00001 diff --git a/src/android/app/src/main/res/drawable-xxxhdpi/favorite_2.png b/src/android/app/src/main/res/drawable-xxxhdpi/favorite_2.png new file mode 100644 index 0000000000000000000000000000000000000000..50e56093ca0a01e9ce50db32b57e94539ec4c3c5 GIT binary patch literal 2359 zcmV-73CQ+|P)G?|Yu}J?Hm5_gh1|XhA*D5R^TV zw~GPf$3unXiEY#H8mmlCc;L-1_rp`AA`U3b4^1-!!+#4E@2GZ1IKsr{7 z|F0tWlj5vM4N%5AioCCIxNv~bN!Uu*(unY@e*P?cBdieK7aD~na>j32ogx066h|+i zyReV2i?D;RwXnJHhXBt{!pFi#!b`#e@lz-Yv%&;0r47fA5{8(Jx@H71t`}y>5vyE2 z7C*JDgD}SMQ`%kaTYYeqFjxE(lH9Ej0hIaumD0bLM)O3Cd_b5Y{@=4i*81CA1u&&&E;T&`dC5thjjwAbsH_&3!r zMhn;G>7*8Mtu*{g#g8zVEjIy_c{;Z{g-bH0s&oXj(=1d*BIy1p*}AhYWZy*!A6Mxo~#jN7Qi$+cX^b2 zMjf>04EeSd7!kRq=N5hQpm3jXoTD=s-7xZ^b7dsNh=?Jwt^J^YLnOjH+Yge$xn_91 zI3&Qu`sKZri6FDHg$YXd@|NEyo}Kmo^917C%Q8OKVDuX=2-Adxtw&Z$LpS~YCPy)k zR6K9ECZsuhCIOV-6BW^O7Ua(=%%cM1>hH>hSG|_l`~C&*so0ZSM>LOiue0+@h1JhBYkz&~9QXyy@}^v#pP z!7ksn2um|VGd13I_-Oda;{t(#mS)tdVTzwx2+vJGt^zq#S zCDLVdLx~(GFn0G|S`a@SJp5;u$OK%6h=&o9lX(eXO2?;S+PehXF#T<69^+;4Au^q9 zDJQf{3Z45PaX;bYjg-JI z3@C0E(&+T}Eb$3V9s=YtQ*Fs3{)zfOYgs-B*- zRN#`Zw6Jml%M910{GHO*OWbee!PPnraWhx>P}n^s{wu|On+vy(0IV>+BQS1HvK~d0 z{$?W6AEb@Em{=_qe_>0=;%A+U)!igpByQHKtj$M&0~LE(HCv$sumoMVCIQY-=4J?N z>a;f2soJ~Lejfo??_u31$r?p|Lfv{_8Iu6Vn*66Nb9ayrST(gW9|0~<%xNQx`6BOc z#ayF-%xI`l$!C6&WL@L~MnqQTBfy1?6Q7 zB4AU4HT!7mdSHwMxWUCKJ_6A6JR-0t7VUozF#GN%0bX};in9Pju8{!Ct~a|7wSlmo zDUZiXfUjKg>MKAek<|NW$Hk9?Wpn;43E*_D)k^?V3o3mK#nmB|4nIK7pX*ARMS!j% zYZO?bZR^ISe|HJswC|16vIxLgnpr|!&wMRP78_8Uis0mjvv~_(njzM{7do@n*9Xri zJ2XFK4-F?}JCgvhFKEZmvyYsQ2ws+l033>CbufWr z+HnCL5rUeVG)%m_PQ*1QII{qz8RBp)r<2>#^28wJcXrm(7r6*vMA*YLMJ(3UvoX<{ zCdYG#IJ4y`0CBM!#tF81Hfnl*3BcY*X3I^0=9Flih&7^-g3CG1%o(Xr1hn@@$@#4N zFcuHXp{Ne1%OnwfKHiZ*>Y#=ZPHi`VOA>eH#4(ltS|wL2weGL_sr$)Rn|P^`8@}GxrjHi2n08*pU#$dCMseT6~Ht{ zoUW!hs?&@1u!CT$85e(O`{`jQx304v2Q^VL;xcKyJ_4tV?QCJ zvAD*=8?^b{u&Jm86TpbTyFSzer}LCKdWa5}M?ZMfDToCXz=+Vplt3PNs-!W)W#N!_ zD{_5=$t4rP1u!BUq@PQKv@`cEd9n#hhkLmk&kgvXRuuvm5qJ+`hR{VQGF?9^{_(;j z2~gN=N?TQn%&2V|{tKsh0{3rOJK{oi5yq2e*002ovPDHLkV1h89Q|bT! literal 0 HcmV?d00001 diff --git a/src/android/app/src/main/res/drawable-xxxhdpi/favorite_3.png b/src/android/app/src/main/res/drawable-xxxhdpi/favorite_3.png new file mode 100644 index 0000000000000000000000000000000000000000..07c2d51350d6bb922a9ae121f4398b6e98e34bc8 GIT binary patch literal 1884 zcmb7_c{tPy7sr1yX0w~IWR0<}VJ5Q0ShDY>GAXX;ViZ?|8)Hml@^Y&yS<{dZX|hEM zBU?8k`z6GL;#xCfo47OY-1ootzxVy)obx>AInQ%G-*f)>-tqQy5*3mc0suhN#o57^ zUxWS$1dN~O^W)6`0IufZV0$Lv(t2?sz54}96rZi)a6h65W&32L zTt_DSx*nM^ly0@H-LNT?(_n^N)&wxaZ z%4Tl`MZHv*JQ^tiGe;7?{7~B$N)nre4W=GJFHF>jFjEkTiZC(265P{ZJ_(6L5aBGg zK!WmHcnO@nMRUE+_+5}0F>UHVG&Pfpl=99rbjAwLK#8|S#>eb#r;M{|>FG>$>eL2d zu4P}D-mL2q>!u2%&!sz8re3B$M3!+WR!1Rhm9lsbjyVt8vI(K$FZHUo;uj5=utVNi z%?7_wM`;qdCd$S$6&z<=x9*0qlGop$nJ@zfkBslWu2Xt*ICknckXsUdf!Blb0EB4m z+pf_OW$&6B{A^B2R+$_Qb0vAxTL-$-pR9TbPm7u9U#$?_6K7D6z z-mC!ULbN|(S3lph_v+|YO5CR`S7B!BBZA=KgZfTLc}MZ_m7*vZ99C|avv@OC4!L2N z<01m8kfax5Y{#tDxs>m|VREj5xOE%FKCcW5WtG1!l`39Fep$W8f(QegACy+{hH0eia6y-~ePBRln|$4bf8!^SBm30)92uiA00fY&YbU7`uTm;ykU>S|AP$UT))UF}M+O zvh!>o8C7~nz+55pyn#TML{PX7(GD_{@Me}=zcWZjKoXj?&Cy_YRkmfOMHn;rCYoM! zs$WT!ejbzZyy_Ngw%PuE_^7ENe~H6R)?V+d}mj{UETR|^j@(Thn>`q zcLYwZH<6mwMr`KtYZ5vtRO6ih1Ebw~3^7*MQyxUI!(}9seag&Dyzdznv4C>4yij z-f;p91#6)u9+iG0YG~d9W~&c{liU%e6GO?*{PBLRZb+Qo0@)xFP`WrAOk7pFs#1gq zggDxBS@qCt9TKY$v7xVUre~DU>hm}EXXE)SO`N6dZ05GU8N7VvDeB1@Ix*}?$!&$k zTiDE}61Z+cSMQiM@~oDm0sRqz}h1FrkJ)MK#g2%wT2}9j?wR{sxOISRd0$49Fy;69IE#nQJ3aVtARIQ5y&`f z+><^#Zsjwu*D;c$?P%WAfNV^FZFN0OXKte9i^}`EtyrR8zwmBeeEQR3%N2^b)rtVmgHT|~RV&qLy{6&0|Sw?*1Xrl?I)b?Tn_r*DZ zEiJrRp4VxRg~QOWp-h*I{Od=lfQ4LtHv<~2N=a(_5l85xMQ{TsHeG2uVwJfPe8mrH zURjHJ&0w0+0tQQjC2&P6?zI@O8FD+Kx~JAsEBKU_N`&rKX8q|qb@Me30ME36mX&|` z_o2IIAS@+Lc>S{cd#{*d;S}v$J`7cWw*j3JlkSSuT!v6+Gk;dQ3Namq7=>b>F$TWi z%bK{0jVS9er8H#CN>`76!@i&r=-ZEh%PKCPe>3%Xd$g$KJjV}Dx`CGKE_x2v8e*4H z{xV@J840rTq+EjHye>k9Kt2axQ8}rC$zdZ_!uvc#?khZEXc%?lYxBnyE6DbVdzCw! z!sJm%>sjM7vk@Ak$=D3&O5{obj#gc$J%M(SKaJw_`wq-icsJYtm#cJQ2K7lA2m2qv g|A))`w=wa=H$&T_6&dtAzH0(5r#u~A*aeaQ4Yv7evj6}9 literal 0 HcmV?d00001 diff --git a/src/android/app/src/main/res/drawable-xxxhdpi/ic_action_pause.png b/src/android/app/src/main/res/drawable-xxxhdpi/ic_action_pause.png deleted file mode 100644 index 43435028fb0b360f82113f2795388eb8933877b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 244 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGoyFFbTLn`LHy|aTPv4n7St t7z`Pcn2yj`;Kq}bC7Y*0+`|y_nmOgd0j4?6z7>K*JYD@<);T3K0RV2!OEv%i diff --git a/src/android/app/src/main/res/drawable-xxxhdpi/ic_action_play_arrow.png b/src/android/app/src/main/res/drawable-xxxhdpi/ic_action_play_arrow.png deleted file mode 100644 index e9f92814f0b5a291a1fdaff85dcf0673429fe940..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 488 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7Ro>U|jF%;uumf=j|OseHKTVwvXyU zQd(YFb_`ixOsulDObL0%#rb)qX!;~&OUpO!cIVBD|MWinz3;nwx97@EQ1P4uMJw&6 z9|)@w)Sb;F{J>&QUz%^@C&Tgser1+#XYwy#&_5u#VOmUx_dd3O=ZrVF*R7W9X3{vI zUBH-gBfg!xSrSs;I*2o#3BUF=ar*!NrJ@Z}zfRx9w;=4A_L?=`FO?g9o~p9AG4)Sy zEzmwO?blAuECCxf>6wHul)l@zsm`c`p*1qq_V_8T6rjx=Q%$8D4xWAwFL8uV*WSZ%3nSu`U*u+N}>?G!{X cuU%5UFVdQ&MBb@0Mo$L?EnA( diff --git a/src/android/app/src/main/res/drawable-xxxhdpi/ic_action_stop.png b/src/android/app/src/main/res/drawable-xxxhdpi/ic_action_stop.png deleted file mode 100644 index 20ee1b7bca560084d90d681473ea48ea7f0cd1b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 244 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGoyFFbTLn`LHy?BuGfB^&Z#xwU< zT07gDx~uG9eNzmShk$+6kDjh&FLBtj=W7FB$Mo%T7Z^W&y2fm!5O=T2f&IwoX#N)s u6_u|UWd-!}Z5J@pO7VlQ>@XKG{I6nMUv#ATdu@KbLh*2~7aec3kNI diff --git a/src/android/app/src/main/res/drawable-xxxhdpi/pause.png b/src/android/app/src/main/res/drawable-xxxhdpi/pause.png new file mode 100644 index 0000000000000000000000000000000000000000..df68a2ef6af52043a8e23a147c484b7010b4e990 GIT binary patch literal 1820 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 literal 0 HcmV?d00001 diff --git a/src/android/app/src/main/res/drawable-xxxhdpi/skip_next.png b/src/android/app/src/main/res/drawable-xxxhdpi/skip_next.png new file mode 100644 index 0000000000000000000000000000000000000000..011718b45a5f98002d920b8e4f27bd5a4c923db9 GIT binary patch literal 1805 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 V6^^xPz5oCK002ovPDHLkV1msEU5)?% literal 0 HcmV?d00001 diff --git a/src/lib/domain/actors/platform_integration_actor.dart b/src/lib/domain/actors/platform_integration_actor.dart index 3f011b9..dae0696 100644 --- a/src/lib/domain/actors/platform_integration_actor.dart +++ b/src/lib/domain/actors/platform_integration_actor.dart @@ -1,4 +1,5 @@ import '../repositories/audio_player_repository.dart'; +import '../repositories/music_data_repository.dart'; import '../repositories/platform_integration_repository.dart'; import '../usecases/seek_to_next.dart'; @@ -7,17 +8,19 @@ class PlatformIntegrationActor { this._platformIntegrationInfoRepository, this._seekToNext, this._audioPlayerRepository, + this._musicDataRepository, ) { _platformIntegrationInfoRepository.eventStream .listen((event) => _handlePlatformIntegrationEvent(event)); } final AudioPlayerRepository _audioPlayerRepository; + final MusicDataRepository _musicDataRepository; final PlatformIntegrationInfoRepository _platformIntegrationInfoRepository; final SeekToNext _seekToNext; - void _handlePlatformIntegrationEvent(PlatformIntegrationEvent event) { + Future _handlePlatformIntegrationEvent(PlatformIntegrationEvent event) async { switch (event.type) { case PlatformIntegrationEventType.play: _audioPlayerRepository.play(); @@ -36,6 +39,13 @@ class PlatformIntegrationActor { case PlatformIntegrationEventType.seek: _seekToPosition(event.payload!['position'] as Duration); break; + case PlatformIntegrationEventType.like: + final path = event.payload?['path']; + if (path != null) { + final song = await _musicDataRepository.getSongByPath(path as String); + _musicDataRepository.incrementLikeCount(song); + } + break; } } diff --git a/src/lib/domain/repositories/music_data_repository.dart b/src/lib/domain/repositories/music_data_repository.dart index cf89a7c..e0564cf 100644 --- a/src/lib/domain/repositories/music_data_repository.dart +++ b/src/lib/domain/repositories/music_data_repository.dart @@ -62,6 +62,7 @@ abstract class MusicDataRepository extends MusicDataInfoRepository { Future resetSkipCount(Song song); Future setLikeCount(List songs, int count); + Future incrementLikeCount(Song song); Future incrementPlayCount(Song song); diff --git a/src/lib/domain/repositories/platform_integration_repository.dart b/src/lib/domain/repositories/platform_integration_repository.dart index 6f76cad..f44e474 100644 --- a/src/lib/domain/repositories/platform_integration_repository.dart +++ b/src/lib/domain/repositories/platform_integration_repository.dart @@ -2,12 +2,6 @@ import '../entities/event.dart'; import '../entities/playback_event.dart'; import '../entities/song.dart'; -/* - -- position -- controls (playbackState) - -*/ abstract class PlatformIntegrationInfoRepository { Stream get eventStream; @@ -16,7 +10,6 @@ abstract class PlatformIntegrationInfoRepository { abstract class PlatformIntegrationRepository extends PlatformIntegrationInfoRepository { void handlePlaybackEvent(PlaybackEvent playbackEvent); void setCurrentSong(Song? song); - // void setQueue(List queue); } class PlatformIntegrationEvent extends Event { @@ -32,4 +25,5 @@ enum PlatformIntegrationEventType { skipNext, skipPrevious, seek, + like, } diff --git a/src/lib/injection_container.dart b/src/lib/injection_container.dart index 78d3b34..1c60a48 100644 --- a/src/lib/injection_container.dart +++ b/src/lib/injection_container.dart @@ -349,6 +349,7 @@ Future setupGetIt() async { getIt(), getIt(), getIt(), + getIt(), ), ); diff --git a/src/lib/system/datasources/platform_integration_data_source_impl.dart b/src/lib/system/datasources/platform_integration_data_source_impl.dart index cdba9c1..780dcc0 100644 --- a/src/lib/system/datasources/platform_integration_data_source_impl.dart +++ b/src/lib/system/datasources/platform_integration_data_source_impl.dart @@ -9,6 +9,50 @@ import '../models/playback_event_model.dart'; import '../models/song_model.dart'; import 'platform_integration_data_source.dart'; +const favs = [ + MediaControl( + androidIcon: 'drawable/favorite_0', + label: 'Like', + action: MediaAction.rewind, + ), + MediaControl( + androidIcon: 'drawable/favorite_1', + label: 'Like', + action: MediaAction.rewind, + ), + MediaControl( + androidIcon: 'drawable/favorite_2', + label: 'Like', + action: MediaAction.rewind, + ), + MediaControl( + androidIcon: 'drawable/favorite_3', + label: 'Like', + action: MediaAction.rewind, + ), +]; + +const playCtrl = MediaControl( + androidIcon: 'drawable/play', + label: 'Play', + action: MediaAction.play, +); +const pauseCtrl = MediaControl( + androidIcon: 'drawable/pause', + label: 'Pause', + action: MediaAction.pause, +); +const nextCtrl = MediaControl( + androidIcon: 'drawable/skip_next', + label: 'Next', + action: MediaAction.skipToNext, +); +const prevCtrl = MediaControl( + androidIcon: 'drawable/skip_prev', + label: 'Previous', + action: MediaAction.skipToPrevious, +); + class PlatformIntegrationDataSourceImpl extends BaseAudioHandler implements PlatformIntegrationDataSource { PlatformIntegrationDataSourceImpl(); @@ -52,6 +96,13 @@ class PlatformIntegrationDataSourceImpl extends BaseAudioHandler )); } + @override + Future rewind() async { + _log.d('rewind -> like'); + _eventSubject.add(PlatformIntegrationEvent( + type: PlatformIntegrationEventType.like, payload: {'path': mediaItem.value?.id})); + } + @override Future click([MediaButton button = MediaButton.media]) async { _log.i(button.toString()); @@ -89,39 +140,45 @@ class PlatformIntegrationDataSourceImpl extends BaseAudioHandler @override Future handlePlaybackEvent(PlaybackEventModel pe) async { + final mi = mediaItem.value; + final int likeCount = mi == null ? 0 : mi.extras!['likeCount'] as int; + if (pe.processingState == ProcessingState.ready) { final timeDelta = DateTime.now().difference(pe.updateTime); if (pe.playing) { playbackState.add(playbackState.value.copyWith( - controls: [MediaControl.skipToPrevious, MediaControl.pause, MediaControl.skipToNext], + controls: [favs[likeCount], prevCtrl, pauseCtrl, nextCtrl], systemActions: const { MediaAction.seek, }, playing: true, processingState: AudioProcessingState.ready, updatePosition: pe.updatePosition + timeDelta, + androidCompactActionIndices: [0, 2, 3], )); } else { playbackState.add(playbackState.value.copyWith( - controls: [MediaControl.skipToPrevious, MediaControl.play, MediaControl.skipToNext], + controls: [favs[likeCount], prevCtrl, playCtrl, nextCtrl], systemActions: const { MediaAction.seek, }, processingState: AudioProcessingState.ready, updatePosition: pe.updatePosition + timeDelta, playing: false, + androidCompactActionIndices: [0, 2, 3], )); } } else if (pe.processingState == ProcessingState.completed) { final timeDelta = DateTime.now().difference(pe.updateTime); playbackState.add(playbackState.value.copyWith( - controls: [MediaControl.skipToPrevious, MediaControl.play, MediaControl.skipToNext], + controls: [favs[likeCount], prevCtrl, playCtrl, nextCtrl], systemActions: const { MediaAction.seek, }, processingState: AudioProcessingState.ready, updatePosition: pe.updatePosition + timeDelta, playing: false, + androidCompactActionIndices: [0, 2, 3], )); } else if (pe.processingState == ProcessingState.none) { stop(); @@ -133,6 +190,17 @@ class PlatformIntegrationDataSourceImpl extends BaseAudioHandler @override Future setCurrentSong(SongModel? songModel) async { mediaItem.add(songModel?.toMediaItem()); + + if (songModel != null) { + final state = playbackState.value; + final controls = state.controls.sublist(1); + final timeDelta = state.playing ? DateTime.now().difference(state.updateTime) : Duration.zero; + + playbackState.add(playbackState.value.copyWith( + controls: [favs[songModel.likeCount]] + controls, + updatePosition: state.updatePosition + timeDelta, + )); + } } } diff --git a/src/lib/system/repositories/music_data_repository_impl.dart b/src/lib/system/repositories/music_data_repository_impl.dart index 24afcbb..996f434 100644 --- a/src/lib/system/repositories/music_data_repository_impl.dart +++ b/src/lib/system/repositories/music_data_repository_impl.dart @@ -175,6 +175,12 @@ class MusicDataRepositoryImpl implements MusicDataRepository { } } + @override + Future incrementLikeCount(Song song) async { + final count = song.likeCount < MAX_LIKE_COUNT ? song.likeCount + 1 : 0; + await setLikeCount([song], count); + } + @override Future resetSkipCount(Song song) async { final newSong = (song as SongModel).copyWith(skipCount: 0);