From 498517b2cb7dab0d57623f26daa24b5f6bb11a08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luc=C3=A0s?= <86352901+LucasVbr@users.noreply.github.com> Date: Sun, 12 Jan 2025 19:23:06 +0100 Subject: [PATCH] feat: Save locally all parties --- .idea/deploymentTargetSelector.xml | 3 + app/build.gradle.kts | 20 ++- app/src/main/AndroidManifest.xml | 1 - app/src/main/ic_launcher-playstore.png | Bin 0 -> 16024 bytes .../java/fr/univpau/queezer/MainActivity.kt | 13 +- .../main/java/fr/univpau/queezer/data/Game.kt | 14 +- .../java/fr/univpau/queezer/data/GameDao.kt | 17 ++ .../java/fr/univpau/queezer/data/Playlist.kt | 6 + .../queezer/manager/CountdownManager.kt | 7 +- .../fr/univpau/queezer/manager/GameManager.kt | 64 +++++-- .../univpau/queezer/manager/TrackManager.kt | 27 +++ .../fr/univpau/queezer/screen/GameScreen.kt | 57 +++--- .../fr/univpau/queezer/screen/HomeScreen.kt | 24 +-- .../fr/univpau/queezer/screen/ScoreScreen.kt | 164 +++++++++++++++++ .../univpau/queezer/screen/SettingsScreen.kt | 1 - .../fr/univpau/queezer/service/Converter.kt | 66 +++++++ .../queezer/service/DatabaseService.kt | 34 ++++ .../queezer/service/DeezerApiService.kt | 1 + .../queezer/viewmodel/GameViewModel.kt | 32 ++++ .../res/drawable/ic_launcher_background.xml | 170 ------------------ .../res/drawable/ic_launcher_foreground.xml | 30 ---- .../main/res/mipmap-anydpi/ic_launcher.xml | 6 - .../res/mipmap-anydpi/ic_launcher_round.xml | 6 - app/src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 5883 bytes app/src/main/res/mipmap-hdpi/ic_launcher.webp | Bin 1404 -> 0 bytes .../res/mipmap-hdpi/ic_launcher_round.webp | Bin 2898 -> 0 bytes app/src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 3036 bytes app/src/main/res/mipmap-mdpi/ic_launcher.webp | Bin 982 -> 0 bytes .../res/mipmap-mdpi/ic_launcher_round.webp | Bin 1772 -> 0 bytes app/src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 9512 bytes .../main/res/mipmap-xhdpi/ic_launcher.webp | Bin 1900 -> 0 bytes .../res/mipmap-xhdpi/ic_launcher_round.webp | Bin 3918 -> 0 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 19854 bytes .../main/res/mipmap-xxhdpi/ic_launcher.webp | Bin 2884 -> 0 bytes .../res/mipmap-xxhdpi/ic_launcher_round.webp | Bin 5914 -> 0 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 33849 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.webp | Bin 3844 -> 0 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.webp | Bin 7778 -> 0 bytes .../res/values/ic_launcher_background.xml | 4 + app/src/main/res/values/strings.xml | 5 + gradle/libs.versions.toml | 26 ++- 41 files changed, 524 insertions(+), 274 deletions(-) create mode 100644 app/src/main/ic_launcher-playstore.png create mode 100644 app/src/main/java/fr/univpau/queezer/data/GameDao.kt create mode 100644 app/src/main/java/fr/univpau/queezer/data/Playlist.kt create mode 100644 app/src/main/java/fr/univpau/queezer/screen/ScoreScreen.kt create mode 100644 app/src/main/java/fr/univpau/queezer/service/Converter.kt create mode 100644 app/src/main/java/fr/univpau/queezer/service/DatabaseService.kt create mode 100644 app/src/main/java/fr/univpau/queezer/viewmodel/GameViewModel.kt delete mode 100644 app/src/main/res/drawable/ic_launcher_background.xml delete mode 100644 app/src/main/res/drawable/ic_launcher_foreground.xml delete mode 100644 app/src/main/res/mipmap-anydpi/ic_launcher.xml delete mode 100644 app/src/main/res/mipmap-anydpi/ic_launcher_round.xml create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher.png delete mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher.webp delete mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher_round.webp create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher.png delete mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher.webp delete mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher_round.webp create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher.png delete mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher.webp delete mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher.png delete mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher.webp delete mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher.png delete mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp delete mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp create mode 100644 app/src/main/res/values/ic_launcher_background.xml diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml index d603dda..eaab86c 100644 --- a/.idea/deploymentTargetSelector.xml +++ b/.idea/deploymentTargetSelector.xml @@ -11,6 +11,9 @@ + + \ No newline at end of file diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 178f664..acc1db0 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -2,6 +2,7 @@ plugins { alias(libs.plugins.android.application) alias(libs.plugins.kotlin.android) alias(libs.plugins.kotlin.compose) + id("kotlin-kapt") } android { @@ -39,7 +40,24 @@ android { } } +apply( + plugin = "kotlin-kapt" +) + dependencies { + implementation(libs.androidx.runtime.livedata) + val roomVersion = "2.5.2" + + + //annotationProcessor(libs.androidx.room.compiler) + implementation("androidx.room:room-common:${roomVersion}") + kapt("androidx.room:room-compiler:${roomVersion}") + implementation("androidx.room:room-runtime:${roomVersion}") + implementation("androidx.room:room-ktx:${roomVersion}") + implementation("androidx.room:room-paging:${roomVersion}") + //implementation(libs.androidx.room.ktx) + + implementation(libs.androidx.core.ktx) implementation(libs.androidx.lifecycle.runtime.ktx) implementation(libs.androidx.activity.compose) @@ -51,7 +69,7 @@ dependencies { implementation(libs.androidx.navigation.compose) implementation(libs.retrofit) implementation(libs.converter.gson) - implementation("io.coil-kt:coil-compose:2.4.0") + implementation(libs.coil.compose) testImplementation(libs.junit) androidTestImplementation(libs.androidx.junit) androidTestImplementation(libs.androidx.espresso.core) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 31b2726..a8b0376 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -10,7 +10,6 @@ android:fullBackupContent="@xml/backup_rules" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" - android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.Queezer" tools:targetApi="31"> diff --git a/app/src/main/ic_launcher-playstore.png b/app/src/main/ic_launcher-playstore.png new file mode 100644 index 0000000000000000000000000000000000000000..db70abcbf24b05089e92810e27520cf81614e3f1 GIT binary patch literal 16024 zcmeIZWn7e9_Xc{?C=x1)G+3Z?my}8ihzN+J(hS`_goQK;h)76xNk}6gDcy~94>2$> z12bpO^S;mjd_3RIr}vA_kC}VN+H0?Mt!rI(=u-_P%8LvaAqb*WQGWakf(XG!LWrCc z{D<@!K|_#?iOOU7=U&D;vz|%UbgDX>rPi`HzM0`K9@dKK+kK z2{Snw5_$R0mp;ByM2Mpr3Vn5ZE#Bo7u?%QqM)J9clJiY;b{dY2=X+00 z2q4H|vIoZsL2}5;U{)s@@E3^ee;@y6hyOXj|HoyZk(lp0wffUvZg$*%(7O%qtmbmkKUwiq_)ZudaJFey0Y;PB(Y3aFnU%_LP$%fJP zIWCM$CKg2|6M8Sb%G{)}hNuMvzUtBT)n?5j9{!W?Hih5aCoJUhhZg#Li5uMNw*UC{OuT9o}L z7`C#!DOA4^inS+)LKPu7Hl%d5MqZNs$W}zkS|l8`?$NE$AAcN7RnxHJP@)tBpC**M zNdramqd&lVCoF5y_a*QB;f|d_K0qW_<8Hn`85$lko8}vzjo%_&MH97h=bi`C70KudB#gg^_O_h zL{~D`x{=@ROB610dfSW{v^Rp^$wSR7gT^OxV(XuxDW~ynd*f`FvWpJ}e zs&r;T585*zhbDL!+dVrgd&ShOUR6Koy{~@C>#y}4BcDUPSr`P)@zod=88tz36clJu>0uXUIOi2naqZ7ucIGLcBsr_m zqwg{$T7AV0&0DqW^EpuIRRXBVS_}2V<)k8`W=m7Pwn?=-yPLqm74M>hvQRVMO=zKM zy+v58V&=ZI!jBuXsf!gErZD+B!x^Wy)h6c{hQMiZ=tOKs)H7iA_p@Y!E%)?8lc&)> zNSi>>%aTQCJAJ{QLlbMzi~v?3Pi)13dlD6LB!Hmj{di}jge+sng+S|DkhtYaXM&4Quf!a!0FH!R6{+Rvv(2kF z?`xH1;k(4>=5U7mW^41uF}|;bcY}u|I&wmm@$hQ{t{9$@6vLsvp+ASqp;M;wVPi6J zFZUBh)@*-KCx;9lLQZc)Lr$Icv?VIhg~|>w!Ui3Q9?rg^S~P@?t~Zi;<&nKmMOBFq3-!%CLYsS}P5eQ&W-Zv!~uUaC-F+NQnlzsew29XVV^O)htqu|ivMHG%IZ*jd_ z_8j&EDj^E&yahe}V$3GXI(vIuc=q!%MEOx!qw(Vo)w>o=^ z%jF$l4bue%kJMZP!cdqKct`2b(&L0{Sn=zG6-sY#p2RfF#DO1%q~QK`{@zQK_gwe; z`#Gcaf1kU^of zA0sJGv6Pp)eHprGIlUZpV2+~rzPn`-t;Nawc6N?AyI{v!WP4`DMTr~gJ+P#CBSKDV zdEF<3Nvz{x7S0ojo+5`Xrw>;f?-+5kN>V0FK*}}*nWZdgro+Zv%cjt5{cK)u! zhQ#+vggYe6#xi4z-fP;3}Pa~Y)V$)p^a>cyu^#3^=DS|!2-PtajxE5k8IiaRGJ z`a-q($9z(qzC1MT`b3y`W;VxTp3s?-OU)L*#4p6EdXsk7WSu#ZjQ@N+G*}7hYq}xQ zihR=FV;uI{pJ8D>zRLrIi@86S;JwhZs|0L>ZjHxgMw;(8_shm&Q)BpuwBLQvYEaMk?W8T2rxyt$*i=6Q?da7aZe-RSh{+*zdck^AGtWMEv}{;aZoIKxgv33 zE(`PaKJhnQ*D62BgE%d&z>$ZL@+-*|L}b<5@7~DNnD~1?)KIS~yn;8lXpnyJzt$?mAfA}Dkdv4`7gSHw42ut<3A3v_nBdS z5%8gYwrM2ys+=twl*wk~z8hKPdxwKK>W%x;3CiB;uIx}mgk+4@lw?v{IHvSYb5`OhY^m~q94CQZ97&g}zZg;N+Y zO#ra#;qQs-5+%DgyOewQHQGf*Rz-T$c|1Gcg*rwsT(0lEI^RQ7Ml+y20^4Rxa{HAx z4C{+2dBIPvECHT%wZfb~OVqab_Q5{CuPCM<$zeG&)f~ONQhZESZ%lyoH`mtDsH`rH zX_A5dDniQa0IRK2)~n8QdAqiR35G3yo1$0=D=Sj;FV#%g9Ocjc!GDJ7zP_Wy4ixl6wen_hWt1`!)JwJ{4%@TzJyyCsV7!>+rM1z;d#w-|k-5*ZUv^*pHC1 z)dLH>-fvc#n{C3i!NMXX#2Yth@yJJuG1l>D{at1hWukU%Nj*rzxs-C^m!W5E058T) zA=lVe{oc<3c%Q}KbqA?V_K7+p9AUL7`wW98 zut#3j)pABRY`wa_lu_H$rwHCJ>4?;W+e0ny!7~*kg>y!ynpL9fUqWDC9b)-9su|tc z{Y0N^N0aPOH0*|B{cRqptUgER5EqaT{#Am=YZ83t;|F6eEIo$xsOaQ$9sCthG$Jnn z!K$0&D1iYpL~4Ke!85_W7Z4i>4fOB{A|07*>%2+}ejh>_rRPfr#y^X{RQ#E!dzAq* z@@}Y5uqJKyO2%F2??Z^ZOjD^5xvGbVdqV<05Ik5J8yO6HIY!ec)#;CFsnD>8n=b|GHCCU@j!%rs_o(#mx0m_}VOYVUVxu6MhX_jUguhoX zy@p`B^_8>L8ra_43wdgc#2Z}6!Qq5vsbuz+S|xshXK%H%%hwA;jN~s5q7>)J+OZw* zThN<C*6aOz+Z@PaqE+xO0*cUBM%T z4`8K&Q#}oJPT9`Uu+?`E3Q$Gwlhq*bm~zs(e4BWS)u9C$(wvAgQ_ zdOwS`srC-zWyfs)(Mv49<}7&wk&MkMJ5RP@B9i|aE1}R=DBYjiAww9bMh@+R^_U;F zp#*gWZJ0Xchl5`Bc%u-+Mk9IE*3IIi!I|1Lbzzo1KMc-}CKMp23j}O3gmNDqOr8f< zT(4jxbBQh=Dqr52FnV>M*;o2^T0*vmqZM{XsA~Sa<6$(z;n#Wra;(qxP3Y$v2%j|{ zQx%KPBuVYaMu&{(Pu${C8l$gdtF4fT_V7irQpk6!^v9idQwiFZg+U8f2<7~U1EWuT z4me6KMD4tVSEzk!^w}E^Ss%K5N+HD}8u^xO0~S~ne0*DsDMEK)u8%#K}j%LQ>jRKO!MzS z6M9z6at*uYhZBh_A5PPCk99RMRyOm{jTkM?CSszZ(mq?nb-4|>;Nnhqnj}yn|U5@ zGA)rq$;W0aMmruF6nGAm&l>E{x3s;HX&De&Ye6~=-=T~j#~=F zvP7%<#Jxf)JnXo7u#59<4go>GErQ)87xYvT162QYmssYfqIxdFt`Q+(%9pUM#Yl&G z&L0!v8o?mPBc$IRj9-56uP??HW|XRd;tl+iQ|UR&l1R}0I6*ZfEwxH^mPPQ9S4lri z(3YI#{}z$yxu|~H+aAQ2sfWJq%hhrU3!28`0f0yaA`{Zquadzjf8Bz9zJBSEWjOEG z!^cE4agBg26gWxz*O`|~3zVv8;|=3sb~tnMYA9T>kSPq;VXFbW;o1 zLLO61+iWoPAh)T%aS`M6B5W^Z0P+Q8qvbX(ZCksxseY>Ni-?8?Kun=NAARn$4mB4P zR&aaQuHDHXHO=wnIV_4G8X$O&`Ml#e5@_x1xL}5eoN2;^q)}#H@AG=2ui+aAML!mu z$89Cgt^&}&5SXkR>31(qVmQK#gB<5`N2E8GU~qqB!lR~aMU<;VqB81t>K5N8;N=mL zdt2m?N;<-@z!erwB*9s;;jKv7Tx`es3C+-KLXnj09{d@svf!+4(2bt8D8STyc7$B4yxwc#8&%h~OxXR{CDLQb?u-7xO*(>hktB zf)&@5A}n=;BtCGcIM_4{PhrNkk#=}kl0n*xILX((Et}CS{w_E=F69nDo&vUVw!T)T ziA;vhU*f`W3!g80XRlqGl)-RhP=U*+9BY=7%IQt--A=$veEv4E zxOC%UuuN@3=3mte(#+zOR@id*S6B0oZ<83A4V-+ZrORLWz1Jf1pav_so3qPYN7OA! zwaK;)B}Tm;X8^;5VPs=BnWUB=q)uzwh=d}gvig+S-|Tp)!b=WgInS*|zHy~G8Dky+ z+YRYYEX@*}Qg5@-T3qiMe{i$a0YGK-%|nI=Gfr~!ho9{CV1#Ug$OhciS$JIIB7vDK z$5$3HB^{Qvh>U~rAn8Y7E1NG=tM((G+{r;mJ{zq50gsPA)5Y(B1!pn20%n(XMEbLV ziqdL(i7h-nyk{{eDx9Ho4NPBZ*4IB5+7CA+lh-WA#~X$~6QPW>)|cYFy{104`38bN zpHZcHd=@JjZh~J`PrYID=!g9$Sq690e&DZi)W!w`a#GNcGo^3K>QFO-@Qq)|wH1^7 z5|wnSDr3*h=I?$DXb03q51p9-a25;=6l;2ZLUphAz7W+O8?8BQXZ;un@R$;b+5<0` zHbGpZlxa-|?*8$+J{gvrQ0@x1waI$X z`(4?AkTh7mBVfpK2~I>1?S!@=S&5MCezPE<+{Zx_R`Ttz;<&QW@)}6z5{iU!kTRja zRd&PaIhhZQTOmP#*(*&ve$Zvv+C_pIjC=m;L$_ba08RNUg`Hsp2a#t-Am83V($Ro9 zw+%ef#z{xvrDXC=ay}1HahmoK*cIb9c zkwPF+?RkQpqn`{-R4>F|=f;{%m>p>GDAk*8rGXpyA-5kE9WirC7KyiEVn4i@OrG`o zM(7NF2IjX$?fbN}%ubzBb50oBv#p8W@c1}VEuRqN{vN}r2i4NUV1UjE!FeauAg@s~ zq*AvH8;m&ai0Jrm=Q^0B*;?C(OZiO+==wZbm)I&1GC|d5p||7~ftxhzLIb0u?xXU! zHKP3q!=h&b+IPOWZO$I`R{IQxo@2NNk)bOy2dxndG)%x=6BnVWBuw)`NJKx`qJ+4| z&AuPPIy#r3mW_sAn)Ppc&M;hq$kB)P4$1qcASSb2up@zXM4a4KoZG?pOtR1;xc@T+x^EX;>TvuN8LNh{A3C%IY=+1|xZ{3c zoWl1C9yGxCij*L`;KvUP4u2@ow0m>uFvtr~Wpdf(aW^`iKP89$x|p7_>&Bx-bDks! z8~#pfy8X{dKu^DXH!0@&X9G>UuVECr_Xy>@@N`X_>vIR6;y*>=Pee8S97iB2a0yM9 zda{rWQ*r8IH-J@Lwa%{ziWH29X9oi?{=Q#H%zO4xND87vw&_lj(O9ItfNh{OG1ODB zl4tzo+~flrZAWlBsQBnbpnbzBr^?TkarFPJtt)3sz&hz5jSriDuj%cI|D!<2bP|+> zMG?hg@`lw_a~2~|o2$jr(cHslShM?_#DU90x_@ew6C=Xl>JCK@2Ff~f363vA+y;P^ zuY~YL?5=Iod@jLRDaV^9}7RR~U||?lQVBmk9slk5ghf zqGo1$6o`uZfFuSy8v%L(chrc=y6OA1O!Eqll=QU0iOp!IPX^U(fKJMHKFR7c5%DWH zI3xn=w7CLOrk?PFxY3**-R#D_Zx-88kJaY6jPSg}Y|x4#voZ@|pv9DF>l}CB>zeEh z%M4PslrY9(a~jjOBKm3Wj5|xZa~Mxrj~*duK1LC?8oar=p!I@xYK$eKGOQogg3)SU zNN>CXWkr|GsFgv@i5RGE!HP?lUCICJyBdK2cfAI;>YuoFAsM=5v()D4f(j=q680JD z7Y79Q>1(?JEizC{L=#sL1{RYz0qBkQ#&w1(g(Ni6K6Kbc0FZu^PEU}9#;3&dx~ih$ zJjrB4H}O>q{(^M&bS7NQ*AT%k3A6)>m~%ctrXA(q`|D#)usf+!<1?#o3G{=B#p$GY})I1IcI^G3pIEW3U~TYj4*M1SS~ zxxH*s(j8m7D>y$k7HJ1N;dhgv5KSSza0DqmYG>HcY?|XGsK*V*AMjOa;w(pkoc`m` z(Q)y2Zr!u5y8)p4DNZ%$a9%Cdgwu!O{Ir<^Zcr)d88*Bwvc8Z#Q>L^Uhk)hpImwLjYK zpam(E(4Vg)YVF)4oo#(dr{U_}e`EB}yMhJ_aFCaO$QVA}^`hdNwQtDlS4k5AX{;spaZh%+0sO1mgkFz>-3NLK(60M_&NiR~E-rdD*_>iXfG-z=}u7xDH$p(|Ftk_Bp6ER<&C$4DCf; zt1|-^*I1hlCqPTgpmXlL)#2%tjI|>cO-A6({*13r(y)UE=nv+8kjlPLx@LL3t9>64 z&Hy!0ljW8+Q#o~b8L@{s$}Q+5EWO|*@};!s`prKI1Zx|%|&(8&e?U*gW6 zN9(hxz1IbCkpaZTgWhj&u*r!1w-gsMipr$y8gP2(i+^yZC-#8!1o^m#l5I@yec>LR z5in9YJtRJPGll0W{8Ron+og#MA9+8lln^xSjC}o3zng-!Pqaq6y^^2yFZT|%=D_Nhb}B|7XU!;BSKqL6!GRhn3H zdu-Ftz0%rCrA<^{B9j8rXUoA188)f$?qJRv`6kpjhir~+>WZ}e-gw|Th-fh~mM|V`>a(7P z0+Jn6%-*Xn-)f`c;>)GVY7DP}FBXz%Je9oFYu}>}}e`_jmQLV0YrJ(G07Aw7qe4 znV(RO+>O?a-lUI>S=&3p~Oy!tfPEaOSH!dgPFqrnL-On^j+S6PpI zH15WDgrk^kAiz-U{Jxtq#%8p*1Yu5e_p8>nYDH$JD47f8qi0GRQahn}uHlkn zn7QHRwAL?JKV}N#Tyuvar4t1K8!@lV&mqPSOSp8>jgVh)!kECBF`tA{`P^F0QFR`` z#{P6@ZKF#3R_nP(2S;3Z5(1*^Pc5REM}X6*#w5ICB}?m75Ivx6_6Dt7-JI{bt4|U% z6CI9C+#a-bjpi6kQiIZJ84&d03=4O`M%P`Egu;9x_+ZhrKz zB67$RrzdO-W4bDTzmqfi(`(OK>`TK+|6|SaT#P=VWqV#XG@eze8Wh7n#a4y^-=hGL zhrX9ejV2AV4;q!p!u(UAy`=F6ZBmDomLFXHXJ^kq1m)o!f{uSJT-@Md5w6lsx5<(9 zZ#nt%M=xA*0bELDKZ(ZK?k-b3bf1hG8E5}7kMlTO#PIn{M9#S4oMQ1 z9ne4czWLltisUphWv{nJ9R-Hk5=j)f`2pgX2VuP!8ySe%Z`ua z^N0jd%`-O4XBJZ?3i+X>mj=^lnDZcd-|_W)9U}<41>Je^1!k#POW|kk5OE+)P3GVG z1@=L4yrSiP>#iB`oI_U~tzJcyQ3hv6HM-ZoZAvkp5LjEAz#8Auw>d^@&fB{=(;&=5c)#S0DHBE_8l0fmhwsl<)gw6sPH| zjd^J%o*n&MN-ei^`-J+~-((;BG+FymwZb-to}GSz^}33x?csdx1IJua$}&{HZrK{h zuudU!6X**uN0auqFzGrQ4cg9{O!%TCvvJYiUa$2pP zzVWOFbnCC?%jb~uf$LzSo%Wxq|wG&gX~^tTxq3)T~Z~gzivq2y4jsi#ytjbb*&uCQR^?w28HUg={ti+-vX|) zS?MMD4621{(6-n-s}0L)YjIIM^(~kCn{8>wizJ$z-p?ObM z=Bgw5tK<`Y%J6wGVPGyn?}~dEODbKSsCRMi8(W>iphb4*%?KtWwG%K;?FqA_(uwO* zW?%sx^0Rm5IQ?-|hRaENQs(U$ILO8K{>oiL4Y|+v1I5b;lR-tvo2Kks%xw>jfb^_u*o#78%R!L}fRajKgWk+six^kQ zTXCQE%{pvg( z`Nqi`)(wfU&25;V-(!f@&HjGewrTILmXAsd;iB?%*qpEI1uSt!=LAb=_Oxff^h4c~ zM-OSBXMr*wOM2}2HAqF*6;z};ZIp!IMp__vt0JVU;J(B~+y!UU5e);Q^X=JvRf6Z+ z3D!%g7^W=@+!GTr$Hl}refGho!|R;nOay8Iy=W3^K4<&=4O#k$^dE$7FF!>(9gknv zk@UAW-XhHFEfT9z8d!~IU2V`j9;fY}D&v`(ah)zu+0CSDZsm&f*xY?i_Hx&#HZ@KO z*L%uiZ1s!HGQ1hUaoV(uR=NtF&*tFpQ!zF`e%fBLo+p6Q|YQ?ohd-Qvz$fNl=9eN`->On@%i-T z#3ym$Fev)wSljMytjKja8=Q|(n<7H)tWseTbV!XKF;26~t;OKnSGVd$m6iCgwa31X zj6dzW+70fw{y{D^>|e#A)0I0`@j51a=e|mT2HDWGLy}4357zxxn#8(E)7Et>{8I>z zkCo3E@{`5nfNe%&?$8d_3w1bTBs@I9B0of7>nq>k(3=I%J#+?&peh+_XT93oA#G_s zhDwD|JQ)h4U}jRpf4|jIto#^^xPZ7y08Z~it>qCR=Xv9`N-nq zgLc?!&lL}i6R8anqqR8rgZlPdo18Vv#`}-76^mrQPv`*A*f$;DMj=le!_V4_zJ^~r4>iW(15yt3R#-l0^u|8oimVWvfa%qy z^|jDPoh>#?`b(w}k-GBKhhTXypMi=41-BldQvh{B7pOv&HGGQ8n6Id(@~^|#{AU+R zh?I%(oM|0*!^vHn%8+r9e%JJSz3mg82;|ov79Zapccb0@Hb!;?2%Hdv0>Op6q^4or=&2?{ zmCo9T*KpsJ!3JKPb(I$^Aa?+| zu{*R1K82b+dBRnX(lPO+)>pVm#RMQcL6E}!RoVtiQlp{o>KouB{)rMx3SMsDgK-SEOs zp9=a*1z8_(yN&$~waUHPBON0UhA2%1V-Ak9UVStk$r}gWI4a>6swa zIs|xt{+r;obnk&<$m1a=0iL>{7-u2!TZD3t*O}Yu<4?bTVX5Nse^8t;?g*>vVVvDA zk-FH(gnQ{=TQl3ev}g|Wyhp(^_luKx8G_wQRRwyxtGy**5R>l}P(n<&WJOHD72b81Bm9pwbc_C;iJQ*D~x)?0_BX=AonpKo@ z-emRM+8P6>(o3||By*EmCe$L!B3Ozu+_VT((^9QaIA< z1iWnzSqPW5&o$xX_&n{p;Krm&&(s2v#C{9dme`!R4a|eKC}R_xCfhQu`z=tvh(KLH zEWyuQ=5H`PI~Upk7re-2Z!P>%@bB!MhDlVA9|)inLU}H9`I`J=5snFOg;*}AyJk!4 zq>itv+lQm2Y$?Tnl-B+XD?i9_KM(tcVi1h?Q@xBP&6BxGuSAWQIl9tulE6g|Lj(#+ z-*V8<6r0u3On*f$l;&=idN#<&UP9>tC>XV3`;@ibL`}6{^aPT8Mo9~g&lgLKP;UAb z%+YJ}r1C%_w8qR=`e=N658-(xMi@v0G&brQc`~itl`n~jmpAN3?LXCgUQis15?mKWCH$C602 zu!>%B1@p&g3d#B<5|4EmW1-rv3ET-aVc;#K^V;RO4zHe{Xw4^i%B&@NKrIIy!fGlO%d0#4d{Ss(7#FVr*9rIe(dPU8RI)n{Mc~D-eRY#`!XpIAfYcX8YM8evY z)o4?f4~afRuJJ~ZQ27f705u;FlKd6HUhrA?!h`;*JnlH)xrjC6P(}9bfyC$X9CU0% zuCkmE_&Mlv~)ww;Vj0xh+Ti~X>=3qUHy9Cb={ zDWOJfCVSai8?CI1-)@O0PA*@QPd6f7* zHPFUn;A@w7kJ&Jq1@4{hlfeNioUCd01I6@JyvSuS$fDgtPWUpk2!z7hDfHCd{&VLh zOpi@oS-w(5y*!a7haCPh;kU@o5vp4+w^^9?a)uuPRm{j`XyzYj&w{xBS-~)Ihnl6D z?#l|Yx*83uKql=|4h~Yx`4z%IgMY+13xmZ$p!2)cOS1=$p`n!A(@vs2MKy5!JAQMM z{g(-LYB%14>+AdQ#Ax);v1&r?%)8G1Bb*2^1S$=%LZIE=g6wMwc)X4%mT}M6D=jiD zl!1DC+o_a8nxL8IAMFtT`ZuSYcn|eM^|=;)EZ_BKNd+8=U>SzeeJEle5LcaEZydv< zYy*1MJllf7gg^7HJ(MLxP{EiEPgSD-cbF6PDLxar*_!+fADh>9a^}|L1Ha=$rA8Yw_U18OnbIYV_X|}(s zY*;h8CH&!%+WV2%#P~a6RWrLq(d+Z`T8|(+nIl689ez(&B}kacrsh1jy00GVaQG~h4_@gg}Z%9f7+fvlP90!A0SZGJJF#9(9H2*#Lz&FF5U6QbcM*67kQFXEISJ#xh5Bttd zo_?94kX%N7bzSam-^yYKDor62E}6}puJ5zOqk>x!EdOUhVpR-zJ*Ycp02l${{vy!% z7SJ`NoBFDkqqBMAV-G`d47f4zqZy3mm}N~DgRR+TNpG^gM&&=y(2Xb-JGRIlhW6%~ zT^xULJx-Mwl&l7QPVr_q4P+Wobt3@iNI+lht_0ul?~$++<1@S-C+z9x4I_W>-UnVB zYdGW-_XlRQ(3?M?$64o45^;6DJ8#sg>+_#0OIE}?`Pq!-vnL*Atl5J8`DOU`52pQu zn4J6%c@D<)OBg!{upv-j=0H$L>LoZkc%|U(+PKm7+n_{+hG+3QtFzZIe9C#Me8)8# zHO6$m8`MxJ(y3%Rj6ds!-!qVpC3iE9tI_eD1D`K%O=t3!$fs;$3#!FGgL58~gXB2z z5i$%EAwXC883+Y^u!hwd8FXE6dx2`RT zecuvy1u@u&^Nd;pH(JFtpkUuyeprMJ$R@)XpFx>-389CujRD)lamo2Qm`n}&l7s_V z#dzsESmP%^IRLN|Q*rmPL|Gkr^BV(rUnbm$lR6f!c?Yukn>lTpBNUBue;vP_^qnLJ zL@~Pt9Fvj&-cW3l{OdabN-OMFC=+<{vv(eBBc4AcbDgxtf4JaP!wRTeAcapd{&3Xw z>qS>4-IbSz(+vuape|{!35}D`5d=_%f?5(Qhs(nim4)U0XH6=@0cqNp#r)dqIKfIBaa7i+-yu@n&T@bzdBHAYp zwIfGF1!2e`xr;TGM;eHGZ*e!7g_AXlLPY7Qp~qwdKqXvjo2tQFAuaMWRnqV|yrz(T z)^3ED4fNCkX){X1z#c9AA#;Ue;hKyc0ZEB+I{A^BmO#Hr#5ldE{aH}q@-w9Ffhh+Kvbfh7jqNEOo2Opr1a zAr#$WyydTVd~bFhT@bi>cD=^2{np%TP5jA`f^QdhQ})xw2Rh*~R9`(TMzWt^eg6AJ zg?vAtSbVoqF<`Qx94f0(!)CA!1+aMX7ZL|qoaR%HkFzZ{XuZ)y%}#!@axg@1+K&=Ei%qJdba zTUv-kkas|Sc);1^Xyf2$I~D&ec+Ka-m#mP28H}NVkaQ<%4Ym@!J2g8TuT2}-2*dge0g~fs6fn3K;@CKP6?}&UiC;)EdFf(G# zSn-2XfWdQ*mgYNoiaZ&>;MdG)yH!T5ZX7}6bc7I%mL!+y#=w10&d4s^WUfHhD>`nN z;`bQ>_W7mn;)$u#+nLFLCLNT=gPWj<1_P^lfM1nOf{gt*EGhEQ-Z&xtFAyaD0sIpf l^1qM&v%~*yPOy%Ho_gebaItb!2F?emC}=z`erOu}{{V!xW)lDa literal 0 HcmV?d00001 diff --git a/app/src/main/java/fr/univpau/queezer/MainActivity.kt b/app/src/main/java/fr/univpau/queezer/MainActivity.kt index 65ac09f..3ab91c3 100644 --- a/app/src/main/java/fr/univpau/queezer/MainActivity.kt +++ b/app/src/main/java/fr/univpau/queezer/MainActivity.kt @@ -1,6 +1,7 @@ package fr.univpau.queezer import android.os.Bundle +import android.util.Log import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.runtime.Composable @@ -9,25 +10,31 @@ import androidx.navigation.compose.composable import androidx.navigation.compose.rememberNavController import fr.univpau.queezer.screen.GameScreen import fr.univpau.queezer.screen.HomeScreen +import fr.univpau.queezer.screen.ScoreScreen import fr.univpau.queezer.screen.SettingsScreen +import fr.univpau.queezer.service.DatabaseService +import fr.univpau.queezer.viewmodel.GameViewModel class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + val database: DatabaseService by lazy { DatabaseService.getDatabase(this) } setContent { - QueezerApp() + QueezerApp(database) } } } @Composable -fun QueezerApp() { +fun QueezerApp(database: DatabaseService) { val navController = rememberNavController() + val gameViewModel = GameViewModel(database.gameDao()) NavHost(navController = navController, startDestination = "home") { composable("home") { HomeScreen(navController) } - composable("game") { GameScreen(navController) } + composable("game") { GameScreen(navController, database) } composable("settings") { SettingsScreen(navController) } + composable("score") { ScoreScreen(navController, gameViewModel) } } } \ No newline at end of file diff --git a/app/src/main/java/fr/univpau/queezer/data/Game.kt b/app/src/main/java/fr/univpau/queezer/data/Game.kt index 847cdc0..2e3791c 100644 --- a/app/src/main/java/fr/univpau/queezer/data/Game.kt +++ b/app/src/main/java/fr/univpau/queezer/data/Game.kt @@ -1,10 +1,14 @@ package fr.univpau.queezer.data -import java.sql.Date +import androidx.room.Entity +import androidx.room.PrimaryKey +import java.util.Date +@Entity(tableName = "game") data class Game( - val settings: Settings, - val tracks: List, - val score: Int, - val date: Date + @PrimaryKey(autoGenerate = true) val id: Int, + val settings: Settings = Settings(), + val playlist: Playlist = Playlist(), + val score: Int = 0, + val date: Date = Date() ) diff --git a/app/src/main/java/fr/univpau/queezer/data/GameDao.kt b/app/src/main/java/fr/univpau/queezer/data/GameDao.kt new file mode 100644 index 0000000..ab3f209 --- /dev/null +++ b/app/src/main/java/fr/univpau/queezer/data/GameDao.kt @@ -0,0 +1,17 @@ +package fr.univpau.queezer.data + +import androidx.lifecycle.LiveData +import androidx.room.* + +@Dao +interface GameDao { + + @Insert + fun insert(game: Game) + + @Query("SELECT * FROM game") + fun getAll(): LiveData> + + @Delete + fun delete(game: Game) +} \ No newline at end of file diff --git a/app/src/main/java/fr/univpau/queezer/data/Playlist.kt b/app/src/main/java/fr/univpau/queezer/data/Playlist.kt new file mode 100644 index 0000000..27416e5 --- /dev/null +++ b/app/src/main/java/fr/univpau/queezer/data/Playlist.kt @@ -0,0 +1,6 @@ +package fr.univpau.queezer.data + +data class Playlist( + val title: String = "", + val tracks: List = emptyList() +) diff --git a/app/src/main/java/fr/univpau/queezer/manager/CountdownManager.kt b/app/src/main/java/fr/univpau/queezer/manager/CountdownManager.kt index 6a2ae89..6520f25 100644 --- a/app/src/main/java/fr/univpau/queezer/manager/CountdownManager.kt +++ b/app/src/main/java/fr/univpau/queezer/manager/CountdownManager.kt @@ -2,7 +2,7 @@ package fr.univpau.queezer.manager import android.os.CountDownTimer -class CountdownManager (val duration: Long, val onFinish: () -> Unit) { +class CountdownManager (val duration: Long, val onTickTimer: () -> Unit, val onFinishTimer: () -> Unit) { var timeLeft = duration / 1000; var interval = 1000L; @@ -12,8 +12,11 @@ class CountdownManager (val duration: Long, val onFinish: () -> Unit) { timer = object : CountDownTimer(duration, interval) { override fun onTick(millisUntilFinished: Long) { timeLeft = millisUntilFinished / 1000; + onTickTimer() + } + override fun onFinish() { + onFinishTimer() } - override fun onFinish() { onFinish() } } } diff --git a/app/src/main/java/fr/univpau/queezer/manager/GameManager.kt b/app/src/main/java/fr/univpau/queezer/manager/GameManager.kt index 58df34c..b235c89 100644 --- a/app/src/main/java/fr/univpau/queezer/manager/GameManager.kt +++ b/app/src/main/java/fr/univpau/queezer/manager/GameManager.kt @@ -1,29 +1,42 @@ package fr.univpau.queezer.manager +import android.content.Context import android.media.MediaPlayer import android.util.Log import fr.univpau.queezer.data.Answer +import fr.univpau.queezer.data.Game import fr.univpau.queezer.data.GameMode +import fr.univpau.queezer.data.Playlist import fr.univpau.queezer.data.Settings import fr.univpau.queezer.data.Track +import fr.univpau.queezer.service.DatabaseService +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import java.util.Date import java.util.Locale class GameManager() { - + private lateinit var databaseService: DatabaseService private var mediaPlayer: MediaPlayer = MediaPlayer() - val countDownManager = CountdownManager(30000L, onFinish = ::nextTrack) + var countDownManager = CountdownManager(30000L, {}, {}) var settings: Settings = Settings() - var tracks: List = emptyList() + // var tracks: List = emptyList() + var playlist: Playlist = Playlist() + var gameFinished : Boolean = false; var currentTrackIndex: Int = 0; var score = 0 - constructor(settings: Settings, tracks: List) : this() { + constructor(settings: Settings, playlist: Playlist, onTick: () -> Unit, databaseService: DatabaseService) : this() { + this.databaseService = databaseService this.settings = settings - this.tracks = tracks + this.playlist = playlist - for (track in tracks) { + this.countDownManager = CountdownManager(30000L, onTickTimer = onTick, onFinishTimer = { nextTrack() }) + + for (track in playlist.tracks) { if (settings.gameMode == GameMode.TITLE) { track.title.answer = Answer.INCORRECT } @@ -74,7 +87,7 @@ class GameManager() { fun formatString(input: String): String { return input .trim() - .toLowerCase(Locale.ROOT) + .lowercase(Locale.ROOT) .removeSurrounding("(", ")") .removeSurrounding("[", "]") .removeSurrounding("{", "}") @@ -84,46 +97,65 @@ class GameManager() { } fun getCurrentTrack(): Track? { - if (tracks.isEmpty()) return null; - return tracks[currentTrackIndex] + if (playlist.tracks.isEmpty()) return null; + return playlist.tracks[currentTrackIndex] } fun stop() { mediaPlayer.release() - // countDownManager.stop() + countDownManager.stop() } fun nextTrack() { mediaPlayer.release() - if (currentTrackIndex >= tracks.size - 1) { + if (currentTrackIndex >= playlist.tracks.size - 1) { return; // TODO vérifier avant meme de lancer la partie si le nombre de titres est suffisant } if (currentTrackIndex >= settings.numberOfTitles!! - 1) { + gameFinished = true return; } currentTrackIndex++ mediaPlayer = MediaPlayer().apply { - setDataSource(tracks[currentTrackIndex].preview) + setDataSource(playlist.tracks[currentTrackIndex].preview) prepare() start() } - // countDownManager.restart() + countDownManager.restart() } fun start() { - // countDownManager.start() - Log.i("GameManager", "Next track: ${tracks[currentTrackIndex].preview}") + countDownManager.start() + Log.i("GameManager", "Next track: ${playlist.tracks[currentTrackIndex].preview}") mediaPlayer = MediaPlayer().apply { - setDataSource(tracks[currentTrackIndex].preview) + setDataSource(playlist.tracks[currentTrackIndex].preview) prepare() start() } } + + fun save(context: Context) { + // TODO Sauvegarder tout le jeu en base de donnée locale (Room) dans un objet Game + + // Créer un objet Game + val game = Game( + id = 0, + settings = settings, + playlist = playlist, + score = score, + date = Date() + ) + + // Sauvegarder le jeu avec Room + CoroutineScope(Dispatchers.IO).launch { + databaseService.gameDao().insert(game) + } + } } \ No newline at end of file diff --git a/app/src/main/java/fr/univpau/queezer/manager/TrackManager.kt b/app/src/main/java/fr/univpau/queezer/manager/TrackManager.kt index 18ba01a..852dd2b 100644 --- a/app/src/main/java/fr/univpau/queezer/manager/TrackManager.kt +++ b/app/src/main/java/fr/univpau/queezer/manager/TrackManager.kt @@ -1,11 +1,38 @@ package fr.univpau.queezer.manager import fr.univpau.queezer.data.Input +import fr.univpau.queezer.data.Playlist import fr.univpau.queezer.data.Track +import fr.univpau.queezer.service.PlaylistResponse import fr.univpau.queezer.service.createDeezerApiService import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext +suspend fun fetchPlaylist(apiUrl: String) : Playlist? { + val deezerApiService = createDeezerApiService() + + return withContext(Dispatchers.IO) { + try { + val playlistResponse : PlaylistResponse = deezerApiService.getPlaylist(apiUrl) + + Playlist( + title = playlistResponse.title, + tracks = playlistResponse.tracks.data.map { track -> + Track( + preview = track.preview, + album = track.album.cover, + title = Input(value = track.title), + artist = Input(value = track.artist.name) + ) + }.shuffled() + ) + } catch (e: Exception) { + e.printStackTrace() + null; + } + } +} + suspend fun fetchAndFormatPlaylist(apiUrl: String): List { val deezerApiService = createDeezerApiService() diff --git a/app/src/main/java/fr/univpau/queezer/screen/GameScreen.kt b/app/src/main/java/fr/univpau/queezer/screen/GameScreen.kt index 2a35232..56943ff 100644 --- a/app/src/main/java/fr/univpau/queezer/screen/GameScreen.kt +++ b/app/src/main/java/fr/univpau/queezer/screen/GameScreen.kt @@ -18,8 +18,10 @@ import androidx.compose.material3.TextField import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableIntStateOf import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -35,22 +37,25 @@ import fr.univpau.queezer.data.Settings import fr.univpau.queezer.manager.loadSettings import coil.compose.AsyncImage import fr.univpau.queezer.data.Answer +import fr.univpau.queezer.data.Playlist import fr.univpau.queezer.manager.GameManager -import fr.univpau.queezer.manager.fetchAndFormatPlaylist +import fr.univpau.queezer.manager.fetchPlaylist +import fr.univpau.queezer.service.DatabaseService +import kotlinx.coroutines.launch @Composable -fun GameScreen(navController: NavHostController) { +fun GameScreen(navController: NavHostController, database: DatabaseService) { + val coroutineScope = rememberCoroutineScope() val context = LocalContext.current val settings: Settings = loadSettings(context) - var gameManager by remember { mutableStateOf(GameManager(settings, emptyList())) } - var currentTrack by remember { mutableStateOf(gameManager.getCurrentTrack()) } + var gameManager by remember { mutableStateOf(GameManager(settings, Playlist(), {}, database)) } + var countdown by remember { mutableIntStateOf(30) } LaunchedEffect(settings.playlistUrl) { - val tracks = fetchAndFormatPlaylist(settings.playlistUrl).shuffled() - gameManager = GameManager(settings, tracks) + val playlist = fetchPlaylist(settings.playlistUrl) + gameManager = GameManager(settings, playlist ?: Playlist(), { countdown = gameManager.countDownManager.timeLeft.toInt() }, database) - currentTrack = gameManager.getCurrentTrack() gameManager.start() Log.i("GameScreen", gameManager.getCurrentTrack().toString()) } @@ -67,21 +72,32 @@ fun GameScreen(navController: NavHostController) { horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.spacedBy(16.dp) ) { - if (currentTrack == null) { + if (gameManager.getCurrentTrack() == null) { CircularProgressIndicator( modifier = Modifier.width(64.dp), color = MaterialTheme.colorScheme.secondary, trackColor = MaterialTheme.colorScheme.surfaceVariant, ) + } else if (gameManager.gameFinished) { + Text("Partie terminée !", fontSize = 24.sp) + Text("Score : ${gameManager.score}", fontSize = 20.sp) + Button(onClick = { + + coroutineScope.launch { + gameManager.save(context) + gameManager.stop() + navController.popBackStack() + } + }) { Text(context.resources.getString(R.string.back)) } } else { Text("Score : ${gameManager.score}", fontSize = 24.sp) - Text("Temps restant : ${gameManager.countDownManager.timeLeft}sec", fontSize = 20.sp) + Text("Temps restant : ${countdown}sec", fontSize = 20.sp) - if (currentTrack!!.title.answer == Answer.CORRECT && currentTrack!!.artist.answer == Answer.UNKNOWN - || currentTrack!!.title.answer == Answer.UNKNOWN && currentTrack!!.artist.answer == Answer.CORRECT - || currentTrack!!.title.answer == Answer.CORRECT && currentTrack!!.artist.answer == Answer.CORRECT) { + if (gameManager.getCurrentTrack()!!.title.answer == Answer.CORRECT && gameManager.getCurrentTrack()!!.artist.answer == Answer.UNKNOWN + || gameManager.getCurrentTrack()!!.title.answer == Answer.UNKNOWN && gameManager.getCurrentTrack()!!.artist.answer == Answer.CORRECT + || gameManager.getCurrentTrack()!!.title.answer == Answer.CORRECT && gameManager.getCurrentTrack()!!.artist.answer == Answer.CORRECT) { AsyncImage( - model = currentTrack!!.album, + model = gameManager.getCurrentTrack()!!.album, contentDescription = "Image from URL", modifier = Modifier .width(200.dp) @@ -91,7 +107,7 @@ fun GameScreen(navController: NavHostController) { ) } else { AsyncImage( - model = currentTrack!!.album, + model = gameManager.getCurrentTrack()!!.album, contentDescription = "Image from URL", modifier = Modifier .width(200.dp) @@ -103,14 +119,14 @@ fun GameScreen(navController: NavHostController) { } Row { - if (currentTrack!!.title.answer == Answer.CORRECT || currentTrack!!.title.answer == Answer.UNKNOWN) { - Text("Titre : ${currentTrack!!.title.value}", fontSize = 20.sp) + if (gameManager.getCurrentTrack()!!.title.answer == Answer.CORRECT || gameManager.getCurrentTrack()!!.title.answer == Answer.UNKNOWN) { + Text("Titre : ${gameManager.getCurrentTrack()!!.title.value}", fontSize = 20.sp) } else { TextField( value = titleInput.value, onValueChange = { titleInput.value = it; - gameManager.checkTitleAnswer(currentTrack, titleInput.value) + gameManager.checkTitleAnswer(gameManager.getCurrentTrack(), titleInput.value) }, label = { Text("Titre") }, keyboardOptions = KeyboardOptions.Default.copy(keyboardType = KeyboardType.Text), @@ -120,12 +136,12 @@ fun GameScreen(navController: NavHostController) { } Row { - if (currentTrack!!.artist.answer == Answer.CORRECT || currentTrack!!.artist.answer == Answer.UNKNOWN) { - Text("Artiste : ${currentTrack!!.artist.value}", fontSize = 20.sp) + if (gameManager.getCurrentTrack()!!.artist.answer == Answer.CORRECT || gameManager.getCurrentTrack()!!.artist.answer == Answer.UNKNOWN) { + Text("Artiste : ${gameManager.getCurrentTrack()!!.artist.value}", fontSize = 20.sp) } else { TextField( value = artistInput.value, - onValueChange = { artistInput.value = it; gameManager.checkArtistAnswer(currentTrack, artistInput.value) }, + onValueChange = { artistInput.value = it; gameManager.checkArtistAnswer(gameManager.getCurrentTrack(), artistInput.value) }, label = { Text("Artiste") }, keyboardOptions = KeyboardOptions.Default.copy(keyboardType = KeyboardType.Text), modifier = Modifier.fillMaxWidth() @@ -139,7 +155,6 @@ fun GameScreen(navController: NavHostController) { titleInput.value = "" artistInput.value = "" gameManager.nextTrack() - currentTrack = gameManager.getCurrentTrack() }, ) { Text(context.resources.getString(R.string.skip)) } diff --git a/app/src/main/java/fr/univpau/queezer/screen/HomeScreen.kt b/app/src/main/java/fr/univpau/queezer/screen/HomeScreen.kt index 86ab407..c9035df 100644 --- a/app/src/main/java/fr/univpau/queezer/screen/HomeScreen.kt +++ b/app/src/main/java/fr/univpau/queezer/screen/HomeScreen.kt @@ -1,5 +1,6 @@ package fr.univpau.queezer.screen +import androidx.compose.foundation.Image import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer @@ -7,16 +8,20 @@ import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.Button import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.res.painterResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.navigation.NavHostController +import fr.univpau.queezer.R import fr.univpau.queezer.ui.theme.Purple40 @Composable @@ -28,15 +33,14 @@ fun HomeScreen(navController: NavHostController) { horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.Center ) { - // Logo et Titre -// Image( -// painter = painterResource(id = R.drawable.logo), -// contentDescription = "Logo Queezer", -// modifier = Modifier -// .size(120.dp) -// .padding(16.dp), -// contentScale = ContentScale.Crop -// ) + // Logo foreground et background + Image( + painter = painterResource(id = R.mipmap.ic_launcher), + contentDescription = "Logo Queezer", + modifier = Modifier.size(140.dp), + contentScale = ContentScale.Crop + ) + Text( text = "Queezer", fontSize = 32.sp, @@ -78,7 +82,7 @@ fun HomeScreen(navController: NavHostController) { } Button( - onClick = { /* TODO: Scores */ }, + onClick = { navController.navigate("score") }, shape = RoundedCornerShape(8.dp), modifier = Modifier .fillMaxWidth() diff --git a/app/src/main/java/fr/univpau/queezer/screen/ScoreScreen.kt b/app/src/main/java/fr/univpau/queezer/screen/ScoreScreen.kt new file mode 100644 index 0000000..b05189d --- /dev/null +++ b/app/src/main/java/fr/univpau/queezer/screen/ScoreScreen.kt @@ -0,0 +1,164 @@ +package fr.univpau.queezer.screen + +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material3.Button +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.livedata.observeAsState +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import androidx.navigation.NavHostController +import fr.univpau.queezer.R +import fr.univpau.queezer.data.Game +import fr.univpau.queezer.viewmodel.GameViewModel + +@Composable +fun ScoreScreen(navController: NavHostController, gameViewModel: GameViewModel) { + val context = LocalContext.current + val gameList : List? = gameViewModel.games.observeAsState().value + + Column( + modifier = Modifier + .fillMaxSize() + .padding(16.dp), + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.spacedBy(16.dp) + ) { + // Titre des paramètres + Text( + text = context.resources.getString(R.string.score), + fontSize = 32.sp, + modifier = Modifier.padding(bottom = 32.dp) + ) + + // Nombre de parties jouées + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.SpaceBetween + ) { + Text( + text = context.resources.getString(R.string.games_played), + fontSize = 24.sp, + ) + if (gameList?.isNotEmpty() == true) { + Text( + text = gameList.size.toString(), + fontSize = 24.sp, + ) + } else { + Text( + text = "0", + fontSize = 24.sp, + ) + } + + } + + // pourcentage de réussite moyen + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.SpaceBetween + ) { + Text( + text = context.resources.getString(R.string.average_success_rate), + fontSize = 24.sp, + ) + if (gameList?.isNotEmpty() == true) { + Text( + text = (gameList.sumOf { it.score }.div(gameList.size).toString()) + "%", + fontSize = 24.sp, + ) + } else { + Text( + text = "0%", + fontSize = 24.sp, + ) + } + } + + // filtres + // - date + // - mode de jeu –titre/artiste/les deux + // - nombre de titres + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.SpaceBetween + ) { + Text( + text = context.resources.getString(R.string.filters), + fontSize = 24.sp, + ) + + Row( + horizontalArrangement = Arrangement.SpaceBetween + ){ + Button( + onClick = { /* TODO: Filtre par date */ }, + shape = RoundedCornerShape(8.dp), + modifier = Modifier + .padding(vertical = 8.dp) + ) { + Text(context.resources.getString(R.string.date)) + } + + Button( + onClick = { /* TODO: Filtre par date */ }, + shape = RoundedCornerShape(8.dp), + modifier = Modifier + .padding(vertical = 8.dp) + ) { + Text("Mode de jeu") + } + + Button( + onClick = { /* TODO: Filtre par date */ }, + shape = RoundedCornerShape(8.dp), + modifier = Modifier + .padding(vertical = 8.dp) + ) { + Text("Nombre de titres") + } + } + } + + // Historique des parties (score, nom) + // - cliquer sur une partie pour voir les détails + + gameList?.forEach { + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.SpaceBetween + ) { + Text( + text = it.playlist.title, + fontSize = 24.sp, + ) + Text( + text = it.score.toString(), + fontSize = 24.sp, + ) + } + } + + Button( + onClick = { navController.navigate("home") }, + shape = RoundedCornerShape(8.dp), + modifier = Modifier + .fillMaxWidth() + .padding(vertical = 8.dp) + ) { + Text(context.resources.getString(R.string.back)) + } + + } +} \ No newline at end of file diff --git a/app/src/main/java/fr/univpau/queezer/screen/SettingsScreen.kt b/app/src/main/java/fr/univpau/queezer/screen/SettingsScreen.kt index 4150653..3b9daba 100644 --- a/app/src/main/java/fr/univpau/queezer/screen/SettingsScreen.kt +++ b/app/src/main/java/fr/univpau/queezer/screen/SettingsScreen.kt @@ -27,7 +27,6 @@ import fr.univpau.queezer.R import fr.univpau.queezer.data.GameMode import fr.univpau.queezer.manager.loadSettings import fr.univpau.queezer.manager.saveSettings -import java.net.URL @Composable fun SettingsScreen(navController: NavHostController) { diff --git a/app/src/main/java/fr/univpau/queezer/service/Converter.kt b/app/src/main/java/fr/univpau/queezer/service/Converter.kt new file mode 100644 index 0000000..6a23824 --- /dev/null +++ b/app/src/main/java/fr/univpau/queezer/service/Converter.kt @@ -0,0 +1,66 @@ +package fr.univpau.queezer.service + +import androidx.room.TypeConverter +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import fr.univpau.queezer.data.Answer +import fr.univpau.queezer.data.Playlist +import fr.univpau.queezer.data.Settings +import fr.univpau.queezer.data.Track +import java.util.Date + +class Converters { + + private val gson = Gson() + + @TypeConverter + fun fromSettings(settings: Settings): String { + return gson.toJson(settings) + } + + @TypeConverter + fun toSettings(data: String): Settings { + return gson.fromJson(data, Settings::class.java) + } + + @TypeConverter + fun fromTrackList(tracks: List): String { + return gson.toJson(tracks) + } + + @TypeConverter + fun toTrackList(data: String): List { + val listType = object : TypeToken>() {}.type + return gson.fromJson(data, listType) + } + + @TypeConverter + fun fromAnswer(answer: Answer): String { + return answer.name + } + + @TypeConverter + fun toAnswer(data: String): Answer { + return Answer.valueOf(data) + } + + @TypeConverter + fun fromTimestamp(value: Long?): Date? { + return value?.let { Date(it) } + } + + @TypeConverter + fun dateToTimestamp(date: Date?): Long? { + return date?.time + } + + @TypeConverter + fun fromPlaylist(playlist: Playlist): String { + return gson.toJson(playlist) + } + + @TypeConverter + fun toPlaylist(data: String): Playlist { + return gson.fromJson(data, Playlist::class.java) + } +} diff --git a/app/src/main/java/fr/univpau/queezer/service/DatabaseService.kt b/app/src/main/java/fr/univpau/queezer/service/DatabaseService.kt new file mode 100644 index 0000000..dfa59ef --- /dev/null +++ b/app/src/main/java/fr/univpau/queezer/service/DatabaseService.kt @@ -0,0 +1,34 @@ +package fr.univpau.queezer.service + +import android.content.Context +import androidx.room.Database +import androidx.room.Room +import androidx.room.RoomDatabase +import androidx.room.TypeConverters +import fr.univpau.queezer.data.GameDao +import fr.univpau.queezer.data.Game + +@Database(entities = [Game::class], version = 2, exportSchema = false) +@TypeConverters(Converters::class) +abstract class DatabaseService : RoomDatabase() { + + abstract fun gameDao(): GameDao + + companion object { + @Volatile + private var INSTANCE: DatabaseService? = null + + fun getDatabase(context: Context): DatabaseService { + return INSTANCE ?: synchronized(this) { + val instance = Room.databaseBuilder( + context.applicationContext, + DatabaseService::class.java, + "app_notes_database" + ).build() + INSTANCE = instance + + return instance + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/fr/univpau/queezer/service/DeezerApiService.kt b/app/src/main/java/fr/univpau/queezer/service/DeezerApiService.kt index da7cc2b..9dd06af 100644 --- a/app/src/main/java/fr/univpau/queezer/service/DeezerApiService.kt +++ b/app/src/main/java/fr/univpau/queezer/service/DeezerApiService.kt @@ -6,6 +6,7 @@ import retrofit2.http.GET import retrofit2.http.Url data class PlaylistResponse( + val title: String, val tracks: TrackList ) diff --git a/app/src/main/java/fr/univpau/queezer/viewmodel/GameViewModel.kt b/app/src/main/java/fr/univpau/queezer/viewmodel/GameViewModel.kt new file mode 100644 index 0000000..9613ac0 --- /dev/null +++ b/app/src/main/java/fr/univpau/queezer/viewmodel/GameViewModel.kt @@ -0,0 +1,32 @@ +package fr.univpau.queezer.viewmodel + +import android.content.Context +import android.util.Log +import androidx.lifecycle.LiveData +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import fr.univpau.queezer.data.GameDao +import fr.univpau.queezer.data.Game +import kotlinx.coroutines.launch + +class GameViewModel(private val gameDao: GameDao) : ViewModel() { + + val games: LiveData> = gameDao.getAll() + + fun addGame(context: Context, game: Game) { + viewModelScope.launch { + try { + game.settings.validate(context) + gameDao.insert(game) + } catch (e: IllegalArgumentException) { + Log.e("GameViewModel", "Error adding game: ${e.message}") + } + } + } + + fun deleteGame(game: Game) { + viewModelScope.launch { + gameDao.delete(game) + } + } +} diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml deleted file mode 100644 index 07d5da9..0000000 --- a/app/src/main/res/drawable/ic_launcher_background.xml +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/drawable/ic_launcher_foreground.xml b/app/src/main/res/drawable/ic_launcher_foreground.xml deleted file mode 100644 index 2b068d1..0000000 --- a/app/src/main/res/drawable/ic_launcher_foreground.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi/ic_launcher.xml b/app/src/main/res/mipmap-anydpi/ic_launcher.xml deleted file mode 100644 index 6f3b755..0000000 --- a/app/src/main/res/mipmap-anydpi/ic_launcher.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi/ic_launcher_round.xml deleted file mode 100644 index 6f3b755..0000000 --- a/app/src/main/res/mipmap-anydpi/ic_launcher_round.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..9adc08c12e400a3b07b19c30872e9e2c14dcd088 GIT binary patch literal 5883 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 Ry|DlQ002ovPDHLkV1j;aUS9wJ literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/app/src/main/res/mipmap-hdpi/ic_launcher.webp deleted file mode 100644 index c209e78ecd372343283f4157dcfd918ec5165bb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1404 zcmV-?1%vuhNk&F=1pok7MM6+kP&il$0000G0000-002h-06|PpNX!5L00Dqw+t%{r zzW2vH!KF=w&cMnnN@{whkTw+#mAh0SV?YL=)3MimFYCWp#fpdtz~8$hD5VPuQgtcN zXl<@<#Cme5f5yr2h%@8TWh?)bSK`O z^Z@d={gn7J{iyxL_y_%J|L>ep{dUxUP8a{byupH&!UNR*OutO~0{*T4q5R6@ApLF! z5{w?Z150gC7#>(VHFJZ-^6O@PYp{t!jH(_Z*nzTK4 zkc{fLE4Q3|mA2`CWQ3{8;gxGizgM!zccbdQoOLZc8hThi-IhN90RFT|zlxh3Ty&VG z?Fe{#9RrRnxzsu|Lg2ddugg7k%>0JeD+{XZ7>Z~{=|M+sh1MF7~ zz>To~`~LVQe1nNoR-gEzkpe{Ak^7{{ZBk2i_<+`Bq<^GB!RYG+z)h;Y3+<{zlMUYd zrd*W4w&jZ0%kBuDZ1EW&KLpyR7r2=}fF2%0VwHM4pUs}ZI2egi#DRMYZPek*^H9YK zay4Iy3WXFG(F14xYsoDA|KXgGc5%2DhmQ1gFCkrgHBm!lXG8I5h*uf{rn48Z!_@ z4Bk6TJAB2CKYqPjiX&mWoW>OPFGd$wqroa($ne7EUK;#3VYkXaew%Kh^3OrMhtjYN?XEoY`tRPQsAkH-DSL^QqyN0>^ zmC>{#F14jz4GeW{pJoRpLFa_*GI{?T93^rX7SPQgT@LbLqpNA}<@2wH;q493)G=1Y z#-sCiRNX~qf3KgiFzB3I>4Z%AfS(3$`-aMIBU+6?gbgDb!)L~A)je+;fR0jWLL-Fu z4)P{c7{B4Hp91&%??2$v9iRSFnuckHUm}or9seH6 z>%NbT+5*@L5(I9j@06@(!{ZI?U0=pKn8uwIg&L{JV14+8s2hnvbRrU|hZCd}IJu7*;;ECgO%8_*W Kmw_-CKmY()leWbG diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp deleted file mode 100644 index b2dfe3d1ba5cf3ee31b3ecc1ced89044a1f3b7a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2898 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 diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.png b/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..ce1bd0b2caaf23e5dc40e70a4d2e4b6b75c996e7 GIT binary patch literal 3036 zcmV<23nTQ2P)Px=mPtfGRA@u(nG0}K1QXDX%BcB-fdDxt_AC@4Y*1`ra!guK9HL&CDz4ZGRh?0fgVI(Oa0 zh=e4VOzRAHW@l&ae)qfQcmC&`?|k1v;Cp^S-*fxH9f1F}f_D@cMFH7C@<)n~OMFk5 zaFd~cJSPGG5aXZW#-bzKzipt21d!)~0RTe6n%vx6H7?>Thj2l&**rMxw*=sKR%D_8 zu7^osdSTkqnUxRc(U~i+6YHUHe|B{AI^hRk_BWG01^Sfn4ST$3NnRr!Pc!m`uNGGK?jJ& zRg=T*wyxU+h#UP?f@WuDla*QP_R|PmHE8Pvj9SYR{s<(&ILxvvfS@oCBVkF&C`CE| zA>~=ckh=hBSofc2R$XmxcioWaa-Q&GrMVpda@m{}B}dPH)DZU`w#xL2{R%Hq9Z`ok zg@m9gN(}%X6!{1wQ8WR;3K4;$0I(zth^Pc8o{!GSn~4XCkbPCpKJainvE|&sR?exM zd*J+$(>Fkk$a6aY$b#af<)=F9K9gsiU$k*2Y7MWWRDjbYvluGzfWRmq06#zh14vi` z-mniq5l%|cs39Gp1TYr{1WiTnNnL>N@*aBpg?+DVi#r3^uy}3xTlKr@Cj%fBE}5B` zY>~cX;o+bIM0szoQ7eBoCjr!e3CIcWA_w!5@^9^|J z+(S*<|GBJmQ`2Cd%fto!K$oJI0R$RS^8^0I^(Q-z)+Tf}<(F1h7d`NfZ!oCy_YZ<( z4GfWt79;@$Z(@z;`@#ChwjSB`h7lMQOXrs@+1a@FqshpD7(jusyedhXWjfjR?%!&b zZQ5&4X0PZmw*i;i8&<1W5+jG6IokZ*O8@{uuKUFq#YLT#&bDdkGw)eG@oe`iFgg4#S-IKJo2Yi{$UDXEL^wK>lp3qxVA)9DNV04UkpvRc)qm3L3ion3aK z^Y}+syBUu*Bmilp-;_62Xx+v2RQ5nb$Y{vHG_!<*8B&|NO-pFOx7L z^xCZ!yWj4PgWR<3xEVm=p8PGZkd$7Z!8)Cu$ov`i+#QJ`xgNjEn5@hEdM}3NqYFdbLj(420lyyAX-MfLps4*&>)D3+oZ z4OzJ?&Abu=o^oG=vx_K7!J(iJzyu~zq5@`EtjpoPyj2+zlJYYPv%|h1#%h>=&Drf~ z30U`_BBW~W>ul`x^m=X!v6X7sIp?rj*n5;R;DMgux7*Y5mB8B1*3`9Z6^9002{d|hfsD$x| z&3VnmM8lH&tS2f&Gyw5+DH*AUiOkw8hJ-1U5)wkuFhbKxfQ3aV0D>YX;7BS%14~N3!V8C^;$8R~|5Bmds&OSLO!Xp8EOC^@g z%|uaB8xDIy#l?%(^1O(9+3!PbD^5e$jeGX=Si91K{| zGL1ICqXLXZc@B^?DFL1X90x-#(&r z+iSISvhG~>X}P41If-S6gfj9&I15-RN~2V&A>X9Y=bE@Em*#WzeHM-eY`KLM6@j5a zT0z6@mdodwt_*Zt$;g*8k5_`yywWL$&eUXjLelvdJG zAjAP2Qv?T`rygwSKK6+`@$!GN8`kom!xxBiMkqRr~F z%H{ZaxQr!)7^3d&*k9`iIP7u5q3y)sdwbkWv`NndRF&=(VqX0If2!(B;37 z$6tMD6a~f;K@<89O)P|F%_=EbUGrSy?)}Fki4ThkT8ZEU5e1S0#{}E!b*Hxe`2SS_ z*>kZZUbW)!U*U?S1B%l>&>1tG2^vb*E&k^T3$FG1eQZ51g$uv4V+kI`0<^1Z@N zk?Jjh$olyC%l>)Xq;7!>{iBj&BjJ`P&$fsCfpve_epJOBkTF?nu-B7D!hO=2ZR}

C%4 zc_9eOXvPbC4kzU8YowIA8cW~Uv|eB&yYwAObSwL2vY~UYI7NXPvf3b+c^?wcs~_t{ ze_m66-0)^{JdOMKPwjpQ@Sna!*?$wTZ~su*tNv7o!gXT!GRgivP}ec?5>l1!7<(rT zds|8x(qGc673zrvYIz;J23FG{9nHMnAuP}NpAED^laz3mAN1sy+NXK)!6v1FxQ;lh zOBLA>$~P3r4b*NcqR;y6pwyhZ3_PiDb|%n1gGjl3ZU}ujInlP{eks-#oA6>rh&g+!f`hv#_%JrgYPu z(U^&XLW^QX7F9Z*SRPpQl{B%x)_AMp^}_v~?j7 zapvHMKxSf*Mtyx8I}-<*UGn3)oHd(nn=)BZ`d$lDBwq_GL($_TPaS{UeevT(AJ`p0 z9%+hQb6z)U9qjbuXjg|dExCLjpS8$VKQ55VsIC%@{N5t{NsW)=hNGI`J=x97_kbz@ E0Of=7!TQj4N+cqN`nQhxvX7dAV-`K|Ub$-q+H-5I?Tx0g9jWxd@A|?POE8`3b8fO$T))xP* z(X?&brZw({`)WU&rdAs1iTa0x6F@PIxJ&&L|dpySV!ID|iUhjCcKz(@mE z!x@~W#3H<)4Ae(4eQJRk`Iz3<1)6^m)0b_4_TRZ+cz#eD3f8V;2r-1fE!F}W zEi0MEkTTx}8i1{`l_6vo0(Vuh0HD$I4SjZ=?^?k82R51bC)2D_{y8mi_?X^=U?2|F{Vr7s!k(AZC$O#ZMyavHhlQ7 zUR~QXuH~#o#>(b$u4?s~HLF*3IcF7023AlwAYudn0FV~|odGH^05AYPEfR)8p`i{n zwg3zPVp{+wOsxKc>)(pMupKF!Y2HoUqQ3|Yu|8lwR=?5zZuhG6J?H`bSNk_wPoM{u zSL{c@pY7+c2kck>`^q1^^gR0QB7Y?KUD{vz-uVX~;V-rW)PDcI)$_UjgVV?S?=oLR zf4}zz{#*R_{LkiJ#0RdQLNC^2Vp%JPEUvG9ra2BVZ92(p9h7Ka@!yf9(lj#}>+|u* z;^_?KWdzkM`6gqPo9;;r6&JEa)}R3X{(CWv?NvgLeOTq$cZXqf7|sPImi-7cS8DCN zGf;DVt3Am`>hH3{4-WzH43Ftx)SofNe^-#|0HdCo<+8Qs!}TZP{HH8~z5n`ExcHuT zDL1m&|DVpIy=xsLO>8k92HcmfSKhflQ0H~9=^-{#!I1g(;+44xw~=* zxvNz35vfsQE)@)Zsp*6_GjYD};Squ83<_?^SbALb{a`j<0Gn%6JY!zhp=Fg}Ga2|8 z52e1WU%^L1}15Ex0fF$e@eCT(()_P zvV?CA%#Sy08_U6VPt4EtmVQraWJX` zh=N|WQ>LgrvF~R&qOfB$!%D3cGv?;Xh_z$z7k&s4N)$WYf*k=|*jCEkO19{h_(%W4 zPuOqbCw`SeAX*R}UUsbVsgtuG?xs(#Ikx9`JZoQFz0n*7ZG@Fv@kZk`gzO$HoA9kN z8U5{-yY zvV{`&WKU2$mZeoBmiJrEdzUZAv1sRxpePdg1)F*X^Y)zp^Y*R;;z~vOv-z&)&G)JQ{m!C9cmziu1^nHA z`#`0c>@PnQ9CJKgC5NjJD8HM3|KC(g5nnCq$n0Gsu_DXk36@ql%npEye|?%RmG)

FJ$wK}0tWNB{uH;AM~i diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..aa4507907d1b4075e9fbfe471832527bd86a67a8 GIT binary patch literal 9512 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 diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp deleted file mode 100644 index 1b9a6956b3acdc11f40ce2bb3f6efbd845cc243f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3918 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

-OzIM?2LK}m98>Ue_K=Fd*O|K;?|)Xnq%uoI1PiQOJ-adH~BN7STQ6q6o& z)hY}A=A-r(=g$E2_bv_t#E;wX0)vfi!v`4kvGI%xT?*?~kNU#nNt}hxo85Whj6y|K4z%>?fJzUBLp6*pCs3lJ{YH}oo0>}BviH+Jgv{`d*wBfugR-?HG`PFW5gplGA+{yLH(UFZ2wyjZ#UG<+=Ge zgCiZ<`RT>Bb`d0LWy6VSr>h6~rW`fM&Q4Qd09k zE)_v_RSvWd=z&D_10A7)%A^elG78YtC{N?r^C#wtM8`w^+0~>@hdLZTuXbsCy>Q;2 zKfUPi)UbtWu@xAi4D%il=CMHjN;n7#cn+Zv1V+_TvUOW#x4KPmbifTsMKYXK?@ zP>yinjyTS&KbXu$zsKps`uzw1~^y$M_b70j}e}pyBqRKfbb$QDlKRa@99|42)9y1~vT~fXIR;58UoEj-yMTsVBRB~rkP8s(JtHgBQo8P<~N`t;)+|HFi_-F6`>HrcZ z-tsCf+H($%Vdcigk_USv_BB4$>AN^dsl|=0pNE{ws}8sP5utX1D+HxM545->Pz-c}Kv)3sNhws9WkTn$4#@NXMEbCZ&g8?y#q$my zJoDg+Yg~5;%bgd+i+y0*pLPoh`47DH-fODESAg*P(%*i7iuU&z<=A;{M)wB!upB2+ zi$Y5U*D`qiSysNc-meLuzvs&5Zdw}%syibYxwmpT^q$UP_0qxKH$o@X|In`${xbsk zJ3v|WPsYd2|6|Apa=D#Yuh$1M$skk~7J^)>07h&YNC%oARagxQxdf_8GN41G14@J+ z7$}NgXRu(?Q}XwHc>I>BgV3+GjbV)uI{Waie|Yc2p^n3=_V0h^$23@|y~wQ#9^L83 zI7c*^z-o!BXZ7G(cADUmj&w+d)@? zDhyC*!Lo;VaSQ&UHyiyBxwu%wk6C<@^GiwmF&`qd%>ffBNXe_;yJ>r^NqUtate}L^rr!+?_3LtcC z3$ZsR|7O4_7f>aDSE2aJskmy7e;_#?Rs4__A|BfFK|i#gy{99;<$bOmwvA8-1gu5J z+7Z_5SFVr7K6HWZA(PxvtAbLvJqn-5;Z+*zniYc=781!X@RhX0O^ye^_f%-pf##gcFriv&bIWh zw#0mQ-mprVJ>AKHLX9t`H(>0w%P5pgHD)0)uyz_v;-C#qP9BqEfBo7eiw3R&KUEQP zL!rPFZ*kdYS3^hwDro%d`d2shvf!uy>vdD(k)5hI^x!Yf^U+KGaEWRT=m%a!hhI5v z?znH?-f-wjC6?M|*daP6x_0$Z)trHnsD#tDo+B5fHpn0ewswwZ5)4 zllTq0bcU~+@f7Kz|LWujcJ&I6V+Hf7+Pw@3lbdY(cE=GDl{x12ZyF8s}rx!EDJh)NQ_ zT0=Tu+rm7xx2<%QdXg}ek*40cp0Wr6?Fac+4}txp$>H7Vesqg$)ySlm0cB-n5gQvW z#1p(JSptT~etwq7npu$6*GDFQw(*aJ5>xdb0qnP90$```vmQ5j4aH^w3zhAuk9bSt zc>GPGRo<&r4)Yg}0(*~_KZc8j39RQWT^oueB5^K3Rdh1U za%tdVZO;EE@2?pUUT=CXEbHa@osL91(zcxd7zV4~aRaz;cPx$Dr6q@jCJ}Dy zMbm=ANxs&(G3NGsx_%w1cOfGzJ1gxJtx^wq#r84<6=VU>1yFgwf8rb4RzTUOJTX%; z^rFjh7Rq&yrt4YN3XtE8W{i7lPx^{Q&#oq;fXq4zYkFmV0jGJ4j96hrE`_Xk;ZJtn z<%<3JM)UdZJ#i*9i)*bawX+M`xSOhpn#mV0?#`@Aaq0%3rhWb6obIiLAlmm!(#9Yx z966|PFTNCVFYXAG8hWyydm)1%wX6Sp8fbHcfN|sRve1{{6S`k3cR$l8sMj`|@gDw@ z{kUSgze$s96a#RcqP<`1=qk;IZNiilkm+D9&w>xe_msOE2u=)rmPM}!BmSBIfpIM- zCl-BEdHi=T&lVAMQ|v)to?2=PwKB>kPOjI|)u;t2St`Jw5qdMrGd`Zz3{P@cYS4{7h1??>3tD^zXaL%-L{ZiD{yXP`tvMm1q0)i*q%t z5B)pynJ$)o;Km+Wg#wt$M15QQkUCTPDCw}4Q|{6+`FBS3dfvs>yP6A5lK>L_j{ zrb2^Wov_Wjv7-+Mk&{Il9nZo=^NG!<)5PoN1Z9+Xrs#+h`N$jOscb*u1a9Zv%c$?8 z7mr++!bq@H;hrg^xb~Be*IE?{t8QJG)mmT~^ZavBVV$-~{5v7hQJRJSB2a7n;xil^ z6SLs#jL)K7bUMsvlfc=yEZn>P$Ko7aApJi=A?eQi`?J6U_vH%vT28q4VJvvXMs9(+ znPHIlc!Ne&$u~fIo9EG5Z5^J`b+kH#V{`Zi^VllGq$~O=8P*6sf_ET=e z?CL;VqOh*nDOK~%in=OSP|F|u{DE@Iow`~+onlyI>i-Xo*(lkv1=PsF?uE_V~jjB(hnaSKNX_YYTLz$wPRiwT%bqT>& zx!Lh=LWb=2?8XkZyKvb_R}CWfpBvG_`V;@bM9u?4eDF8K@AYIWDWwhE0bK#IMlbd^ zxpy1=LzrNqlBBK#yjUI1gu$#8Z%=EMB^S5M&{k41!*Wj$8p5}$6D%Q_w&dlp+h zm6$~-U?~+bOWZ&D1{foobg*Z6H7V&~pNH6@MvPO=g1Nr>YeDIzWw|z^L(k?F5}Zr! znk1|=L`;$^T%WOiZi>!9nI@UlV2cMQ`CV`f711yj7hFbS4tNUBc?CyLpH;q_lg8p57`fdc(f%mYi(1i3ob{$oOOe>`}Doudvyt*HMHKg+&4(4 zfd-N_Qu|ESC<_=De9rml5?5s;j&{rvjZ7Gq%2|K<&X4c>YFIMCIRD8&xvWc47)+j~ ze4%(NJaqk2fn}?MQKn$1VMzujbo)1mmV?WQYD4O0mw0B=4eXZ}iM_+u5gb zV@{VcmQuz^2fC?PQmBUp89-9i7{el}dI*_?cMdNEKV(DLRR6VmBmv^7u(o2%taE8f zA4;~UEZ_RN#w?3)8lA<=e1x6L)gvS zwR-937)N?adJ52MMjvw=y}5-bWln#i_oAukw?yFdrJBd_E|bAo{OE7zbbxt~Wb9+F zDOoyQlF8fmoM&A3g@m;F@Z3xgZ{--hit?7+z`v_6kfPNy3}%E~JEbx?m6(IKz+QY_ z_=7KjiDg9}Pz5iuDsjXFGsJ@I0#Yi8kPwu9y2s1IRafs((8-$pIVYOG5j1n9= zqL)Yojw0@65g;On@IMqKVkEyZ4I^654DQb&(&pGVBqm9=KV*DE!r;*Je>w=iB?-=9 WEkHj=y1E0b5gF(hY1e7Kj`$z(pHKV% literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp deleted file mode 100644 index 28d4b77f9f036a47549d47db79c16788749dca10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2884 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�(p-{x$&=IACIfoAR!za)F-^da-t3#0Dycnp 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 E0C!5$tN;K2 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp deleted file mode 100644 index aa7d6427e6fa1074b79ccd52ef67ac15c5637e85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3844 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

UmY2RIYtNPVDpE$%vda+HD#3m z&VuXJ{BK&Qe+rBa7eq}Q(bq|tn(RrJAk|ztj2(i{d>nmQnM?;HF2k&9sA6up5tmjl z7lySlzMbifH17-m-Lwa_F&e7nOH?ESi3#ckR3tsM+jsck3`oG!uMS}|eAwVXv>}qxwq?QY%QJ0}r@^;fhuUA9W z*BVl>TGo&N004@xSiwDUXUvp51sVmqO3m)=B55aPwf@0=e}cN+$-BdKxY`YrT_4)0 z_d10#i44Q*rFr8MC>*)v$EJvz``(pb{e&*6k+b zsMz%($|1+8hn8c2?P(l@;Rb&CsZeYoCI3?2!LqjbwPXW3z4G$Qfj=cT5Yb%vY0(AX oeb?AaKtwrnc|$|zzw9vfvn^aJJ!zd)XFXqqy0000001=f@-~a#s diff --git a/app/src/main/res/values/ic_launcher_background.xml b/app/src/main/res/values/ic_launcher_background.xml new file mode 100644 index 0000000..e32f6e0 --- /dev/null +++ b/app/src/main/res/values/ic_launcher_background.xml @@ -0,0 +1,4 @@ + + + #D13DDC + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index b9cc33a..52d4d5b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -29,4 +29,9 @@ Abandonner Valider + Nombre de parties jouées + Taux de réussite moyen + Filtrer par + Date + \ No newline at end of file diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 92fc771..e6cb7ab 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,5 +1,7 @@ [versions] agp = "8.7.3" +annotationsJava5 = "15.0" +coilCompose = "2.4.0" converterGson = "2.9.0" kotlin = "2.0.0" coreKtx = "1.13.1" @@ -10,12 +12,28 @@ lifecycleRuntimeKtx = "2.8.6" activityCompose = "1.9.3" composeBom = "2024.04.01" navigationCompose = "2.8.4" -media3Exoplayer = "1.5.0" retrofit = "2.9.0" +roomCommon = "2.6.1" +roomCompiler = "2.6.1" +roomCompilerVersion = "2.5.0" +roomKtx = "2.6.1" +roomPaging = "2.6.1" +roomRuntime = "2.6.1" +roomRuntimeVersion = "2.5.0" +runtimeLivedata = "1.7.6" [libraries] androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" } androidx-navigation-compose = { module = "androidx.navigation:navigation-compose", version.ref = "navigationCompose" } +androidx-room-compiler = { module = "androidx.room:room-compiler", version.ref = "roomCompiler" } +androidx-room-compiler-v250 = { module = "androidx.room:room-compiler", version.ref = "roomCompilerVersion" } +androidx-room-paging = { module = "androidx.room:room-paging", version.ref = "roomPaging" } +androidx-room-room-compiler = { module = "androidx.room:room-compiler" } +androidx-room-room-compiler2 = { module = "androidx.room:room-compiler" } +androidx-room-runtime = { module = "androidx.room:room-runtime", version.ref = "roomRuntime" } +androidx-room-runtime-v250 = { module = "androidx.room:room-runtime", version.ref = "roomRuntimeVersion" } +annotations-java5 = { module = "org.jetbrains:annotations-java5", version.ref = "annotationsJava5" } +coil-compose = { module = "io.coil-kt:coil-compose", version.ref = "coilCompose" } converter-gson = { module = "com.squareup.retrofit2:converter-gson", version.ref = "converterGson" } junit = { group = "junit", name = "junit", version.ref = "junit" } androidx-junit = { group = "androidx.test.ext", name = "junit", version.ref = "junitVersion" } @@ -30,8 +48,12 @@ androidx-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-toolin androidx-ui-test-manifest = { group = "androidx.compose.ui", name = "ui-test-manifest" } androidx-ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-test-junit4" } androidx-material3 = { group = "androidx.compose.material3", name = "material3" } -androidx-media3-exoplayer = { group = "androidx.media3", name = "media3-exoplayer", version.ref = "media3Exoplayer" } retrofit = { module = "com.squareup.retrofit2:retrofit", version.ref = "retrofit" } +androidx-room-common = { group = "androidx.room", name = "room-common", version.ref = "roomCommon" } +androidx-room-ktx = { group = "androidx.room", name = "room-ktx", version.ref = "roomKtx" } +room-compiler = { module = "androidx.room:room-compiler" } +room-ktx = { module = "androidx.room:room-ktx" } +androidx-runtime-livedata = { group = "androidx.compose.runtime", name = "runtime-livedata", version.ref = "runtimeLivedata" } [plugins] android-application = { id = "com.android.application", version.ref = "agp" }