From 7742b9866e7b1ec1f6e8ae984ee2c22e7052540c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mathieu=20B=C3=A9langer?= Date: Thu, 5 Nov 2020 22:34:26 -0500 Subject: [PATCH 01/34] New sliverbar asset & app icon --- .../android/app/src/main/AndroidManifest.xml | 2 +- .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 1921 -> 10196 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 1227 -> 6814 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 2789 -> 14196 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 4616 -> 23631 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 6874 -> 35008 bytes mobile/common/assets/img/Dodo4.png | Bin 0 -> 50348 bytes mobile/common/assets/img/Dodo4.svg | 233 ++++++++++++++++++ mobile/common/assets/img/Objets.png | Bin 0 -> 240148 bytes .../navigation/navdrawer_widget.dart | 4 + .../pages/dashboard/dashboard_page.dart | 6 +- mobile/pubspec.yaml | 2 +- 12 files changed, 242 insertions(+), 5 deletions(-) create mode 100644 mobile/common/assets/img/Dodo4.png create mode 100644 mobile/common/assets/img/Dodo4.svg create mode 100644 mobile/common/assets/img/Objets.png diff --git a/mobile/android/app/src/main/AndroidManifest.xml b/mobile/android/app/src/main/AndroidManifest.xml index d167ca07..abc5d8f3 100644 --- a/mobile/android/app/src/main/AndroidManifest.xml +++ b/mobile/android/app/src/main/AndroidManifest.xml @@ -50,4 +50,4 @@ android:value="2" /> - + \ No newline at end of file diff --git a/mobile/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/mobile/android/app/src/main/res/mipmap-hdpi/ic_launcher.png index 11f562011518f49a543fd3adef3d53e52a20eb14..ea70756c8ba122fb8548a40c7928e3d461ebc469 100644 GIT binary patch literal 10196 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 O00000A zobR^!)j4}>?w7kBPWIm2=bZK5YpwrU>)ZzX{Q1-Mf0TgQR)4^h_<{MF_<{MF_<{MF z_<{MF_<{MF{3T$jBCS)Wj#qWciitP=Rf}D^bm{Ebv(KJAYtp32gb5QSO`24VMVk+qWktC!2V$SzuV^+qZAAv9TZt3=B+9PoFq(qS)u_*RP3*iI*>5 zmZ;NiG~*UKefo4sNeP3bq$E(eJZOOd&aGRw?%%&(afu9c;WQ5H!i5Vc+P;1JIdkSP zef|3Nu3fv@wQILx#R{~aH*cP7`}FD4t5>g@HfeZ`<#Xf)jEYnV%I-zdE zh7DV{ZY_G}gv;AJPz|eB^=+W5c&6_uQd3i+9!i5XTW98-LxG41p8)9N&SOmG(y&pe* zbp4`G8?V*?tonBoPH`S#eB#83lP6Egepn&{Q2`ZTS!QVOt}UH1+84U5?~`n zjDKK%t5&U4%KqEHMDQgJo64P78Z&0hlqpjN4jf1bDUG?-uU~)5mMybq&sJJiR8(L? zR@5G@SpL?nTg{s{XUaiPG%s7W%wCvja79WAG|11-htS;~K|eSHgydO8dc%hgA3uIP zfuywDyLa!*nKL;8^|T<5+`W63l#NL_i+|dQG2V(34jMG5SFc_aO)p-&5dDa{V;(tt z_%L*@_Ty=1&YV%xr%#^}X`@DsQWm2!2GX8Adw48iHg)P$+qyZm7}}6<;X1Ww^+2!2 zxkry4c+RdO6_MHy4Zxl}d4lIa+4t|?x1KJ_;dpcB&b4kHFkpb| z-$X~RsQ^gD%#Dx@WihF|)?y4LI&|njv?x^S$hl$-T1jX_fq`JGPheYdaWPCNbrzdl zo}AvVU%!?uTRPFrsl|k&j~_n{iGKluBd0un`SPVY>7`4TZrr#LhHTKF0iL;f^=d19 z%MlzpbO>OOP5$oRpa2v1`_>Id|?H)KAqY9$;ruBfO5XdBCE38 zxpT(}Ra6!`zyt$kQK($M^oB*ojT<+8`gH0&GAub7_xn$EdEmo`4{c~tjo7ysN>^FM z5pvi~)vq-%0()rKY->`b*nbB``l?3hKXocNM(?LZJHUja8#QV~X90h}6AqQ&X{r>~ zCH7;CHf+g~B@7lXUQB84P!9r9@AqK)u1KdOgM@?xvNKhc6SaEx?rrokaz{Bdz{iHV7nU97Zd z(IPA?EF>g^EB$CuQGXE@qm{1w9|RgjGcfBH!m(q==H=zNJYTkfBpYZYv1$!VekWq; zM+s~B8yXsFMPd$&Rs8>%<7;9Hn6QFZU8@!iz0@iOEml@mCa4%tG09jOYOs}-meTc@ zd%I>}Xk1cKQc+Ps8!A7Uv$%HcS`sl7^5DUPq@*O-xoFX%_;&dCHf`E~*~%`uL^H6= z%*>RO6g3s&6ciMw|G-h}#l^)@QBg9^$jBfE=+#6su<-D3E3g`h37^yqEHX0E^@nNK z5SJLKJWStG6Y=LUUlTttUlTttUlTttUlTttUz2|TbV!LH!S<2V00000NkvXXu0mjf DjE=fc diff --git a/mobile/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/mobile/android/app/src/main/res/mipmap-mdpi/ic_launcher.png index 5af1b460951d3f3318c96423dadfd792ede3fef7..28394c2787ca750d74a72985b3616dfc38ef16f2 100644 GIT binary patch literal 6814 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 M07*qoM6N<$f&!oK?EnA( delta 1218 zcmV;z1U>tnHOmQ*8Gix*007uvZqNV#1d>TaK~#7F?U-38ZBZD<54JKSW9Bgu@}dmk zfy@dCNhDK}IpIE0q)f?+GKE5hq|6yIgyaF4heSvShcZWo`@d(Ej(gpE_St7U?!);W zR(q|z_xgV4Ti>(~_4fA0`JaUPZh+rK0whQzK!QX9BuLl+dVk}|$;pYLqN1|0GFGId zq`n7;pw!jXRaI4Sxm<7r2M3pwl*r1;GGh`6h-CTv{QQQ71}iJ8=;-K&hlkG2PD~RL z5}55Ns)aT;H=*9s)3dg=Rz^k!D?k|<8hXd&2zh*>0*#H0L2*`A7PMw$WSE(mB_}6` zg@xVU-%m_TJbyku+S%C|7#PrJ5*6s?<_5~t)zv{TFfd?lZVsTAmzTi6Kp0PoC-L#| zIXO8rnM4ILF)_h7JUkp3896mIrJ$gI>CVp1*47pwczu1vX*xPOdU$w<1IXLkJ1;M< zprC-FsDOZg=jUfE8X6kv>gpaJA9HvPgfm@RTXT1Jr+;H4xlpwe8d!{ zEiEkoB7eAuul4nHShuXKEHpIK$jC_GsR?mp@B?^ES63H|0W%;Uf~lgS0(Xs#jbmbB zs;jGU-PhNbot>?(uTMe@)6&vX{FuzlOg4Q8f=#=-yKirA$-ao~g@uLpyK!-Gh$h4o z{JOHTvaqlai__E7ghNF|WqW(u($bPmAlN@OHGdUmxVX3=Oo*e)%S$97OtrMMtgWqA zR#vdy(b0hz1R zt*zB!@l;`rEiY7juZgM$Msgs8@dhyw={!zwm5Hp|P)dwYAtav0m&+Yw)IAlMbw zLVsYgnW>3KCnY8A@9*OpzKl`;g0r(Ta%**UmGd!09UUFPobVemWwVw+B^)^_DvG2y zNPmC7l9EzxZf;v!+sw?&r~2>~0-lZ+3k?K8-h(mTj{_r41T>$b5W)KC>8Y?Zw17zd zMJT~l5jFhl|9A@)B6W>@AZ+d8;^O1ugMS7C>6r8zbhd^&e+dxOlj5bOrWO-T)~H-S+RlK25%4y3KET~kvN8ygF+`Uj1_zdy1f0~(=$ zaD2|r&OJRnXnmHJmPo$-upLFAvZ5hDxex~sVM0~v?d_eNokhV%vOxf9^JH>z5`U>Y zF)@)N<_|@p3~e&H(v6Lc@$qruE~pjw5@L+P9Ecwag3=};1ivr``rDtAe>#>>BGOj} zayQgtl$V#s#naOh>0(6@CO}tLSLi*sTrMeR=-PaJeNpfa4h{|v578@{nwmN}IpJeS zOhAi^i=^KO2?-%9_$)-Tf&9ebnL7=hj^-&mJX}mbE<6!fTp8@l5QvV?e%l{btcwIl gkVt?8$$tm*6UI+8F8;;Cp8x;=07*qoM6N<$g4FRk&Hw-a diff --git a/mobile/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/mobile/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png index 506fd492330a1f3cdfe93e4bb54e88453537285a..6ae86bf117ca26e33afc4db90b9754b9926384ec 100644 GIT binary patch literal 14196 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 KMNUMnLSTYv9+Er& literal 2789 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 ZYRGg|{ze0+=n)WK1qhZ7xJs-S`9GidM+X1^ diff --git a/mobile/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/mobile/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png index 3d3e79ef04b01bf1f053fd59838ebb273c8910aa..30b6ede569ff009c9bb52d2eb51bd8953baa19fc 100644 GIT binary patch literal 23631 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 diff --git a/mobile/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/mobile/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png index 488619c44692b998643dc7c3d2f015f04cb28412..712ceae24b02e55e1775cc101a8fc1270edb3e1c 100644 GIT binary patch literal 35008 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

h%hX{$imy zZ33T?x3~8ZK(E`Jdsr5#KVC1MkBa9PYnLl2V`fp#*5-%a2K!raYFvkt`+U->z|RO!*{520|9uemvCHayzN4{30xZZmVqJ_UB9Pr`{^rj@&`B z|B;K$_E1m7wEj4rs|(J3ba38LPFzyJI2~IdR#_=A8=DFvJ-tkBaq*LEoG9?2>FREU z(m8|kBu@pKjy>Y3D%WEW!3%B@xjDNnbk`U zQ31W)>Aj-PX;EcO4GWKUn^Q zSN0nbAa(O_n0(55$u8tPXhShDu~A&YdVzDkl+oXr^;J7Uab>OiJwTwAnGv!}f^9a~ zofDL!Yf8R;Mq418#r;(A?;pwT?q1f@ztk9gC5&p*o7WNjFKCVNK?>sh5Zj|g5SL0Q zCfs)?K3P!P5~k7vm?@^Y8lM*}vbv=BOvlp-3Z)SsiLvH?g`4m|+~b2f5Q47wk|t*3 zFA4+|c|DE5_7F&OG#Yin=F8Yx8mZtXoBzSi+TECzW6(X0UTwR4h)7P=@_BsSmJ27p z=6s>MtgK6lCI|>w^Z+QKAtWL}``+~Cue9#>3P%|pZ{NAL zMN-loo$?rpnEpyXV$di{$hc@5ovqKRPhfZsBjvrp=>IrYjIWC^7 z9ZMN5b$CHpSmsh+?vAG1X1FW^!H@uO!yl7_(IiyB=~TbBIg z_b)z^f0AGVPwEzY*s-o`3r37b)$r+5?3l&+-`U|!2o>3hHdW2ngg5GlHE^C+ z1euiNfClmBzEf<7r&*pn(Z6j2(V1eP>}Og7)xoOt4AO(*YWOI6)0^YS>0VyO0&3CY zivx(ShOM5}3Suoym%YUFnWZV>{bzo-Por)j5s^Mj7^Nr$klt=TaKzM%jN)He+{P0@ z8Cyb_hQ)z2Os zmy(lo_lC-~M{bE!nmo%;?@dgz{+o!d06AKwWV5rkVp;8Q`LmV?$@Afq*VYz*Zf@py zr1LaO*0CtYVxcqO@)})F{nx_Ynk`zQf*_jSuD|Ni<@6peiL*=~;46_)0I>#VS@5h( z(PBD&NvZvztm>I#bI9388$JI3b7}Pi7CS?vg7QHafiv8wIPsT|mhOHs)a?Ms$oXN-`cr zog_g!E8-NSXB9~;9@j1`lxeN#35Q#$I9WdM3(I~E!tT!p z;h?Wdo?s`~oiGnT^S{z&W;kt2Hr`UP1^sYfQLY0?w6Ep;)Dw*_jUZ-gI*LRb`NPzV zix(=sG}YU)*8y`x{xi=ywaWEVC6v@iNI%x z-;G5g7$wEAI2T$dI|8LG`hYA_onB<|#i<)AC8DQihe`Qpbm;jTOE{2kOg^_;-pfUP z+Uvhgm)%<20!r`U?XT2X{_MJd%%4@pyZPxtBoUVkR(sI!pc5>a4qf}tH-^Vz&GuWg z&F{c9KZ%)3AHy#<$~+z2N8Z`x)6IX9sPpA}{>xS?4t&_6q_#^X`11p3Br?4P*F2nU zh7j(*Qm2NPlJ0If9cAeBc8;T~tIs9?b4z-%OQt2Y#Xqn_e=NVf__-PP?xUaXu9&4U zeR0oJV0pzKNbZM7_i$1A7Uq2yH=Y!M)X;L<=QGGrtq(^NH1+xNk4Fg1+W2jUjU;^f;Xzw)JnaL_}6mEPX9L=M%pNR z?DqNOeGL(%1XH(-t+!B?@|hF~uOhV1ak^MFb*)ZEJ7*gc?qZoK`oz4xZOKqCv>+KJ z$h@ujLOY99zos9m5X~cTFKACT-yDY6h)?-vQ3*&Hb`h%H&$+yHpfxoiJ}9n7J#Frk z^fN>P4qfdT?+Inl+`W(;x(S1{j}GVv?{7t=Y8GKJ2?+S+<`2J2ieM*#y3xDvU2UJ0 z(GF5XKtqxJH!vYcrHU6>ff2GrkPV8hFIc_h(j^X$H{9b^OErXM(61F|3C~RKL5%lp zD(oPsHQqm_$yxM*GlV4OC8MXm+@BS_NR4<^#Q1NCg`fNkukV_44L|;Vw(Asr4DGo& z7S-Ocz7nv@9!H(yE&O6&(UjodY&g5N)w`4rVHxUxQ|N4Vg(?#u4DZJ|P>Hc>rQ!qQm1-AdcO&FS|q9^Fr7 zTosKYQuii^H#FSdKeh`oK~%fvw`>PP5|6~%;W@~#wFuGW=2sq3RVRJpp2GZ{^g=TF zDNsd2C$B7R5T0o-=?8jS$MTX=bv2LlG5Blns*QcGzi6P^&Mv?(!8wWlOO0+Jq<=b- zT9C}5={VGe)U-rg`VWpX7a7V$N`CqgkDz1@`vq8GeUd(Av{1r@t8(YRkx7{sB=RHn ziJeCeS33}cUg2l1N(j6Fkuk*Fk#{mDr?}C7Bt_@(kXe*ZHrF|qmzUE9JkJGh9C0aW zgYPtbJ`d`y0**TD9-Ajr<0GO8MH^MjP|dy21suYl=jZ1JKDRe77J$fxf;#MmkkzdV z(F(W0jTqU|oJyvG>@i1IW+9D??$v~SoiH~mSH8&C>1-2AqnzEd>k9=cWul*>OG`10 zE@^o6pQ%k$9&D4rz_3j-A(}6@b!*>X#Y`QSQCXflx|;7SzOOe5sBcXv_K|>;_j~Lc zD_P06N)WBmkb67G%gfJy04Cfy8yg#% z+jvMm3JeV0``rL^bMK5zTypNJ6QF~1EA8b7;}8Y?uBxhP4vWc<$^U0p)ckp&+qtzU zdAiBoNb34MfLv2EfXk0Ho03gV$7%8kR?uHigy1;6b_G*iD-qE;W7TZsNC|JN5lljL zQg|v1wpmwEoepJSUD8S73fkf3Y?u0HWGfWU6U8_an(%mF&iFt|E9QF*cr3{@OhsYg z2pW+;|GoO}q%Ei$j2i8u&jFToypz?!u{5CosH>zO-=IO-;l!%}#Ldy5>}K#(u?)lYqjc;>(iPENG{QlvmCRvh7e%l0pPo zHINOxo39&YemH@<$aZx820`^`x}_{Cc_9}_xqFTkp>b_IP4c8yx1_R{+)Q=d=i$znXZJ3p`NU|oY@pRnhO zOPc0guPKi$ipS#R|K3R5-roK=Z8k?Km%Th~ik+tUC!R@)0Vj2>y_vYv=%M&jKHQlP zt|JnFf?Sw*_peofd;=z0iENfj2-y6duGv??N!sh{vg%Ejv#?-Z(!;EdM6t)F{8-w`GiCy`zXl>7ok%aZ@p3BjiWnQu&L8l z8S8`!`gtX5MYQb{^uBQoh9iQV21XPEyHD`2EnhpkGua_@()i12Jvj-cr=DtY!kTh~ z;moX&neDXuU=CIZ)t)c6Tvh6BY2T<53?>_;dhxomcGBbMo>E|43j^NU81v$P>Z6+ zZlsL}F&$Yzq4JmdSxjqFJn*nkPT!3MUF$MsJT+%8H-B%ul;Mgw=t7?yNvk$4EVsJk z!HgzldgVWDc=K)I$EZ$vdJX%?EKDE8$XtwBklgY3LdTU`2$AjZ$rTZH$ZpJmC_p`q0Neet2 z9P{y!(xI-A(pXU*^_6AOcSNVKKMBd1I**ynj6G!3Kw;H?q3e;mGBBam9HurE# zK?;un=SggN`B?x7JU(IwcNEeSRk#__H5qRtr4Nqt<3GDXePe$-dy+!t+QuU(L5M*w z3Pz#%sEFq3C)0P%W_mo_rop!y*ebcfyuNHbKnP>qps{UPxR*ZPCO(tvkcR@sH| zO>}x*sJ=osN*z8;?2gX%!1npYVhtJy7RCcGhJFY))&`vhx`YuFH+rNI1($d^ytj|N zTH_&I&zpf@hH=7XY@Agh8t&ETEa{%kx;r4=>MNGstA7hf&9q!7Lq|tN-Lo^vKs@3q z3?!h&nh>3w`Yd1zd52<#h^b7IBQ_SGl~4QUw94`(U_u;MtuyObD|(dkqWE z&y1OkyUXmhr2H({1U)3e(O9lopoeZ5_jWch32%_rerNWf6HX%%fNKdQC@}4fO5K)~%Tk|Ar=i0zA7>(T#r}`m~GcYkhA0O@WO2)_6!3!wap0H)bH(;DOn=Ij5 zYmOBDDZ?)o8KuaV*oQkPqP{TTd|m5o0{9#OL+}0@wU#js9Z&$QZ}$hF=_E{EX#_n< zOl~KIhR6S1j!>Ojf}{{_6+hH6t6ff^(vP<9IvM+OaV@*f{lw$UnA!j4dRBiqdVY{x ztyj(+w-O&?=X@kp33pl1W+%}Ung&@&=Z*$LVVWoja2b915QZ1He}%#{8`kFV;sVGxdP%x$2haJ#*9%VkYMsVsEiKbB@uW`9L z4IQw_K?9ZCg}Ltem|VZ6%)j=h40utaEE3B=o@7{|)~llc8ZD(nhD5-qlMfg=@=aGq zxQpWf{~DkshGJrn5>j;t?U{luv zwiw-vZ#np-NiW!iu6yXYXaEtt7_bI?+!W_TE#o6QDxOdO<(ooN1ON|(6K#nWICppo zpXT8WadCJjdbyj+HG4|z~EEY}+ci#>MGz&liLBS#M+yM^fKVY2b zb+!7pfkH-}sq!Eg?NCta9?mriS`66&=4Ur+A@>ht9^xDt&9vTI;vI5-3EH;c-!L`G zPb+6%@1Igo=nV>`;HJso94?Oi!s`f~q4$x$)_E@|rQ2M{4bDrDy>;cX+skelbKP%L zsX_DsmAyb(YATr*i`#9yhuT!e6BZx1)2dfDs-oLC9dnH{6{eDUgC8^&G#;VL=t@k| z)JMfCzT4x={$HictT!SnN|X`%KR5SG;Y$Kp0zRLSfA$8gD>oy`xZ9mz1hD{ZxGmsE zlCuS(^z>@YLD)Qmby8aE-bt1wr(mOK=>x2E)?Q)OU|^d^#^L zTl(S``MyH9H=u43+Y#zY2U;2Tr7KipMb^#(K)-i+f>{oFz(_moG*6fPTE#G=-95x_%*$aA_Fl+y z1Rk6Hjt1a!xrcv^MOw6^TJ&oIc?M4EFE$Z?$%EevKnQPkII2#$x!byzONsxTy4xj$ zN@0}5y*r79AF~|D4@t17^%YvnJy$)7k7u2E;{ zPE1VL?eqq*_w@9@^YQYQvC=4QJj+pmm#Vo$|E{JMf5)*%0 z6GOz5L;SS5byU>`+#3a%`vcSt9Vf25L~tU4$yWT1TwDE!oUY@DHzCtpOQY}@3P$k` z*$%fcef7uvQ4nZP6DbnLKcCXkg1N!b^f-p6z9OkCQ*G1@c$cdUROyL1A>uX`u{eLgk8ohBGzLEp+o3Gc{mzOLNmQ1Ym56%%_m&C11r&ZXN z>d>2MD9aN4`9sP?hbja{Lo`rxzA9~pNDm~@Oj~nL6^yB)o>@An59-zh#e{n0Xup64 zYwdt}4Cyu16ET4fgRp@C$?e^plgHELhbFMpLZS$+r^>UA4djapf=Ud?=}G=mhi8x4 z1Ni%uZ9sM!4In11^8qVx<+-*cDj}h*xtUFczR3|Bc)3P9`$ns?NOli-FID)=9b}9_ zkOi881xnRele1;-7>dq7V*V=u%iAi}PF)H|Ue3y80O?t0Ul=g_pQ0pCWR5D~l$9yT z8^tauFQ-yqt$&v5jX=?DkMvI;fxUA(VS1o>KX3wL>%7A^DEd7($N8BJ^oa2dz2^sj z-bskE_=<>3kB=&-lu-1B$5jXB&!OX)f}Egd5>irnxoqAS{+nNrADwMtHaY~hJOxJo zf`4bY7|)=gon93R!Ha@f>Q-SxdbNeo2JfPKL61V)9kQ6jyUA*VzH%^7;yBa8ClwYg40Lc)aQ?gehct`aJt7PPN2jhL(~ z!Y;{`!PV|awUcF_#zT7V@*uQ(5ytc)$BvOgy}d&b8;$>-IvcNLl4mj;-5k5R)<4m~ zJ-c~kHbF}d)br%f9X(S7C>j^F>t z_d^wRDY=CW7m{VQhVB2JM|OH8h2pJISjy{lDn^Wcr@vV=H|@2^ou$a3TjKSiSN_OQ=&gCqL{{Ir=c^J5*?7;Rn+GYv2ew` z@hm1|3`e$uZrPd&>dHZ>@$$x|r^A@u6=TiJAu%C8&R+0%Ldkx56!s*sP*6u|#>fI$kk`fu5S-ie2yp&>k@cI*7=)YR0S&F|kE%_Tp_Ld*Rczf7V} z&Q5l>{lGc#(!aqgFts)y?=820{53(_0ae0LxFLe`luI)NvnG4lGE$vTB|6O9fuPc(EZ1YdP8b2_N2ittS zlwsGF7!tCjJ#-3ZST;PL-hFxFKtUkCMKWf2M2|1z$Ivd zLqeQ9Q7vSW4Cjnt@tb7|6onr22|iUI(&TbLoK!qor{?D90hQJspAGv8Ef-ABAMF)b zztQ@i)$y?pF`|ecp{;1kZJ2DC!>mW7pzJtYcwu-VQD`(#P%}rW+T7$)S32#ap?@_q zDSp@mb@P2vN4jc!YN{{Jc-~wJ`J6j{CHVQ&TIZ0zVFR@-c+~AW@A!i;6a&Vle$~Fdu`2Q1^^H?RcJJv z-evJDA#&9j1{F3~^2H@dgNHuA>Gk8ut%BM!E2B;akdX~ zGWVA@QN+8<78u2y@^G>WgTjFP1?sw_nS?>Z27mxBff;-;AgS;QtnzW}dnDktI#7f5 zR&VAp&vRmt9yv0ktb}dx9_Z`tCMu?>D(AkI1=T@Owr&O1!*DqQ#Fdtvc0eDPb*p`; zGAbhN)pht-`Gd7CP+n<#9Gj~)e(wclt7z-{8f%9``hd(&xC-hOM_s` zCQ>?PV71s4+BQC?8PXcD&le(aYp93d|MwX!zgl&#JTmDoZG_T(O__alF=bx(6=e#9 zH3v}08BDKR{vi046Hp$&AP)ayXbHA2E-7gsQx`t=&i(7tYwf>}p>p(1PikU{5S20@ z|G7$i-yaM+I;%BmFlsFbh^UmR2Mx-YKoB4oQc|j0?(5q_z@Lv*l9wlPe}ArF6Vp1r zGN|FKGL1oeXMss-Fn3n(W+(hDX~1*~i)r=51F_|X>GpCbp?yA`SBl|z=wUGN$P*eG z*#j)$NLFsRMwQLvT~Pm57+vHok){t^20@@c(}wT}WD5 z`fzs_Mf>q9JUpB=5eD>;;T7eSfJ|tOLUA8+bY}eo6o=6Y zBNaYqgCUZ|;WkQapLY z;eQVeypMuxeiz?Q?Zs*|#AlU0J@zgeGv#!9@MH}6upvE83&PsC;2u)*hrh{JSBY!d z5q@ko^#*^;OsY6(pDlgy8r{U_bcVURc3sM`WGZZl1^NpoJ<%#-5>e>D!!B)zSe5nc zmG?xLDla&-GqfxDS_tdtWG@3ns3+iB(tHJcY#bhkYP1`M@vE&X5vkp@Ol4IRF)-*! zrGMpx@x%Rxh9_rcO3%-r5fE%xeLi_@!$|7a{>BWDK;gPzox(IvkZUdoV6Gs$sHH!GS zPvoSmtFN6DWz>_TnvRi9tQ&G)#=PAiCdFOJ$jD6b(I<*?2Lh1ETq4O7> zt9FW4D`YE>OJnu|Mg3%|8*DL9763OoD1!`@9spZjIj)-;3zF z8;B?=vm#c__FCCZnVDx#a<}xWb`1*CMf1~&tBNy93knhr&d*WI&CQXk z%F8pz(O?b$j)Iok;dp8G9p%EHn#hH`@?X7PIjQ2nqJAWA;)|PsedE-lj|(}#bd{#= zCAa^umj$K_Ztvj02F&UBdu+GT)wB4%z4BnJbPo!LW@>S{a5~)j<}~sTq~+43NklYC zfVotDuCA1zOWq%hE#5wNz-)Xm%2VTZy=I{C&6N z&6xTt|PU_nCm;VCRc`eG+n0a)+u{qJN$BYg+Z;}3BpYILu zSkkD{Y|?LTR8A+wkcP2XS?TBGa6OK~t>A8`2zb)K z-i;7Dw5y#B&??$SCS%@(pfa+@hxSYVermz)`SUw8S*w~k6 z-8>M_nAHnvR0$)2qUDS!V+(1Lc|Vw$$KRTs$jQlZBMDf%7kaiHp9s#4Y1G;KuwjBC zm5>8@wwR#Jon|G*!3p`M;b>RlC0;Od1wo>|Q1I-rkDNQfyZ zv0E$WNU##Q%C=&19xuJr@d~cQ0+1y*4i0xsy#m0uk~_QSxs%1C?^LDLvdGJN-|FG1 zRUaW3r?37y*8KNBs(EC~vJ(rl5_glJQ~!UFbX4>6Z1!wq6gL`*ca-Tk=`F%}KW(h7 zGw5cgV_6E3x1hOBA37zX_jtP??W&6o-NYoF3ga=`thr+S(#8mgNz1=SV0=`60`}i% z;PqYsc*;Q*78c=v3_I#}qh)VSoI&bL*T>E`${a!SrY^2P-Vi1?`u-PJ;5n~2Bnf}K zicGGc8>GRU2O12h0cwQZxiB}0fl;o)E;Y8lr{DAs*?&p8nQ2+_bV%w(uwuKs_@&Xm zs6(9NgbmCLl#ie1PupJ>? z3HY-vYmlmFl6_2?nlEK!hG3(e!vL*7i6bJeicpTVbFD+a%Zh!iN0mMB;ZC2<*r+Rb zVH!*M5Fb5;b~S!cqkmM!>&-Xil#}@N+W!iZih*j;(7@m}W+4lakiY&rG_*Mi8rnQB zF>z1)#kcamisqO85U?iR?>9qGUnd=G=wId#sRCbZBS6mgNU%Dj#eDk~Y&Ihp0sRk! znW9=OXn=}}Y9|{d(O!NAq1(zO4qFLM+eBTW_m?gREV#QLip(jNT}FoL>$~uPZoKCH zzr$g=IP#R;HfTtyY`x(9U+{tAIK5A)SZ|M)`&D)9OZ_L-@H@w4(c_{JMRZXE!MZtu zWtQQ17V%IH*$aWkD=T15=eH{o<#$wye!uWnTBOV@lhQ^f(IUA!cH<$=@%}735>a}+ z2Vw)jui34ofq@p`Ju!TIeAMMX&A_U|kdvqJ@n0i70Z<;b+GkrK_)GHdM`*qkI#C=} z%h%?>mdT9y;+=;^hOz=1Ls}rfBQJiXkFZqR<3OiZ83~jB)zSKEGMt7w@~t&hIEndt zpas&Iq<%q0K&SS-Uaqu>7!ypyXD4E+!8@4W_w=BdPf3vW_xdJe+YUyP zx{UpkeWl+c#s`|^#+h<6l-cGYtl^;KO!e-1deKUSE@&@!e(_@9tol?%MLo=ox+c%d zsA314>QH{Nz#yTb8n#+2ltI&~{(BDpps`&jTOgN~K9i948L9sc3tN7+tw*S`)-c0| ztGPxwj=@1kHM}(XbIQz}oO8MKhd|wU+P7b+dugb+!IFJesnC6@n#SrHLj3ayRgd?! zpljG<8mHeoNdunBLdGK{LqsjG-&RZmIPm#8>hAjc$9amAV;h1W? zH=o;T84KkjdlvgDgdya-DXllM?g|@Q(6R$B=2wPe0(B6*thIB%ZxMvJpT6CeVpv>f z7^ke~4OhdGTcC=i&J*c~Dk9f8^1eVnYU1T)h_EYp?4b2Ok^O%lgdoia7z+9kbm z^_iTlCa<^Xmm@H_DM-zhsC%*F*+Hz0HSF#gRor9>-wHP-Q{UJTv|+~BJA8i~TD8+! zsEkR^?}wQ%4S)7MF;EBFY9F)sUmuR5I=t`hPu+e>(0CnkdOs|vMWm7vOj(_f1Dg|m ztNt(N1sMAF8fMI#GwZ0|`p?e#Him00HO}ELQwR}wJs%ft0D6!}FRGeexPE3+9PMo>LcbWxXI^l~!G()V2`5gkx zTplk=E^NBz=)R*^vylXb zeFh)}T)%NcB_<|*X{5Ix*SvNOhDnQGFw9x?km2_qMutycnHa>S)XqgF)~}YAlX@U8 zFaIbiD*9+ruoy#Qwip8s=Rbz0uUQx>`|dJqJ^1BKbxmz^Wko4j8`=B&`*MI3SNH7O z40Bg80s9Yszw}I;pBxn#4jyXs@$st%)(s4KzGoSJ{`ksp=H@?!u>30wyh3W{ii`4S zx_N%Mfzb>A1#jNG;ZIIVnjIS;!^Oz>o53UF#UpFSh&hW^cyD86WBV<@&-X!ETIxAy ztK-R&Cyf#llV&9caxgUIiZguv`j??&?%O{*PjKAy4J?}7Gc#hPtc(oFo5o+hd@0o4 z-d+q^6| zKG)g1peHyuU@g#nw7T z=<-Fy6|GC=cNJXTY|6|A>|mF6J!QD^RCC+8^Sk{hv3Dec5uE`*9ptXAu6)q_R~{Z7 z+h@<7ovE#@eG8ZR)vH(gHB_doUe>F^=3>Rq&^_U%pv4UK8ynFYK zKR7sesiLCdJ)j%1&=Wss8AVNPW9`=UlZ%h9HfF#3_&bA7_MRIq8Nij0T41RxlbfBoq@!4tZR>&84B3sh8KUBHCLBH1Uq-1rrcIlc z&8aDZZ2anj!pV{1Wdyh54=Wl-*l4|b!T(V-1xrvGKHA?Ls>0m@>fY+~I zi?3O;CYX>q(B_k{u&|XcUw`DyZ)bU-rLA{u(zMj6VWGk6so{>>w{NR0T(~e3m;9l_ zhb+BaG#D0de8tc-`8GpnRQ|-##7`YCqBFpfB}?M@`1o+HWBK#v4(@yQ=Nu+RD7!(X=rYUTGy{x+5e-H&z$h5e002DpSTZ?{LjnK* N002ovPDHLkV1nyesht1- literal 6874 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/mobile/common/assets/img/Objets.png b/mobile/common/assets/img/Objets.png new file mode 100644 index 0000000000000000000000000000000000000000..ba2abb5a1d94275c5250ea8881cc023ede4b1cdb GIT binary patch literal 240148 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%0DHz4N_55JnUW6}nbA3LR`i%MT1>zY>v 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 B(EI=Z literal 0 HcmV?d00001 diff --git a/mobile/lib/src/presentation/navigation/navdrawer_widget.dart b/mobile/lib/src/presentation/navigation/navdrawer_widget.dart index f1a5a995..4047ec51 100644 --- a/mobile/lib/src/presentation/navigation/navdrawer_widget.dart +++ b/mobile/lib/src/presentation/navigation/navdrawer_widget.dart @@ -24,24 +24,28 @@ class NavDrawer extends StatelessWidget { icon: Icons.dashboard, text: 'Dashboard', route: Routes.dashboardPage, + tab: NavdrawerTab.Dashboard, context: context, ), _createDrawerItem( icon: Icons.bluetooth, text: 'Bluetooth selector', route: Routes.bluetoothSelectorPage, + tab: NavdrawerTab.BluetoothSelector, context: context, ), _createDrawerItem( icon: Icons.hotel, text: 'Record Sleep sequence', route: Routes.recordSleepGuidePage, + tab: NavdrawerTab.RecordSleep, context: context, ), _createDrawerItem( icon: Icons.analytics, text: 'History', route: Routes.sleepHistoryPage, + tab: NavdrawerTab.History, context: context, ), ], diff --git a/mobile/lib/src/presentation/pages/dashboard/dashboard_page.dart b/mobile/lib/src/presentation/pages/dashboard/dashboard_page.dart index 8c4cf36f..a8eecff5 100644 --- a/mobile/lib/src/presentation/pages/dashboard/dashboard_page.dart +++ b/mobile/lib/src/presentation/pages/dashboard/dashboard_page.dart @@ -16,14 +16,14 @@ class DashboardPage extends StatelessWidget { floating: false, pinned: true, flexibleSpace: FlexibleSpaceBar( - centerTitle: false, + centerTitle: true, title: Text('Polydodo', style: TextStyle( color: Colors.white, fontSize: 16.0, )), - background: Image.network( - 'https://images.pexels.com/photos/396547/pexels-photo-396547.jpeg?auto=compress&cs=tinysrgb&h=350', + background: Image.asset( + 'common/assets/img/Objets.png', fit: BoxFit.cover, )), ), diff --git a/mobile/pubspec.yaml b/mobile/pubspec.yaml index a1ab84b4..ab1f9828 100644 --- a/mobile/pubspec.yaml +++ b/mobile/pubspec.yaml @@ -89,4 +89,4 @@ flutter: # see https://flutter.dev/custom-fonts/#from-packages flutter_icons: android: true - image_path: 'common/assets/img/logo2.png' + image_path: 'common/assets/img/Dodo4.png' From 89994fd9e9fdfdd66d818585d33014baec465c0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mathieu=20B=C3=A9langer?= Date: Mon, 9 Nov 2020 03:41:03 -0500 Subject: [PATCH 02/34] Removed old file --- .../lib/src/application/navdrawer/navdrawer_state.dart | 10 ---------- 1 file changed, 10 deletions(-) delete mode 100644 mobile/lib/src/application/navdrawer/navdrawer_state.dart diff --git a/mobile/lib/src/application/navdrawer/navdrawer_state.dart b/mobile/lib/src/application/navdrawer/navdrawer_state.dart deleted file mode 100644 index 9d3063bb..00000000 --- a/mobile/lib/src/application/navdrawer/navdrawer_state.dart +++ /dev/null @@ -1,10 +0,0 @@ -part of 'navdrawer_bloc.dart'; - -enum NavdrawerState { - DashBoard, - RecordSleep, - History, - BluetoothSelector, - SleepHistory, - NightStats -} From 71ad1efda7e639d0bb4771b347c4e2c17f28202d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mathieu=20B=C3=A9langer?= Date: Mon, 9 Nov 2020 03:45:55 -0500 Subject: [PATCH 03/34] Added loading indicator helper --- .../src/presentation/widgets/loading_indicator.dart | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 mobile/lib/src/presentation/widgets/loading_indicator.dart diff --git a/mobile/lib/src/presentation/widgets/loading_indicator.dart b/mobile/lib/src/presentation/widgets/loading_indicator.dart new file mode 100644 index 00000000..2ecef34b --- /dev/null +++ b/mobile/lib/src/presentation/widgets/loading_indicator.dart @@ -0,0 +1,12 @@ +import 'package:flutter/material.dart'; + +class LoadingIndicator extends StatelessWidget { + LoadingIndicator({Key key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return Center( + child: CircularProgressIndicator(), + ); + } +} From 898efabdb89e00147d3d3bb436626da44b063894 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mathieu=20B=C3=A9langer?= Date: Mon, 9 Nov 2020 03:47:02 -0500 Subject: [PATCH 04/34] Added settings route, page, bloc --- .../application/settings/settings_cubit.dart | 50 ++++++++ .../application/settings/settings_state.dart | 25 ++++ .../domain/settings/acquisition_board.dart | 1 + mobile/lib/src/domain/settings/settings.dart | 19 +++ mobile/lib/src/domain/settings/sex.dart | 1 + mobile/lib/src/locator.dart | 4 + .../navigation/navdrawer_tabs.dart | 7 +- .../navigation/navdrawer_widget.dart | 9 +- .../navigation/routes/router.dart | 3 + .../pages/settings/settings_page.dart | 121 ++++++++++++++++++ .../sleep_history_page.dart | 2 +- mobile/pubspec.lock | 7 + mobile/pubspec.yaml | 2 + 13 files changed, 246 insertions(+), 5 deletions(-) create mode 100644 mobile/lib/src/application/settings/settings_cubit.dart create mode 100644 mobile/lib/src/application/settings/settings_state.dart create mode 100644 mobile/lib/src/domain/settings/acquisition_board.dart create mode 100644 mobile/lib/src/domain/settings/settings.dart create mode 100644 mobile/lib/src/domain/settings/sex.dart create mode 100644 mobile/lib/src/presentation/pages/settings/settings_page.dart diff --git a/mobile/lib/src/application/settings/settings_cubit.dart b/mobile/lib/src/application/settings/settings_cubit.dart new file mode 100644 index 00000000..3eb6e9ed --- /dev/null +++ b/mobile/lib/src/application/settings/settings_cubit.dart @@ -0,0 +1,50 @@ +import 'package:bloc/bloc.dart'; +import 'package:polydodo/src/application/settings/settings_state.dart'; +import 'package:polydodo/src/domain/settings/acquisition_board.dart'; +import 'package:polydodo/src/domain/settings/sex.dart'; +import 'package:polydodo/src/domain/settings/settings.dart'; +import 'package:shared_preferences/shared_preferences.dart'; + +class SettingsCubit extends Cubit { + SettingsCubit() : super(SettingsLoadInProgress()) { + getSettings(); + } + + void getSettings() async { + var prefs = (await SharedPreferences.getInstance()); + + var settings = Settings( + age: prefs.getInt('age'), + board: AcquisitionBoard + .values[(prefs.getInt('board')) ?? AcquisitionBoard.Cython.index], + sex: Sex.values[(prefs.getInt('sex')) ?? Sex.Male.index], + ); + + emit(SettingsLoadSuccess(settings)); + } + + void setSex(Sex newSex) async { + if (state is SettingsLoadSuccess) { + emit(SettingsLoadSuccess( + (state as SettingsLoadSuccess).settings.copyWith(sex: newSex))); + await (await SharedPreferences.getInstance()).setInt('sex', newSex.index); + } + } + + void setAge(int newAge) async { + if (state is SettingsLoadSuccess) { + emit(SettingsLoadSuccess( + (state as SettingsLoadSuccess).settings.copyWith(age: newAge))); + await (await SharedPreferences.getInstance()).setInt('age', newAge); + } + } + + void setBoard(AcquisitionBoard newBoard) async { + if (state is SettingsLoadSuccess) { + emit(SettingsLoadSuccess( + (state as SettingsLoadSuccess).settings.copyWith(board: newBoard))); + await (await SharedPreferences.getInstance()) + .setInt('board', newBoard.index); + } + } +} diff --git a/mobile/lib/src/application/settings/settings_state.dart b/mobile/lib/src/application/settings/settings_state.dart new file mode 100644 index 00000000..232fc398 --- /dev/null +++ b/mobile/lib/src/application/settings/settings_state.dart @@ -0,0 +1,25 @@ +import 'package:equatable/equatable.dart'; +import 'package:polydodo/src/domain/settings/settings.dart'; + +abstract class SettingsState extends Equatable { + const SettingsState(); + + @override + List get props => []; +} + +class SettingsLoadInProgress extends SettingsState {} + +class SettingsLoadSuccess extends SettingsState { + final Settings settings; + + const SettingsLoadSuccess(this.settings); + + @override + List get props => [settings]; + + @override + String toString() => 'SettingsLoadSuccess { settings: $settings }'; +} + +class SettingsLoadFailure extends SettingsState {} diff --git a/mobile/lib/src/domain/settings/acquisition_board.dart b/mobile/lib/src/domain/settings/acquisition_board.dart new file mode 100644 index 00000000..0b57c0d8 --- /dev/null +++ b/mobile/lib/src/domain/settings/acquisition_board.dart @@ -0,0 +1 @@ +enum AcquisitionBoard { Cython, Ganglion } diff --git a/mobile/lib/src/domain/settings/settings.dart b/mobile/lib/src/domain/settings/settings.dart new file mode 100644 index 00000000..dafec32c --- /dev/null +++ b/mobile/lib/src/domain/settings/settings.dart @@ -0,0 +1,19 @@ +import 'package:equatable/equatable.dart'; +import 'package:polydodo/src/domain/settings/acquisition_board.dart'; +import 'package:polydodo/src/domain/settings/sex.dart'; + +class Settings extends Equatable { + final int age; + final AcquisitionBoard board; + final Sex sex; + + Settings({this.age, this.board, this.sex}); + + @override + List get props => [age, board, sex]; + + Settings copyWith({int age, AcquisitionBoard board, Sex sex}) { + return Settings( + age: age ?? this.age, board: board ?? this.board, sex: sex ?? this.sex); + } +} diff --git a/mobile/lib/src/domain/settings/sex.dart b/mobile/lib/src/domain/settings/sex.dart new file mode 100644 index 00000000..1cdf1b31 --- /dev/null +++ b/mobile/lib/src/domain/settings/sex.dart @@ -0,0 +1 @@ +enum Sex { Male, Female } diff --git a/mobile/lib/src/locator.dart b/mobile/lib/src/locator.dart index 72b997ef..ce7abd41 100644 --- a/mobile/lib/src/locator.dart +++ b/mobile/lib/src/locator.dart @@ -3,6 +3,7 @@ import 'package:get_it/get_it.dart'; import 'package:polydodo/src/application/device/device_selector_cubit.dart'; import 'package:polydodo/src/application/eeg_data/data_cubit.dart'; import 'package:polydodo/src/application/night_stats/night_stats_cubit.dart'; +import 'package:polydodo/src/application/settings/settings_cubit.dart'; import 'package:polydodo/src/application/sleep_history/sleep_history_cubit.dart'; import 'package:polydodo/src/domain/acquisition_device/i_acquisition_device_repository.dart'; import 'package:polydodo/src/domain/eeg_data/i_eeg_data_repository.dart'; @@ -35,6 +36,9 @@ List createBlocProviders() => [ _serviceLocator.get(), ), ), + BlocProvider( + create: (context) => SettingsCubit(), + ), BlocProvider( create: (context) => SleepHistoryCubit( _serviceLocator.get())), diff --git a/mobile/lib/src/presentation/navigation/navdrawer_tabs.dart b/mobile/lib/src/presentation/navigation/navdrawer_tabs.dart index 01a01b17..190abece 100644 --- a/mobile/lib/src/presentation/navigation/navdrawer_tabs.dart +++ b/mobile/lib/src/presentation/navigation/navdrawer_tabs.dart @@ -1,7 +1,8 @@ enum NavdrawerTab { + BluetoothSelector, Dashboard, + NightStats, RecordSleep, - BluetoothSelector, - History, - NightStats + Settings, + SleepHistory, } diff --git a/mobile/lib/src/presentation/navigation/navdrawer_widget.dart b/mobile/lib/src/presentation/navigation/navdrawer_widget.dart index 4047ec51..95b54599 100644 --- a/mobile/lib/src/presentation/navigation/navdrawer_widget.dart +++ b/mobile/lib/src/presentation/navigation/navdrawer_widget.dart @@ -45,7 +45,14 @@ class NavDrawer extends StatelessWidget { icon: Icons.analytics, text: 'History', route: Routes.sleepHistoryPage, - tab: NavdrawerTab.History, + tab: NavdrawerTab.SleepHistory, + context: context, + ), + _createDrawerItem( + icon: Icons.settings, + text: 'Settings', + route: Routes.settingsPage, + tab: NavdrawerTab.Settings, context: context, ), ], diff --git a/mobile/lib/src/presentation/navigation/routes/router.dart b/mobile/lib/src/presentation/navigation/routes/router.dart index 134c94ef..d44b1d88 100644 --- a/mobile/lib/src/presentation/navigation/routes/router.dart +++ b/mobile/lib/src/presentation/navigation/routes/router.dart @@ -2,6 +2,7 @@ import 'package:auto_route/auto_route.dart'; import 'package:auto_route/auto_route_annotations.dart'; import 'package:polydodo/src/presentation/pages/bluetooth_page/bluetoothSelector_page.dart'; import 'package:polydodo/src/presentation/pages/dashboard/dashboard_page.dart'; +import 'package:polydodo/src/presentation/pages/settings/settings_page.dart'; import 'package:polydodo/src/presentation/pages/sleep_history_page/sleep_history_page.dart'; import 'package:polydodo/src/presentation/pages/night_stats_page/night_stats_page.dart'; import 'package:polydodo/src/presentation/pages/record_sleep/record_sleep_guide_page.dart'; @@ -25,6 +26,8 @@ import 'package:polydodo/src/presentation/pages/record_sleep/record_sleep_guide_ CustomRoute( page: SleepHistoryPage, transitionsBuilder: TransitionsBuilders.fadeIn), + CustomRoute( + page: SettingsPage, transitionsBuilder: TransitionsBuilders.fadeIn), CustomRoute( page: NightStatsPage, transitionsBuilder: TransitionsBuilders.fadeIn), ]) diff --git a/mobile/lib/src/presentation/pages/settings/settings_page.dart b/mobile/lib/src/presentation/pages/settings/settings_page.dart new file mode 100644 index 00000000..a2e76726 --- /dev/null +++ b/mobile/lib/src/presentation/pages/settings/settings_page.dart @@ -0,0 +1,121 @@ +import 'dart:ui'; + +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:polydodo/src/application/settings/settings_cubit.dart'; +import 'package:polydodo/src/application/settings/settings_state.dart'; +import 'package:polydodo/src/domain/settings/sex.dart'; +import 'package:polydodo/src/presentation/navigation/navdrawer_tabs.dart'; +import 'package:polydodo/src/presentation/navigation/navdrawer_widget.dart'; +import 'package:polydodo/src/presentation/widgets/loading_indicator.dart'; +import 'package:settings_ui/settings_ui.dart'; + +class SettingsPage extends StatefulWidget { + SettingsPage({Key key}) : super(key: key); + + @override + _SettingsPageState createState() => _SettingsPageState(); +} + +class _SettingsPageState extends State { + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar(title: Text('Settings')), + drawer: NavDrawer(activeTab: NavdrawerTab.Settings), + body: BlocBuilder( + builder: (context, state) { + return state is SettingsLoadSuccess + ? SettingsList( + sections: [ + SettingsSection( + title: 'Personnal informations', + tiles: [ + SettingsTile( + title: 'Age', + subtitle: 'In years', + leading: Icon(Icons.cake), + trailing: TextButton( + child: Text(state.settings.age.toString()), + onPressed: () => _showDatePicker(context)), + ), + SettingsTile( + title: 'Sex', + subtitle: 'What is your biological sex', + leading: Icon(Icons.face), + trailing: _SexButton( + savedSex: state.settings.sex, + onSelected: (newSex) => + BlocProvider.of(context) + .setSex(newSex), + activeStyle: TextStyle(fontWeight: FontWeight.bold), + defaultStyle: TextStyle(), + ), + ), + ], + ), + ], + ) + : LoadingIndicator(); + }, + ), + ); + } +} + +void _showDatePicker(BuildContext context) async { + final datePicked = await showDatePicker( + context: context, + initialEntryMode: DatePickerEntryMode.calendar, + initialDatePickerMode: DatePickerMode.year, + initialDate: DateTime.now(), + firstDate: DateTime(1900), + lastDate: DateTime.now(), + helpText: 'Select birthdate'); + + if (datePicked != null && datePicked != DateTime.now()) { + BlocProvider.of(context) + .setAge(DateTime.now().difference(datePicked).inDays ~/ 365); + } +} + +class _SexButton extends StatelessWidget { + const _SexButton({ + Key key, + @required this.onSelected, + @required this.savedSex, + @required this.activeStyle, + @required this.defaultStyle, + }) : super(key: key); + + final PopupMenuItemSelected onSelected; + final Sex savedSex; + final TextStyle activeStyle; + final TextStyle defaultStyle; + + @override + Widget build(BuildContext context) { + return PopupMenuButton( + child: + // ignore: missing_required_param + TextButton(child: Text(savedSex == Sex.Male ? 'Male' : 'Female')), + onSelected: onSelected, + itemBuilder: (BuildContext context) => >[ + PopupMenuItem( + value: Sex.Male, + child: Text( + 'Male', + style: savedSex == Sex.Male ? activeStyle : defaultStyle, + ), + ), + PopupMenuItem( + value: Sex.Female, + child: Text( + 'Female', + style: savedSex == Sex.Female ? activeStyle : defaultStyle, + ), + ), + ], + ); + } +} diff --git a/mobile/lib/src/presentation/pages/sleep_history_page/sleep_history_page.dart b/mobile/lib/src/presentation/pages/sleep_history_page/sleep_history_page.dart index 29e927fa..448cd577 100644 --- a/mobile/lib/src/presentation/pages/sleep_history_page/sleep_history_page.dart +++ b/mobile/lib/src/presentation/pages/sleep_history_page/sleep_history_page.dart @@ -25,7 +25,7 @@ class SleepHistoryPage extends StatelessWidget { ), ), ), - drawer: NavDrawer(activeTab: NavdrawerTab.History), + drawer: NavDrawer(activeTab: NavdrawerTab.SleepHistory), body: BlocConsumer( listener: (context, state) { print(state.runtimeType); diff --git a/mobile/pubspec.lock b/mobile/pubspec.lock index d038824d..7e6b8f90 100644 --- a/mobile/pubspec.lock +++ b/mobile/pubspec.lock @@ -569,6 +569,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.1.4+1" + settings_ui: + dependency: "direct main" + description: + name: settings_ui + url: "https://pub.dartlang.org" + source: hosted + version: "0.4.0" share: dependency: "direct main" description: diff --git a/mobile/pubspec.yaml b/mobile/pubspec.yaml index ab1f9828..421abb9a 100644 --- a/mobile/pubspec.yaml +++ b/mobile/pubspec.yaml @@ -41,6 +41,7 @@ dependencies: pedantic: ^1.9.0 percent_indicator: '^2.1.8' share: ^0.6.5 + settings_ui: ^0.4.0 streaming_shared_preferences: ^1.0.1 uuid: ^2.2.2 usb_serial: ^0.2.4 @@ -51,6 +52,7 @@ dev_dependencies: flutter_launcher_icons: "^0.7.0" flutter_test: sdk: flutter + # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec # The following section is specific to Flutter. From 06fb34b2b71f7be234e64aad7be755f2468e393e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mathieu=20B=C3=A9langer?= Date: Mon, 9 Nov 2020 22:54:25 -0500 Subject: [PATCH 05/34] Handle empty settings & Acquisition board --- .../application/settings/settings_cubit.dart | 4 +- .../domain/settings/acquisition_board.dart | 2 +- mobile/lib/src/domain/settings/sex.dart | 2 +- .../navigation/navdrawer_widget.dart | 2 - .../pages/settings/settings_page.dart | 74 ++++++++++++++++++- 5 files changed, 75 insertions(+), 9 deletions(-) diff --git a/mobile/lib/src/application/settings/settings_cubit.dart b/mobile/lib/src/application/settings/settings_cubit.dart index 3eb6e9ed..2706d97a 100644 --- a/mobile/lib/src/application/settings/settings_cubit.dart +++ b/mobile/lib/src/application/settings/settings_cubit.dart @@ -16,8 +16,8 @@ class SettingsCubit extends Cubit { var settings = Settings( age: prefs.getInt('age'), board: AcquisitionBoard - .values[(prefs.getInt('board')) ?? AcquisitionBoard.Cython.index], - sex: Sex.values[(prefs.getInt('sex')) ?? Sex.Male.index], + .values[(prefs.getInt('board')) ?? AcquisitionBoard.Empty.index], + sex: Sex.values[(prefs.getInt('sex')) ?? Sex.Empty.index], ); emit(SettingsLoadSuccess(settings)); diff --git a/mobile/lib/src/domain/settings/acquisition_board.dart b/mobile/lib/src/domain/settings/acquisition_board.dart index 0b57c0d8..38d18849 100644 --- a/mobile/lib/src/domain/settings/acquisition_board.dart +++ b/mobile/lib/src/domain/settings/acquisition_board.dart @@ -1 +1 @@ -enum AcquisitionBoard { Cython, Ganglion } +enum AcquisitionBoard { Empty, Cython, Ganglion } diff --git a/mobile/lib/src/domain/settings/sex.dart b/mobile/lib/src/domain/settings/sex.dart index 1cdf1b31..f68e2681 100644 --- a/mobile/lib/src/domain/settings/sex.dart +++ b/mobile/lib/src/domain/settings/sex.dart @@ -1 +1 @@ -enum Sex { Male, Female } +enum Sex { Empty, Male, Female } diff --git a/mobile/lib/src/presentation/navigation/navdrawer_widget.dart b/mobile/lib/src/presentation/navigation/navdrawer_widget.dart index 95b54599..7d953f6f 100644 --- a/mobile/lib/src/presentation/navigation/navdrawer_widget.dart +++ b/mobile/lib/src/presentation/navigation/navdrawer_widget.dart @@ -97,9 +97,7 @@ class NavDrawer extends StatelessWidget { ], ), onTap: () { - //context.bloc().add(NavdrawerUpdated(state)); ExtendedNavigator.of(context).popAndPush(route); - // ExtendedNavigator.of(context).replace(route); }, selected: activeTab == tab, ); diff --git a/mobile/lib/src/presentation/pages/settings/settings_page.dart b/mobile/lib/src/presentation/pages/settings/settings_page.dart index a2e76726..421c21f1 100644 --- a/mobile/lib/src/presentation/pages/settings/settings_page.dart +++ b/mobile/lib/src/presentation/pages/settings/settings_page.dart @@ -1,9 +1,9 @@ import 'dart:ui'; - import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:polydodo/src/application/settings/settings_cubit.dart'; import 'package:polydodo/src/application/settings/settings_state.dart'; +import 'package:polydodo/src/domain/settings/acquisition_board.dart'; import 'package:polydodo/src/domain/settings/sex.dart'; import 'package:polydodo/src/presentation/navigation/navdrawer_tabs.dart'; import 'package:polydodo/src/presentation/navigation/navdrawer_widget.dart'; @@ -36,7 +36,9 @@ class _SettingsPageState extends State { subtitle: 'In years', leading: Icon(Icons.cake), trailing: TextButton( - child: Text(state.settings.age.toString()), + child: Text(state.settings.age == null + ? 'Empty' + : state.settings.age.toString()), onPressed: () => _showDatePicker(context)), ), SettingsTile( @@ -52,6 +54,19 @@ class _SettingsPageState extends State { defaultStyle: TextStyle(), ), ), + SettingsTile( + title: 'Acquisition Board', + subtitle: 'What OpenBCI board are you using?', + leading: Icon(Icons.memory), + trailing: _BoardButton( + savedBoard: state.settings.board, + onSelected: (newBoard) => + BlocProvider.of(context) + .setBoard(newBoard), + activeStyle: TextStyle(fontWeight: FontWeight.bold), + defaultStyle: TextStyle(), + ), + ), ], ), ], @@ -98,7 +113,11 @@ class _SexButton extends StatelessWidget { return PopupMenuButton( child: // ignore: missing_required_param - TextButton(child: Text(savedSex == Sex.Male ? 'Male' : 'Female')), + TextButton( + child: Text(savedSex.toString().split('.').last), + style: ButtonStyle( + foregroundColor: MaterialStateProperty.all( + Theme.of(context).colorScheme.primary))), onSelected: onSelected, itemBuilder: (BuildContext context) => >[ PopupMenuItem( @@ -119,3 +138,52 @@ class _SexButton extends StatelessWidget { ); } } + +class _BoardButton extends StatelessWidget { + const _BoardButton({ + Key key, + @required this.onSelected, + @required this.savedBoard, + @required this.activeStyle, + @required this.defaultStyle, + }) : super(key: key); + + final PopupMenuItemSelected onSelected; + final AcquisitionBoard savedBoard; + final TextStyle activeStyle; + final TextStyle defaultStyle; + + @override + Widget build(BuildContext context) { + return PopupMenuButton( + child: + // ignore: missing_required_param + TextButton( + child: Text(savedBoard.toString().split('.').last), + style: ButtonStyle( + foregroundColor: MaterialStateProperty.all( + Theme.of(context).colorScheme.primary))), + onSelected: onSelected, + itemBuilder: (BuildContext context) => >[ + PopupMenuItem( + value: AcquisitionBoard.Cython, + child: Text( + 'Cython', + style: savedBoard == AcquisitionBoard.Cython + ? activeStyle + : defaultStyle, + ), + ), + PopupMenuItem( + value: AcquisitionBoard.Ganglion, + child: Text( + 'Ganglion', + style: savedBoard == AcquisitionBoard.Ganglion + ? activeStyle + : defaultStyle, + ), + ), + ], + ); + } +} From cc47c912d262cb537161705f76795498b6e0ab4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mathieu=20B=C3=A9langer?= Date: Mon, 9 Nov 2020 23:01:13 -0500 Subject: [PATCH 06/34] Fixes to import structure --- mobile/lib/src/application/settings/settings_cubit.dart | 2 -- mobile/lib/src/domain/settings/acquisition_board.dart | 2 ++ mobile/lib/src/domain/settings/settings.dart | 5 +++-- mobile/lib/src/domain/settings/sex.dart | 2 ++ 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/mobile/lib/src/application/settings/settings_cubit.dart b/mobile/lib/src/application/settings/settings_cubit.dart index 2706d97a..c1df8e95 100644 --- a/mobile/lib/src/application/settings/settings_cubit.dart +++ b/mobile/lib/src/application/settings/settings_cubit.dart @@ -1,7 +1,5 @@ import 'package:bloc/bloc.dart'; import 'package:polydodo/src/application/settings/settings_state.dart'; -import 'package:polydodo/src/domain/settings/acquisition_board.dart'; -import 'package:polydodo/src/domain/settings/sex.dart'; import 'package:polydodo/src/domain/settings/settings.dart'; import 'package:shared_preferences/shared_preferences.dart'; diff --git a/mobile/lib/src/domain/settings/acquisition_board.dart b/mobile/lib/src/domain/settings/acquisition_board.dart index 38d18849..6c96c6ca 100644 --- a/mobile/lib/src/domain/settings/acquisition_board.dart +++ b/mobile/lib/src/domain/settings/acquisition_board.dart @@ -1 +1,3 @@ +part of 'settings.dart'; + enum AcquisitionBoard { Empty, Cython, Ganglion } diff --git a/mobile/lib/src/domain/settings/settings.dart b/mobile/lib/src/domain/settings/settings.dart index dafec32c..b977eb81 100644 --- a/mobile/lib/src/domain/settings/settings.dart +++ b/mobile/lib/src/domain/settings/settings.dart @@ -1,6 +1,7 @@ import 'package:equatable/equatable.dart'; -import 'package:polydodo/src/domain/settings/acquisition_board.dart'; -import 'package:polydodo/src/domain/settings/sex.dart'; + +part 'sex.dart'; +part 'acquisition_board.dart'; class Settings extends Equatable { final int age; diff --git a/mobile/lib/src/domain/settings/sex.dart b/mobile/lib/src/domain/settings/sex.dart index f68e2681..54eb4e4e 100644 --- a/mobile/lib/src/domain/settings/sex.dart +++ b/mobile/lib/src/domain/settings/sex.dart @@ -1 +1,3 @@ +part of 'settings.dart'; + enum Sex { Empty, Male, Female } From 76a9ae9245fe4eb9978b21eb96bf339296b90841 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mathieu=20B=C3=A9langer?= Date: Mon, 9 Nov 2020 23:05:46 -0500 Subject: [PATCH 07/34] Fixes to import structure part 2 --- mobile/lib/src/application/settings/settings_cubit.dart | 4 +++- mobile/lib/src/application/settings/settings_state.dart | 3 +-- mobile/lib/src/presentation/navigation/navdrawer_tabs.dart | 2 ++ mobile/lib/src/presentation/navigation/navdrawer_widget.dart | 2 +- .../lib/src/presentation/pages/settings/settings_page.dart | 5 +---- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/mobile/lib/src/application/settings/settings_cubit.dart b/mobile/lib/src/application/settings/settings_cubit.dart index c1df8e95..3e995a29 100644 --- a/mobile/lib/src/application/settings/settings_cubit.dart +++ b/mobile/lib/src/application/settings/settings_cubit.dart @@ -1,8 +1,10 @@ import 'package:bloc/bloc.dart'; -import 'package:polydodo/src/application/settings/settings_state.dart'; +import 'package:equatable/equatable.dart'; import 'package:polydodo/src/domain/settings/settings.dart'; import 'package:shared_preferences/shared_preferences.dart'; +part 'settings_state.dart'; + class SettingsCubit extends Cubit { SettingsCubit() : super(SettingsLoadInProgress()) { getSettings(); diff --git a/mobile/lib/src/application/settings/settings_state.dart b/mobile/lib/src/application/settings/settings_state.dart index 232fc398..9188a13a 100644 --- a/mobile/lib/src/application/settings/settings_state.dart +++ b/mobile/lib/src/application/settings/settings_state.dart @@ -1,5 +1,4 @@ -import 'package:equatable/equatable.dart'; -import 'package:polydodo/src/domain/settings/settings.dart'; +part of 'settings_cubit.dart'; abstract class SettingsState extends Equatable { const SettingsState(); diff --git a/mobile/lib/src/presentation/navigation/navdrawer_tabs.dart b/mobile/lib/src/presentation/navigation/navdrawer_tabs.dart index 190abece..b4dfe010 100644 --- a/mobile/lib/src/presentation/navigation/navdrawer_tabs.dart +++ b/mobile/lib/src/presentation/navigation/navdrawer_tabs.dart @@ -1,3 +1,5 @@ +part of 'navdrawer_widget.dart'; + enum NavdrawerTab { BluetoothSelector, Dashboard, diff --git a/mobile/lib/src/presentation/navigation/navdrawer_widget.dart b/mobile/lib/src/presentation/navigation/navdrawer_widget.dart index 7d953f6f..7f487ed5 100644 --- a/mobile/lib/src/presentation/navigation/navdrawer_widget.dart +++ b/mobile/lib/src/presentation/navigation/navdrawer_widget.dart @@ -2,7 +2,7 @@ import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; import 'package:polydodo/src/presentation/navigation/routes/router.gr.dart'; -import 'navdrawer_tabs.dart'; +part 'navdrawer_tabs.dart'; class NavDrawer extends StatelessWidget { static const name = 'appDrawerRoute'; diff --git a/mobile/lib/src/presentation/pages/settings/settings_page.dart b/mobile/lib/src/presentation/pages/settings/settings_page.dart index 421c21f1..91eae9f2 100644 --- a/mobile/lib/src/presentation/pages/settings/settings_page.dart +++ b/mobile/lib/src/presentation/pages/settings/settings_page.dart @@ -2,10 +2,7 @@ import 'dart:ui'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:polydodo/src/application/settings/settings_cubit.dart'; -import 'package:polydodo/src/application/settings/settings_state.dart'; -import 'package:polydodo/src/domain/settings/acquisition_board.dart'; -import 'package:polydodo/src/domain/settings/sex.dart'; -import 'package:polydodo/src/presentation/navigation/navdrawer_tabs.dart'; +import 'package:polydodo/src/domain/settings/settings.dart'; import 'package:polydodo/src/presentation/navigation/navdrawer_widget.dart'; import 'package:polydodo/src/presentation/widgets/loading_indicator.dart'; import 'package:settings_ui/settings_ui.dart'; From 62a067026873a3a12810f082a38ac46b8c68b668 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mathieu=20B=C3=A9langer?= Date: Mon, 9 Nov 2020 23:15:19 -0500 Subject: [PATCH 08/34] Minor changes to settings text --- mobile/lib/src/presentation/pages/settings/settings_page.dart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mobile/lib/src/presentation/pages/settings/settings_page.dart b/mobile/lib/src/presentation/pages/settings/settings_page.dart index 91eae9f2..bedfb7ee 100644 --- a/mobile/lib/src/presentation/pages/settings/settings_page.dart +++ b/mobile/lib/src/presentation/pages/settings/settings_page.dart @@ -40,7 +40,7 @@ class _SettingsPageState extends State { ), SettingsTile( title: 'Sex', - subtitle: 'What is your biological sex', + subtitle: 'Your biological sex', leading: Icon(Icons.face), trailing: _SexButton( savedSex: state.settings.sex, @@ -53,7 +53,7 @@ class _SettingsPageState extends State { ), SettingsTile( title: 'Acquisition Board', - subtitle: 'What OpenBCI board are you using?', + subtitle: 'Your OpenBCI board', leading: Icon(Icons.memory), trailing: _BoardButton( savedBoard: state.settings.board, From d8a45ad0a8b967d2e319e1480e9d040f4d55efd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mathieu=20B=C3=A9langer?= Date: Mon, 9 Nov 2020 23:24:44 -0500 Subject: [PATCH 09/34] Removed unnecessary imports after adding part of '' --- .../pages/bluetooth_page/bluetoothSelector_page.dart | 1 - mobile/lib/src/presentation/pages/dashboard/dashboard_page.dart | 1 - .../presentation/pages/night_stats_page/night_stats_page.dart | 1 - .../presentation/pages/record_sleep/record_sleep_guide_page.dart | 1 - .../pages/record_sleep/record_sleep_recording_page.dart | 1 - .../pages/record_sleep/record_sleep_validate_page.dart | 1 - .../pages/sleep_history_page/sleep_history_page.dart | 1 - 7 files changed, 7 deletions(-) diff --git a/mobile/lib/src/presentation/pages/bluetooth_page/bluetoothSelector_page.dart b/mobile/lib/src/presentation/pages/bluetooth_page/bluetoothSelector_page.dart index 9a65314b..d46bb1aa 100644 --- a/mobile/lib/src/presentation/pages/bluetooth_page/bluetoothSelector_page.dart +++ b/mobile/lib/src/presentation/pages/bluetooth_page/bluetoothSelector_page.dart @@ -3,7 +3,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:polydodo/src/application/device/device_selector_cubit.dart'; import 'package:polydodo/src/application/device/device_selector_state.dart'; -import 'package:polydodo/src/presentation/navigation/navdrawer_tabs.dart'; import 'package:polydodo/src/presentation/navigation/navdrawer_widget.dart'; import 'package:polydodo/src/presentation/navigation/routes/router.gr.dart'; diff --git a/mobile/lib/src/presentation/pages/dashboard/dashboard_page.dart b/mobile/lib/src/presentation/pages/dashboard/dashboard_page.dart index a8eecff5..8d2fd213 100644 --- a/mobile/lib/src/presentation/pages/dashboard/dashboard_page.dart +++ b/mobile/lib/src/presentation/pages/dashboard/dashboard_page.dart @@ -1,5 +1,4 @@ import 'package:flutter/material.dart'; -import 'package:polydodo/src/presentation/navigation/navdrawer_tabs.dart'; import 'package:polydodo/src/presentation/navigation/navdrawer_widget.dart'; class DashboardPage extends StatelessWidget { diff --git a/mobile/lib/src/presentation/pages/night_stats_page/night_stats_page.dart b/mobile/lib/src/presentation/pages/night_stats_page/night_stats_page.dart index 9e04cd2e..e494486c 100644 --- a/mobile/lib/src/presentation/pages/night_stats_page/night_stats_page.dart +++ b/mobile/lib/src/presentation/pages/night_stats_page/night_stats_page.dart @@ -4,7 +4,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:polydodo/src/application/night_stats/night_stats_cubit.dart'; import 'package:polydodo/src/application/night_stats/night_stats_state.dart'; -import 'package:polydodo/src/presentation/navigation/navdrawer_tabs.dart'; import 'package:polydodo/src/presentation/navigation/navdrawer_widget.dart'; import 'package:polydodo/src/presentation/pages/night_stats_page/metric_section.dart'; import 'package:polydodo/src/presentation/pages/night_stats_page/sleep_stages_section.dart'; diff --git a/mobile/lib/src/presentation/pages/record_sleep/record_sleep_guide_page.dart b/mobile/lib/src/presentation/pages/record_sleep/record_sleep_guide_page.dart index 9514770e..2382efbd 100644 --- a/mobile/lib/src/presentation/pages/record_sleep/record_sleep_guide_page.dart +++ b/mobile/lib/src/presentation/pages/record_sleep/record_sleep_guide_page.dart @@ -2,7 +2,6 @@ import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:polydodo/src/application/blocs.dart'; -import 'package:polydodo/src/presentation/navigation/navdrawer_tabs.dart'; import 'package:polydodo/src/presentation/navigation/navdrawer_widget.dart'; import 'package:polydodo/src/presentation/navigation/routes/router.gr.dart'; diff --git a/mobile/lib/src/presentation/pages/record_sleep/record_sleep_recording_page.dart b/mobile/lib/src/presentation/pages/record_sleep/record_sleep_recording_page.dart index 68306b51..2c23f616 100644 --- a/mobile/lib/src/presentation/pages/record_sleep/record_sleep_recording_page.dart +++ b/mobile/lib/src/presentation/pages/record_sleep/record_sleep_recording_page.dart @@ -2,7 +2,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:polydodo/src/application/eeg_data/data_cubit.dart'; import 'package:polydodo/src/application/eeg_data/data_states.dart'; -import 'package:polydodo/src/presentation/navigation/navdrawer_tabs.dart'; import 'package:polydodo/src/presentation/navigation/navdrawer_widget.dart'; class RecordSleepRecordingPage extends StatelessWidget { diff --git a/mobile/lib/src/presentation/pages/record_sleep/record_sleep_validate_page.dart b/mobile/lib/src/presentation/pages/record_sleep/record_sleep_validate_page.dart index f0a49bc5..504834f4 100644 --- a/mobile/lib/src/presentation/pages/record_sleep/record_sleep_validate_page.dart +++ b/mobile/lib/src/presentation/pages/record_sleep/record_sleep_validate_page.dart @@ -3,7 +3,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:polydodo/src/application/eeg_data/data_cubit.dart'; import 'package:polydodo/src/application/eeg_data/data_states.dart'; -import 'package:polydodo/src/presentation/navigation/navdrawer_tabs.dart'; import 'package:polydodo/src/presentation/navigation/navdrawer_widget.dart'; import 'package:polydodo/src/presentation/navigation/routes/router.gr.dart'; import 'package:polydodo/src/presentation/pages/record_sleep/signal_section.dart'; diff --git a/mobile/lib/src/presentation/pages/sleep_history_page/sleep_history_page.dart b/mobile/lib/src/presentation/pages/sleep_history_page/sleep_history_page.dart index 448cd577..6ba88302 100644 --- a/mobile/lib/src/presentation/pages/sleep_history_page/sleep_history_page.dart +++ b/mobile/lib/src/presentation/pages/sleep_history_page/sleep_history_page.dart @@ -3,7 +3,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:polydodo/src/application/sleep_history/sleep_history_cubit.dart'; import 'package:polydodo/src/application/sleep_history/sleep_history_state.dart'; -import 'package:polydodo/src/presentation/navigation/navdrawer_tabs.dart'; import 'package:polydodo/src/presentation/navigation/navdrawer_widget.dart'; import 'package:polydodo/src/presentation/navigation/routes/router.gr.dart'; From b95366732ea9da50573d7a4397d86400ad79879c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mathieu=20B=C3=A9langer?= Date: Tue, 10 Nov 2020 13:46:17 -0500 Subject: [PATCH 10/34] Update mobile/lib/src/application/settings/settings_cubit.dart Co-authored-by: Anes Belfodil --- mobile/lib/src/application/settings/settings_cubit.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mobile/lib/src/application/settings/settings_cubit.dart b/mobile/lib/src/application/settings/settings_cubit.dart index 3e995a29..3f755066 100644 --- a/mobile/lib/src/application/settings/settings_cubit.dart +++ b/mobile/lib/src/application/settings/settings_cubit.dart @@ -31,7 +31,7 @@ class SettingsCubit extends Cubit { } } - void setAge(int newAge) async { + Future setAge(int newAge) async { if (state is SettingsLoadSuccess) { emit(SettingsLoadSuccess( (state as SettingsLoadSuccess).settings.copyWith(age: newAge))); From c230e63ac662ed423fad1dcd54476cccb105fef5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mathieu=20B=C3=A9langer?= Date: Tue, 10 Nov 2020 13:46:25 -0500 Subject: [PATCH 11/34] Update mobile/lib/src/application/settings/settings_cubit.dart Co-authored-by: Anes Belfodil --- mobile/lib/src/application/settings/settings_cubit.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mobile/lib/src/application/settings/settings_cubit.dart b/mobile/lib/src/application/settings/settings_cubit.dart index 3f755066..8328b70a 100644 --- a/mobile/lib/src/application/settings/settings_cubit.dart +++ b/mobile/lib/src/application/settings/settings_cubit.dart @@ -39,7 +39,7 @@ class SettingsCubit extends Cubit { } } - void setBoard(AcquisitionBoard newBoard) async { + Future setBoard(AcquisitionBoard newBoard) async { if (state is SettingsLoadSuccess) { emit(SettingsLoadSuccess( (state as SettingsLoadSuccess).settings.copyWith(board: newBoard))); From b6529290cb69955de1945693cfbec004b26a183b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mathieu=20B=C3=A9langer?= Date: Tue, 10 Nov 2020 13:47:58 -0500 Subject: [PATCH 12/34] Update mobile/lib/src/application/settings/settings_cubit.dart Co-authored-by: Anes Belfodil --- mobile/lib/src/application/settings/settings_cubit.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mobile/lib/src/application/settings/settings_cubit.dart b/mobile/lib/src/application/settings/settings_cubit.dart index 8328b70a..368b29f5 100644 --- a/mobile/lib/src/application/settings/settings_cubit.dart +++ b/mobile/lib/src/application/settings/settings_cubit.dart @@ -23,7 +23,7 @@ class SettingsCubit extends Cubit { emit(SettingsLoadSuccess(settings)); } - void setSex(Sex newSex) async { + Future setSex(Sex newSex) async { if (state is SettingsLoadSuccess) { emit(SettingsLoadSuccess( (state as SettingsLoadSuccess).settings.copyWith(sex: newSex))); From 2eb205866ea4f37b2d553c4a17ff058f8b6bdc66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mathieu=20B=C3=A9langer?= Date: Tue, 10 Nov 2020 13:48:11 -0500 Subject: [PATCH 13/34] Update mobile/lib/src/application/settings/settings_cubit.dart Co-authored-by: Anes Belfodil --- mobile/lib/src/application/settings/settings_cubit.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mobile/lib/src/application/settings/settings_cubit.dart b/mobile/lib/src/application/settings/settings_cubit.dart index 368b29f5..376ac5e4 100644 --- a/mobile/lib/src/application/settings/settings_cubit.dart +++ b/mobile/lib/src/application/settings/settings_cubit.dart @@ -10,7 +10,7 @@ class SettingsCubit extends Cubit { getSettings(); } - void getSettings() async { + Future getSettings() async { var prefs = (await SharedPreferences.getInstance()); var settings = Settings( From ee6c3b889667705a5f8c0ff8acf3737572a6038a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mathieu=20B=C3=A9langer?= Date: Tue, 10 Nov 2020 13:55:52 -0500 Subject: [PATCH 14/34] Added Sharedpreference property to cubit --- .../lib/src/application/settings/settings_cubit.dart | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/mobile/lib/src/application/settings/settings_cubit.dart b/mobile/lib/src/application/settings/settings_cubit.dart index 3e995a29..6593ac77 100644 --- a/mobile/lib/src/application/settings/settings_cubit.dart +++ b/mobile/lib/src/application/settings/settings_cubit.dart @@ -6,12 +6,14 @@ import 'package:shared_preferences/shared_preferences.dart'; part 'settings_state.dart'; class SettingsCubit extends Cubit { + SharedPreferences prefs; + SettingsCubit() : super(SettingsLoadInProgress()) { getSettings(); } void getSettings() async { - var prefs = (await SharedPreferences.getInstance()); + prefs = (await SharedPreferences.getInstance()); var settings = Settings( age: prefs.getInt('age'), @@ -27,7 +29,7 @@ class SettingsCubit extends Cubit { if (state is SettingsLoadSuccess) { emit(SettingsLoadSuccess( (state as SettingsLoadSuccess).settings.copyWith(sex: newSex))); - await (await SharedPreferences.getInstance()).setInt('sex', newSex.index); + await prefs.setInt('sex', newSex.index); } } @@ -35,7 +37,7 @@ class SettingsCubit extends Cubit { if (state is SettingsLoadSuccess) { emit(SettingsLoadSuccess( (state as SettingsLoadSuccess).settings.copyWith(age: newAge))); - await (await SharedPreferences.getInstance()).setInt('age', newAge); + await prefs.setInt('age', newAge); } } @@ -43,8 +45,7 @@ class SettingsCubit extends Cubit { if (state is SettingsLoadSuccess) { emit(SettingsLoadSuccess( (state as SettingsLoadSuccess).settings.copyWith(board: newBoard))); - await (await SharedPreferences.getInstance()) - .setInt('board', newBoard.index); + await prefs.setInt('board', newBoard.index); } } } From 40186af28a8ae5069dc320520277cc25912f9fe7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mathieu=20B=C3=A9langer?= Date: Tue, 10 Nov 2020 18:14:05 -0500 Subject: [PATCH 15/34] Added genericity to Settings backbone --- .../application/settings/settings_cubit.dart | 60 ++++++--- mobile/lib/src/common/constants.dart | 3 + .../domain/settings/acquisition_board.dart | 2 +- mobile/lib/src/domain/settings/sex.dart | 2 +- .../pages/settings/settings_page.dart | 127 +++++------------- mobile/pubspec.lock | 7 + mobile/pubspec.yaml | 1 + 7 files changed, 86 insertions(+), 116 deletions(-) create mode 100644 mobile/lib/src/common/constants.dart diff --git a/mobile/lib/src/application/settings/settings_cubit.dart b/mobile/lib/src/application/settings/settings_cubit.dart index 4585aee8..65d50abb 100644 --- a/mobile/lib/src/application/settings/settings_cubit.dart +++ b/mobile/lib/src/application/settings/settings_cubit.dart @@ -1,5 +1,7 @@ import 'package:bloc/bloc.dart'; +import 'package:enum_to_string/enum_to_string.dart'; import 'package:equatable/equatable.dart'; +import 'package:polydodo/src/common/constants.dart'; import 'package:polydodo/src/domain/settings/settings.dart'; import 'package:shared_preferences/shared_preferences.dart'; @@ -16,36 +18,50 @@ class SettingsCubit extends Cubit { var prefs = (await SharedPreferences.getInstance()); var settings = Settings( - age: prefs.getInt('age'), + age: prefs.getInt(AGEKEY), board: AcquisitionBoard - .values[(prefs.getInt('board')) ?? AcquisitionBoard.Empty.index], - sex: Sex.values[(prefs.getInt('sex')) ?? Sex.Empty.index], + .values[(prefs.getInt(BOARDKEY)) ?? AcquisitionBoard.NotSet.index], + sex: Sex.values[(prefs.getInt(SEXKEY)) ?? Sex.NotSet.index], ); emit(SettingsLoadSuccess(settings)); } - Future setSex(Sex newSex) async { + Future setSetting(String settingKey, T setting) async { if (state is SettingsLoadSuccess) { - emit(SettingsLoadSuccess( - (state as SettingsLoadSuccess).settings.copyWith(sex: newSex))); - await prefs.setInt('sex', newSex.index); - } - } + var settingString = settingKey != AGEKEY + ? EnumToString.convertToString(setting) + : setting.toString(); + switch (settingKey) { + case AGEKEY: + var age = int.parse(settingString); + emit(SettingsLoadSuccess( + (state as SettingsLoadSuccess).settings.copyWith(age: age), + )); + await prefs.setInt(AGEKEY, age); + break; + case SEXKEY: + var sex = EnumToString.fromString(Sex.values, settingString); + emit( + SettingsLoadSuccess( + (state as SettingsLoadSuccess).settings.copyWith(sex: sex), + ), + ); + await prefs.setInt(SEXKEY, sex.index); + break; + case BOARDKEY: + var board = + EnumToString.fromString(AcquisitionBoard.values, settingString); + emit( + SettingsLoadSuccess( + (state as SettingsLoadSuccess).settings.copyWith(board: board), + ), + ); + await prefs.setInt(BOARDKEY, board.index); + break; - Future setAge(int newAge) async { - if (state is SettingsLoadSuccess) { - emit(SettingsLoadSuccess( - (state as SettingsLoadSuccess).settings.copyWith(age: newAge))); - await prefs.setInt('age', newAge); - } - } - - Future setBoard(AcquisitionBoard newBoard) async { - if (state is SettingsLoadSuccess) { - emit(SettingsLoadSuccess( - (state as SettingsLoadSuccess).settings.copyWith(board: newBoard))); - await prefs.setInt('board', newBoard.index); + default: + } } } } diff --git a/mobile/lib/src/common/constants.dart b/mobile/lib/src/common/constants.dart new file mode 100644 index 00000000..56d60109 --- /dev/null +++ b/mobile/lib/src/common/constants.dart @@ -0,0 +1,3 @@ +const String AGEKEY = 'Age'; +const String BOARDKEY = 'AcquisitionBoard'; +const String SEXKEY = 'Sex'; diff --git a/mobile/lib/src/domain/settings/acquisition_board.dart b/mobile/lib/src/domain/settings/acquisition_board.dart index 6c96c6ca..c5743104 100644 --- a/mobile/lib/src/domain/settings/acquisition_board.dart +++ b/mobile/lib/src/domain/settings/acquisition_board.dart @@ -1,3 +1,3 @@ part of 'settings.dart'; -enum AcquisitionBoard { Empty, Cython, Ganglion } +enum AcquisitionBoard { NotSet, Cython, Ganglion } diff --git a/mobile/lib/src/domain/settings/sex.dart b/mobile/lib/src/domain/settings/sex.dart index 54eb4e4e..52a8b12d 100644 --- a/mobile/lib/src/domain/settings/sex.dart +++ b/mobile/lib/src/domain/settings/sex.dart @@ -1,3 +1,3 @@ part of 'settings.dart'; -enum Sex { Empty, Male, Female } +enum Sex { NotSet, Male, Female } diff --git a/mobile/lib/src/presentation/pages/settings/settings_page.dart b/mobile/lib/src/presentation/pages/settings/settings_page.dart index bedfb7ee..d5b5c651 100644 --- a/mobile/lib/src/presentation/pages/settings/settings_page.dart +++ b/mobile/lib/src/presentation/pages/settings/settings_page.dart @@ -1,7 +1,9 @@ import 'dart:ui'; +import 'package:enum_to_string/enum_to_string.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:polydodo/src/application/settings/settings_cubit.dart'; +import 'package:polydodo/src/common/constants.dart'; import 'package:polydodo/src/domain/settings/settings.dart'; import 'package:polydodo/src/presentation/navigation/navdrawer_widget.dart'; import 'package:polydodo/src/presentation/widgets/loading_indicator.dart'; @@ -34,7 +36,7 @@ class _SettingsPageState extends State { leading: Icon(Icons.cake), trailing: TextButton( child: Text(state.settings.age == null - ? 'Empty' + ? 'Not Set' : state.settings.age.toString()), onPressed: () => _showDatePicker(context)), ), @@ -42,26 +44,18 @@ class _SettingsPageState extends State { title: 'Sex', subtitle: 'Your biological sex', leading: Icon(Icons.face), - trailing: _SexButton( - savedSex: state.settings.sex, - onSelected: (newSex) => - BlocProvider.of(context) - .setSex(newSex), - activeStyle: TextStyle(fontWeight: FontWeight.bold), - defaultStyle: TextStyle(), + trailing: SettingsPopupMenuButton( + savedSetting: state.settings.sex, + settingOptions: Sex.values, ), ), SettingsTile( title: 'Acquisition Board', subtitle: 'Your OpenBCI board', leading: Icon(Icons.memory), - trailing: _BoardButton( - savedBoard: state.settings.board, - onSelected: (newBoard) => - BlocProvider.of(context) - .setBoard(newBoard), - activeStyle: TextStyle(fontWeight: FontWeight.bold), - defaultStyle: TextStyle(), + trailing: SettingsPopupMenuButton( + savedSetting: state.settings.board, + settingOptions: AcquisitionBoard.values, ), ), ], @@ -86,101 +80,50 @@ void _showDatePicker(BuildContext context) async { helpText: 'Select birthdate'); if (datePicked != null && datePicked != DateTime.now()) { - BlocProvider.of(context) - .setAge(DateTime.now().difference(datePicked).inDays ~/ 365); + await BlocProvider.of(context).setSetting( + AGEKEY, DateTime.now().difference(datePicked).inDays ~/ 365); } } -class _SexButton extends StatelessWidget { - const _SexButton({ +class SettingsPopupMenuButton extends StatelessWidget { + SettingsPopupMenuButton({ Key key, - @required this.onSelected, - @required this.savedSex, - @required this.activeStyle, - @required this.defaultStyle, + @required this.savedSetting, + @required this.settingOptions, }) : super(key: key); - final PopupMenuItemSelected onSelected; - final Sex savedSex; - final TextStyle activeStyle; - final TextStyle defaultStyle; + final T savedSetting; + final List settingOptions; + final TextStyle activeStyle = TextStyle(fontWeight: FontWeight.bold); + final TextStyle defaultStyle = TextStyle(); @override Widget build(BuildContext context) { - return PopupMenuButton( + return PopupMenuButton( child: // ignore: missing_required_param TextButton( - child: Text(savedSex.toString().split('.').last), + child: Text( + EnumToString.convertToString(savedSetting, camelCase: true), + ), style: ButtonStyle( foregroundColor: MaterialStateProperty.all( Theme.of(context).colorScheme.primary))), - onSelected: onSelected, - itemBuilder: (BuildContext context) => >[ - PopupMenuItem( - value: Sex.Male, - child: Text( - 'Male', - style: savedSex == Sex.Male ? activeStyle : defaultStyle, - ), - ), - PopupMenuItem( - value: Sex.Female, - child: Text( - 'Female', - style: savedSex == Sex.Female ? activeStyle : defaultStyle, - ), - ), - ], + onSelected: (savedSetting) => BlocProvider.of(context) + .setSetting(savedSetting.toString().split('.').first, savedSetting), + itemBuilder: (BuildContext context) => + _buildPopupItemList(settingOptions), ); } -} -class _BoardButton extends StatelessWidget { - const _BoardButton({ - Key key, - @required this.onSelected, - @required this.savedBoard, - @required this.activeStyle, - @required this.defaultStyle, - }) : super(key: key); - - final PopupMenuItemSelected onSelected; - final AcquisitionBoard savedBoard; - final TextStyle activeStyle; - final TextStyle defaultStyle; - - @override - Widget build(BuildContext context) { - return PopupMenuButton( - child: - // ignore: missing_required_param - TextButton( - child: Text(savedBoard.toString().split('.').last), - style: ButtonStyle( - foregroundColor: MaterialStateProperty.all( - Theme.of(context).colorScheme.primary))), - onSelected: onSelected, - itemBuilder: (BuildContext context) => >[ - PopupMenuItem( - value: AcquisitionBoard.Cython, - child: Text( - 'Cython', - style: savedBoard == AcquisitionBoard.Cython - ? activeStyle - : defaultStyle, - ), + List> _buildPopupItemList(List options) { + return [ + for (var setting in options.sublist(1)) + PopupMenuItem( + value: setting, + child: Text(EnumToString.convertToString(setting, camelCase: true), + style: savedSetting == setting ? activeStyle : defaultStyle), ), - PopupMenuItem( - value: AcquisitionBoard.Ganglion, - child: Text( - 'Ganglion', - style: savedBoard == AcquisitionBoard.Ganglion - ? activeStyle - : defaultStyle, - ), - ), - ], - ); + ]; } } diff --git a/mobile/pubspec.lock b/mobile/pubspec.lock index 7e6b8f90..a2d8c060 100644 --- a/mobile/pubspec.lock +++ b/mobile/pubspec.lock @@ -225,6 +225,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.3.9" + enum_to_string: + dependency: "direct main" + description: + name: enum_to_string + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.13" equatable: dependency: "direct main" description: diff --git a/mobile/pubspec.yaml b/mobile/pubspec.yaml index 421abb9a..d34c9e04 100644 --- a/mobile/pubspec.yaml +++ b/mobile/pubspec.yaml @@ -31,6 +31,7 @@ dependencies: csv: ^4.0.3 cupertino_icons: ^0.1.3 equatable: ^1.2.5 + enum_to_string: ^1.0.13 flutter_bloc: ^6.0.5 flutter_reactive_ble: ^2.5.2 get_it: ^4.0.4 From 97094cadb24ba1acd73c68748d05828876fa4333 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mathieu=20B=C3=A9langer?= Date: Tue, 10 Nov 2020 18:21:41 -0500 Subject: [PATCH 16/34] Nit fix for formating --- .../presentation/pages/settings/settings_page.dart | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/mobile/lib/src/presentation/pages/settings/settings_page.dart b/mobile/lib/src/presentation/pages/settings/settings_page.dart index d5b5c651..6810da67 100644 --- a/mobile/lib/src/presentation/pages/settings/settings_page.dart +++ b/mobile/lib/src/presentation/pages/settings/settings_page.dart @@ -103,12 +103,14 @@ class SettingsPopupMenuButton extends StatelessWidget { child: // ignore: missing_required_param TextButton( - child: Text( - EnumToString.convertToString(savedSetting, camelCase: true), - ), - style: ButtonStyle( - foregroundColor: MaterialStateProperty.all( - Theme.of(context).colorScheme.primary))), + child: Text( + EnumToString.convertToString(savedSetting, camelCase: true), + ), + style: ButtonStyle( + foregroundColor: + MaterialStateProperty.all(Theme.of(context).colorScheme.primary), + ), + ), onSelected: (savedSetting) => BlocProvider.of(context) .setSetting(savedSetting.toString().split('.').first, savedSetting), itemBuilder: (BuildContext context) => From 15ed171b18d08abafea48ff8a678e19e9f8e856a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mathieu=20B=C3=A9langer?= Date: Wed, 11 Nov 2020 02:40:48 -0500 Subject: [PATCH 17/34] Settings in Map and added Infrastructure layer --- .../application/settings/settings_cubit.dart | 93 +++++++++---------- .../application/settings/settings_state.dart | 3 +- .../domain/settings/acquisition_board.dart | 2 - .../settings/i_settings_repository.dart | 5 + mobile/lib/src/domain/settings/settings.dart | 22 +---- mobile/lib/src/domain/settings/sex.dart | 2 - .../settings_repository.dart | 35 +++++++ mobile/lib/src/locator.dart | 6 +- .../pages/settings/settings_page.dart | 34 +++---- 9 files changed, 110 insertions(+), 92 deletions(-) create mode 100644 mobile/lib/src/domain/settings/i_settings_repository.dart create mode 100644 mobile/lib/src/infrastructure/settings_repository/settings_repository.dart diff --git a/mobile/lib/src/application/settings/settings_cubit.dart b/mobile/lib/src/application/settings/settings_cubit.dart index 65d50abb..8b909525 100644 --- a/mobile/lib/src/application/settings/settings_cubit.dart +++ b/mobile/lib/src/application/settings/settings_cubit.dart @@ -1,67 +1,62 @@ import 'package:bloc/bloc.dart'; -import 'package:enum_to_string/enum_to_string.dart'; import 'package:equatable/equatable.dart'; -import 'package:polydodo/src/common/constants.dart'; -import 'package:polydodo/src/domain/settings/settings.dart'; -import 'package:shared_preferences/shared_preferences.dart'; +import 'package:polydodo/src/domain/settings/i_settings_repository.dart'; part 'settings_state.dart'; class SettingsCubit extends Cubit { - SharedPreferences prefs; + ISettingsRepository _repository; - SettingsCubit() : super(SettingsLoadInProgress()) { + SettingsCubit(repository) : super(SettingsLoadInProgress()) { getSettings(); } Future getSettings() async { - var prefs = (await SharedPreferences.getInstance()); - - var settings = Settings( - age: prefs.getInt(AGEKEY), - board: AcquisitionBoard - .values[(prefs.getInt(BOARDKEY)) ?? AcquisitionBoard.NotSet.index], - sex: Sex.values[(prefs.getInt(SEXKEY)) ?? Sex.NotSet.index], - ); - + var settings = await _repository.getSettings(); emit(SettingsLoadSuccess(settings)); } - Future setSetting(String settingKey, T setting) async { + Future setSetting(String settingKey, dynamic settingValue) async { if (state is SettingsLoadSuccess) { - var settingString = settingKey != AGEKEY - ? EnumToString.convertToString(setting) - : setting.toString(); - switch (settingKey) { - case AGEKEY: - var age = int.parse(settingString); - emit(SettingsLoadSuccess( - (state as SettingsLoadSuccess).settings.copyWith(age: age), - )); - await prefs.setInt(AGEKEY, age); - break; - case SEXKEY: - var sex = EnumToString.fromString(Sex.values, settingString); - emit( - SettingsLoadSuccess( - (state as SettingsLoadSuccess).settings.copyWith(sex: sex), - ), - ); - await prefs.setInt(SEXKEY, sex.index); - break; - case BOARDKEY: - var board = - EnumToString.fromString(AcquisitionBoard.values, settingString); - emit( - SettingsLoadSuccess( - (state as SettingsLoadSuccess).settings.copyWith(board: board), - ), - ); - await prefs.setInt(BOARDKEY, board.index); - break; - - default: - } + emit( + SettingsLoadSuccess( + (state as SettingsLoadSuccess).settings[settingKey] = settingValue), + ); + _repository.setSetting(settingKey, settingValue); + // var settingString = settingKey != AGEKEY + // ? EnumToString.convertToString(setting) + // : setting.toString(); + + // switch (settingKey) { + // case AGEKEY: + // var age = int.parse(settingString); + // emit(SettingsLoadSuccess( + // (state as SettingsLoadSuccess).settings.copyWith(age), + // )); + // await prefs.setInt(AGEKEY, age); + // break; + // case SEXKEY: + // var sex = EnumToString.fromString(Sex.values, settingString); + // emit( + // SettingsLoadSuccess( + // (state as SettingsLoadSuccess).settings.copyWith(sex: sex), + // ), + // ); + // await prefs.setInt(SEXKEY, sex.index); + // break; + // case BOARDKEY: + // var board = + // EnumToString.fromString(AcquisitionBoard.values, settingString); + // emit( + // SettingsLoadSuccess( + // (state as SettingsLoadSuccess).settings.copyWith(board: board), + // ), + // ); + // await prefs.setInt(BOARDKEY, board.index); + // break; + + // default: + // } } } } diff --git a/mobile/lib/src/application/settings/settings_state.dart b/mobile/lib/src/application/settings/settings_state.dart index 9188a13a..00678a5b 100644 --- a/mobile/lib/src/application/settings/settings_state.dart +++ b/mobile/lib/src/application/settings/settings_state.dart @@ -10,7 +10,8 @@ abstract class SettingsState extends Equatable { class SettingsLoadInProgress extends SettingsState {} class SettingsLoadSuccess extends SettingsState { - final Settings settings; + // final Settings settings; + final Map settings; const SettingsLoadSuccess(this.settings); diff --git a/mobile/lib/src/domain/settings/acquisition_board.dart b/mobile/lib/src/domain/settings/acquisition_board.dart index c5743104..396b6440 100644 --- a/mobile/lib/src/domain/settings/acquisition_board.dart +++ b/mobile/lib/src/domain/settings/acquisition_board.dart @@ -1,3 +1 @@ -part of 'settings.dart'; - enum AcquisitionBoard { NotSet, Cython, Ganglion } diff --git a/mobile/lib/src/domain/settings/i_settings_repository.dart b/mobile/lib/src/domain/settings/i_settings_repository.dart new file mode 100644 index 00000000..dcb34047 --- /dev/null +++ b/mobile/lib/src/domain/settings/i_settings_repository.dart @@ -0,0 +1,5 @@ +abstract class ISettingsRepository { + Future> getSettings(); + + void setSetting(String settingKey, dynamic settingValue); +} diff --git a/mobile/lib/src/domain/settings/settings.dart b/mobile/lib/src/domain/settings/settings.dart index b977eb81..4d339f29 100644 --- a/mobile/lib/src/domain/settings/settings.dart +++ b/mobile/lib/src/domain/settings/settings.dart @@ -1,20 +1,2 @@ -import 'package:equatable/equatable.dart'; - -part 'sex.dart'; -part 'acquisition_board.dart'; - -class Settings extends Equatable { - final int age; - final AcquisitionBoard board; - final Sex sex; - - Settings({this.age, this.board, this.sex}); - - @override - List get props => [age, board, sex]; - - Settings copyWith({int age, AcquisitionBoard board, Sex sex}) { - return Settings( - age: age ?? this.age, board: board ?? this.board, sex: sex ?? this.sex); - } -} +export 'acquisition_board.dart'; +export 'sex.dart'; diff --git a/mobile/lib/src/domain/settings/sex.dart b/mobile/lib/src/domain/settings/sex.dart index 52a8b12d..56541fe0 100644 --- a/mobile/lib/src/domain/settings/sex.dart +++ b/mobile/lib/src/domain/settings/sex.dart @@ -1,3 +1 @@ -part of 'settings.dart'; - enum Sex { NotSet, Male, Female } diff --git a/mobile/lib/src/infrastructure/settings_repository/settings_repository.dart b/mobile/lib/src/infrastructure/settings_repository/settings_repository.dart new file mode 100644 index 00000000..c1934056 --- /dev/null +++ b/mobile/lib/src/infrastructure/settings_repository/settings_repository.dart @@ -0,0 +1,35 @@ +import 'package:polydodo/src/common/constants.dart'; +import 'package:polydodo/src/domain/settings/i_settings_repository.dart'; +import 'package:polydodo/src/domain/settings/settings.dart'; +import 'package:shared_preferences/shared_preferences.dart'; + +class SettingsRepository extends ISettingsRepository { + SharedPreferences prefs; + + SettingsRepository(); + + @override + Future> getSettings() async { + prefs = (await SharedPreferences.getInstance()); + return { + AGEKEY: prefs.getInt(AGEKEY), + BOARDKEY: AcquisitionBoard + .values[(prefs.getInt(BOARDKEY)) ?? AcquisitionBoard.NotSet.index], + SEXKEY: Sex.values[(prefs.getInt(SEXKEY)) ?? Sex.NotSet.index], + }; + } + + @override + void setSetting(String settingKey, dynamic settingValue) { + if (settingValue is int) { + prefs.setInt(settingKey, settingValue); + } else if (settingValue is double) { + prefs.setDouble(settingKey, settingValue); + } else if (settingValue is bool) { + prefs.setBool(settingKey, settingValue); + } else { + // setting is an enum value + prefs.setInt(settingKey, settingValue.index); + } + } +} diff --git a/mobile/lib/src/locator.dart b/mobile/lib/src/locator.dart index ce7abd41..662ef9ca 100644 --- a/mobile/lib/src/locator.dart +++ b/mobile/lib/src/locator.dart @@ -7,9 +7,11 @@ import 'package:polydodo/src/application/settings/settings_cubit.dart'; import 'package:polydodo/src/application/sleep_history/sleep_history_cubit.dart'; import 'package:polydodo/src/domain/acquisition_device/i_acquisition_device_repository.dart'; import 'package:polydodo/src/domain/eeg_data/i_eeg_data_repository.dart'; +import 'package:polydodo/src/domain/settings/i_settings_repository.dart'; import 'package:polydodo/src/domain/sleep_history/i_sleep_history_repository.dart'; import 'package:polydodo/src/infrastructure/connection_repositories/acquisition_device_repository.dart'; import 'package:polydodo/src/infrastructure/connection_repositories/eeg_data_repository.dart'; +import 'package:polydodo/src/infrastructure/settings_repository/settings_repository.dart'; import 'package:polydodo/src/infrastructure/sleep_history/sleep_history_repository.dart'; /// Private GetIt instance as we want all DI to be performed here in this file @@ -21,6 +23,7 @@ void registerServices() { _serviceLocator.registerSingleton(EEGDataRepository()); _serviceLocator .registerSingleton(SleepHistoryRepository()); + _serviceLocator.registerSingleton(SettingsRepository()); } /// This function creates all the BlocProviders used in this app @@ -37,7 +40,8 @@ List createBlocProviders() => [ ), ), BlocProvider( - create: (context) => SettingsCubit(), + create: (context) => + SettingsCubit(_serviceLocator.get()), ), BlocProvider( create: (context) => SleepHistoryCubit( diff --git a/mobile/lib/src/presentation/pages/settings/settings_page.dart b/mobile/lib/src/presentation/pages/settings/settings_page.dart index 6810da67..ccaf9fa7 100644 --- a/mobile/lib/src/presentation/pages/settings/settings_page.dart +++ b/mobile/lib/src/presentation/pages/settings/settings_page.dart @@ -35,27 +35,27 @@ class _SettingsPageState extends State { subtitle: 'In years', leading: Icon(Icons.cake), trailing: TextButton( - child: Text(state.settings.age == null + child: Text(state.settings[AGEKEY] == null ? 'Not Set' - : state.settings.age.toString()), + : state.settings[AGEKEY].toString()), onPressed: () => _showDatePicker(context)), ), SettingsTile( title: 'Sex', subtitle: 'Your biological sex', leading: Icon(Icons.face), - trailing: SettingsPopupMenuButton( - savedSetting: state.settings.sex, - settingOptions: Sex.values, + trailing: SettingsPopupMenuButton( + savedSetting: state.settings[SEXKEY], + settingEnum: Sex, ), ), SettingsTile( title: 'Acquisition Board', subtitle: 'Your OpenBCI board', leading: Icon(Icons.memory), - trailing: SettingsPopupMenuButton( - savedSetting: state.settings.board, - settingOptions: AcquisitionBoard.values, + trailing: SettingsPopupMenuButton( + savedSetting: state.settings[BOARDKEY], + settingEnum: AcquisitionBoard, ), ), ], @@ -85,21 +85,21 @@ void _showDatePicker(BuildContext context) async { } } -class SettingsPopupMenuButton extends StatelessWidget { +class SettingsPopupMenuButton extends StatelessWidget { SettingsPopupMenuButton({ Key key, @required this.savedSetting, - @required this.settingOptions, + @required this.settingEnum, }) : super(key: key); - final T savedSetting; - final List settingOptions; + final dynamic savedSetting; + final dynamic settingEnum; final TextStyle activeStyle = TextStyle(fontWeight: FontWeight.bold); final TextStyle defaultStyle = TextStyle(); @override Widget build(BuildContext context) { - return PopupMenuButton( + return PopupMenuButton( child: // ignore: missing_required_param TextButton( @@ -113,14 +113,14 @@ class SettingsPopupMenuButton extends StatelessWidget { ), onSelected: (savedSetting) => BlocProvider.of(context) .setSetting(savedSetting.toString().split('.').first, savedSetting), - itemBuilder: (BuildContext context) => - _buildPopupItemList(settingOptions), + itemBuilder: (BuildContext context) => _buildPopupItemList(settingEnum), ); } - List> _buildPopupItemList(List options) { + List> _buildPopupItemList(dynamic settingEnum) { return [ - for (var setting in options.sublist(1)) + for (var setting in settingEnum.values + .sublist(1)) // Only starting at 1 cause 0 is 'Not Set' PopupMenuItem( value: setting, child: Text(EnumToString.convertToString(setting, camelCase: true), From 94437ccbe5c8473d364933dff6d527d67b411804 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mathieu=20B=C3=A9langer?= Date: Wed, 11 Nov 2020 20:29:35 -0500 Subject: [PATCH 18/34] Generic is the new fun --- .../application/settings/settings_cubit.dart | 42 ++----------------- .../application/settings/settings_state.dart | 7 +++- .../settings/i_settings_repository.dart | 2 +- .../settings_repository.dart | 10 ++--- .../pages/settings/settings_page.dart | 19 +++++---- 5 files changed, 26 insertions(+), 54 deletions(-) diff --git a/mobile/lib/src/application/settings/settings_cubit.dart b/mobile/lib/src/application/settings/settings_cubit.dart index 8b909525..6e6dabe2 100644 --- a/mobile/lib/src/application/settings/settings_cubit.dart +++ b/mobile/lib/src/application/settings/settings_cubit.dart @@ -5,9 +5,9 @@ import 'package:polydodo/src/domain/settings/i_settings_repository.dart'; part 'settings_state.dart'; class SettingsCubit extends Cubit { - ISettingsRepository _repository; + final ISettingsRepository _repository; - SettingsCubit(repository) : super(SettingsLoadInProgress()) { + SettingsCubit(this._repository) : super(SettingsLoadInProgress()) { getSettings(); } @@ -18,45 +18,11 @@ class SettingsCubit extends Cubit { Future setSetting(String settingKey, dynamic settingValue) async { if (state is SettingsLoadSuccess) { + await _repository.setSetting(settingKey, settingValue); emit( SettingsLoadSuccess( - (state as SettingsLoadSuccess).settings[settingKey] = settingValue), + (state as SettingsLoadSuccess).copyWith(settingKey, settingValue)), ); - _repository.setSetting(settingKey, settingValue); - // var settingString = settingKey != AGEKEY - // ? EnumToString.convertToString(setting) - // : setting.toString(); - - // switch (settingKey) { - // case AGEKEY: - // var age = int.parse(settingString); - // emit(SettingsLoadSuccess( - // (state as SettingsLoadSuccess).settings.copyWith(age), - // )); - // await prefs.setInt(AGEKEY, age); - // break; - // case SEXKEY: - // var sex = EnumToString.fromString(Sex.values, settingString); - // emit( - // SettingsLoadSuccess( - // (state as SettingsLoadSuccess).settings.copyWith(sex: sex), - // ), - // ); - // await prefs.setInt(SEXKEY, sex.index); - // break; - // case BOARDKEY: - // var board = - // EnumToString.fromString(AcquisitionBoard.values, settingString); - // emit( - // SettingsLoadSuccess( - // (state as SettingsLoadSuccess).settings.copyWith(board: board), - // ), - // ); - // await prefs.setInt(BOARDKEY, board.index); - // break; - - // default: - // } } } } diff --git a/mobile/lib/src/application/settings/settings_state.dart b/mobile/lib/src/application/settings/settings_state.dart index 00678a5b..c5733a27 100644 --- a/mobile/lib/src/application/settings/settings_state.dart +++ b/mobile/lib/src/application/settings/settings_state.dart @@ -10,7 +10,6 @@ abstract class SettingsState extends Equatable { class SettingsLoadInProgress extends SettingsState {} class SettingsLoadSuccess extends SettingsState { - // final Settings settings; final Map settings; const SettingsLoadSuccess(this.settings); @@ -20,6 +19,12 @@ class SettingsLoadSuccess extends SettingsState { @override String toString() => 'SettingsLoadSuccess { settings: $settings }'; + + Map copyWith(String settingKey, dynamic settingValue) { + var newSettings = Map.from(settings); + newSettings[settingKey] = settingValue; + return newSettings; + } } class SettingsLoadFailure extends SettingsState {} diff --git a/mobile/lib/src/domain/settings/i_settings_repository.dart b/mobile/lib/src/domain/settings/i_settings_repository.dart index dcb34047..d6c57fd9 100644 --- a/mobile/lib/src/domain/settings/i_settings_repository.dart +++ b/mobile/lib/src/domain/settings/i_settings_repository.dart @@ -1,5 +1,5 @@ abstract class ISettingsRepository { Future> getSettings(); - void setSetting(String settingKey, dynamic settingValue); + Future setSetting(String settingKey, dynamic settingValue); } diff --git a/mobile/lib/src/infrastructure/settings_repository/settings_repository.dart b/mobile/lib/src/infrastructure/settings_repository/settings_repository.dart index c1934056..1be4aa66 100644 --- a/mobile/lib/src/infrastructure/settings_repository/settings_repository.dart +++ b/mobile/lib/src/infrastructure/settings_repository/settings_repository.dart @@ -20,16 +20,16 @@ class SettingsRepository extends ISettingsRepository { } @override - void setSetting(String settingKey, dynamic settingValue) { + Future setSetting(String settingKey, dynamic settingValue) async { if (settingValue is int) { - prefs.setInt(settingKey, settingValue); + await prefs.setInt(settingKey, settingValue); } else if (settingValue is double) { - prefs.setDouble(settingKey, settingValue); + await prefs.setDouble(settingKey, settingValue); } else if (settingValue is bool) { - prefs.setBool(settingKey, settingValue); + await prefs.setBool(settingKey, settingValue); } else { // setting is an enum value - prefs.setInt(settingKey, settingValue.index); + await prefs.setInt(settingKey, settingValue.index); } } } diff --git a/mobile/lib/src/presentation/pages/settings/settings_page.dart b/mobile/lib/src/presentation/pages/settings/settings_page.dart index ccaf9fa7..31715762 100644 --- a/mobile/lib/src/presentation/pages/settings/settings_page.dart +++ b/mobile/lib/src/presentation/pages/settings/settings_page.dart @@ -46,7 +46,7 @@ class _SettingsPageState extends State { leading: Icon(Icons.face), trailing: SettingsPopupMenuButton( savedSetting: state.settings[SEXKEY], - settingEnum: Sex, + settingOptions: Sex.values, ), ), SettingsTile( @@ -55,7 +55,7 @@ class _SettingsPageState extends State { leading: Icon(Icons.memory), trailing: SettingsPopupMenuButton( savedSetting: state.settings[BOARDKEY], - settingEnum: AcquisitionBoard, + settingOptions: AcquisitionBoard.values, ), ), ], @@ -89,11 +89,11 @@ class SettingsPopupMenuButton extends StatelessWidget { SettingsPopupMenuButton({ Key key, @required this.savedSetting, - @required this.settingEnum, + @required this.settingOptions, }) : super(key: key); final dynamic savedSetting; - final dynamic settingEnum; + final List settingOptions; final TextStyle activeStyle = TextStyle(fontWeight: FontWeight.bold); final TextStyle defaultStyle = TextStyle(); @@ -113,15 +113,16 @@ class SettingsPopupMenuButton extends StatelessWidget { ), onSelected: (savedSetting) => BlocProvider.of(context) .setSetting(savedSetting.toString().split('.').first, savedSetting), - itemBuilder: (BuildContext context) => _buildPopupItemList(settingEnum), + itemBuilder: (BuildContext context) => + _buildPopupItemList(settingOptions), ); } - List> _buildPopupItemList(dynamic settingEnum) { + List _buildPopupItemList(List values) { return [ - for (var setting in settingEnum.values - .sublist(1)) // Only starting at 1 cause 0 is 'Not Set' - PopupMenuItem( + for (var setting + in values.sublist(1)) // Only starting at 1 cause 0 is 'Not Set' + PopupMenuItem( value: setting, child: Text(EnumToString.convertToString(setting, camelCase: true), style: savedSetting == setting ? activeStyle : defaultStyle), From b24beefd24ad916046dd7622e8fc17e9ca6d6aa8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mathieu=20B=C3=A9langer?= Date: Thu, 12 Nov 2020 10:09:05 -0500 Subject: [PATCH 19/34] Removed obsolete Acquisition board setting --- mobile/lib/src/domain/settings/acquisition_board.dart | 1 - mobile/lib/src/domain/settings/settings.dart | 1 - .../settings_repository/settings_repository.dart | 2 -- .../src/presentation/pages/settings/settings_page.dart | 9 --------- 4 files changed, 13 deletions(-) delete mode 100644 mobile/lib/src/domain/settings/acquisition_board.dart diff --git a/mobile/lib/src/domain/settings/acquisition_board.dart b/mobile/lib/src/domain/settings/acquisition_board.dart deleted file mode 100644 index 396b6440..00000000 --- a/mobile/lib/src/domain/settings/acquisition_board.dart +++ /dev/null @@ -1 +0,0 @@ -enum AcquisitionBoard { NotSet, Cython, Ganglion } diff --git a/mobile/lib/src/domain/settings/settings.dart b/mobile/lib/src/domain/settings/settings.dart index 4d339f29..0252ec44 100644 --- a/mobile/lib/src/domain/settings/settings.dart +++ b/mobile/lib/src/domain/settings/settings.dart @@ -1,2 +1 @@ -export 'acquisition_board.dart'; export 'sex.dart'; diff --git a/mobile/lib/src/infrastructure/settings_repository/settings_repository.dart b/mobile/lib/src/infrastructure/settings_repository/settings_repository.dart index 1be4aa66..835cea17 100644 --- a/mobile/lib/src/infrastructure/settings_repository/settings_repository.dart +++ b/mobile/lib/src/infrastructure/settings_repository/settings_repository.dart @@ -13,8 +13,6 @@ class SettingsRepository extends ISettingsRepository { prefs = (await SharedPreferences.getInstance()); return { AGEKEY: prefs.getInt(AGEKEY), - BOARDKEY: AcquisitionBoard - .values[(prefs.getInt(BOARDKEY)) ?? AcquisitionBoard.NotSet.index], SEXKEY: Sex.values[(prefs.getInt(SEXKEY)) ?? Sex.NotSet.index], }; } diff --git a/mobile/lib/src/presentation/pages/settings/settings_page.dart b/mobile/lib/src/presentation/pages/settings/settings_page.dart index 31715762..76f35270 100644 --- a/mobile/lib/src/presentation/pages/settings/settings_page.dart +++ b/mobile/lib/src/presentation/pages/settings/settings_page.dart @@ -49,15 +49,6 @@ class _SettingsPageState extends State { settingOptions: Sex.values, ), ), - SettingsTile( - title: 'Acquisition Board', - subtitle: 'Your OpenBCI board', - leading: Icon(Icons.memory), - trailing: SettingsPopupMenuButton( - savedSetting: state.settings[BOARDKEY], - settingOptions: AcquisitionBoard.values, - ), - ), ], ), ], From a5bd02be91880c4947a76cb49a9463c2f2cb5060 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mathieu=20B=C3=A9langer?= Date: Thu, 12 Nov 2020 14:47:22 -0500 Subject: [PATCH 20/34] Added server url setting option --- mobile/lib/src/common/constants.dart | 2 +- .../settings_repository.dart | 3 + .../pages/settings/settings_page.dart | 79 ++++++++++++++----- 3 files changed, 64 insertions(+), 20 deletions(-) diff --git a/mobile/lib/src/common/constants.dart b/mobile/lib/src/common/constants.dart index 56d60109..19389db9 100644 --- a/mobile/lib/src/common/constants.dart +++ b/mobile/lib/src/common/constants.dart @@ -1,3 +1,3 @@ const String AGEKEY = 'Age'; -const String BOARDKEY = 'AcquisitionBoard'; +const String SERVERADRESSKEY = 'ServerAdress'; const String SEXKEY = 'Sex'; diff --git a/mobile/lib/src/infrastructure/settings_repository/settings_repository.dart b/mobile/lib/src/infrastructure/settings_repository/settings_repository.dart index 835cea17..44c14ef9 100644 --- a/mobile/lib/src/infrastructure/settings_repository/settings_repository.dart +++ b/mobile/lib/src/infrastructure/settings_repository/settings_repository.dart @@ -13,6 +13,7 @@ class SettingsRepository extends ISettingsRepository { prefs = (await SharedPreferences.getInstance()); return { AGEKEY: prefs.getInt(AGEKEY), + SERVERADRESSKEY: prefs.getString(SERVERADRESSKEY), SEXKEY: Sex.values[(prefs.getInt(SEXKEY)) ?? Sex.NotSet.index], }; } @@ -25,6 +26,8 @@ class SettingsRepository extends ISettingsRepository { await prefs.setDouble(settingKey, settingValue); } else if (settingValue is bool) { await prefs.setBool(settingKey, settingValue); + } else if (settingValue is String) { + await prefs.setString(settingKey, settingValue); } else { // setting is an enum value await prefs.setInt(settingKey, settingValue.index); diff --git a/mobile/lib/src/presentation/pages/settings/settings_page.dart b/mobile/lib/src/presentation/pages/settings/settings_page.dart index 76f35270..ffd1ef02 100644 --- a/mobile/lib/src/presentation/pages/settings/settings_page.dart +++ b/mobile/lib/src/presentation/pages/settings/settings_page.dart @@ -30,25 +30,16 @@ class _SettingsPageState extends State { SettingsSection( title: 'Personnal informations', tiles: [ - SettingsTile( - title: 'Age', - subtitle: 'In years', - leading: Icon(Icons.cake), - trailing: TextButton( - child: Text(state.settings[AGEKEY] == null - ? 'Not Set' - : state.settings[AGEKEY].toString()), - onPressed: () => _showDatePicker(context)), - ), - SettingsTile( - title: 'Sex', - subtitle: 'Your biological sex', - leading: Icon(Icons.face), - trailing: SettingsPopupMenuButton( - savedSetting: state.settings[SEXKEY], - settingOptions: Sex.values, - ), - ), + _buildDatePickerSettingTile( + AGEKEY, 'In years', Icons.cake, context, state), + _buildPopupListSettingTile(SEXKEY, Sex.values, + 'Your biological sex', Icons.face, state), + _buildOpenTextSettingTile( + SERVERADRESSKEY, + 'The url for classification', + Icons.dns, + context, + state), ], ), ], @@ -60,6 +51,56 @@ class _SettingsPageState extends State { } } +SettingsTile _buildDatePickerSettingTile(String title, String substitle, + IconData icon, BuildContext context, SettingsState state) { + return SettingsTile( + title: AGEKEY, + subtitle: 'In years', + leading: Icon(Icons.cake), + trailing: TextButton( + child: Text( + (state as SettingsLoadSuccess).settings[AGEKEY] == null + ? 'Not Set' + : (state as SettingsLoadSuccess).settings[AGEKEY].toString(), + ), + onPressed: () => _showDatePicker(context)), + ); +} + +SettingsTile _buildPopupListSettingTile( + String settingKey, + dynamic settingOptions, + String substitle, + IconData icon, + SettingsState state) { + return SettingsTile( + title: settingKey, + subtitle: substitle, + leading: Icon(icon), + trailing: SettingsPopupMenuButton( + savedSetting: (state as SettingsLoadSuccess).settings[settingKey], + settingOptions: settingOptions), + ); +} + +SettingsTile _buildOpenTextSettingTile(String settingKey, String subtitle, + IconData icon, BuildContext context, SettingsState state) { + return SettingsTile( + title: settingKey, + subtitle: subtitle, + leading: Icon(icon), + trailing: Container( + width: 100, + child: TextField( + controller: TextEditingController() + ..text = (state as SettingsLoadSuccess).settings[settingKey], + onSubmitted: (newText) => BlocProvider.of(context) + .setSetting(settingKey, newText), + ), + ), + ); +} + void _showDatePicker(BuildContext context) async { final datePicked = await showDatePicker( context: context, From abf70be73c8f5c04c5bfc9c2fc2838b9019a6c9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mathieu=20B=C3=A9langer?= Date: Thu, 12 Nov 2020 22:24:33 -0500 Subject: [PATCH 21/34] Infrastructure getter gets only 1 setting at a time --- .../src/application/settings/settings_cubit.dart | 9 ++++++++- mobile/lib/src/common/constants.dart | 6 +++--- .../src/domain/settings/i_settings_repository.dart | 2 +- .../settings_repository/settings_repository.dart | 10 ++-------- mobile/lib/src/locator.dart | 3 +-- .../presentation/navigation/navdrawer_widget.dart | 2 +- .../presentation/pages/settings/settings_page.dart | 14 +++++++------- .../sleep_history_page/sleep_history_page.dart | 1 - 8 files changed, 23 insertions(+), 24 deletions(-) diff --git a/mobile/lib/src/application/settings/settings_cubit.dart b/mobile/lib/src/application/settings/settings_cubit.dart index 6e6dabe2..f84ca5dd 100644 --- a/mobile/lib/src/application/settings/settings_cubit.dart +++ b/mobile/lib/src/application/settings/settings_cubit.dart @@ -1,6 +1,8 @@ import 'package:bloc/bloc.dart'; import 'package:equatable/equatable.dart'; +import 'package:polydodo/src/common/constants.dart'; import 'package:polydodo/src/domain/settings/i_settings_repository.dart'; +import 'package:polydodo/src/domain/settings/settings.dart'; part 'settings_state.dart'; @@ -12,7 +14,12 @@ class SettingsCubit extends Cubit { } Future getSettings() async { - var settings = await _repository.getSettings(); + var settings = { + AGE_KEY: await _repository.getSetting(AGE_KEY), + SERVER_URL_KEY: await _repository.getSetting(SERVER_URL_KEY) ?? 'Not Set', + SEX_KEY: + Sex.values[await _repository.getSetting(SEX_KEY)] ?? Sex.NotSet.index, + }; emit(SettingsLoadSuccess(settings)); } diff --git a/mobile/lib/src/common/constants.dart b/mobile/lib/src/common/constants.dart index 19389db9..3fa9a15a 100644 --- a/mobile/lib/src/common/constants.dart +++ b/mobile/lib/src/common/constants.dart @@ -1,3 +1,3 @@ -const String AGEKEY = 'Age'; -const String SERVERADRESSKEY = 'ServerAdress'; -const String SEXKEY = 'Sex'; +const String AGE_KEY = 'Age'; +const String SERVER_URL_KEY = 'ServerAdress'; +const String SEX_KEY = 'Sex'; diff --git a/mobile/lib/src/domain/settings/i_settings_repository.dart b/mobile/lib/src/domain/settings/i_settings_repository.dart index d6c57fd9..acac4214 100644 --- a/mobile/lib/src/domain/settings/i_settings_repository.dart +++ b/mobile/lib/src/domain/settings/i_settings_repository.dart @@ -1,5 +1,5 @@ abstract class ISettingsRepository { - Future> getSettings(); + Future getSetting(String key); Future setSetting(String settingKey, dynamic settingValue); } diff --git a/mobile/lib/src/infrastructure/settings_repository/settings_repository.dart b/mobile/lib/src/infrastructure/settings_repository/settings_repository.dart index 44c14ef9..f8a41d80 100644 --- a/mobile/lib/src/infrastructure/settings_repository/settings_repository.dart +++ b/mobile/lib/src/infrastructure/settings_repository/settings_repository.dart @@ -1,6 +1,4 @@ -import 'package:polydodo/src/common/constants.dart'; import 'package:polydodo/src/domain/settings/i_settings_repository.dart'; -import 'package:polydodo/src/domain/settings/settings.dart'; import 'package:shared_preferences/shared_preferences.dart'; class SettingsRepository extends ISettingsRepository { @@ -9,13 +7,9 @@ class SettingsRepository extends ISettingsRepository { SettingsRepository(); @override - Future> getSettings() async { + Future getSetting(String key) async { prefs = (await SharedPreferences.getInstance()); - return { - AGEKEY: prefs.getInt(AGEKEY), - SERVERADRESSKEY: prefs.getString(SERVERADRESSKEY), - SEXKEY: Sex.values[(prefs.getInt(SEXKEY)) ?? Sex.NotSet.index], - }; + return prefs.get(key); } @override diff --git a/mobile/lib/src/locator.dart b/mobile/lib/src/locator.dart index 78eec247..1863db68 100644 --- a/mobile/lib/src/locator.dart +++ b/mobile/lib/src/locator.dart @@ -1,7 +1,7 @@ import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:get_it/get_it.dart'; import 'package:polydodo/src/application/device/device_selector_cubit.dart'; -import 'package:polydodo/src/application/eeg_data/data_cubit.dart';import 'package:polydodo/src/application/settings/settings_cubit.dart'; +import 'package:polydodo/src/application/eeg_data/data_cubit.dart'; import 'package:polydodo/src/application/settings/settings_cubit.dart'; import 'package:polydodo/src/application/sleep_sequence_history/sleep_sequence_history_cubit.dart'; import 'package:polydodo/src/application/sleep_sequence_stats/sleep_sequence_stats_cubit.dart'; @@ -9,7 +9,6 @@ import 'package:polydodo/src/domain/acquisition_device/i_acquisition_device_repo import 'package:polydodo/src/domain/eeg_data/i_eeg_data_repository.dart'; import 'package:polydodo/src/domain/sleep_sequence/i_sleep_sequence_repository.dart'; import 'package:polydodo/src/domain/settings/i_settings_repository.dart'; -import 'package:polydodo/src/domain/sleep_history/i_sleep_history_repository.dart'; import 'package:polydodo/src/infrastructure/connection_repositories/acquisition_device_repository.dart'; import 'package:polydodo/src/infrastructure/connection_repositories/eeg_data_repository.dart'; import 'package:polydodo/src/infrastructure/settings_repository/settings_repository.dart'; diff --git a/mobile/lib/src/presentation/navigation/navdrawer_widget.dart b/mobile/lib/src/presentation/navigation/navdrawer_widget.dart index 7f487ed5..bbcbb2c1 100644 --- a/mobile/lib/src/presentation/navigation/navdrawer_widget.dart +++ b/mobile/lib/src/presentation/navigation/navdrawer_widget.dart @@ -45,7 +45,7 @@ class NavDrawer extends StatelessWidget { icon: Icons.analytics, text: 'History', route: Routes.sleepHistoryPage, - tab: NavdrawerTab.SleepHistory, + tab: NavdrawerTab.History, context: context, ), _createDrawerItem( diff --git a/mobile/lib/src/presentation/pages/settings/settings_page.dart b/mobile/lib/src/presentation/pages/settings/settings_page.dart index ffd1ef02..a3fec6ad 100644 --- a/mobile/lib/src/presentation/pages/settings/settings_page.dart +++ b/mobile/lib/src/presentation/pages/settings/settings_page.dart @@ -31,11 +31,11 @@ class _SettingsPageState extends State { title: 'Personnal informations', tiles: [ _buildDatePickerSettingTile( - AGEKEY, 'In years', Icons.cake, context, state), - _buildPopupListSettingTile(SEXKEY, Sex.values, + AGE_KEY, 'In years', Icons.cake, context, state), + _buildPopupListSettingTile(SEX_KEY, Sex.values, 'Your biological sex', Icons.face, state), _buildOpenTextSettingTile( - SERVERADRESSKEY, + SERVER_URL_KEY, 'The url for classification', Icons.dns, context, @@ -54,14 +54,14 @@ class _SettingsPageState extends State { SettingsTile _buildDatePickerSettingTile(String title, String substitle, IconData icon, BuildContext context, SettingsState state) { return SettingsTile( - title: AGEKEY, + title: AGE_KEY, subtitle: 'In years', leading: Icon(Icons.cake), trailing: TextButton( child: Text( - (state as SettingsLoadSuccess).settings[AGEKEY] == null + (state as SettingsLoadSuccess).settings[AGE_KEY] == null ? 'Not Set' - : (state as SettingsLoadSuccess).settings[AGEKEY].toString(), + : (state as SettingsLoadSuccess).settings[AGE_KEY].toString(), ), onPressed: () => _showDatePicker(context)), ); @@ -113,7 +113,7 @@ void _showDatePicker(BuildContext context) async { if (datePicked != null && datePicked != DateTime.now()) { await BlocProvider.of(context).setSetting( - AGEKEY, DateTime.now().difference(datePicked).inDays ~/ 365); + AGE_KEY, DateTime.now().difference(datePicked).inDays ~/ 365); } } diff --git a/mobile/lib/src/presentation/pages/sleep_history_page/sleep_history_page.dart b/mobile/lib/src/presentation/pages/sleep_history_page/sleep_history_page.dart index 278fbb25..9e9012e3 100644 --- a/mobile/lib/src/presentation/pages/sleep_history_page/sleep_history_page.dart +++ b/mobile/lib/src/presentation/pages/sleep_history_page/sleep_history_page.dart @@ -2,7 +2,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:polydodo/src/application/sleep_sequence_history/sleep_sequence_history_cubit.dart'; import 'package:polydodo/src/application/sleep_sequence_history/sleep_sequence_history_state.dart'; -import 'package:polydodo/src/presentation/navigation/navdrawer_tabs.dart'; import 'package:polydodo/src/presentation/navigation/navdrawer_widget.dart'; import 'package:polydodo/src/presentation/pages/sleep_history_page/app_bar.dart'; import 'package:polydodo/src/presentation/pages/sleep_history_page/sleep_history_list.dart'; From 35739d910947fd1d10346967865d665f17f53701 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mathieu=20B=C3=A9langer?= Date: Thu, 12 Nov 2020 23:47:15 -0500 Subject: [PATCH 22/34] Renamed interface methods --- .../application/settings/settings_cubit.dart | 8 ++++---- .../settings/i_settings_repository.dart | 4 ++-- .../settings_repository.dart | 20 +++++++++---------- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/mobile/lib/src/application/settings/settings_cubit.dart b/mobile/lib/src/application/settings/settings_cubit.dart index f84ca5dd..e901f53c 100644 --- a/mobile/lib/src/application/settings/settings_cubit.dart +++ b/mobile/lib/src/application/settings/settings_cubit.dart @@ -15,17 +15,17 @@ class SettingsCubit extends Cubit { Future getSettings() async { var settings = { - AGE_KEY: await _repository.getSetting(AGE_KEY), - SERVER_URL_KEY: await _repository.getSetting(SERVER_URL_KEY) ?? 'Not Set', + AGE_KEY: await _repository.read(AGE_KEY), + SERVER_URL_KEY: await _repository.read(SERVER_URL_KEY) ?? 'Not Set', SEX_KEY: - Sex.values[await _repository.getSetting(SEX_KEY)] ?? Sex.NotSet.index, + Sex.values[await _repository.read(SEX_KEY)] ?? Sex.NotSet.index, }; emit(SettingsLoadSuccess(settings)); } Future setSetting(String settingKey, dynamic settingValue) async { if (state is SettingsLoadSuccess) { - await _repository.setSetting(settingKey, settingValue); + await _repository.store(settingKey, settingValue); emit( SettingsLoadSuccess( (state as SettingsLoadSuccess).copyWith(settingKey, settingValue)), diff --git a/mobile/lib/src/domain/settings/i_settings_repository.dart b/mobile/lib/src/domain/settings/i_settings_repository.dart index acac4214..a9e25e4a 100644 --- a/mobile/lib/src/domain/settings/i_settings_repository.dart +++ b/mobile/lib/src/domain/settings/i_settings_repository.dart @@ -1,5 +1,5 @@ abstract class ISettingsRepository { - Future getSetting(String key); + Future read(String key); - Future setSetting(String settingKey, dynamic settingValue); + Future store(String settingKey, dynamic settingValue); } diff --git a/mobile/lib/src/infrastructure/settings_repository/settings_repository.dart b/mobile/lib/src/infrastructure/settings_repository/settings_repository.dart index f8a41d80..e7887c3f 100644 --- a/mobile/lib/src/infrastructure/settings_repository/settings_repository.dart +++ b/mobile/lib/src/infrastructure/settings_repository/settings_repository.dart @@ -2,29 +2,29 @@ import 'package:polydodo/src/domain/settings/i_settings_repository.dart'; import 'package:shared_preferences/shared_preferences.dart'; class SettingsRepository extends ISettingsRepository { - SharedPreferences prefs; + SharedPreferences _prefs; SettingsRepository(); @override - Future getSetting(String key) async { - prefs = (await SharedPreferences.getInstance()); - return prefs.get(key); + Future read(String key) async { + _prefs = (await SharedPreferences.getInstance()); + return _prefs.get(key); } @override - Future setSetting(String settingKey, dynamic settingValue) async { + Future store(String settingKey, dynamic settingValue) async { if (settingValue is int) { - await prefs.setInt(settingKey, settingValue); + await _prefs.setInt(settingKey, settingValue); } else if (settingValue is double) { - await prefs.setDouble(settingKey, settingValue); + await _prefs.setDouble(settingKey, settingValue); } else if (settingValue is bool) { - await prefs.setBool(settingKey, settingValue); + await _prefs.setBool(settingKey, settingValue); } else if (settingValue is String) { - await prefs.setString(settingKey, settingValue); + await _prefs.setString(settingKey, settingValue); } else { // setting is an enum value - await prefs.setInt(settingKey, settingValue.index); + await _prefs.setInt(settingKey, settingValue.index); } } } From 8b200c728e7051adfc751fbcae1e9e3f5d5e72aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mathieu=20B=C3=A9langer?= Date: Thu, 12 Nov 2020 23:51:01 -0500 Subject: [PATCH 23/34] more genericity --- .../lib/src/presentation/pages/settings/settings_page.dart | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mobile/lib/src/presentation/pages/settings/settings_page.dart b/mobile/lib/src/presentation/pages/settings/settings_page.dart index a3fec6ad..5a0a8317 100644 --- a/mobile/lib/src/presentation/pages/settings/settings_page.dart +++ b/mobile/lib/src/presentation/pages/settings/settings_page.dart @@ -54,14 +54,14 @@ class _SettingsPageState extends State { SettingsTile _buildDatePickerSettingTile(String title, String substitle, IconData icon, BuildContext context, SettingsState state) { return SettingsTile( - title: AGE_KEY, + title: title, subtitle: 'In years', leading: Icon(Icons.cake), trailing: TextButton( child: Text( - (state as SettingsLoadSuccess).settings[AGE_KEY] == null + (state as SettingsLoadSuccess).settings[title] == null ? 'Not Set' - : (state as SettingsLoadSuccess).settings[AGE_KEY].toString(), + : (state as SettingsLoadSuccess).settings[title].toString(), ), onPressed: () => _showDatePicker(context)), ); From 24c461da2f89f05df497fb02a50d4c7e2c65d718 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mathieu=20B=C3=A9langer?= Date: Sat, 21 Nov 2020 03:34:00 -0500 Subject: [PATCH 24/34] Added URL server setting field, added infrastructure layer --- .../application/settings/settings_cubit.dart | 29 ++++--- mobile/lib/src/common/constants.dart | 6 +- .../settings/i_settings_repository.dart | 6 +- mobile/lib/src/domain/settings/settings.dart | 21 +++++ .../settings_repository.dart | 13 ++- mobile/lib/src/locator.dart | 6 +- .../pages/settings/settings_page.dart | 80 +++++++++---------- 7 files changed, 96 insertions(+), 65 deletions(-) diff --git a/mobile/lib/src/application/settings/settings_cubit.dart b/mobile/lib/src/application/settings/settings_cubit.dart index e901f53c..78e897a7 100644 --- a/mobile/lib/src/application/settings/settings_cubit.dart +++ b/mobile/lib/src/application/settings/settings_cubit.dart @@ -14,22 +14,25 @@ class SettingsCubit extends Cubit { } Future getSettings() async { - var settings = { - AGE_KEY: await _repository.read(AGE_KEY), - SERVER_URL_KEY: await _repository.read(SERVER_URL_KEY) ?? 'Not Set', - SEX_KEY: - Sex.values[await _repository.read(SEX_KEY)] ?? Sex.NotSet.index, - }; - emit(SettingsLoadSuccess(settings)); + await emit(SettingsLoadSuccess(await _repository.getSettings())); } - Future setSetting(String settingKey, dynamic settingValue) async { + Future setSetting(String settingKey, dynamic setting) async { if (state is SettingsLoadSuccess) { - await _repository.store(settingKey, settingValue); - emit( - SettingsLoadSuccess( - (state as SettingsLoadSuccess).copyWith(settingKey, settingValue)), - ); + var settings = (state as SettingsLoadSuccess).settings; + switch (settingKey) { + case AGEKEY: + settings = settings.copyWith(newAge: setting); + break; + case SERVERADRESSKEY: + settings = settings.copyWith(newServerAdress: setting); + break; + case SEXKEY: + settings = settings.copyWith(newSex: setting); + break; + } + emit(SettingsLoadSuccess(settings)); + await _repository.setSetting(settingKey, setting); } } } diff --git a/mobile/lib/src/common/constants.dart b/mobile/lib/src/common/constants.dart index 3fa9a15a..19389db9 100644 --- a/mobile/lib/src/common/constants.dart +++ b/mobile/lib/src/common/constants.dart @@ -1,3 +1,3 @@ -const String AGE_KEY = 'Age'; -const String SERVER_URL_KEY = 'ServerAdress'; -const String SEX_KEY = 'Sex'; +const String AGEKEY = 'Age'; +const String SERVERADRESSKEY = 'ServerAdress'; +const String SEXKEY = 'Sex'; diff --git a/mobile/lib/src/domain/settings/i_settings_repository.dart b/mobile/lib/src/domain/settings/i_settings_repository.dart index a9e25e4a..9fec8d36 100644 --- a/mobile/lib/src/domain/settings/i_settings_repository.dart +++ b/mobile/lib/src/domain/settings/i_settings_repository.dart @@ -1,5 +1,7 @@ +import 'package:polydodo/src/domain/settings/settings.dart'; + abstract class ISettingsRepository { - Future read(String key); + Future getSettings(); - Future store(String settingKey, dynamic settingValue); + void setSetting(String settingKey, dynamic settingValue); } diff --git a/mobile/lib/src/domain/settings/settings.dart b/mobile/lib/src/domain/settings/settings.dart index 0252ec44..02768fee 100644 --- a/mobile/lib/src/domain/settings/settings.dart +++ b/mobile/lib/src/domain/settings/settings.dart @@ -1 +1,22 @@ export 'sex.dart'; + +part 'sex.dart'; +part 'acquisition_board.dart'; + +class Settings extends Equatable { + final int age; + final String serverAdress; + final Sex sex; + + Settings({this.age, this.serverAdress, this.sex}); + + @override + List get props => [age, serverAdress, sex]; + + Settings copyWith({int newAge, String newServerAdress, Sex newSex}) { + return Settings( + age: newAge ?? age, + serverAdress: newServerAdress ?? serverAdress, + sex: newSex ?? sex); + } +} diff --git a/mobile/lib/src/infrastructure/settings_repository/settings_repository.dart b/mobile/lib/src/infrastructure/settings_repository/settings_repository.dart index e7887c3f..90c130f4 100644 --- a/mobile/lib/src/infrastructure/settings_repository/settings_repository.dart +++ b/mobile/lib/src/infrastructure/settings_repository/settings_repository.dart @@ -1,4 +1,6 @@ +import 'package:polydodo/src/common/constants.dart'; import 'package:polydodo/src/domain/settings/i_settings_repository.dart'; +import 'package:polydodo/src/domain/settings/settings.dart'; import 'package:shared_preferences/shared_preferences.dart'; class SettingsRepository extends ISettingsRepository { @@ -7,13 +9,18 @@ class SettingsRepository extends ISettingsRepository { SettingsRepository(); @override - Future read(String key) async { + Future getSettings() async { _prefs = (await SharedPreferences.getInstance()); - return _prefs.get(key); + + return Settings( + age: _prefs.getInt(AGEKEY), + serverAdress: _prefs.getString(SERVERADRESSKEY) ?? 'Not Set', + sex: Sex.values[(_prefs.getInt(SEXKEY)) ?? Sex.NotSet.index], + ); } @override - Future store(String settingKey, dynamic settingValue) async { + Future setSetting(String settingKey, dynamic settingValue) async { if (settingValue is int) { await _prefs.setInt(settingKey, settingValue); } else if (settingValue is double) { diff --git a/mobile/lib/src/locator.dart b/mobile/lib/src/locator.dart index 1863db68..5de7b83c 100644 --- a/mobile/lib/src/locator.dart +++ b/mobile/lib/src/locator.dart @@ -7,13 +7,15 @@ import 'package:polydodo/src/application/sleep_sequence_history/sleep_sequence_h import 'package:polydodo/src/application/sleep_sequence_stats/sleep_sequence_stats_cubit.dart'; import 'package:polydodo/src/domain/acquisition_device/i_acquisition_device_repository.dart'; import 'package:polydodo/src/domain/eeg_data/i_eeg_data_repository.dart'; -import 'package:polydodo/src/domain/sleep_sequence/i_sleep_sequence_repository.dart'; import 'package:polydodo/src/domain/settings/i_settings_repository.dart'; +import 'package:polydodo/src/domain/sleep_history/i_sleep_history_repository.dart'; import 'package:polydodo/src/infrastructure/connection_repositories/acquisition_device_repository.dart'; import 'package:polydodo/src/infrastructure/connection_repositories/eeg_data_repository.dart'; import 'package:polydodo/src/infrastructure/settings_repository/settings_repository.dart'; import 'package:polydodo/src/infrastructure/sleep_history/sleep_history_repository.dart'; +import 'infrastructure/settings_repository/settings_repository.dart'; + /// Private GetIt instance as we want all DI to be performed here in this file final _serviceLocator = GetIt.asNewInstance(); @@ -22,7 +24,7 @@ void registerServices() { AcquisitionDeviceRepository()); _serviceLocator.registerSingleton(EEGDataRepository()); _serviceLocator - .registerSingleton(SleepHistoryRepository()); + .registerSingleton(SleepHistoryRepository()); _serviceLocator.registerSingleton(SettingsRepository()); } diff --git a/mobile/lib/src/presentation/pages/settings/settings_page.dart b/mobile/lib/src/presentation/pages/settings/settings_page.dart index 5a0a8317..83c9e390 100644 --- a/mobile/lib/src/presentation/pages/settings/settings_page.dart +++ b/mobile/lib/src/presentation/pages/settings/settings_page.dart @@ -31,11 +31,11 @@ class _SettingsPageState extends State { title: 'Personnal informations', tiles: [ _buildDatePickerSettingTile( - AGE_KEY, 'In years', Icons.cake, context, state), - _buildPopupListSettingTile(SEX_KEY, Sex.values, + AGEKEY, 'In years', Icons.cake, context, state), + _buildSexSettingTile(SEXKEY, Sex.values, 'Your biological sex', Icons.face, state), - _buildOpenTextSettingTile( - SERVER_URL_KEY, + _buildServerAdressSettingTile( + SERVERADRESSKEY, 'The url for classification', Icons.dns, context, @@ -51,39 +51,51 @@ class _SettingsPageState extends State { } } +SettingsTile _buildSexSettingTile(String settingKey, dynamic settingOptions, + String substitle, IconData icon, SettingsState state) { + return SettingsTile( + title: settingKey, + subtitle: substitle, + leading: Icon(icon), + trailing: SettingsPopupMenuButton( + savedSetting: (state as SettingsLoadSuccess).settings.sex, + settingOptions: settingOptions), + ); +} + SettingsTile _buildDatePickerSettingTile(String title, String substitle, IconData icon, BuildContext context, SettingsState state) { return SettingsTile( - title: title, + title: AGEKEY, subtitle: 'In years', leading: Icon(Icons.cake), trailing: TextButton( child: Text( - (state as SettingsLoadSuccess).settings[title] == null + (state as SettingsLoadSuccess).settings.age == null ? 'Not Set' - : (state as SettingsLoadSuccess).settings[title].toString(), + : (state as SettingsLoadSuccess).settings.age.toString(), ), onPressed: () => _showDatePicker(context)), ); } -SettingsTile _buildPopupListSettingTile( - String settingKey, - dynamic settingOptions, - String substitle, - IconData icon, - SettingsState state) { - return SettingsTile( - title: settingKey, - subtitle: substitle, - leading: Icon(icon), - trailing: SettingsPopupMenuButton( - savedSetting: (state as SettingsLoadSuccess).settings[settingKey], - settingOptions: settingOptions), - ); +void _showDatePicker(BuildContext context) async { + final datePicked = await showDatePicker( + context: context, + initialEntryMode: DatePickerEntryMode.calendar, + initialDatePickerMode: DatePickerMode.year, + initialDate: DateTime.now(), + firstDate: DateTime(1900), + lastDate: DateTime.now(), + helpText: 'Select birthdate'); + + if (datePicked != null && datePicked != DateTime.now()) { + await BlocProvider.of(context).setSetting( + AGE_KEY, DateTime.now().difference(datePicked).inDays ~/ 365); + } } -SettingsTile _buildOpenTextSettingTile(String settingKey, String subtitle, +SettingsTile _buildServerAdressSettingTile(String settingKey, String subtitle, IconData icon, BuildContext context, SettingsState state) { return SettingsTile( title: settingKey, @@ -93,7 +105,7 @@ SettingsTile _buildOpenTextSettingTile(String settingKey, String subtitle, width: 100, child: TextField( controller: TextEditingController() - ..text = (state as SettingsLoadSuccess).settings[settingKey], + ..text = (state as SettingsLoadSuccess).settings.serverAdress, onSubmitted: (newText) => BlocProvider.of(context) .setSetting(settingKey, newText), ), @@ -101,23 +113,7 @@ SettingsTile _buildOpenTextSettingTile(String settingKey, String subtitle, ); } -void _showDatePicker(BuildContext context) async { - final datePicked = await showDatePicker( - context: context, - initialEntryMode: DatePickerEntryMode.calendar, - initialDatePickerMode: DatePickerMode.year, - initialDate: DateTime.now(), - firstDate: DateTime(1900), - lastDate: DateTime.now(), - helpText: 'Select birthdate'); - - if (datePicked != null && datePicked != DateTime.now()) { - await BlocProvider.of(context).setSetting( - AGE_KEY, DateTime.now().difference(datePicked).inDays ~/ 365); - } -} - -class SettingsPopupMenuButton extends StatelessWidget { +class SettingsPopupMenuButton extends StatelessWidget { SettingsPopupMenuButton({ Key key, @required this.savedSetting, @@ -143,8 +139,8 @@ class SettingsPopupMenuButton extends StatelessWidget { MaterialStateProperty.all(Theme.of(context).colorScheme.primary), ), ), - onSelected: (savedSetting) => BlocProvider.of(context) - .setSetting(savedSetting.toString().split('.').first, savedSetting), + onSelected: (newSetting) => BlocProvider.of(context) + .setSetting(newSetting.toString().split('.').first, newSetting), itemBuilder: (BuildContext context) => _buildPopupItemList(settingOptions), ); From 2e75bb60467161d8f1fee068647a607043616363 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mathieu=20B=C3=A9langer?= Date: Sat, 21 Nov 2020 03:36:20 -0500 Subject: [PATCH 25/34] Renamed infrastructure getters & setters --- mobile/lib/src/application/settings/settings_cubit.dart | 4 ++-- mobile/lib/src/domain/settings/i_settings_repository.dart | 4 ++-- .../settings_repository/settings_repository.dart | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/mobile/lib/src/application/settings/settings_cubit.dart b/mobile/lib/src/application/settings/settings_cubit.dart index 78e897a7..9ad0de88 100644 --- a/mobile/lib/src/application/settings/settings_cubit.dart +++ b/mobile/lib/src/application/settings/settings_cubit.dart @@ -14,7 +14,7 @@ class SettingsCubit extends Cubit { } Future getSettings() async { - await emit(SettingsLoadSuccess(await _repository.getSettings())); + await emit(SettingsLoadSuccess(await _repository.load())); } Future setSetting(String settingKey, dynamic setting) async { @@ -32,7 +32,7 @@ class SettingsCubit extends Cubit { break; } emit(SettingsLoadSuccess(settings)); - await _repository.setSetting(settingKey, setting); + await _repository.store(settingKey, setting); } } } diff --git a/mobile/lib/src/domain/settings/i_settings_repository.dart b/mobile/lib/src/domain/settings/i_settings_repository.dart index 9fec8d36..52542f63 100644 --- a/mobile/lib/src/domain/settings/i_settings_repository.dart +++ b/mobile/lib/src/domain/settings/i_settings_repository.dart @@ -1,7 +1,7 @@ import 'package:polydodo/src/domain/settings/settings.dart'; abstract class ISettingsRepository { - Future getSettings(); + Future load(); - void setSetting(String settingKey, dynamic settingValue); + void store(String settingKey, dynamic settingValue); } diff --git a/mobile/lib/src/infrastructure/settings_repository/settings_repository.dart b/mobile/lib/src/infrastructure/settings_repository/settings_repository.dart index 90c130f4..d0cc458e 100644 --- a/mobile/lib/src/infrastructure/settings_repository/settings_repository.dart +++ b/mobile/lib/src/infrastructure/settings_repository/settings_repository.dart @@ -9,7 +9,7 @@ class SettingsRepository extends ISettingsRepository { SettingsRepository(); @override - Future getSettings() async { + Future store() async { _prefs = (await SharedPreferences.getInstance()); return Settings( @@ -20,7 +20,7 @@ class SettingsRepository extends ISettingsRepository { } @override - Future setSetting(String settingKey, dynamic settingValue) async { + Future load(String settingKey, dynamic settingValue) async { if (settingValue is int) { await _prefs.setInt(settingKey, settingValue); } else if (settingValue is double) { From 3f665f949f230e7c29d11d40ef9721fcd23547ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mathieu=20B=C3=A9langer?= Date: Sat, 21 Nov 2020 03:58:18 -0500 Subject: [PATCH 26/34] Fixed rebase conflicts --- .../application/settings/settings_cubit.dart | 14 +++++++------- .../application/settings/settings_state.dart | 8 +------- mobile/lib/src/common/constants.dart | 6 +++--- .../domain/settings/i_settings_repository.dart | 4 ++-- mobile/lib/src/domain/settings/settings.dart | 17 ++++++++--------- mobile/lib/src/domain/settings/sex.dart | 2 ++ .../settings_repository.dart | 10 +++++----- mobile/lib/src/locator.dart | 5 +---- .../pages/settings/settings_page.dart | 10 +++++----- 9 files changed, 34 insertions(+), 42 deletions(-) diff --git a/mobile/lib/src/application/settings/settings_cubit.dart b/mobile/lib/src/application/settings/settings_cubit.dart index 9ad0de88..26b00b64 100644 --- a/mobile/lib/src/application/settings/settings_cubit.dart +++ b/mobile/lib/src/application/settings/settings_cubit.dart @@ -14,21 +14,21 @@ class SettingsCubit extends Cubit { } Future getSettings() async { - await emit(SettingsLoadSuccess(await _repository.load())); + await emit(SettingsLoadSuccess(await _repository.read())); } Future setSetting(String settingKey, dynamic setting) async { if (state is SettingsLoadSuccess) { var settings = (state as SettingsLoadSuccess).settings; switch (settingKey) { - case AGEKEY: - settings = settings.copyWith(newAge: setting); + case AGE_KEY: + settings = settings.copyWith(age: setting); break; - case SERVERADRESSKEY: - settings = settings.copyWith(newServerAdress: setting); + case SERVER_ADRESS_KEY: + settings = settings.copyWith(serverAddress: setting); break; - case SEXKEY: - settings = settings.copyWith(newSex: setting); + case SEX_KEY: + settings = settings.copyWith(sex: setting); break; } emit(SettingsLoadSuccess(settings)); diff --git a/mobile/lib/src/application/settings/settings_state.dart b/mobile/lib/src/application/settings/settings_state.dart index c5733a27..9188a13a 100644 --- a/mobile/lib/src/application/settings/settings_state.dart +++ b/mobile/lib/src/application/settings/settings_state.dart @@ -10,7 +10,7 @@ abstract class SettingsState extends Equatable { class SettingsLoadInProgress extends SettingsState {} class SettingsLoadSuccess extends SettingsState { - final Map settings; + final Settings settings; const SettingsLoadSuccess(this.settings); @@ -19,12 +19,6 @@ class SettingsLoadSuccess extends SettingsState { @override String toString() => 'SettingsLoadSuccess { settings: $settings }'; - - Map copyWith(String settingKey, dynamic settingValue) { - var newSettings = Map.from(settings); - newSettings[settingKey] = settingValue; - return newSettings; - } } class SettingsLoadFailure extends SettingsState {} diff --git a/mobile/lib/src/common/constants.dart b/mobile/lib/src/common/constants.dart index 19389db9..f00c57dc 100644 --- a/mobile/lib/src/common/constants.dart +++ b/mobile/lib/src/common/constants.dart @@ -1,3 +1,3 @@ -const String AGEKEY = 'Age'; -const String SERVERADRESSKEY = 'ServerAdress'; -const String SEXKEY = 'Sex'; +const String AGE_KEY = 'Age'; +const String SERVER_ADRESS_KEY = 'ServerAdress'; +const String SEX_KEY = 'Sex'; diff --git a/mobile/lib/src/domain/settings/i_settings_repository.dart b/mobile/lib/src/domain/settings/i_settings_repository.dart index 52542f63..ebd1939a 100644 --- a/mobile/lib/src/domain/settings/i_settings_repository.dart +++ b/mobile/lib/src/domain/settings/i_settings_repository.dart @@ -1,7 +1,7 @@ import 'package:polydodo/src/domain/settings/settings.dart'; abstract class ISettingsRepository { - Future load(); + Future read(); - void store(String settingKey, dynamic settingValue); + Future store(String settingKey, dynamic settingValue); } diff --git a/mobile/lib/src/domain/settings/settings.dart b/mobile/lib/src/domain/settings/settings.dart index 02768fee..d5331cf5 100644 --- a/mobile/lib/src/domain/settings/settings.dart +++ b/mobile/lib/src/domain/settings/settings.dart @@ -1,22 +1,21 @@ -export 'sex.dart'; +import 'package:equatable/equatable.dart'; part 'sex.dart'; -part 'acquisition_board.dart'; class Settings extends Equatable { final int age; - final String serverAdress; + final String serverAddress; final Sex sex; - Settings({this.age, this.serverAdress, this.sex}); + Settings({this.age, this.serverAddress, this.sex}); @override - List get props => [age, serverAdress, sex]; + List get props => [age, serverAddress, sex]; - Settings copyWith({int newAge, String newServerAdress, Sex newSex}) { + Settings copyWith({int age, String serverAddress, Sex sex}) { return Settings( - age: newAge ?? age, - serverAdress: newServerAdress ?? serverAdress, - sex: newSex ?? sex); + age: age ?? this.age, + serverAddress: serverAddress ?? this.serverAddress, + sex: sex ?? this.sex); } } diff --git a/mobile/lib/src/domain/settings/sex.dart b/mobile/lib/src/domain/settings/sex.dart index 56541fe0..52a8b12d 100644 --- a/mobile/lib/src/domain/settings/sex.dart +++ b/mobile/lib/src/domain/settings/sex.dart @@ -1 +1,3 @@ +part of 'settings.dart'; + enum Sex { NotSet, Male, Female } diff --git a/mobile/lib/src/infrastructure/settings_repository/settings_repository.dart b/mobile/lib/src/infrastructure/settings_repository/settings_repository.dart index d0cc458e..5df55e52 100644 --- a/mobile/lib/src/infrastructure/settings_repository/settings_repository.dart +++ b/mobile/lib/src/infrastructure/settings_repository/settings_repository.dart @@ -9,18 +9,18 @@ class SettingsRepository extends ISettingsRepository { SettingsRepository(); @override - Future store() async { + Future read() async { _prefs = (await SharedPreferences.getInstance()); return Settings( - age: _prefs.getInt(AGEKEY), - serverAdress: _prefs.getString(SERVERADRESSKEY) ?? 'Not Set', - sex: Sex.values[(_prefs.getInt(SEXKEY)) ?? Sex.NotSet.index], + age: _prefs.getInt(AGE_KEY), + serverAddress: _prefs.getString(SERVER_ADRESS_KEY) ?? 'Not Set', + sex: Sex.values[(_prefs.getInt(SEX_KEY)) ?? Sex.NotSet.index], ); } @override - Future load(String settingKey, dynamic settingValue) async { + Future store(String settingKey, dynamic settingValue) async { if (settingValue is int) { await _prefs.setInt(settingKey, settingValue); } else if (settingValue is double) { diff --git a/mobile/lib/src/locator.dart b/mobile/lib/src/locator.dart index 5de7b83c..29185c97 100644 --- a/mobile/lib/src/locator.dart +++ b/mobile/lib/src/locator.dart @@ -8,11 +8,10 @@ import 'package:polydodo/src/application/sleep_sequence_stats/sleep_sequence_sta import 'package:polydodo/src/domain/acquisition_device/i_acquisition_device_repository.dart'; import 'package:polydodo/src/domain/eeg_data/i_eeg_data_repository.dart'; import 'package:polydodo/src/domain/settings/i_settings_repository.dart'; -import 'package:polydodo/src/domain/sleep_history/i_sleep_history_repository.dart'; +import 'package:polydodo/src/domain/sleep_sequence/i_sleep_sequence_repository.dart'; import 'package:polydodo/src/infrastructure/connection_repositories/acquisition_device_repository.dart'; import 'package:polydodo/src/infrastructure/connection_repositories/eeg_data_repository.dart'; import 'package:polydodo/src/infrastructure/settings_repository/settings_repository.dart'; -import 'package:polydodo/src/infrastructure/sleep_history/sleep_history_repository.dart'; import 'infrastructure/settings_repository/settings_repository.dart'; @@ -23,8 +22,6 @@ void registerServices() { _serviceLocator.registerSingleton( AcquisitionDeviceRepository()); _serviceLocator.registerSingleton(EEGDataRepository()); - _serviceLocator - .registerSingleton(SleepHistoryRepository()); _serviceLocator.registerSingleton(SettingsRepository()); } diff --git a/mobile/lib/src/presentation/pages/settings/settings_page.dart b/mobile/lib/src/presentation/pages/settings/settings_page.dart index 83c9e390..ea47d2df 100644 --- a/mobile/lib/src/presentation/pages/settings/settings_page.dart +++ b/mobile/lib/src/presentation/pages/settings/settings_page.dart @@ -31,11 +31,11 @@ class _SettingsPageState extends State { title: 'Personnal informations', tiles: [ _buildDatePickerSettingTile( - AGEKEY, 'In years', Icons.cake, context, state), - _buildSexSettingTile(SEXKEY, Sex.values, + AGE_KEY, 'In years', Icons.cake, context, state), + _buildSexSettingTile(SEX_KEY, Sex.values, 'Your biological sex', Icons.face, state), _buildServerAdressSettingTile( - SERVERADRESSKEY, + SERVER_ADRESS_KEY, 'The url for classification', Icons.dns, context, @@ -66,7 +66,7 @@ SettingsTile _buildSexSettingTile(String settingKey, dynamic settingOptions, SettingsTile _buildDatePickerSettingTile(String title, String substitle, IconData icon, BuildContext context, SettingsState state) { return SettingsTile( - title: AGEKEY, + title: AGE_KEY, subtitle: 'In years', leading: Icon(Icons.cake), trailing: TextButton( @@ -105,7 +105,7 @@ SettingsTile _buildServerAdressSettingTile(String settingKey, String subtitle, width: 100, child: TextField( controller: TextEditingController() - ..text = (state as SettingsLoadSuccess).settings.serverAdress, + ..text = (state as SettingsLoadSuccess).settings.serverAddress, onSubmitted: (newText) => BlocProvider.of(context) .setSetting(settingKey, newText), ), From 6184dea8af1f728f715d929f43d320046608f60f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mathieu=20B=C3=A9langer?= Date: Sat, 21 Nov 2020 22:32:46 -0500 Subject: [PATCH 27/34] Added validation on Settings model --- mobile/lib/src/domain/settings/settings.dart | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/mobile/lib/src/domain/settings/settings.dart b/mobile/lib/src/domain/settings/settings.dart index d5331cf5..a759e8d7 100644 --- a/mobile/lib/src/domain/settings/settings.dart +++ b/mobile/lib/src/domain/settings/settings.dart @@ -1,4 +1,5 @@ import 'package:equatable/equatable.dart'; +import 'package:polydodo/src/common/constants.dart'; part 'sex.dart'; @@ -7,15 +8,21 @@ class Settings extends Equatable { final String serverAddress; final Sex sex; - Settings({this.age, this.serverAddress, this.sex}); + Settings( + {this.age = 30, this.serverAddress = '0.0.0.0', this.sex = Sex.NotSet}) + : assert(age != null || (age == null && age > 12 && age < 125)), + assert( + serverAddress != null || IP_ADDRESS_REGEX.hasMatch(serverAddress)), + assert(sex != null); @override List get props => [age, serverAddress, sex]; Settings copyWith({int age, String serverAddress, Sex sex}) { return Settings( - age: age ?? this.age, - serverAddress: serverAddress ?? this.serverAddress, - sex: sex ?? this.sex); + age: age ?? this.age, + serverAddress: serverAddress ?? this.serverAddress, + sex: sex ?? this.sex, + ); } } From c3bd6d7c6d3a984e7b8c61851a32b7c250f39152 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mathieu=20B=C3=A9langer?= Date: Sat, 21 Nov 2020 22:35:06 -0500 Subject: [PATCH 28/34] Library for infrastructure storage keys, Settings tile functions generic --- .../application/settings/settings_cubit.dart | 50 +++++++---- mobile/lib/src/common/constants.dart | 6 +- mobile/lib/src/common/settings_keys.dart | 5 ++ .../settings/i_settings_repository.dart | 2 +- .../settings_repository.dart | 28 +++--- .../navigation/navdrawer_tabs.dart | 1 - .../record_sleep/record_sleep_guide_page.dart | 1 - .../pages/settings/settings_page.dart | 90 ++++++++++++------- mobile/pubspec.lock | 1 - 9 files changed, 112 insertions(+), 72 deletions(-) create mode 100644 mobile/lib/src/common/settings_keys.dart diff --git a/mobile/lib/src/application/settings/settings_cubit.dart b/mobile/lib/src/application/settings/settings_cubit.dart index 26b00b64..63c0b6a8 100644 --- a/mobile/lib/src/application/settings/settings_cubit.dart +++ b/mobile/lib/src/application/settings/settings_cubit.dart @@ -1,6 +1,5 @@ import 'package:bloc/bloc.dart'; import 'package:equatable/equatable.dart'; -import 'package:polydodo/src/common/constants.dart'; import 'package:polydodo/src/domain/settings/i_settings_repository.dart'; import 'package:polydodo/src/domain/settings/settings.dart'; @@ -17,22 +16,41 @@ class SettingsCubit extends Cubit { await emit(SettingsLoadSuccess(await _repository.read())); } - Future setSetting(String settingKey, dynamic setting) async { + Future setAge(int newAge) async { if (state is SettingsLoadSuccess) { - var settings = (state as SettingsLoadSuccess).settings; - switch (settingKey) { - case AGE_KEY: - settings = settings.copyWith(age: setting); - break; - case SERVER_ADRESS_KEY: - settings = settings.copyWith(serverAddress: setting); - break; - case SEX_KEY: - settings = settings.copyWith(sex: setting); - break; - } - emit(SettingsLoadSuccess(settings)); - await _repository.store(settingKey, setting); + emit( + SettingsLoadSuccess( + await _repository.store( + (state as SettingsLoadSuccess).settings.copyWith(age: newAge), + ), + ), + ); + } + } + + Future setSex(Sex newSex) async { + if (state is SettingsLoadSuccess) { + emit( + SettingsLoadSuccess( + await _repository.store( + (state as SettingsLoadSuccess).settings.copyWith(sex: newSex), + ), + ), + ); + } + } + + Future setServerAddress(String newServerAddress) async { + if (state is SettingsLoadSuccess) { + emit( + SettingsLoadSuccess( + await _repository.store( + (state as SettingsLoadSuccess) + .settings + .copyWith(serverAddress: newServerAddress), + ), + ), + ); } } } diff --git a/mobile/lib/src/common/constants.dart b/mobile/lib/src/common/constants.dart index f00c57dc..eb3f7fbb 100644 --- a/mobile/lib/src/common/constants.dart +++ b/mobile/lib/src/common/constants.dart @@ -1,3 +1,3 @@ -const String AGE_KEY = 'Age'; -const String SERVER_ADRESS_KEY = 'ServerAdress'; -const String SEX_KEY = 'Sex'; +RegExp IP_ADDRESS_REGEX = RegExp( + r'^(?=\d+\.\d+\.\d+\.\d+$)(?:(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\.?){4}$', +); diff --git a/mobile/lib/src/common/settings_keys.dart b/mobile/lib/src/common/settings_keys.dart new file mode 100644 index 00000000..9263e29c --- /dev/null +++ b/mobile/lib/src/common/settings_keys.dart @@ -0,0 +1,5 @@ +library settings_keys; + +const String AGE = 'age'; +const String SERVER_ADDRESS = 'aerverAdress'; +const String SEX = 'serverAdress'; diff --git a/mobile/lib/src/domain/settings/i_settings_repository.dart b/mobile/lib/src/domain/settings/i_settings_repository.dart index ebd1939a..fa250fc6 100644 --- a/mobile/lib/src/domain/settings/i_settings_repository.dart +++ b/mobile/lib/src/domain/settings/i_settings_repository.dart @@ -3,5 +3,5 @@ import 'package:polydodo/src/domain/settings/settings.dart'; abstract class ISettingsRepository { Future read(); - Future store(String settingKey, dynamic settingValue); + Future store(Settings newSettings); } diff --git a/mobile/lib/src/infrastructure/settings_repository/settings_repository.dart b/mobile/lib/src/infrastructure/settings_repository/settings_repository.dart index 5df55e52..959d663e 100644 --- a/mobile/lib/src/infrastructure/settings_repository/settings_repository.dart +++ b/mobile/lib/src/infrastructure/settings_repository/settings_repository.dart @@ -1,4 +1,4 @@ -import 'package:polydodo/src/common/constants.dart'; +import 'package:polydodo/src/common/settings_keys.dart' as settings_keys; import 'package:polydodo/src/domain/settings/i_settings_repository.dart'; import 'package:polydodo/src/domain/settings/settings.dart'; import 'package:shared_preferences/shared_preferences.dart'; @@ -13,25 +13,19 @@ class SettingsRepository extends ISettingsRepository { _prefs = (await SharedPreferences.getInstance()); return Settings( - age: _prefs.getInt(AGE_KEY), - serverAddress: _prefs.getString(SERVER_ADRESS_KEY) ?? 'Not Set', - sex: Sex.values[(_prefs.getInt(SEX_KEY)) ?? Sex.NotSet.index], + age: _prefs.getInt(settings_keys.AGE), + serverAddress: + _prefs.getString(settings_keys.SERVER_ADDRESS) ?? 'Not Set', + sex: Sex.values[(_prefs.getInt(settings_keys.SEX)) ?? Sex.NotSet.index], ); } @override - Future store(String settingKey, dynamic settingValue) async { - if (settingValue is int) { - await _prefs.setInt(settingKey, settingValue); - } else if (settingValue is double) { - await _prefs.setDouble(settingKey, settingValue); - } else if (settingValue is bool) { - await _prefs.setBool(settingKey, settingValue); - } else if (settingValue is String) { - await _prefs.setString(settingKey, settingValue); - } else { - // setting is an enum value - await _prefs.setInt(settingKey, settingValue.index); - } + Future store(Settings newSettings) async { + await _prefs.setInt(settings_keys.AGE, newSettings.age); + await _prefs.setInt(settings_keys.SERVER_ADDRESS, newSettings.age); + await _prefs.setInt(settings_keys.SEX, newSettings.sex.index); + + return newSettings; } } diff --git a/mobile/lib/src/presentation/navigation/navdrawer_tabs.dart b/mobile/lib/src/presentation/navigation/navdrawer_tabs.dart index 978e37b2..c547e540 100644 --- a/mobile/lib/src/presentation/navigation/navdrawer_tabs.dart +++ b/mobile/lib/src/presentation/navigation/navdrawer_tabs.dart @@ -7,6 +7,5 @@ enum NavdrawerTab { RecordSleep, Settings, DeviceSelector, - History, SleepSequenceStats } diff --git a/mobile/lib/src/presentation/pages/record_sleep/record_sleep_guide_page.dart b/mobile/lib/src/presentation/pages/record_sleep/record_sleep_guide_page.dart index f7b0c3ac..74b60f25 100644 --- a/mobile/lib/src/presentation/pages/record_sleep/record_sleep_guide_page.dart +++ b/mobile/lib/src/presentation/pages/record_sleep/record_sleep_guide_page.dart @@ -3,7 +3,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:polydodo/src/application/blocs.dart'; import 'package:polydodo/src/constants.dart'; -import 'package:polydodo/src/presentation/navigation/navdrawer_tabs.dart'; import 'package:polydodo/src/presentation/navigation/navdrawer_widget.dart'; import 'package:polydodo/src/presentation/navigation/routes/router.gr.dart'; import 'package:url_launcher/url_launcher.dart'; diff --git a/mobile/lib/src/presentation/pages/settings/settings_page.dart b/mobile/lib/src/presentation/pages/settings/settings_page.dart index ea47d2df..04aa9f71 100644 --- a/mobile/lib/src/presentation/pages/settings/settings_page.dart +++ b/mobile/lib/src/presentation/pages/settings/settings_page.dart @@ -3,7 +3,6 @@ import 'package:enum_to_string/enum_to_string.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:polydodo/src/application/settings/settings_cubit.dart'; -import 'package:polydodo/src/common/constants.dart'; import 'package:polydodo/src/domain/settings/settings.dart'; import 'package:polydodo/src/presentation/navigation/navdrawer_widget.dart'; import 'package:polydodo/src/presentation/widgets/loading_indicator.dart'; @@ -31,15 +30,25 @@ class _SettingsPageState extends State { title: 'Personnal informations', tiles: [ _buildDatePickerSettingTile( - AGE_KEY, 'In years', Icons.cake, context, state), - _buildSexSettingTile(SEX_KEY, Sex.values, - 'Your biological sex', Icons.face, state), - _buildServerAdressSettingTile( - SERVER_ADRESS_KEY, - 'The url for classification', - Icons.dns, - context, - state), + 'Age', + 'In years', + Icons.cake, + (datePicked) => + BlocProvider.of(context) + .setAge(datePicked), + context, + state, + ), + _buildSelectSettingTile( + 'Sex', + 'Your biological sex', + Sex.values, + Icons.face, + (newSex) => BlocProvider.of(context) + .setSex(newSex), + state, + ), + _buildServerAdressSettingTile(context, state), ], ), ], @@ -51,35 +60,52 @@ class _SettingsPageState extends State { } } -SettingsTile _buildSexSettingTile(String settingKey, dynamic settingOptions, - String substitle, IconData icon, SettingsState state) { +SettingsTile _buildSelectSettingTile( + String title, + String substitle, + dynamic settingOptions, + IconData icon, + Function(dynamic) onSelected, + SettingsState state, +) { return SettingsTile( - title: settingKey, + title: title, subtitle: substitle, leading: Icon(icon), trailing: SettingsPopupMenuButton( - savedSetting: (state as SettingsLoadSuccess).settings.sex, - settingOptions: settingOptions), + savedSetting: (state as SettingsLoadSuccess).settings.sex, + settingOptions: settingOptions, + onSelected: onSelected, + ), ); } -SettingsTile _buildDatePickerSettingTile(String title, String substitle, - IconData icon, BuildContext context, SettingsState state) { +SettingsTile _buildDatePickerSettingTile( + String title, + String subtitle, + IconData icon, + Function(dynamic) onDatePicked, + BuildContext context, + SettingsState state, +) { return SettingsTile( - title: AGE_KEY, + title: 'Age', subtitle: 'In years', - leading: Icon(Icons.cake), + leading: Icon(icon), trailing: TextButton( child: Text( (state as SettingsLoadSuccess).settings.age == null ? 'Not Set' : (state as SettingsLoadSuccess).settings.age.toString(), ), - onPressed: () => _showDatePicker(context)), + onPressed: () => _showDatePicker(onDatePicked, context)), ); } -void _showDatePicker(BuildContext context) async { +void _showDatePicker( + Function(dynamic) onDatePicked, + BuildContext context, +) async { final datePicked = await showDatePicker( context: context, initialEntryMode: DatePickerEntryMode.calendar, @@ -90,24 +116,23 @@ void _showDatePicker(BuildContext context) async { helpText: 'Select birthdate'); if (datePicked != null && datePicked != DateTime.now()) { - await BlocProvider.of(context).setSetting( - AGE_KEY, DateTime.now().difference(datePicked).inDays ~/ 365); + onDatePicked(datePicked); } } -SettingsTile _buildServerAdressSettingTile(String settingKey, String subtitle, - IconData icon, BuildContext context, SettingsState state) { +SettingsTile _buildServerAdressSettingTile( + BuildContext context, SettingsState state) { return SettingsTile( - title: settingKey, - subtitle: subtitle, - leading: Icon(icon), + title: 'Server Address', + subtitle: 'The url for classification', + leading: Icon(Icons.dns), trailing: Container( width: 100, child: TextField( controller: TextEditingController() ..text = (state as SettingsLoadSuccess).settings.serverAddress, - onSubmitted: (newText) => BlocProvider.of(context) - .setSetting(settingKey, newText), + onSubmitted: (newText) => + BlocProvider.of(context).setServerAddress(newText), ), ), ); @@ -118,10 +143,12 @@ class SettingsPopupMenuButton extends StatelessWidget { Key key, @required this.savedSetting, @required this.settingOptions, + @required this.onSelected, }) : super(key: key); final dynamic savedSetting; final List settingOptions; + final Function(dynamic) onSelected; final TextStyle activeStyle = TextStyle(fontWeight: FontWeight.bold); final TextStyle defaultStyle = TextStyle(); @@ -139,8 +166,7 @@ class SettingsPopupMenuButton extends StatelessWidget { MaterialStateProperty.all(Theme.of(context).colorScheme.primary), ), ), - onSelected: (newSetting) => BlocProvider.of(context) - .setSetting(newSetting.toString().split('.').first, newSetting), + onSelected: onSelected, itemBuilder: (BuildContext context) => _buildPopupItemList(settingOptions), ); diff --git a/mobile/pubspec.lock b/mobile/pubspec.lock index 2dee7da3..11df7bae 100644 --- a/mobile/pubspec.lock +++ b/mobile/pubspec.lock @@ -597,7 +597,6 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.1.5" - version: "2.1.4+1" settings_ui: dependency: "direct main" description: From 2657711fa59db0d6f81deed7773aaae655f017db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mathieu=20B=C3=A9langer?= Date: Sun, 22 Nov 2020 00:46:11 -0500 Subject: [PATCH 29/34] added constants for max & min Age --- mobile/lib/src/common/constants.dart | 3 +++ mobile/lib/src/domain/settings/settings.dart | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/mobile/lib/src/common/constants.dart b/mobile/lib/src/common/constants.dart index eb3f7fbb..96ffc30c 100644 --- a/mobile/lib/src/common/constants.dart +++ b/mobile/lib/src/common/constants.dart @@ -1,3 +1,6 @@ RegExp IP_ADDRESS_REGEX = RegExp( r'^(?=\d+\.\d+\.\d+\.\d+$)(?:(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\.?){4}$', ); + +const MIN_AGE = 12; +const MAX_AGE = 125; diff --git a/mobile/lib/src/domain/settings/settings.dart b/mobile/lib/src/domain/settings/settings.dart index a759e8d7..2d86fa27 100644 --- a/mobile/lib/src/domain/settings/settings.dart +++ b/mobile/lib/src/domain/settings/settings.dart @@ -10,7 +10,7 @@ class Settings extends Equatable { Settings( {this.age = 30, this.serverAddress = '0.0.0.0', this.sex = Sex.NotSet}) - : assert(age != null || (age == null && age > 12 && age < 125)), + : assert(age != null || (age == null && age > MIN_AGE && age < MAX_AGE)), assert( serverAddress != null || IP_ADDRESS_REGEX.hasMatch(serverAddress)), assert(sex != null); From e3e6cb8611e0aa406965f2b6d20e07b2ae260b6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mathieu=20B=C3=A9langer?= Date: Sun, 22 Nov 2020 01:13:15 -0500 Subject: [PATCH 30/34] Factory settings constructor with exceptions --- mobile/lib/src/domain/settings/settings.dart | 24 +++++++++++++++----- 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/mobile/lib/src/domain/settings/settings.dart b/mobile/lib/src/domain/settings/settings.dart index 2d86fa27..0781ea7c 100644 --- a/mobile/lib/src/domain/settings/settings.dart +++ b/mobile/lib/src/domain/settings/settings.dart @@ -8,12 +8,24 @@ class Settings extends Equatable { final String serverAddress; final Sex sex; - Settings( - {this.age = 30, this.serverAddress = '0.0.0.0', this.sex = Sex.NotSet}) - : assert(age != null || (age == null && age > MIN_AGE && age < MAX_AGE)), - assert( - serverAddress != null || IP_ADDRESS_REGEX.hasMatch(serverAddress)), - assert(sex != null); + factory Settings( + {int age = 30, String serverAddress = '0.0.0.0', Sex sex = Sex.NotSet}) { + if (age == null) throw ("L'âge ne peut pas être nul."); + if (age < MIN_AGE || age > MAX_AGE) { + throw ("L'âge doit être entre 12 et 125 ans."); + } + if (serverAddress == null) { + throw ("L'adresse du serveur ne peut être nulle."); + } + if (!IP_ADDRESS_REGEX.hasMatch(serverAddress)) { + throw ("L'adresse du serveur doit être une adresse de format IPv4."); + } + if (sex == null) throw ('Le sex ne peut être nul.'); + + return Settings._internal(age, serverAddress, sex); + } + + Settings._internal(this.age, this.serverAddress, this.sex); @override List get props => [age, serverAddress, sex]; From ea3df86933064c548fb8f22e33a3cb675b5123c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mathieu=20B=C3=A9langer?= Date: Sun, 22 Nov 2020 02:48:46 -0500 Subject: [PATCH 31/34] Added validation on server address --- mobile/lib/src/domain/settings/settings.dart | 28 +++++++++++++------ .../pages/settings/settings_page.dart | 10 +++++-- 2 files changed, 27 insertions(+), 11 deletions(-) diff --git a/mobile/lib/src/domain/settings/settings.dart b/mobile/lib/src/domain/settings/settings.dart index 0781ea7c..cad4cf8f 100644 --- a/mobile/lib/src/domain/settings/settings.dart +++ b/mobile/lib/src/domain/settings/settings.dart @@ -8,19 +8,19 @@ class Settings extends Equatable { final String serverAddress; final Sex sex; - factory Settings( - {int age = 30, String serverAddress = '0.0.0.0', Sex sex = Sex.NotSet}) { - if (age == null) throw ("L'âge ne peut pas être nul."); + factory Settings({int age, String serverAddress, Sex sex}) { + age = age ?? DEFAULT_AGE; + serverAddress = serverAddress ?? DEFAULT_SERVER_ADDRESS; + sex = sex ?? Sex.NotSet; if (age < MIN_AGE || age > MAX_AGE) { - throw ("L'âge doit être entre 12 et 125 ans."); - } - if (serverAddress == null) { - throw ("L'adresse du serveur ne peut être nulle."); + throw AgeNotInValidIntervalException( + "L'âge configuré doit être entre 12 et 125 ans."); } + if (!IP_ADDRESS_REGEX.hasMatch(serverAddress)) { - throw ("L'adresse du serveur doit être une adresse de format IPv4."); + throw InvalidIPAddressException( + "L'adresse du serveur configurée doit être une adresse de format IPv4."); } - if (sex == null) throw ('Le sex ne peut être nul.'); return Settings._internal(age, serverAddress, sex); } @@ -38,3 +38,13 @@ class Settings extends Equatable { ); } } + +class InvalidIPAddressException implements Exception { + String cause; + InvalidIPAddressException(this.cause); +} + +class AgeNotInValidIntervalException implements Exception { + String cause; + AgeNotInValidIntervalException(this.cause); +} diff --git a/mobile/lib/src/presentation/pages/settings/settings_page.dart b/mobile/lib/src/presentation/pages/settings/settings_page.dart index 04aa9f71..1e86f039 100644 --- a/mobile/lib/src/presentation/pages/settings/settings_page.dart +++ b/mobile/lib/src/presentation/pages/settings/settings_page.dart @@ -131,8 +131,14 @@ SettingsTile _buildServerAdressSettingTile( child: TextField( controller: TextEditingController() ..text = (state as SettingsLoadSuccess).settings.serverAddress, - onSubmitted: (newText) => - BlocProvider.of(context).setServerAddress(newText), + onSubmitted: (newAdress) { + try { + BlocProvider.of(context).setServerAddress(newAdress); + } on InvalidIPAddressException catch (e) { + Scaffold.of(context).showSnackBar(SnackBar( + content: Text(e.cause), duration: Duration(seconds: 3))); + } + }, ), ), ); From 45c94b17b8c1b046573e8354379eeececef85bc4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mathieu=20B=C3=A9langer?= Date: Sun, 22 Nov 2020 02:49:10 -0500 Subject: [PATCH 32/34] Added validation and constants to age setting --- mobile/lib/src/common/constants.dart | 5 +++++ .../presentation/pages/settings/settings_page.dart | 14 +++++++++----- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/mobile/lib/src/common/constants.dart b/mobile/lib/src/common/constants.dart index 96ffc30c..b49bddfb 100644 --- a/mobile/lib/src/common/constants.dart +++ b/mobile/lib/src/common/constants.dart @@ -2,5 +2,10 @@ RegExp IP_ADDRESS_REGEX = RegExp( r'^(?=\d+\.\d+\.\d+\.\d+$)(?:(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])\.?){4}$', ); +const DEFAULT_AGE = 30; +const DEFAULT_SERVER_ADDRESS = '192.168.1.1'; + const MIN_AGE = 12; const MAX_AGE = 125; +final MIN_BIRTH_DATE = DateTime.now().subtract(Duration(days: 365 * MAX_AGE)); +final MAX_BIRTH_DATE = DateTime.now().subtract(Duration(days: 365 * MIN_AGE)); diff --git a/mobile/lib/src/presentation/pages/settings/settings_page.dart b/mobile/lib/src/presentation/pages/settings/settings_page.dart index 1e86f039..04166ae7 100644 --- a/mobile/lib/src/presentation/pages/settings/settings_page.dart +++ b/mobile/lib/src/presentation/pages/settings/settings_page.dart @@ -3,6 +3,7 @@ import 'package:enum_to_string/enum_to_string.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:polydodo/src/application/settings/settings_cubit.dart'; +import 'package:polydodo/src/common/constants.dart'; import 'package:polydodo/src/domain/settings/settings.dart'; import 'package:polydodo/src/presentation/navigation/navdrawer_widget.dart'; import 'package:polydodo/src/presentation/widgets/loading_indicator.dart'; @@ -34,8 +35,11 @@ class _SettingsPageState extends State { 'In years', Icons.cake, (datePicked) => - BlocProvider.of(context) - .setAge(datePicked), + BlocProvider.of(context).setAge( + DateTime.now() + .difference(datePicked) + .inDays ~/ + 365), context, state, ), @@ -110,9 +114,9 @@ void _showDatePicker( context: context, initialEntryMode: DatePickerEntryMode.calendar, initialDatePickerMode: DatePickerMode.year, - initialDate: DateTime.now(), - firstDate: DateTime(1900), - lastDate: DateTime.now(), + initialDate: MAX_BIRTH_DATE, + firstDate: MIN_BIRTH_DATE, + lastDate: MAX_BIRTH_DATE, helpText: 'Select birthdate'); if (datePicked != null && datePicked != DateTime.now()) { From 445000e60790f169a2ec8ad0b4bf62bd44537a69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mathieu=20B=C3=A9langer?= Date: Sun, 22 Nov 2020 02:49:16 -0500 Subject: [PATCH 33/34] Fixes --- .../settings_repository/settings_repository.dart | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mobile/lib/src/infrastructure/settings_repository/settings_repository.dart b/mobile/lib/src/infrastructure/settings_repository/settings_repository.dart index 959d663e..f245cf9d 100644 --- a/mobile/lib/src/infrastructure/settings_repository/settings_repository.dart +++ b/mobile/lib/src/infrastructure/settings_repository/settings_repository.dart @@ -14,8 +14,7 @@ class SettingsRepository extends ISettingsRepository { return Settings( age: _prefs.getInt(settings_keys.AGE), - serverAddress: - _prefs.getString(settings_keys.SERVER_ADDRESS) ?? 'Not Set', + serverAddress: _prefs.getString(settings_keys.SERVER_ADDRESS), sex: Sex.values[(_prefs.getInt(settings_keys.SEX)) ?? Sex.NotSet.index], ); } @@ -23,7 +22,8 @@ class SettingsRepository extends ISettingsRepository { @override Future store(Settings newSettings) async { await _prefs.setInt(settings_keys.AGE, newSettings.age); - await _prefs.setInt(settings_keys.SERVER_ADDRESS, newSettings.age); + await _prefs.setString( + settings_keys.SERVER_ADDRESS, newSettings.serverAddress); await _prefs.setInt(settings_keys.SEX, newSettings.sex.index); return newSettings; From 75bd04ec708b19631f6f4f1c1447c23d54085723 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mathieu=20B=C3=A9langer?= Date: Sun, 22 Nov 2020 03:14:40 -0500 Subject: [PATCH 34/34] nit fix for launch config --- mobile/.vscode/launch.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mobile/.vscode/launch.json b/mobile/.vscode/launch.json index 7f5fbfee..bf6b31d8 100644 --- a/mobile/.vscode/launch.json +++ b/mobile/.vscode/launch.json @@ -5,7 +5,7 @@ "version": "0.2.0", "configurations": [ { - "name": "mobile", + "name": "Mobile debug", "program": "lib/main.dart", "request": "launch", "type": "dart",