From c73daeb8e85629a1705cc9e4a4217e417b874b81 Mon Sep 17 00:00:00 2001 From: Faiz Hashmi Date: Sun, 15 Jan 2023 15:19:50 +0300 Subject: [PATCH] Pushing till working demo --- android/app/build.gradle | 2 +- assets/voice_en/A.mp3 | Bin 0 -> 3645 bytes assets/voice_en/B.mp3 | Bin 0 -> 3645 bytes assets/voice_en/C.mp3 | Bin 0 -> 4221 bytes assets/voice_en/D.mp3 | Bin 0 -> 3501 bytes assets/voice_en/E.mp3 | Bin 0 -> 4941 bytes assets/voice_en/F.mp3 | Bin 0 -> 3789 bytes assets/voice_en/G.mp3 | Bin 0 -> 3789 bytes assets/voice_en/H.mp3 | Bin 0 -> 4221 bytes assets/voice_en/I.mp3 | Bin 0 -> 5229 bytes assets/voice_en/J.mp3 | Bin 0 -> 4077 bytes assets/voice_en/K.mp3 | Bin 0 -> 4077 bytes assets/voice_en/L.mp3 | Bin 0 -> 2304 bytes assets/voice_en/M.mp3 | Bin 0 -> 2925 bytes assets/voice_en/N.mp3 | Bin 0 -> 3069 bytes assets/voice_en/O.mp3 | Bin 0 -> 3069 bytes assets/voice_en/P.mp3 | Bin 0 -> 2637 bytes assets/voice_en/Q.mp3 | Bin 0 -> 3645 bytes assets/voice_en/R.mp3 | Bin 0 -> 3213 bytes assets/voice_en/S.mp3 | Bin 0 -> 3069 bytes assets/voice_en/T.mp3 | Bin 0 -> 2349 bytes assets/voice_en/U.mp3 | Bin 0 -> 3501 bytes assets/voice_en/V.mp3 | Bin 0 -> 2925 bytes assets/voice_en/W.mp3 | Bin 0 -> 3933 bytes assets/voice_en/X.mp3 | Bin 0 -> 3069 bytes assets/voice_en/Y.mp3 | Bin 0 -> 3357 bytes assets/voice_en/Z.mp3 | Bin 0 -> 3357 bytes lib/core/api.dart | 21 +++-- lib/core/response_model/patient_call.dart | 16 +++- lib/home/home_screen.dart | 31 ++++--- lib/home/home_screen_components.dart | 68 ++++++++------ lib/home/priority_calls.dart | 85 +++++++++++------- lib/utils/call_by_voice.dart | 4 +- macos/Flutter/GeneratedPluginRegistrant.swift | 2 + pubspec.lock | 34 ++++++- pubspec.yaml | 4 +- 36 files changed, 177 insertions(+), 90 deletions(-) create mode 100644 assets/voice_en/A.mp3 create mode 100644 assets/voice_en/B.mp3 create mode 100644 assets/voice_en/C.mp3 create mode 100644 assets/voice_en/D.mp3 create mode 100644 assets/voice_en/E.mp3 create mode 100644 assets/voice_en/F.mp3 create mode 100644 assets/voice_en/G.mp3 create mode 100644 assets/voice_en/H.mp3 create mode 100644 assets/voice_en/I.mp3 create mode 100644 assets/voice_en/J.mp3 create mode 100644 assets/voice_en/K.mp3 create mode 100644 assets/voice_en/L.mp3 create mode 100644 assets/voice_en/M.mp3 create mode 100644 assets/voice_en/N.mp3 create mode 100644 assets/voice_en/O.mp3 create mode 100644 assets/voice_en/P.mp3 create mode 100644 assets/voice_en/Q.mp3 create mode 100644 assets/voice_en/R.mp3 create mode 100644 assets/voice_en/S.mp3 create mode 100644 assets/voice_en/T.mp3 create mode 100644 assets/voice_en/U.mp3 create mode 100644 assets/voice_en/V.mp3 create mode 100644 assets/voice_en/W.mp3 create mode 100644 assets/voice_en/X.mp3 create mode 100644 assets/voice_en/Y.mp3 create mode 100644 assets/voice_en/Z.mp3 diff --git a/android/app/build.gradle b/android/app/build.gradle index 1d1f0af..d4f4f6e 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -45,7 +45,7 @@ android { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). applicationId "com.example.queuing_system" minSdkVersion localProperties.getProperty('flutter.minSdkVersion').toInteger() - targetSdkVersion flutter.targetSdkVersion + targetSdkVersion localProperties.getProperty('flutter.targetSdkVersion').toInteger() versionCode flutterVersionCode.toInteger() versionName flutterVersionName } diff --git a/assets/voice_en/A.mp3 b/assets/voice_en/A.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..9e7c9baff426622e4e34e964675c644e303d2d21 GIT binary patch literal 3645 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 literal 0 HcmV?d00001 diff --git a/assets/voice_en/C.mp3 b/assets/voice_en/C.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..e339eea48c3c3b5a83145196cd194dad98a82d06 GIT binary patch literal 4221 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 Y|32`ZV~7Ve8K{>^?SH@B|GUF~0cK{cP5=M^ literal 0 HcmV?d00001 diff --git a/assets/voice_en/F.mp3 b/assets/voice_en/F.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..9e91029e30f580f44f51d1c0c0e749b3a8d15164 GIT binary patch literal 3789 zcmb`~MHzir^3S{RR8F0BOxjH;<=!Ru<-v) z|5LE1R(*JnC+oKHhDMDDha5W9&6qiZR?jhnK0cCW%G8PxZiJz2`NVxCJ*ZmzZp@w} zP3mhHUEk3wZIN`zw-NIFJwI;f33Vfgfd#LHzbk4)P*w4}axhZx@VmZV%PwcXRvrF` zAqGwYC`zFNn4{U3{BTBtq@FKiy)@jGckWEF=1io*m_U21Tne=H~Y`E(M{hM#0oVkmfR zI3LJsB4f(?6-VCDv6Z_oicTzbIWzhP>F&52;XLA8OCUD#`N$l88CJJryvUSMF8Y#g zO_CQxv&kf^Dt*i{t|G^u0=K0qit5rRln<)3HB#c&U4X){W>(<(OkkBl_ir+D{){ii9H>3zP^5Sz?Hd(u^Q_ZEw@J z(k>(YOz(~;{3j>@Xgi#T74R`nlFpb3?*Z6H`clkYHkVbsV`CUzA8hjhy&2HVt8)~~L2Es3*;I(iQf=3OCM;OUk zjI*j%bGb4QrDIRTB~{?FSTXa8Zk#DVtR$f zd0uk8S$KV#<%@61aDgt(?`x9CT3hQX@03MMFb5mJ4svdx(q%rUgl-k98nm@jb0vzh z*pA(;+dWGCVV0=7_)Y{4`+Ry(Vk9p zf@%Yx+N3|MH|T+0MaJMV+WP!Bp%9;n>|I=m^1lemHy;AsD{&ssGur11?-P9qvM z6hkq#eXFgg-T_Ud(W16IwJ6@X^Od#@i@lThdUu>hae9i;DPmnY|uYz#jS0KC-PY_A#Eq}H*DW`K8*vlGccn!!Tq@3=o zT0*D1tZRD={^OC7o_+L7m>@isjf_X%yeax3_rBo_qq4uZmn}Sx=a3}<_in-aUwoL-$&`|LaNwQCPs!7d$1w!XIzXt~Xn-i)V_mgMWI zTNQx^FqZ=npzFtpwH{!c2fzY))#2Uyk8f(4ebYJrncK>f8`!%xKJO^0W+LF969K;J z35hpzjC`Czr|DW|<)af{RE```?Kj}OsAQl(>NWq8gna(d9)otZrl^gSLDibei;Er8 zjF=CiMfjw~1=-Eoo;?I_##9F7hBV_O%q2{bo?$fu<{`%y#C`U}f(7C^ZyY1%W%Rc@*Bmo$+Z@3*ka0M|it&zjJCMGPlzRXt&L(=axS<`-IV^Z=x z1C>3QjF8#w#Lkqe?W-Be=3~FHSV%RoYR5(5^nEM=p@yB5Xdzo;^sj5YD#LjSdoOpT zGQn+$D}wS8#SW_Sar=SP&yd35*m0+K-OAm0pPf|uKhT7Sv@uQKJTHN_qNUy=MDDP? zG&^rK;bTTn!&mI)yoq@%*g%1|tQ3p=dASH`z6t6&c)xeEGJlh)o?v5On60qiiE*}+ zNtC6O3Tp+_x7vOQwV@M^wKAn0rXw}h8GFUI_(HE)+gi8y^Pz4Vk607K{?K@hXFwe9 z#P+C1$JuF@AqN8r1G{UFC`bL|J9i0Iz9~d<51`!UCWxB~M>5~Yvmef6 zdOJUT;+pt&0&yNQX8#`KnQvbZnGd$SW7lHKD)WWVk$X;XzYr9=@A#S0@gafXaW_vU zi`>`pu3m`6Q2A6Uq{Sn7+)=YzW+ZuBeKg^j@_}^7&K3AkHzkG!)>G1J)@JF(qWm=@}fixxa_S z7TdYjl!B1*^p=Jiz9_jNP=L#6W1+nrKJ*}WsihI;2?fTj=AC`$*EmsE;bbA48LE4< zox-Wlh}4YIduyW1>EF_mxWxyz_AO~FET-ns1lwB=`dFON;Ykg`{(d_}1^edSGtarf zxxKYEVLO|gs1$ng z{JtwK5ZlQ1HZ4hx_fWo*IMax}uh{X42_8RnLJ+TohH{ecle}*COLaJ{K+P{N9?EcD z$XCd8Xg47}(i?WFjYyzqZy+H+`+y?ZZM99p7>*S!GJDZ8W<+YNUbPtjXoX{0d)~8@B(0lmgbBT;8Gj(295iPC z>fWlUk}o->(9QCvIw{&++ZG> zW!EXHX}}k!#Lkp+Vtgh-wlN{@sdh68aPj*uoXxh&o6_;&!=HFGk+O1ypdJ^0Vx+v!|?rw<7a2d+mQwJOrj>> z%U1C%kd{-k$c&mED0rODyR&zpcArb8|Fu1Fcql~D)haifkaRxNZ;R*YpDP(Jv85`g zXq;)CqMy76?XuZnsylS^ZN8>^vNtc+Lc&gg>aIl`gRX;kf+{k4-VaiFZTb!8@d7!D zKE<1&Fi*dr87`}Y2KH(X%mvqd`y|6v!1!(VZ{{>gRu{JW{wfI3;S_-GxM{7b8a%_! zyuiMzkP~22JB@!r@hO$C-vI3d4BUl>)TMSrWf`J8qCjzpsiGEH33gh z$lr%fCo{~bazN*X0fI9xxS6Hu<;W()B|F%f%90<8^Jp?>wF-+){X?3p_V-hWNgW*N zx7NtNvsUv~hvVOfG5#H1om>U@C4)YQ_ML}d;%K0$8B08QFe(7`TrIL-h;*_DVnzNq z;)ft@+Czlkk3Fskl?r)FO%S|*CwhlYM4%)>p7H$?@~Wzay?FZn XWpJLLhrbvp^L+d8{>vNxpKJdEte{yc literal 0 HcmV?d00001 diff --git a/assets/voice_en/G.mp3 b/assets/voice_en/G.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..6d466d99b504a96a0e79a0f388b117024ff932b2 GIT binary patch literal 3789 zcmb`}XHe72765RX^b&f2prIG(MUW;XbdV4T5XBM+NG}FKI?_Q(K#HJ9R|vfe3P_g# zkzNIf6bqu4qM$(j@5cK+zM1#oz4KvrW_NbyH@j!f9CMf|9Tg?S?CtD~|DHLhsA#Rw zL2l}r3K|y_l$DhJ?EW(V`#Q2IvJ&&Hma4 zbcWwH|1}OIeyn->8RN1a_EyE}tzyh2j`u~6Le@A}04dTg(Et9#KMXiBtsgJDH2fC$ zHA4PKiY;pe=6gmN(*ZzqmlMb!W-W+C9npx8gBUKjGe%QU#Uereni0LcH0%uYuWT)G zXT2yM2!Df?xa?#cBOmELQ3gTHq_t{W=b@hXA@F#q?>4wGi?symFScv#I+DN~L}V0{ z&Ae@OAiW_P$+3Mi%IBGz-#;yDy|jmG_@}|K@qI?@6D~1hqS}qx5v>|a6py}$j*61~WP-Br zE$8Dz-Xz;*6=*_Wx(aC@kkl9#o+?3L?uJj!x9)YWkb{V$vQg6+PYcMx+mgc_9-H}D z9~bKahyo*vKYo*@Sa{n(o@ef@LmBRG2{J<+-=utd+kPj+Kj8i5c&aigv+OJ}J$f9KB7IAx& z2Rq2)NY_bkKhY3#!)`uYcJbpG#S7MZlUnh|);J?4=cBP1l^m8}L`E|QT$5{O+_A_% zoBvD<3tAQY9#kBU=j{mQ;G%l!&pw+1CAo1^7pg(w6HMsC(MD3DsECIPAvO1f{j$DA zW&8?nGd8NO<$&U`<}s5rQ%8ZR!i0}4@N?UN?Kgb092RiySU%2_P+3_1g%&58hO^JS zRGIIxXgOL0X?h0`@0bbN*7Sj}R9UpRo^t~}u&tRlzYy`yX9L(~3|q(v^>+qcSJb(V zwQvXKB9}!aBRA8@M-{3s4uhUsV>Y5{PW?b4u#m#{j>8wF6}XD}S!STAnjcj@(PaAn*0wvXv}^d9KKrYOI+w=>T>&>9}}6PJ?LCq9F~8uzd{Qr<^iN@#Tm*{@H%%vPAd1?Hxs8K_i? z_DzvPp`i*q^lNk+{Uqqxh8}`;Q|MiqgWVXkS?cUqQi#*M0=VLimMGG=BMe&dQFQsc z%XnMClqy4MhVPtmQ#t#mZ65GNynRaBm-zKbvc`H|+-6bI&oV(ji<8}39Mw5E@%*_R zMk)qNDRXDWRBs}82cF{L7O@B&Itjty!0@s+;jx%9%lNTrw7Hhz50vDkD-Tpq)?t|< zyKINfwQRz&qqGE_(XOinoz=yGFxC`4(Fbhw6%6ynj}3_nlUJ7K1S8cWC5#ayht|`m zQ?I2vCecq|;>;|c1h{G>aw}7un_Tss>T?2N78`Y8$TmE2s5^I>2=VYvN{deXFhEc7 zfS|ok>m*mXUPa5!IUY_~SXZ-_++Y0y}g!S8Tn# zlH!*tAM0Wbc5J)1f_heiqn3r%3r;cb(kpkR85Vpne&f;G->`Pi!xk~%<2?{6Qh`<$ z<+a*j-t5$qla6if3<3@Ta!?5Ch{lbF=#><&`5Q}Z&Lg-u#|~`JmAhUvVi|L+8NGS8 z>#ro`%cYfJuU38;PLxZ&QexVYU;F33AO;@@4*f&v*N}scSz(E62PaAsig^rjtKW9r zK|b39dIcwbfQi;EB$GKm9|T$!h#`I(dK2M3{G~oCr)5-E<+M%{9^3Q$m*=Aay}jNE z>3w}s_3eS7*kE}cQM7@EvT5@Ob9P*Hd6O}Ar~MMUR4ZQq^)2FW)y~VW>>DIzPKhxb ziDz>@7b1Bn9toknEuupo4DV^-WYn@#;_f1t=7htsR59lZSG5 z1RZp**&Mqbc^Ss0xSSchyCCAb9!5>H0Q9i=HsyC%atU*~8%O3l$oq5@k0!+S8{v9y z!dxAEWjX(J@+7vZN+qjvEKVTVVk77vDYuFOd z`|cVe)qp-0#y#3Km5SmlZMgKz0J^5&Yq@@+=KX7KlU4BovePb6 zM-ex^9?QnqN*Ppfa%1>i^~S2s&+>@BxyVHS*p}ikhcuS9IfR<{9www1h`O;#mA_7n zsKt_knD1x))PaLRUHs&>*@I$6S{mAqVo$uznOzr;$Fv*ynQA{~l=t3*o0VQmt6w$9 z{yl}Odm%f^L+@rXZD$#}OSrv`q+MM{k%7>vn`Z<}VAUlPmETLd_k9hF;=%SLm|8J) zuPfE-b8vLOog(H2@a6BCh8aK!k_x*2{;#I#zz_BWMGo+lexB}y@b$RlkQ9B|v|BFp zk92h{@O@r+PV(}FT)EsH4YtSrk^Y%N(cD)w5Y|5Omls_B%6lbsKn}!U+0z8kAn1a7 zoSFW%*oHvqpsrIRw8Hm_80u&{yE&{k@FmyPi0iwin-j1-T* zu$*LFP#<$+eoCM3EOoH_1WgXpAzdDO>#Ly(-(5GE1N@xUg6vI=+!u14YBsTUd!yIY z8?teR?;aw4!JmNd zCj9y7#qqqFLFY7=69fKkgjOY^A#0<}MupUSh_ag$Po$9QQf+r1thvrb$l^G=Hr@I= z@`3H*`)cFv;F4GD^KD8gA@0qk)h4xz#{Z=;5=)D4uS{g=V_w1S5oO zj$U8yJI_GU0O`smZBRVf5TT}m$kzj(f9{{}O^EqD+>VV`w*d%QUCVY#$HuOX&e`2L zJrDEqt!+-aCoNm;blxb}SMlhvb94-{a$a?QQvv|Xr!_U@PbH+ZSaT8eh?(eOeOD?} z1+Z1#Gn%B2#v~UF>VxB&vv+Pm4^oZhl z29do`(oHZ)2a%?ROyAbA47@^0UaTj>!Tu;jfOJ`<+Jco@xB}8ci&2`1$L5x7LLFHU0Y2m1FUaOWN$&?H7kR65-yMK$~c>$@K>%8u1q9xrhY+hjb zk~C44Sy`@}n!VwXKJ1N$1)@@`z7E|HDf0bR5y2+Y15|XaR(=8ig_k#~9T=w!)TFd4 zc#&%?IidJsdTK=nu0wu;qrggGaOiDEC{zh&+bFWH2uR_$vzJtdn)UAG_!2Z9&|XN# zA>q6rbngvqt3gg7lsNco;OgTbdT;Ox_8WH!O}XOjokec(#?>087rZV`SyrZ z!1N>!%WGv|ZLCUZzLEbi=sbNoP7_rIbaf?$5>w-?ua_2QmVp2Q-{QP;O{#Su8>BX* zshau8TZCrAc)H;1Ro3PTagguFs@4eYoo?lb@{4DJouiN=6b}KMnPPAMdh7|X{r)R? zM^>OSinZO+Moi6h3LoM#T3Dsz_ zn>tf)&l@EW%ju%bZG@=&-C*#gB|uBSR^)!nt(w72rT$;4d`;XNDJ@GJeT$1$goUW- zamNwdQg%XTvhKb44!g!G&*XznOTmv6&nS0(r~S!m6P?h3p;xzWoqveMnXl-nEZTpp;Zx6ytoYHdV-5jt7~@dM9ZF=_x_H_ zes1`pdjYEcm#bz-=+>({fLt5eY9`0^(qf@~D*(9o#k{iOG`{ph&9Ix7PfqpOnslmR z0$%MrDQaCKh2jCkAnejylL=k<$<-QNj$j*@+HbK~QH7KU{vUyT9xKaj5=7?IO#49; zmwX*-lel5PmNO3xH(l}>38KU^d}S`zf|p>C8RJ^Vh^k9*9JSao8`kq<_aY0wIx|$);!Jg)M=Ol;YG{E9AX=_FU+XX2cvj?obBx9 zk)2F1x7_F5DsAAFky_UP*tJj2AMLjOm$dnhx%9s*Qaq<(feDqlB;rnY*l1E@5Zz+hV_=LPUx|1Sr`b2?VtchIs15(Rv z@ZOH~DeWig8yztsqyQU;YDxvhB*hQ?${AirEs?mMO_`yo@3oPYruG72{wA9Dg5bHw zE}sqtOlWiC;XqyVaRvS?JfA~J`8p)x7w)$UX4g6TrW=0?!(N_yu>HDLyO&2YbQ1k8 zqgm8?R_Qo+dES1pN2hEk!+ufl@8PNY^?7|DM)oNg;w1{8l`6_dOHjf=Oi5r?2i`0B zB<@v=nj zrs!sPiHblhy`CQ=8z7>}gdr`@vH2@(aCn5e!H3#vk&f<8`sj9eRAO9t`mw@nk47rWtz%&uA+XK&sjto zmuKBcrA?o4nM?wve-68CmL(#S0Ff9-6*Mm}=y9Pum$;3ddS?$CO`{VnJRaYS$7c*_b@#js zC1>=$a?yw?(LdOo*##`)H-Bigu#h{G!3Z8Y$mL;&VdiTO-#ihMkz2BK=~sqNb`?&tUljjJm1VtW^oZ z7K=^UJHnC6238*4$F#&{Hm2rOokRclwP*8<*52xevgB~ri_P}aF4G#E^{o#6fp7$I zO)cA;NLdyuYS@+Fp@mpuM&-t=h!xYY`)1P>DUssH(m{W!^t#6#92@##2EoZs#>IgR$dZ zV0~9P%4ld)xJ3oDR@%t3l-BdU&h@3S|2hl>1r|~lQ1eQN(HOFEXMrZDZRE0t&2rIu zcD<}YPhR%*;cxLb1=Eocj8RjA!ZrAacCZKWT2MTf;@NN+Kb;AJ=Lb2J^)M#xNS5d~1`H+4_H-{Yj_zjH3ni%G^;2z32(V2R(kD zN$?1As&BPoUSr$*L1~n?DYGiqySkN5@U^tUDsd5He>Qjk^_=bU-Lf+?WpDmp_Glwz zweLCjEBqC^$9Q2>hjuK5a>wFmwlM<>a+Nh(ah@7os=CuWCA*pWGr#iLKAMHa4xEOx zTzPR1yS~!IrP}r+9d@ z>rqAxfcH{R=HBRqJe!jhG z`fQujHV2*~cx>2D9)&c1k4g|;AEf&YJ*Nn5k1!T{#=wbCwTlhsUB+* z*@6M2fDe?6M8KpHav~0TAxX`+6m661Z>qiPaC%J^;?AnfOtBORPXMWq{V#pUmNr~f z6+0g4G_qG*#7dJ%L(iDGg=laokC$3J7WETVUGKrN?n|^^*!VOjjQhfmsXr;L24HFN z^KP{(tn!$ImPm(LQR|h36M)KXMDb8Nn88tyHu!&CCRJt#oIAKEk?1DcYXI zBSlsIdE#+Vwp`u6?yG_w-B%}LJK{4*T*(-?DUgI-*bP2KqQ(DSkre!Wyl5B`D!JFL z`WXo6OhzsiFz45Cs!H?EssC!metINB<+`nSFYI<#`O5cEfUBKB)-q6m_K^}K-N##r zyEum)6}L<9NDF?Qs3hvN0)S%6bp%`D9^XZ9?~lfkzE=Z0bCM~>(M9U!!VqM#o~jIq zy}i-(nsmn(zNB!LD2Si8!OF1`m9N?Hw&y14jEcv3@~0=dCq*dzPVDrB3$+H0XKu)Mn6`P;9=!BwV3CW z7-II#sFaUzX5wNGGpbJk&~3+-2j`_*c*q4i>$&9JKRTXZ=@$|bTJsBF*mwhW9v(f= zRCqHr*kgg*Q9}yFIWRKV;aK%~29!&p&2m_2+Z}sx!FJB$c+0XskA}aLhs^?5pKP4G zvq{?Q^dl9o2^i>f=414pu;v%H!^%{6=Z)QXoDn=CTuM^&T#oQeGtMb zPis`2_;-L&_!u)nN=RCyy|6CJCB1jYwp{6<*Vm$%sbtBZ4H@a3rluE6XoaaltVUM{ zADT-2@SA8^N+@%0?)eX^;MeJEM1nbVw}(~><0}ljo~-<7_oe8AXo9EZP|5grLo+kI ze@wU9U5#BO73vIXSZ?nVJWzpdYRrZ-6Kbbu>*;xE*+DFY6kozIhd1AzMQ?W5>-u28xq<$hZv(Y1v#wp%^Jdwhh|T#-6HH*c zis0ddd|CSPmy}NF-omEL#c%WWL~Pv7i0$UWx3{?HFI2^8t!?G_voG4=GkVX%hhqCH zED`!I4L9|d7JDf^E(_ilZU~I8@NSV|bFpC&4`GqaWDQg(u2PYLV=l;I7Yf19EdSTCPznm=EJtA{>mB z{q8I-K1Ef<2VAeLk{)~@CQ1dC>I;cQ=bkTWo;OaAy|#F1L1fLEu!@Gq^OGj%E^N_L zk@fLyd9Xd#-5-{*bhl9%^4iDXZyPpJ2%ZO=R9D$s#6U`IbLYk%Zauy?w=*8^!}WPI zW8lvi`OP&;RL%raYHZUiw2l}!uzJ*`7x|(MXDzWbezCt^PM|ew-SzQjV>qSh zY2%;#4n=b-gL4h&o4=ufYd?IfoO9xIR# zkI{8U6rhj)zOZ$PnJ>cS>gJ4{O#jY}u~+0W*YkyUIfz?a=)`M|6QI%j>zDhb8HW6I zOw2|uRTuu^yDi_+5O>j4DUZ$s@qaGh`bVaj4woOw*mo(P{h ziL{B{6{#OxW{8Sc-q}kQAH{I48@lObndH)H>WMN_w_q-J7{sY71y)&PMnXjlK*X12 z&ndhTU$iKL7HSoR+5KI5wl?);wzdX(vt4>NRSsHBMoph7DHhaRm3$m54NwA?4aUXA zRBe~XZHvgX#!7~9aSU7)DA;x&#CUVW^=QN|bPh6c9vGrDO=HAqEC%q&t;v6cD79 zRFIGsB$S%hd7ic2t8cCE?%fyXe{nAM@9cf{e;pkSX;J_oc+E^rHUEC;0RR%Xy|1IJ zf|$IVn52ZnKfC`f_+Q9A0Edg@55QoIB}tb{i?Yo%Roec|W0%98S)ezm5=`Z{x654M z&TIQ`?9B_AaZ}jjt0$|ODx}Qekxa(pL?6*_NgvREN&#LIgFJ>*&oPo@s%y|k@mb(M z=nW~T>^L)!M_3fv+eL9XEjEPY2-ck4GPFnM?~;*GQc6K$K&<|jPeO=g8hhSTM)p`l z5dhCly)g(txSD+v=TeT zE+z;mn#7PXT~90~TV3ALdv(n!k0i5z0-{K&+u4#kLH65^JIbuaE0oQrIBBz+j6Ldx zPEdMei7uDWzElckLePnn#~P{N&p6>>ImpETrsgWRVbXuBcSi82La38uj>geKLHa!R z7jCYA*O4a6E1%gdb~DV@Q#g)d97DTyX}eFWke-uIy=ElQQf2EB8`!0tT;l$rzSBIc z9J#pRhL4}O*z_GdJp65b@+tWk2moyQ&AawpI+7)aMf-m zWr0y^3W_7``wrHwxR~jZo4%Ez&2RS!9w;+3Nn0j;0C0+DLFFXR6`ggSxe56SXbuc= zf`l!P3>M?Q$7TBE+{UN5ZU1RSHXLeZj;7)ECYRFf;-UHkY zsZS`OY2ZLOg5dGHejBUIY|Rd!ifYrH7xU)wy90Y=HY~)A5T^z^*_(^%V;Htn%Q+7dEiqEKSmaRD6fKzzvgnXx254(bLHeLOmf9{h*8xisO{h+`G{uvmo=PF-b+%`;-xSh8e6bdh06}W z9^QKw|jV5>c?8^$aLQtf`^`aMX~WDKnuPcDiT*k&xL4ndoCYYq7N_V*|*XCSo34s z196i@>VBw5HRh~SL|b^aVtqlvwI&pilpqw>v^!qwOF}VarsQ@0Y4w(&t%Jh_q=g>D zsz5bpdlgH=_ksZo0KQ?gavmr_JSyAJYJAhb6SFbeCnA~}Ju9S;>^)rWY+uFvWj2Gk zkCxzJf_xXAQwh}AudsSqQKR)()!nI>?NO{`Dddsg?Cl(+`wJsO=AL2`jY_%1qDC*X zGS_)*6o1T0Uvs=UHPzI*3w22byiayKc|IxC35CSnr;9(ejNlzN?!@Eqr>?&9Sjz^k z>KyaZlZ_44kxRQ1cYL&(UMyNen9zJdE52EfaD*u)T^@ zhIy+d(#1!vBqp0%M?3RvA;5v*`lF7ZAo+Z0g%+`9FPWyXMcmWj<>g*wC{N8Y#SBKb zP@M8mmrg`d$nL!?xtEkCH3H{HnP}cW>@EZ#?!L z=xcmAs=#x_d)5?6r@7sW?$k~sQYLK$jyQ-LemdI*e_m$nxi}n5j&R_>WJt=H_HzLv zv|I6)Ap2YeRvtT%^!2z}dNP)$!46h`PQ~ zdmP7+PTQuyKl8;4;;5Tp>oJN)A6AE)G%&U~D1@+9#-&TIZ1Aj5S%+J2_WJU^te5FeFTplj_!o{Xc#tKa>v#_t&J}d#BP`kwt$g#^aC8o9=m} z-OrHOP#9{uQ>L4qQWQcArRh1kqWQ+h>-A-_scZEK`W1s%E9=&wQ;gY;^*4!3WU%kW z(Sz{=+jM?*3XLwP>*~N_<*tywER&;7ks@Otrh4g=;DLdaHc9#>w z{M=xr*3*NKFJK7`&7Dr8l1IR6eALZh{ZPoGP3Q9aW3{gjJdec{mdj=F_;szAb~_Z6 zaS_4e%t@r)Vct6?#7eu^@Wo@XvLQ$fnOz3+}m;exXnMDQN$6wxbW}wPsQDcCt6l&tG?u z3cVH5$5`^*<|KNpRXd3EwV=`OpM~`k)dWuhr@cX5(=fR+Mk_V*yKMwdFXY7&h?9EHDRu?|#je z5t2GPz*vKf=tfEzVCD1+4c5(sWkT7R&ukmJHg|-Z(5>J2S{@nYV2^&?yXZOe>9cU> z&yxi2&Pv~6;WiqA=M9LesktMNJYI4&!my(~KRe#Yoz7XM@3;!VUQ}EyxjHHpC7Hs5mu$)_JC*)X5HKN=_8K1|yvOcFe zVBv}Xjxfa<-+{P-ObDJ4kYtnP>X4COQV{OwbbXVMkC3Uz=v=xX1fZaSc1nEcZ2DuQ zX`0IlbG0V)vsq^3gIaE`Cb9L|Ae}FGX>Mm6YgQl#*9?gp)vZ}HgNsEg zOU%hT<;LI31m(n?FD9O6?G%Ym@dQBqFZ`suXKTFMHdty$*W7&k@U2O^F(m}g7%LI6 zrMW-a26~NKir;$rzvo9#PTr75`$s!xTx$1T=l&(U4`irYQH0MLnnc0p4wH`xZ#o-g zC`Z1te-WdedI9fcSAIeAa6D6pV$8%`tMf6~&w*BOc2_!YVj}W`A?)f(aVg583Oj#w zhadmAUttdAP4{f_*Ya1K%6jT~qpQ19)&Rlt8@$D%z%l`&?KnHVXE_qXmiz2wwA$sE zg`XgIj8!&VugqxZ7%KhZN_n6#yTbvmlIV+kc4yzs=B)Ti`oWX_VLhcy!?ijmp168j z`QB@dC@DHa-vbuM?Y;(DB}J z;WHkPQwm(uG6R2I*P4mnt>kzy%dNLmm*NHM^-DXWI1my`^{aZNmDB!R0KB>_$^7)f zPcQ2m1W?LLk`BLRe@($=48qSeAWW*PCcE2=u29cn#is zVWLd4FE800n=p3PP(r^D2m}{?n&_hN83Qe4X*Ncs)P~2+EYG)%Ut~z7#`xzik0Pm~}Qq_j6TEwW_scAc%UP3ulX>IWaZ zC_{Pt0tB^B;VIQ$_1EYbeAf0o78-l~8hka{(4qHlzYZppS?1uB$6MzOov^ao-<+e^ z(!_zvdqR`&gnS7|ZC&~Igd~)X8FTF75YkvS2$kV3uJbU7rnQ2Mii2#eGwN{!eTe`M zNB2czT|CPyA1_n6pv%C^)la6Bt8tb%>g((~t58toL|K@!WY`-$iRek*fN2qC!{XQ3 z_k4&9<{PfMoxVFkek z0ohk0vnnpUE`seHDci!ZY$s1t<4M+|d-q(BaFf-bnZoX2>E_3u+ohYCt5?fAbP1jw zMmsipaMu7})HOJ%*ooe>v-C8jS^H!CIA;K#lq#+o_iahoY8yaB(ePWg9W@cvSax8o zC%qIamYa+E9A%m+_|fpEjmkZb6Z6GU<^AS0wFp&&kDvZ->hcg3$?lI_<79F40r^_!(SBZ zl_u_K?N!a{JC4?r21#yG&=MWlZPkDI@O_Jye&T8An}otJa&vlc+0MpA(?rS* zaV#C{yc1^3mj9(YOnqMD#`Y}s{EFb&y77=llyVlGbzaA!PnKu1Zrp+Ej1K$wRVumL zV<)^!ckFpaC9D_6}v?3zVvj#oM=z8SHuKHb!RoqO|A zaOB(=5Ab5Uo S61y0u^uT=n*UA5neE$LWCHnLL literal 0 HcmV?d00001 diff --git a/assets/voice_en/J.mp3 b/assets/voice_en/J.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..20c4c7d062818b4e60c274ce1ffbe77873a8ae6e GIT binary patch literal 4077 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 literal 0 HcmV?d00001 diff --git a/assets/voice_en/M.mp3 b/assets/voice_en/M.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..241ab72d74d42be9be52e593969d71a9f198e528 GIT binary patch literal 2925 zcmb`}`8(9x9{}*dBqC#-2BRk1wM-f`mNpvH7^5&_8DuScgbde`tQli(Mkor=m?0%g zbjuR5#?6`uMYu?^hsNhNegA{+bKgI_&kyH$-sg4R&v~BnHZ|4;gSeqUBoIt~tq>51 z5ARC$KS$=9P``Komw>e^tsoh3en}ov7oJ3obfRI)r(3Sn2eCZtSF)1sHZ3)hdRw%t6AKmPUay?l)XDVnNB3+S<{=eVhcU>WJOk1&EhHtQ0VBZ>5Nn>H3gmDyI}zG>}#ACxaID zqU?*~dSn!Wl$+~PTzHFQ0~5#(`6SZn-DCBEezCu>9=^+_c~XK|-5ARN|7QvECwFsT zdLiD~c-y^+EuKwIjR&n{)}Ory4fU%WuAcEH1shaP7Tn8am7Lt#&bspinq6-M9y;9F8TC$+%ay<}4*ZKN{oG_5* zJA?6b_?CXT5C-F} zKK06W<1iZQJhn5^`l5D2ouG4b=Is;RYm0LeSX%APxqqwAW*m-nOW+l zzf-@b#u-XFZ{24`Zv?g$Dx*s~mM<$FdlyvLU)S^K#h|zh7(oy|VyWfKU=78z3N%Ln z_fZ(N{BX>tz~B8jtd-oZ+#J7NT>^o8=|cED_y2KKSUb;Y@FhOF6fKEqqC^2ZZZvGp z_tsQQ-@@J!^sPi-xwWh1)v>D3h8x$kk0mu$Bza0oy&qeQIJx{SJ|b465L(uZ>y0jH zgZQ|Ut5y@t#Is$JV&M*nf+q( z#B#@Cj*MCrf*E#r5U^{gTYip_j&ByOV&ssi^SBElH=Kb#9RNI zO4XhGY3q#a&Y|9j-XIEvlw##e_VBS?>*e*PmAd6@O`-~~EzqJEX*O4^O|HGSIz>IG zqCwr$NlQX>qX9rv|N z`jY%>>3u2*Jqcu=!q&bE*j&RyYXXr>vxZvg@}KsIWF(<5om@b7QLPaT4+ZzJM-^WF;SDQ zSb~&f`bH)I?2w}jHq4`o8$9I)m%kkwLCN!;PI^`gh2Q zrG9%?9)5S31)IGlUaOyP&k1Fbo4JAtPVD#W9+`q+Ye2$9?;mq%NX4bKt!NmKbzhqtP(jZ zOe_gtN=aJ>{Z$FAX1my?jCzVst?*)N)Vxg^g`tAR#A$y!wpl|V9Iecc4m1uLTbDtOWc@p^6~B_5j5 zZFBpBJj1v)r%=NEo0dwXNqB#yyFq$M*}a^H@(MNZw<5wt4*&pV_V@-9FDaK(3U`%=E&DZ@y zjOj+8W`lQjbw0SqsVlA|olnjWXARzPl=?0=0AwfY)O0i)r-{1$yq4#c;vVsxf-yIb0Rb} z(rvTz9g|)WTM%s>TS@=?iME_O^0%Ej698EM9P@g{k1RNZ7}4}`D*Rq+)EOcr)tPm8 z#II~fpK1Nfk?V<<%}b+X_qVPW<~zdnose|b-MwAu`zG)r1~1#;-B97`85ibP>6n;B zA%M2j@7XJ-8GR*S!{NH!Ms_~Ffgzjz8kbfsFtYslQ}%<)PXyc2YWgu&>L zHr$3D5n`$5HEHRyto{zES@!SuF!Z`)qX9p2#pp9rpr%(>7;QH*KplQ3J%A4^so724 z$Jg~uYX--u%!zNfbRdD46f~GOcnb2I?oHQz%=MJX4HS5R+2F`wu$4f1`5m+QgJtfe z{VCa1K8X?gy@&BVGfsY;Cr54Tt*ywx;3LP!cLpPzyC--Nl|M}y+YgALRr&fLg5a)O zzOt(n3$KT98RpE;ZQE0u(c84N%qhA+lNA{oM2x-OHO*&mX1qH}qa#vYRf+TvmK$Vu zbREx>!h+wQR5E@Km*RS=hgkJv&e`|{Cp0cD}^(zY|PcWD488G3qX8!=C*=(C4Z znYdt2erp7PmAb6t37SrA!?unu@FT|cOUM9XrvMsrS;M1& literal 0 HcmV?d00001 diff --git a/assets/voice_en/N.mp3 b/assets/voice_en/N.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..07845a570401b998cf71ebcc260b961e833f8b59 GIT binary patch literal 3069 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 literal 0 HcmV?d00001 diff --git a/assets/voice_en/O.mp3 b/assets/voice_en/O.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..4489e28064d3e2fadad475ac839a9c6a5ee45f6b GIT binary patch literal 3069 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 literal 0 HcmV?d00001 diff --git a/assets/voice_en/P.mp3 b/assets/voice_en/P.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..8b05b1b30c33c003dc469e212f4c5879e4e6895d GIT binary patch literal 2637 zcmciEdpy(o9|!P_S>`&|#pe%P(5i0&^L!oJ9sP+4v~a_fnLd)GKj*VE#1_Qsbvr_%rP1G^x+54y8-O# z2YNpy=^CB{!SK8NLmbZ#+}j`3G7NZTr1q*S*sa}f7*zjiFCxmFiD#|&q*E-ZaCI3N z^NvIJpBCT>u?K5r@X4Q1nG1#p38>%a4@P(e<|pL+$MtOBq?2pmi!8uu9)anT+qZnS%>mtBHYN5b=xHf% z7<6|~yhv{HRgQBylDt*)jp$k>A!5kn7G>kh2W+*N29hjlZtYT$+sRB9=mUtb;VnTfVdVK0H@3%fbtBj)_Wk1tn;q$Q~+OFeKR-(;nD zVVaM}tI zHcvLz%%hFvz>*8A4wLS+ZwqDRjdy!S+w6@G-B!DLy*koZ?gbAWI>ebRkH7?}`rZXS z&7%cTo9BC%;|Cpyt{AaLNjFlx3O7Q;!mi9ua~LxXXTo)x?zA`BmUv;->+_O%`psBVqP96y_^Z}&dAQ*m1P1sn$5J9 z$>uWxFEN8B)QJUsUa+;8KjY;fR68k4kn&|pC!`~s=Cmw`OY6Zq#`xptQ$sFuF*0J0 zI!dLJNtmL3uAM~6-}Aw~NY?L&)JP3mhY#K^-MCorlah|X1Rp3IdXGhNEcsW>Ehz8i z+lK4Ho*ut-U9Lnf#{{8Z%DdVa2bH52xH)Gk`0$kdj80^CK3m}cJ1H3sI0D>Wzm~f+ zJ`oT=&woaaikeSk;rehd5AONaDPZY7 zd|{-#hPP^}S+p7IyC7SB&%*+C3uqJ=-TlJ!TF5jkWG*TPaWtirXkRIoLBQx}>fPv8 zcOFbtRXPWHz6SQ z8xVz_6`W~3z8L0_V}W~cX#DqIk25&eK*u90t3fM946k6ZLxokXN=gWGX{la_8}LJ9B*3rYInoAWcKlw zQ%RjXd;DnlVxZ3Or?{YByM8Y-3gI`5Z@VoT&}(*?T|SD?{}#jhIkhkH9p zQhW;4oIh4YBA-{au3--yb}v^_`7ujclyQ^l)tvk7(_&xyScjXa7P(Cv$u_fFt$ro zlaP#vO#|KVSwl#HVol_09?LI3Sh*3uL_R-*A_L<=x=Tl>R##jxnTx_cS`JEPfu|9Demxoh zM0|k%GXT_YYSll@C?+&Y44HUdknBKgqAwi!EIKCJvY&STotCeyzHet|Vs?LOEvS({RW;nYfPl#ItX!<5S0|n2gK0nL*uj zZ?VS@F*?X;@55CbECqniC@N^rb@4^KJYY&+N>O@LH{DPagk-WJvx5LO;> zQccRujt{!pM84Y8c8k&+qh+0T?)v*T;BO#kPW0;YZve0)_JkoWb~fEl#62N-PcFLn z<3|qQG{67Q+vTZqGfgEncs^UIUx#7qofO@C?@?vIs_EExT$6(#q36wU6&b}mDsM(< zA%(K`)@z0(O_txH-J~nLMim>Qe|cZCP0tuxAYX|)w%vuaXMZTVb=_PScyi)i{p`)1 zfwyCVHwC;Z=IuRw;FGEp@b538;bKp$w%K%5NAH_>K7u;z2-LFPl2+de{ z*xqv&SRK>1yTSlAF0S*1fv%|U6}3aQ3VD$pp#^pQE|^~`2hSBW9CbFUw6$Hg-U5;? z6K4>od*u`zKJ0aR*Pc$?H3h7CY+zl_;t?^zjw^Y-5^xdp*EL9NsXv)FV>S1@f>PS( zZ%Cwg!^9ps0w0jx{*c-&dOR73p0!vhNCKw*P)XntZW(0iIu7*cSJksyvsvC&F7m-X zX2ISL;oivS&%XdJ*UiDL=FfF);H~>J+;EAesp}Evcz9ud#$F|0Gb1}+7RIm70yS(w z_c?*m=~43GnY%QIMBI37j`vDSgI1eWMm?bLPx&BsT1()YBY;XG#GY#Hx9<}Q6R6$p zFFt9|;)-vmhb*ZZ5{n&A zIuENL14brr1*(S9{yCS`$H!-wh6UJGMa)Moms=z!D+`m#a&f_hq_Noz_GBiruE>PV z=1lB7lol^iy30=V`-Z`?JE4g^TvhOapmGgYM;fiQrxz6x@^dYTMDis#dAeALze~RV WV#J<#ZOWDqgc*DNFZTYws{a6>df_4f literal 0 HcmV?d00001 diff --git a/assets/voice_en/Q.mp3 b/assets/voice_en/Q.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..b19af4691a43cea1a04aea8f0c22c52b5c7ae3b0 GIT binary patch literal 3645 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 Qi)wk?2NAlptN;Jwe{H21Pyhe` literal 0 HcmV?d00001 diff --git a/assets/voice_en/R.mp3 b/assets/voice_en/R.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..06a7061a81dcab9406187c9b79e1544d5468ef9e GIT binary patch literal 3213 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 literal 0 HcmV?d00001 diff --git a/assets/voice_en/S.mp3 b/assets/voice_en/S.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..61cd779a499b2d1ff48318f28415551a7187480d GIT binary patch literal 3069 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 literal 0 HcmV?d00001 diff --git a/assets/voice_en/W.mp3 b/assets/voice_en/W.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..a0b575afc730e111939b7ad03a4e8bba449ab844 GIT binary patch literal 3933 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 literal 0 HcmV?d00001 diff --git a/assets/voice_en/X.mp3 b/assets/voice_en/X.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..3f4ae66746a09dc9e497f25ceebc1f5d05d1f0f3 GIT binary patch literal 3069 zcmcK6`9IX#8vyVb`@ZjnFv?_W8d;Jh`v_UbmdJ8#kv&_JWXmMWScf5mG{u!=#4SrG zOlYx`u|#M>Tunn{=JPf8{sZ@y@AJcXemLj6Uhn6;Ugtc=+FXkb#0;p5v$Mrf76gG< zZGEo?YU^q0>S&&Z!~dE6cL1mXgCJ39RfxDH9K_1mn6tyCIIOTc2m(u)a2nAbyh=H= z0s!E7_yxM2|fx6~!j%a6AOY%4@^ysJ}4&M8eC9n{4-F+5?Wf${J@_U~zZ|W|l+{`L_^&|M#=_mWPv`g%j3>unN z7;Uk~F*M&4?xxcNFv@8;B!efCzNX*9`kR^}?31?uV1JzW6x{lIT6;%3ipuCcD(5H| z&{1ZhYl&C-0H=_ioK|C4_AI3$8wI7q(X>DD=y5*`WE{`*2q~0XJ_na2fD-%=B|Dbs z`fo?hm-D}`R%}Qp3!oeUSoy!z=dj z09`yCEIHS%Ykr!iGQoY^9hvj5=R)pC&;*=i#%}XPPD^v~YyXdV5MK#9jz;C`TWY#S zT6j;(@ahyX??}p%mho&+C~M7e#t<W_|kk2Umv9wBe2nd?2?l_4&3;9T<9fNwVJjatcGah)HoR$EG;48TM{E_ z?G|@|zf}Dm5-(yYo8OBlb&q63t8Jmq3rm8HB`XKOG|mNNr*G4Y)3#~ zfA?}Wv?^+x1x~HwDGR)5tg4^N4&I>Ns>yyC>kQKJ_7~E9!}N&CQ!Tr$Cz;c%1jrXx z<1i{jLsHS>+XHMZ89Wp$F@K17N(7C78pXLps5GvVW_5Ut>((|ij$4#79E#_^RnkH% z?PD#hwQ)bAaokfsWb&-cf1msStk=8xwFX8UNodV|FWQZKKv~j1KW>TI{kqPAg>-*? z3T9uK7!2KEIq(#twwB7Od)|WQP+J|3Bv6aycnH z=>R+xbJjgmG#Vp-woc#yx{i?^(L0*3|LD0*iSN@n7gNGT;B{skNTlsbjFwlv~a(j29^Vhh&H<*Ci(Szvm!WJ8*7z3)%Q zdx#+VNi`YbIa?1$y-|$7`3quf5?JMjexA1;$BH-2(oB6j4;zbLDmAYe+6c=Br1~At zgPr4-SXQU8yK^Wex!nGoE0NztD916jk~=Crwot1*uA@ZvzfmZZYlb{T@R26LGFn)m zKKf2RhlI7Kj)^e&pr}DuYRJ(O+O12TdtA%(AZ7nDa-q7zK=|Gt$6{xD5sb_xb#IJ^ zM{jt&n%$=!SNr{poKjYMfj_)l16L!I#i0B`cPkW-)#qa{1&w1G=kJn;5-d^#`U0C| z)0VsG<^e?QJg)NHGk1QyXN8xGZ}ZqGzm}F#&Y!A?Obu>9H73pK|B6V!T+k$I^Cs5s zy$Fn?lDk*U(rGPJk(L0f?iyj!fjN}2sKOunMp`5cDR;|FE6xg zulo$w0``l;wOC4w|~%YQ>K#UV|m6~ytw`k{GWBGV(L zlw8t6$_xgbED$}t^)1hLMdc+A7N%^S2VWD(Om*b%Pt_C@p?p43QhuU55Jx3g#Fkpv zY*!Nr-OXt#CWVZSSdkB{%@yeU(4>V*_EYmn<<%d)FlQ~>Js`PUad+baak71Wu4m&^ zLmJ}ECu0E6zgW&mV&tbT#nzpNiGjmw`jiX0NIK33)33*xq~A#o3cd5q z{^*X9eJHt8y4xY&KgO8fEH58Mc1ddI%E7z*$Mh69Q%w|*5Tz@>p5y9lu7=XX|1qVQk4~R1k1%|k~uJ+AlW zycTQ~+Dhix3aVM3a%x?|$2*uFsLXHT`XSsRUNUzpVP@ef93k7?b*{b^|a`#i_RF?uE|O*AHw3<*3Fra zMZOx|d~9kg+0H?vybvq8dd+2NML@(ptP(;tUV2A(rP11d*|DVx@f710L)ov&Y)4t% zq}IzaJ^GLjgy{p1^u=Z~Z<*0MY2Elm8rVV{pr0Y{ZqPM)X_jT#PSqn?1_*fv0dCCV zT#X|k(0{E?l%R^x%b1?-u^@19WyL34eNrT7uttex2b;Zt;M2cQRy-P`s^)PggWA7F{PVO>uH&Wd>P?VNdx?U%O_* z64w4S%!SP$T+I1>%JvRr#Xd*v=S) zRhL|ZZrNbyGle7KW|MW5?Tx7!hM+X#M&3}L;>Vqq z`|d**WP!s`m3_$C7ZG+7GU=?CS8j|0^!{^^p9_R{=Thin(98$p*bVkbM|x1wps7<$ zjq0oPRDzgB2yXLW<1rR5TWGF`th&<5^3_xGP{P3$bRm|x_hj`5#@c|JJlgH|z~D^?EwX~+L}(fW`x zv>w!e1q{0cW;sRLzShQ;a^omprasIN)Q&+J`$$W z{_&)pRO?y=LkOY3xTh7E`UU`oY7+P2hE@rYBme+*3jv_8VE9hT6!i<}_;7kZyE+nS zF>uUVkPny&+bF9|2N9KLfPFd%s*{q1=niFi_@q_;8fty5#U}3o+pQvEjhoHg@|HG? z;p3=dYIe}fFsP*3k$4{~Zti5ILO%uVNQXH;0>(mFS0(|^!qTv?Z*Ru{n)DzPmAFdV zM~U`!CgRVSm?hsJcxdNhdHHXjM}Zxd81(~+xzNhvo!rV?#-KO6JMS#!cW7`bD}9GW zz5a)YS;)u-D$~Ow74}ymZZhHBPgaR&Q(H8L66Zs1Q)R;%*U>K6YZ=%R6?IZ=`UCZx z2cIglV$O*iD=$hH+(gxladL6ryx_|X(1v47hkXPxOdego%Om{a8H$U^*&dtgZV`oA z+jN@;&~d${A#*$-bHL-QksZWrqO#0UgSmTmxxy~ue7}Oksy@Ob4SJ%bmzf^kqtwlZ zxGC_CESomFlrB$iJ6Brac0@)IJt+T#T62A)gtJUmF*}t~Ru)(;m{R}EaC>CU(otai zWH4(AC5OZaQLvon%inJKY$BvqGnWdHCp&64+UJ$X>Cg>=4`o$EXXmLM{tBbX(Nvq% z+cH2KWML7!DoRJ z*h}K>wVo^;6AuXY4sYmH4D`zn`MJ)LFqj?k!ZwaT(^o#*XWWL@(Y<+I(Hht>3^qUE zWWtdfV%Dk0SjM}IdqB%#B*k7w!~nbgrhmmjhWKs*4?NgPS=Udfh0N~3T`4KZAhQ)4 zUxBTlqFd}Xf$kt{|EJ9UAf&j*hF(VTX$~Au{tQzKe18Vv?0t-Jk>SSwI*Yw_koQ`X z7A4FJv}JTMJg_yv_wAqP5EEXo!0p1gIrFU3Q`dWt1#7ooQ5a5{2dPm<+%w>keC?MD zmq>su0PO2e*w^pu98?0p!ETE-tr9m9m+V(NF%=EFi47XmyPyyA1js~v#E^r`Q0RhiO}VT=(CH$oWEPqtFtvf9Jx^B0X*uD0-AR$V@l`3Jz0$Kc zPQO_LdkzsAwrzL!6k=bIpQnfk2mKuU<^epzjqB@~82yr#%s+4_V&qvo;3?~Cuy6ey zaJ3NO<+dJeAIy$)ZhLxjue2^*yTk>z(jZ&S!`qzDdyu|Gc+2#lk-IVsjfgIr>LYYg z{z(GYJ8!o8+z=^yHcEOz_OInXG6r*C#Y8=Hm02&<<_tb(h_ug7I@oRnGBY*5r&vTL z5NVuWV)}gTK37ya%Ls>u=tsBs-1*uD zD90i~SZ($a(W2C(Ko(u=YVWr(>cGhZ%ts&9FN2 z-s-Gr{!sk|;$iOr2Cyr;g2H1qOs|uG-H*s>d-jvt8*Nb50A)wThY&pt#R<;OP3>D+ zVO?+K@3tjhN315lO`<)QfBh+DNol?@n~tvxSe>j(ZaCH!Ur~NXkK?Q^uj#pNaa%fWNx3sK1vsDA>`_azpB{Kw0;`ew=T zV#=At+&`|lMM1O-i|RQOCxx+IT|$x4mk~)B z-b{;tqXNx*ep*09Bum~G=qe9%2E&D|InSkiCuDpTJzdo4U3YrCDWrDgqO=xDgP@yT z7-O+2C799~+Hc$jrLZFK;Y$3HUva0LR1RROA})TAwy};FQ73^GzI`KwdaWKYAEBB~ zFfWZEfcyDUo-M(845xj0(VWc>cP*N>Gl784^U zb>K=V{nMkTzDrk`o*UxaRW0F>ci?79+g)}(;OPo-tol~myF zBc=BJU1zsxGbQkVBXRIidcG!bX|yyv>jCy!KelD!TqA$bg+&A!V^NmOJ%{yzQB-Z|ck539(YbLZxY^_I`UeT@t#;yWAp~l*#m@ zAp_bgH`~aK@(;%u#T26B_61BG#RlQAH(lNE!a6KIpbOCm96U5R)dLm7VqO>bhs49mxpcNc-MZj{c3i2`Ge`1@-49LaZzguL%8XFp%k+sC@gd)~0msuX>pi9~)agCm=Q{)dyX*dq_0=Xv5HT&% zD3;6cba9M_<7KHz&NV@;!J=9vp(k$RzY7OiLRGV*wJ{pQ#@^;V!I`tuUwE zN-savO{I@A1xrm6FRQ0$v|LWUkFeDnD(z0OdIa4Ej%bt`N1;BZ3rj^S1xsWekv5&X zO{1jAb;g_ZV{(cbHRwZVmpOcXQ`59tAo)ut8`b==%B703F_ARHi%d!+KjwRGfbW&j z7N)05!g2YbO+UCrdEPcV^Thd?ccxYnS4hnI`_Jd6CkEr+54^A$G$)kLeYhyXX>k{w z`qV7WdHH?K(35wo%hX4OZBYZr&=2fc_bylB(K=H&|EFj?+9UTy)WU|Q?R@CJ&N$5_ zwxV5;U+OAKBSe#KDR_Gw_jM2o-gX%-&Yk4g7o4F^C=>I|q;r{`G32wc)FXZ5+-@GV zp*2+AnTJc7Obh@l6j|>+6Ik!)dr~U~*7k?LI?yHvNn}7+OSWPoKKh9a&*vYr;`QrM zTlD|FvG922Q}OGYvUN4tUe{)hWr!RF&-!C+B+OIgYHwYNTDsqeLf;r{4@<2i0kR?nE!r1qvZq^}^C3}*c(NvTrvaeZVG--w~_Kck@SwfZ& z8lkKqYZS?z<#)~h-e>pu|9&5w^E$8d;PZZ+a~^z;fvy5Ah*Clp=H{rgnFR!*F>>;E zS5lQ$QI?jImHm77KLfDs+6Cgxlv}0J=B5IH+?XK{h-9>&2A~b>>*|^Srw9Sw=H}+? zFu;r*08U{1vlSbwaWSW1CyziN?Ng!VoIIhNJOtM!a2gjEw{cdXaWQ!ek2EUKXY06) zIY&pQ!?sgUAOL_sAI~y@0}vbpqM8o}(T_d$&l|2H2g`6V#6;eegNrDgAE$UY5axd- z9WqUYn4;|x_?rkB4AK&Zhv{^eN-~EovXE^Nyoan+`C2xOyP*n@s$xi|#e8^$#~hKX zql}h@Y^4O3lY^F=ENjr4p+lXLfuoWEk6J<);ALICd1d;~EC6iXUE)ggVR~@LwK}t6 z4gkMLggpj;;~lekaarj#kU*8lV)(>ePJC`a5yitKP`ms*XHtynmRSl1lCkT&eALZn z_M<&2-#vC)?+k5svOKpR4aC2DDk_rHBSc0eb_fc&p3RjXEP!87mIsU++I@^1e#HW6i z?3d-QCL{~U4|ari77EVs{q2FfQsY2G^QxB*<2#0Ua3cM_BR3)S_IDm(tSWcac36so z#y&UiZV#P2|1o{&VRE4otFg480&oveyDJbw*mwu$bRD6%qUi~Qg==&i@0+!GpB|aJ zGtR1#?_X`0=3CpCc2Jp4-L=Cs)aPHQ#zoM6ap9VbP!Ucu5XLrMQ5U5);b(h=F7Nv}q4-M9u62tZ;Qm;p$!PoS?DIQjV?cXDCvsknI zZ|K$-Hc|B^v;KNVas)Jb!ODk}3(omeiLx4a60?oy%FJd;^taOZ&a<-d?OmWB)<$}Z zo0#$|yvMQg!Zi1R>T*#ka6q5=mZ4Rvctl(2BXF8QJ2f-d`!)0A_4Ze>J+;vohttLO zoJD?JRRM2@NLHyQ6|JPwoS#^bs2;J8--O~}floP4!5zC5&1APFtFpG=X$hwmDPfRX z3zgL+e4)bL^JCVoR$XAtZY^+u%7O}Z-?<)^7RF)=FyT|$ikeX}aozX|u( zRgG(1Uiwd%W=T%wXsi5ISY5*6`Ue#}Udf4MK_Ua?OU0VtHtM$Y0e1-KxR8QW>ca;$ zg#Bzp4VY0bmg?{O;*Fr6g7>B2xTPMea%S0gs|YyCNIvr%yZ?57%*k!iIzzY7(;TeT!6Iy^ zv80!#Xc72nuWUue@8L{0M z^l%2oL3;1&U#o0Uo@!te*-qLKE*trirH#?Uk5k290;o(1z3N_Z34QNnu5q_Oj2F}` z*vw3qeF^w8lJn8mgUi($!V0D$w_jcfNO?W};U3ct>`wOPNaOzIK>iRgEvr3jIwq*d zillgK`NR`)WBbzZh(}ET(CKC{y;7hJ%dAU;(V_Z@jS47`knlZ?SxIJ*9am}eHJQ1N zp}Hc-@x+(4X4&+Y>YRd13lXFOUP-c&CCvRX@Wc#~@fRB;+%zsAvC7X$B!kKM8j-b7 z+FiH=N7Ms=(~WRc2chv3&iCAb)hBh0eOyrgV4m2~m~?DpF2#f4HKZpL^wYK^ei zCO(M^X0P=u@l54zC^BHDBfa=8Jb10Wd8T{);^S$|Q0E|CPL@#?^Z;+VVRXdKCm&T3 zc-r1}B%&`Jn{Nr7SJb(Rs`st0)E~_O4$c5t>ZKp3tO$)jWtB_hn#!v<1aeenEni7TTA9`&BuMkxJRxwhk$bsP1EL zhYEfaL{L}t9uKBE_D1CvdI45F?jpAXc{qxZdC2wC&B0GWXOt=93|}C3Mw@)S!9w*z zR($2xG0=-+nO|ab4XGi?B7w2gbab~`j1gLfOY(0|H$0T?#Erl5dv@c}t^@z|ux&pF zpD*l%Vp+Pwh@fzarxtGRA6PRS-Rf(INEMA@)e>atHP;#s9*B+d&AM=e9$k;pG?i@t zwz$fZQoae~<=^xXH&((2Q~{qw4hb-WT>x11I(+j;M=0;w0}K2sS57urLedZ9yN~F{Idd}K2y_8#Ug7#1HIu! z*W%qYi)n`x)5G$CItiQjJ+{ldb}RzxmQb^94;pV5D7V;L)m^1@Rf#XgJD6vCg)z9h zH4>h#5{7;`nByGh6=+Aup&zj7iBw#1V+_wE8f#q13ut?MWfiR9I8TBZxp z6!vC`M{*7?qnp+p*?OvRc>I@3N0vj+^ls#6?8$OaU-a@dww0ihxY=9F|AeO4R3B&y zkAJND@rNXsjQA#Fd;h#02}1F-o&VmWEA~#er454JU*{2_#3)euY|DSXD4vfTZ}cQ- b9S0i!8~^|I1fTssu2Q}m|NL?MPvXA;?Xf@6 literal 0 HcmV?d00001 diff --git a/lib/core/api.dart b/lib/core/api.dart index 4f9c756..b4b61c5 100644 --- a/lib/core/api.dart +++ b/lib/core/api.dart @@ -13,13 +13,19 @@ class API { onSuccess: (response, status) { if (status == 200) { var calledByNurse = (response["CalledByNurse"] as List).map((j) => Tickets.fromJson(j)).toList(); + print("calledByNurse Length: ${calledByNurse.length}"); + final patients = (response["ClinicCurrentPatient"] as List).map((j) => Tickets.fromJson(j)).toList(); + print("patients Length: ${patients.length}"); calledByNurse.addAll(patients); - calledByNurse.sort((a, b) => a.callNo.compareTo(b.callNo)); + + + + // calledByNurse.sort((a, b) => a.callNo.compareTo(b.callNo)); // final clinicCurrentPatient = (response["ClinicCurrentPatient"] as List).map((j) => Tickets.fromJson(j)).toList(); - onSuccess(calledByNurse); + onSuccess(calledByNurse.reversed.toList()); } else { onFailure(response); } @@ -27,26 +33,25 @@ class API { onFailure: (error, status) => onFailure(error)); } - static Call_UpdateNotIsQueueRecordByIDAsync(String deviceIp, {@required List tickets, @required Function(List) onSuccess, @required Function(dynamic) onFailure}) async { - if (tickets.isEmpty) { + static Call_UpdateNotIsQueueRecordByIDAsync(String deviceIp, {@required Tickets ticket, @required Function(List) onSuccess, @required Function(dynamic) onFailure}) async { + if (ticket.id == null) { return; } List _ticketsUpdated = []; - for (var ticket in tickets) { - final body = {"CallID": ticket.callNo}; + // for (var ticket in tickets) { + final body = {"CallID": ticket.id}; await BaseAppClient.post(_call_UpdateNotIsQueueRecordByIDAsync, body: body, onSuccess: (response, status) { - print("response: $response"); if (status == 200) { ticket.call_updated = true; _ticketsUpdated.add(ticket); } }, onFailure: (error, status) => onFailure(error)); - } + // } if (_ticketsUpdated.isNotEmpty) { onSuccess(_ticketsUpdated); diff --git a/lib/core/response_model/patient_call.dart b/lib/core/response_model/patient_call.dart index ff913fa..435dcf6 100644 --- a/lib/core/response_model/patient_call.dart +++ b/lib/core/response_model/patient_call.dart @@ -1,4 +1,3 @@ - import 'package:queuing_system/utils/call_type.dart'; class Tickets { @@ -13,10 +12,20 @@ class Tickets { this.mobileNo, this.patientGender, this.patientID, + this.callNoStr, this.queueNo, }); + String getParsedDateTime(String date) { + print("gotDate: $date"); + DateTime dateTime = DateTime.parse(date); + + + } + Tickets.fromJson(dynamic json) { + print("here json: $json"); + id = json['ID']; callNo = json['CallNo']; roomNo = json['RoomNo']; callType = json['callType']; @@ -28,8 +37,10 @@ class Tickets { patientGender = json['PatientGender']; patientID = json['PatientID']; queueNo = json['QueueNo']; + callNoStr = json['CallNoStr'] ?? json['CallNo'].toString(); } + int id; int callNo; String roomNo; int callType; @@ -41,10 +52,12 @@ class Tickets { int patientGender; int patientID; String queueNo; + String callNoStr; bool call_updated = false; Map toJson() { final map = {}; + map['ID'] = id; map['CallNo'] = callNo; map['RoomNo'] = roomNo; map['callType'] = callType; @@ -55,6 +68,7 @@ class Tickets { map['MobileNo'] = mobileNo; map['PatientGender'] = patientGender; map['PatientID'] = patientID; + map['CallNoStr'] = callNoStr; map['QueueNo'] = queueNo; return map; } diff --git a/lib/home/home_screen.dart b/lib/home/home_screen.dart index 2ccf9f6..04aa2e8 100644 --- a/lib/home/home_screen.dart +++ b/lib/home/home_screen.dart @@ -14,8 +14,9 @@ import 'package:queuing_system/utils/call_type.dart'; import 'package:queuing_system/utils/signalR_utils.dart'; import 'package:queuing_system/utils/utils.dart'; import 'package:queuing_system/widget/data_display/app_texts_widget.dart'; +import 'package:text_to_speech/text_to_speech.dart'; -var DEVICE_IP = "10.10.14.11"; // Testing IP +var DEVICE_IP = "10.10.15.11"; // Testing IP // var DEVICE_IP = "10.10.14.11"; // Testing IP // var DEVICE_IP = "10.10.15.11"; @@ -44,6 +45,7 @@ class _MyHomePageState extends State { @override void initState() { listenNetworkConnectivity(); + if (!signalRHelper.getConnectionState()) { signalRHelper.startSignalRConnection(DEVICE_IP, onUpdateAvailable: onUpdateAvailable, onConnect: onConnect, onConnecting: onConnecting, onDisconnect: onDisconnect); } @@ -53,6 +55,7 @@ class _MyHomePageState extends State { TextEditingController controller = TextEditingController(); + @override Widget build(BuildContext context) { return AppScaffold( @@ -150,13 +153,20 @@ class _MyHomePageState extends State { voiceCall() async { if (waitings.isNotEmpty && voiceCaller == null) { final postVoice = waitings.first.getCallType().audio('en'); - voiceCaller = CallByVoice(waitings.first.callNo.toString(), preVoice: 'ticket_number.mp3', postVoice: postVoice, lang: 'en'); + voiceCaller = CallByVoice(waitings.first.callNoStr.toString(), preVoice: 'ticket_number.mp3', postVoice: postVoice, lang: 'en'); await voiceCaller.start(); voiceCaller = null; } } + printWaiting() { + for (var value in waitings) { + print("waiting: ${value.callNoStr}"); + } + } + onUpdateAvailable(data) async { + waitings.clear(); API.GetCallRequestInfoByClinincInfo(DEVICE_IP, onSuccess: (waitingCalls) { setState(() { waitings = waitingCalls; @@ -166,7 +176,8 @@ class _MyHomePageState extends State { log("\n\n"); log("--------------------"); // log("Current: $currentInClinic"); - log("Waiting: $waitingCalls"); + // log("Waiting: $waitingCalls"); + printWaiting(); log("--------------------"); log("\n\n"); @@ -175,12 +186,12 @@ class _MyHomePageState extends State { } updateTickets() { - List _ticketsToUpdate = waitings.where((t) => t.call_updated == false).toList(); - API.Call_UpdateNotIsQueueRecordByIDAsync(DEVICE_IP, tickets: _ticketsToUpdate, onSuccess: (tickets_updated) { - print("[${tickets_updated.length}] Tickets Updated: $tickets_updated"); - }, onFailure: (e) { - print("API UPDate Tickets Failed with : ${e.toString()}"); - }); + // List _ticketsToUpdate = waitings.where((t) => t.call_updated == false).toList(); + // API.Call_UpdateNotIsQueueRecordByIDAsync(DEVICE_IP, ticket: _ticketsToUpdate.first, onSuccess: (tickets_updated) { + // print("[${tickets_updated.length}] Tickets Updated: $tickets_updated"); + // }, onFailure: (e) { + // print("API UPDate Tickets Failed with : ${e.toString()}"); + // }); } onConnect() { @@ -189,7 +200,7 @@ class _MyHomePageState extends State { onDisconnect(exception) { log("SignalR: onDisconnect"); - signalRHelper.startSignalRConnection(DEVICE_IP, onUpdateAvailable: onUpdateAvailable, onConnect: onConnect, onConnecting: onConnecting, onDisconnect: onDisconnect); + // signalRHelper.startSignalRConnection(DEVICE_IP, onUpdateAvailable: onUpdateAvailable, onConnect: onConnect, onConnecting: onConnecting, onDisconnect: onDisconnect); } onConnecting() { diff --git a/lib/home/home_screen_components.dart b/lib/home/home_screen_components.dart index 3e697e6..3f3408f 100644 --- a/lib/home/home_screen_components.dart +++ b/lib/home/home_screen_components.dart @@ -1,74 +1,84 @@ - import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_svg/svg.dart'; -import 'package:queuing_system/core/config/config.dart'; import 'package:queuing_system/core/config/size_config.dart'; import 'package:queuing_system/core/response_model/patient_call.dart'; import 'package:queuing_system/home/priority_calls.dart'; import 'package:queuing_system/utils/call_type.dart'; import 'package:queuing_system/widget/data_display/app_texts_widget.dart'; -Widget noPatientInQueue(){ +Widget noPatientInQueue() { return Column( mainAxisAlignment: MainAxisAlignment.center, children: [ Center( - child: AppText("Awaiting Patients Arrival", - fontFamily: 'Poppins-SemiBold.ttf', - fontSize: SizeConfig.getWidthMultiplier() * 9), + child: AppText("Awaiting Patients Arrival", fontFamily: 'Poppins-SemiBold.ttf', fontSize: SizeConfig.getWidthMultiplier() * 9), ), ], ); } -Widget priorityTickets(List tickets){ +Widget priorityTickets(List tickets) { return PriorityTickets(tickets); } - - -Widget priorityTicketsWithSideList(List tickets){ - final priorityTickets = tickets.sublist(0,3); - final otherTickets = tickets.sublist(3,tickets.length); +Widget priorityTicketsWithSideList(List tickets) { + final priorityTickets = tickets.sublist(0, 3); + final otherTickets = tickets.sublist(3, tickets.length); return Row( children: [ - Expanded( - flex: 3, - child: PriorityTickets(priorityTickets) - ), - Container(color: Colors.grey.withOpacity(0.1), width: 10, margin: const EdgeInsets.symmetric(horizontal: 20, vertical: 50)), + Expanded(flex: 2, child: PriorityTickets(priorityTickets)), + Container(color: Colors.grey.withOpacity(0.1), width: 10, margin: const EdgeInsets.symmetric(horizontal: 10, vertical: 50)), Expanded( flex: 2, child: ListView.builder( padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 50), itemCount: otherTickets.length, - itemBuilder: (ctx,idx){ - + itemBuilder: (ctx, idx) { final itm = otherTickets[idx]; - return ListTile( - contentPadding: const EdgeInsets.all(8), - title: Row( + return Padding( + padding: const EdgeInsets.all(8), + child: Row( crossAxisAlignment: CrossAxisAlignment.center, children: [ SizedBox( - width: 140, + width: SizeConfig.getWidthMultiplier() * 13, child: AppText( - itm.callNo.toString(), + itm.callNoStr.toString(), letterSpacing: -2.32, fontWeight: FontWeight.bold, - fontSize: SizeConfig.getWidthMultiplier() * 5, + fontSize: SizeConfig.getWidthMultiplier() * 4.5, textAlign: TextAlign.end, ), ), + const SizedBox(width: 10), Row( crossAxisAlignment: CrossAxisAlignment.end, children: [ - itm.getCallType().icon(SizeConfig.getHeightMultiplier()*2.5), + SizedBox( + width: SizeConfig.getWidthMultiplier() * 3.3, + child: itm.getCallType().icon(SizeConfig.getHeightMultiplier() * 2.5), + ), const SizedBox(width: 10), + SizedBox( + width: SizeConfig.getWidthMultiplier() * 29, + child: AppText( + itm.getCallType().message('en'), + color: itm.getCallType().color(), + letterSpacing: -1.5, + fontSize: SizeConfig.getWidthMultiplier() * 3.3, + fontWeight: FontWeight.w600, + fontHeight: 0.5, + ), + ), + Container( + color: Colors.grey.withOpacity(0.3), + width: 6, + height: SizeConfig.getHeightMultiplier() * 3, + margin: const EdgeInsets.symmetric(horizontal: 10), + ), AppText( - itm.getCallType().message('en'), + "Room: ${itm.roomNo}", color: itm.getCallType().color(), letterSpacing: -1.5, fontSize: SizeConfig.getWidthMultiplier() * 3.3, @@ -85,4 +95,4 @@ Widget priorityTicketsWithSideList(List tickets){ ) ], ); -} \ No newline at end of file +} diff --git a/lib/home/priority_calls.dart b/lib/home/priority_calls.dart index 18b8695..35ae16b 100644 --- a/lib/home/priority_calls.dart +++ b/lib/home/priority_calls.dart @@ -1,10 +1,7 @@ import 'package:blinking_text/blinking_text.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_svg/flutter_svg.dart'; -import 'package:queuing_system/core/config/config.dart'; import 'package:queuing_system/core/config/size_config.dart'; import 'package:queuing_system/core/response_model/patient_call.dart'; -import 'package:queuing_system/home/que_item/que_item.dart'; import 'package:queuing_system/utils/call_type.dart'; import 'package:queuing_system/widget/data_display/app_texts_widget.dart'; @@ -15,61 +12,67 @@ class PriorityTickets extends StatelessWidget { @override Widget build(BuildContext context) { - final firstTicket = tickets[0]; - final otherTickets = tickets.sublist(1,tickets.length); + final otherTickets = tickets.sublist(1, tickets.length); return Column( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: [ - - vTicketItem(ticketNo: "${firstTicket.callNo ?? ''}", callType: firstTicket.getCallType(), scale: 1.2, blink: true), - - const SizedBox(height: 100), - - if(tickets.length > 1) - ...[ - SizedBox(height: SizeConfig.getHeightMultiplier()*1.5), - Row( - mainAxisAlignment: MainAxisAlignment.spaceAround, - children: otherTickets.map((ticket) => vTicketItem(ticketNo: "${ticket.callNo ?? ''}", callType: ticket.getCallType(), scale: 0.8)).toList(), - ) - ] + const SizedBox(height: 20), + vTicketItem( + ticketNo: firstTicket.callNoStr ?? '', + callType: firstTicket.getCallType(), + scale: 1, + blink: true, + roomNo: firstTicket.roomNo, + ), + const SizedBox(height: 40), + if (tickets.length > 1) ...[ + SizedBox(height: SizeConfig.getHeightMultiplier() * 1.5), + Column( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: otherTickets + .map((ticket) => Padding( + padding: EdgeInsets.only(top: SizeConfig.getHeightMultiplier() * 2), + child: vTicketItem( + ticketNo: ticket.callNoStr ?? '', + callType: ticket.getCallType(), + scale: 0.7, + roomNo: ticket.roomNo, + ), + )) + .toList(), + ) + ] ], ); } } -class vTicketItem extends StatelessWidget{ +class vTicketItem extends StatelessWidget { final String ticketNo; + final String roomNo; final CallType callType; final bool blink; final double scale; - vTicketItem({@required this.ticketNo, @required this.callType, this.scale, this.blink = false}); + + const vTicketItem({@required this.ticketNo, @required this.roomNo, @required this.callType, this.scale, this.blink = false}); @override Widget build(BuildContext context) { - return Transform.scale( scale: scale, child: Column( crossAxisAlignment: CrossAxisAlignment.center, children: [ - BlinkText( - ticketNo, - style: TextStyle( - fontSize: SizeConfig.getWidthMultiplier() * 16, - letterSpacing: -9.32, - height: 0.5, - fontWeight: FontWeight.bold - ), + BlinkText(ticketNo, + style: TextStyle(fontSize: SizeConfig.getWidthMultiplier() * 10, letterSpacing: -9.32, height: 0.5, fontWeight: FontWeight.bold), beginColor: Colors.black, endColor: blink ? Colors.black.withOpacity(0.1) : Colors.black, // endColor: blink ? AppGlobal.appRedColor : Colors.black, times: 0, - duration: const Duration(seconds: 1) - ), + duration: const Duration(seconds: 1)), // AppText( // ticketNo, // letterSpacing: -9.32, @@ -77,18 +80,32 @@ class vTicketItem extends StatelessWidget{ // fontWeight: FontWeight.bold, // fontHeight: 0.7, // ), - + const SizedBox(height: 10), Row( crossAxisAlignment: CrossAxisAlignment.end, mainAxisAlignment: MainAxisAlignment.center, children: [ - callType.icon(SizeConfig.getHeightMultiplier()*2.5), + callType.icon(SizeConfig.getHeightMultiplier() * 3), const SizedBox(width: 10), AppText( callType.message('en'), color: callType.color(), letterSpacing: -1.5, - fontSize: SizeConfig.getWidthMultiplier() * 3.3, + fontSize: SizeConfig.getWidthMultiplier() * 3.8, + fontWeight: FontWeight.w600, + fontHeight: 0.5, + ), + Container( + color: Colors.grey.withOpacity(0.3), + width: 6, + height: SizeConfig.getHeightMultiplier() * 3, + margin: const EdgeInsets.symmetric(horizontal: 10), + ), + AppText( + "Room: $roomNo", + color: callType.color(), + letterSpacing: -1.5, + fontSize: SizeConfig.getWidthMultiplier() * 3.8, fontWeight: FontWeight.w600, fontHeight: 0.5, ), diff --git a/lib/utils/call_by_voice.dart b/lib/utils/call_by_voice.dart index d58ec61..557d3f6 100644 --- a/lib/utils/call_by_voice.dart +++ b/lib/utils/call_by_voice.dart @@ -22,11 +22,11 @@ class CallByVoice { final characters = ticketNo.characters.toList(); for (int i = 0; i < characters.length; i++) { final no = characters[i]; - if (no.isNotEmpty) { + if (no.isNotEmpty && no != "-" && no != "_" && no != " ") { await Future.delayed(const Duration(milliseconds: 200)); await _player.stop(); - await _player.setAsset('assets/voice_$lang/$no.mp3'); + await _player.setAsset('assets/voice_$lang/${no.toUpperCase()}.mp3'); await _player.play(); } } diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index f7ea4ff..1d5268d 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -9,10 +9,12 @@ import audio_session import connectivity_macos import just_audio import path_provider_macos +import text_to_speech_macos func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { AudioSessionPlugin.register(with: registry.registrar(forPlugin: "AudioSessionPlugin")) ConnectivityPlugin.register(with: registry.registrar(forPlugin: "ConnectivityPlugin")) JustAudioPlugin.register(with: registry.registrar(forPlugin: "JustAudioPlugin")) PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) + TextToSpeechMacOsPlugin.register(with: registry.registrar(forPlugin: "TextToSpeechMacOsPlugin")) } diff --git a/pubspec.lock b/pubspec.lock index 8b284a7..c94731a 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -14,7 +14,7 @@ packages: name: audio_session url: "https://pub.dartlang.org" source: hosted - version: "0.1.10" + version: "0.1.13" blinking_text: dependency: "direct main" description: @@ -190,7 +190,7 @@ packages: name: just_audio url: "https://pub.dartlang.org" source: hosted - version: "0.9.30" + version: "0.9.31" just_audio_platform_interface: dependency: transitive description: @@ -365,7 +365,7 @@ packages: name: rxdart url: "https://pub.dartlang.org" source: hosted - version: "0.27.5" + version: "0.27.7" signalr_core: dependency: "direct main" description: @@ -427,6 +427,34 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.4.12" + text_to_speech: + dependency: "direct main" + description: + name: text_to_speech + url: "https://pub.dartlang.org" + source: hosted + version: "0.2.3" + text_to_speech_macos: + dependency: transitive + description: + name: text_to_speech_macos + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.1" + text_to_speech_platform_interface: + dependency: transitive + description: + name: text_to_speech_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.3" + text_to_speech_web: + dependency: transitive + description: + name: text_to_speech_web + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.2" tuple: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 26354ae..0e196ae 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -39,8 +39,8 @@ dependencies: flutter_svg: ^1.0.3 http: ^0.13.0 blinking_text: ^1.0.2 - - just_audio: ^0.9.29 + just_audio: ^0.9.31 + text_to_speech: ^0.2.3 #signalr core signalr_core: ^1.1.1