From afb1194173f2f9ae180a4fdef97574e06539118a Mon Sep 17 00:00:00 2001 From: denglihong2007 <2639367181@qq.com> Date: Wed, 12 Mar 2025 01:23:02 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E5=AE=89=E5=BA=B7?= =?UTF-8?q?=E7=AB=99=E5=87=BA=E7=AB=99=E5=8F=A3=E7=9C=8B=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CRSim.Core/Models/StationStop.cs | 17 ++ CRSim.Core/Models/StationType.cs | 15 ++ CRSim/App.xaml.cs | 2 + .../Assets/StyleImages/Ankang/ExitScreen.png | Bin 0 -> 48145 bytes CRSim/CRSim.csproj | 5 + CRSim/Models/StylesInfoData.json | 11 ++ CRSim/Models/TrainInfo.cs | 2 +- CRSim/ViewModels/Windows/ScreenViewModel.cs | 17 +- .../Stations/Ankang/ExitScreenViewModel.cs | 55 ++++++ .../BeijingXi/PrimaryScreenViewModel.cs | 1 + .../PrimaryTicketCheckScreenViewModel.cs | 1 + .../ChengduDong/SecondaryScreenViewModel.cs | 1 + .../Fuzhou/TicketCheckScreenViewModel.cs | 1 + .../Guangyuan/PrimaryScreenViewModel.cs | 1 + .../Stations/Harbin/PrimaryScreenViewModel.cs | 1 + .../Stations/Jinanxi/SmallScreenViewModel.cs | 1 + .../Shanghai/OutsideScreenViewModel.cs | 1 + .../Stations/Zibo/PrimaryScreenViewModel.cs | 1 + .../Stations/Zibo/SecondaryScreenViewModel.cs | 1 + .../Stations/Ankang/ExitScreenView.xaml | 172 ++++++++++++++++++ .../Stations/Ankang/ExitScreenView.xaml.cs | 34 ++++ .../PrimaryTicketCheckScreenView.xaml | 3 + 22 files changed, 337 insertions(+), 6 deletions(-) create mode 100644 CRSim.Core/Models/StationType.cs create mode 100644 CRSim/Assets/StyleImages/Ankang/ExitScreen.png create mode 100644 CRSim/ViewModels/Windows/Stations/Ankang/ExitScreenViewModel.cs create mode 100644 CRSim/Views/Windows/Stations/Ankang/ExitScreenView.xaml create mode 100644 CRSim/Views/Windows/Stations/Ankang/ExitScreenView.xaml.cs diff --git a/CRSim.Core/Models/StationStop.cs b/CRSim.Core/Models/StationStop.cs index 0d3a553..5495765 100644 --- a/CRSim.Core/Models/StationStop.cs +++ b/CRSim.Core/Models/StationStop.cs @@ -29,5 +29,22 @@ namespace CRSim.Core.Models public string? Landmark { get; set; } public int Length { get; set; } + + [JsonIgnore] + public StationType StationType + { + get + { + if (ArrivalTime == null) + { + return StationType.Departure; + } + else if (DepartureTime == null) + { + return StationType.Arrival; + } + return StationType.Both; + } + } } } diff --git a/CRSim.Core/Models/StationType.cs b/CRSim.Core/Models/StationType.cs new file mode 100644 index 0000000..37d9183 --- /dev/null +++ b/CRSim.Core/Models/StationType.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CRSim.Core.Models +{ + public enum StationType + { + Arrival, + Departure, + Both + } +} diff --git a/CRSim/App.xaml.cs b/CRSim/App.xaml.cs index 860e1ec..b934d40 100644 --- a/CRSim/App.xaml.cs +++ b/CRSim/App.xaml.cs @@ -63,6 +63,8 @@ services.AddTransient(); services.AddTransient(); services.AddTransient(); + services.AddTransient(); + services.AddTransient(); }).Build(); [STAThread] diff --git a/CRSim/Assets/StyleImages/Ankang/ExitScreen.png b/CRSim/Assets/StyleImages/Ankang/ExitScreen.png new file mode 100644 index 0000000000000000000000000000000000000000..3b9035d47281cf1b1c9ee847ff817bbd098eee15 GIT binary patch literal 48145 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%0Dy*Q}O>)o2I}GzJDd6 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

)K zk*Fm2a3&iW_4~#Ox&M-0A2@^s>t$|&MLVymHE=26!<%d*SHGhc{#;sS`A9#NFGIZw zvQWz^o;-gTFlTm}lMa;S_A}%0tz}YmH@_KlYhL4&SOD~E$@f(2 z(H)lHkcOFm@(MM~J6FTZ8+TxZEzV?iC`rv+x*XgG5XsQP^mT*XYIZQD{ob4^A+s3e9A zQER^8p7*6Xap~B$XW@-sRqUuLFZqy3VwjZQX~1?fim9}njL1qF!}Z*4v>Kiz#*)zW z?UA)1p2i?kSkB@$-IV{bLkK8%K2-)Tc!W=f^h+N-e9lJZ5=i%sB#Vd1XJvVP^#KEe z8i(cN zb-4;Tth=vdskXh(ak!aFmA~j5e01RBfB1ln0NB%@?D_knm_1{>{Sam!=9PvP6UJVH#J|N;Dw%+@NQxg zg7SEk7p1Z@G)^gg;1l#0rflY2XRMFr!7 zwPT4!DrdydxVN~7=Wcq!Eu*BIoQu+-pJ?T{S%#I$xV|F!Yo{>08BGnY`1OPF$-kj% zX?_q)g#HUT&`C<2goAFr4mU+@4s54;k8HCVinuj^4}r%>Xj#%(m9JN+5!fyv`P|)4 z45jOucy{aRjQm(|k=$dn;t?J$a%4#W*1JiS5=g7{MX>}iKw1h5q&f!q!g6jTIMh;E zITof<7(jiDGJNp7HqDum`}#xEQ~)ydUZN`)PU+QjBb!9&&(%zsKP0vt>qSI? zq%*8pbpZB5>PW|E%xBpz&&?2HqpR^OTO~9RCZ< z2HzsO*a*HbBNEXU^D`%C3aNoZlfAK_dBwqjzd;9#(B(NFgqZntOUoo$zJo+M;!Z^a z(FYn@%~Dx6Vf;^GVALz-ke#(x=a&t5*gF->KOzJx4W%3FFA^WQb^Gh=BGH2mUcyc!^*(-~8I=Y@vwV5bcmS1;0X&e->l>ie1V){d zG>b~jyB2+D`i@fm+q-wBJBzK&xb)8^wea|#5RC7%J}*Sfr_Y8Qc*jcxQ&Zl8lQup{ zU;Q&c@g>CbS0Ulkd0jw!2?^~2;X!#sq2+9~>=DMaISm(K_T@sxk!}8t#rs^NZ%BJ; zkem3Sg02uzKdJ=zB+A&bI^n%hL4R)|jDq}Pxwx)HdI`&ryWXMG+(|Xk*WOYlLf6{c z{ru2-0tx|RBXfdC6=Wgi3fjBM0tCnk8SX|w|Gx1_jIdv1>IlL0+podPxiWB%{o4=) zg9YW8o;9w-qO0FpmSI2OA9Ts1``k&2LoTM50v4o|deD!thk=`4HwY8Hsh<~86@Ne7 zpc>FXhrd?KuAIy-LmbOIAsDQJC%qVbUFfahs3b4$xQP7F{`pflmKPkorqa7l?YR27 z;k3vMo8o)KB@S>sT?E<|)H-YPvFPxCDgC*)?AIHcV+%wYAwh2yJpATVmyZW`UDkz< z?S=VHmCo2iST)+U3oC8qT7IRmN?~&*@giTC2AmOTYn1SF`ga89!{E{6T0&BSG?MlQ z33)qm$)4VGSTPU1PfjY9v`k#!O>46Khv%|U*-#by>J^47O06}QB{ue(;Y`VIS;xIG zG$-RKY`{d#QE;Oq%VT`RB()E?WQw2!Zd8?Py%;48J>D(7Okx}%SJU%XUq(W*oRZii zkXH;d873Pb(h5)xYIJ2k&vNR!rtq7ViVD^+P=Ithh>4SrP+0N2`VG@R3f)AY=vS6= zgi0{O@2ngvRU8xYM#A+5{fwKiQ8D5#w6;LY2JJrxATuE2&4IBv z@#Df~ys|)&+1W$TszKc58f6Jw=^i+bF+ zjQ@}qg|jqmrDwyV)A=22XTd|+n6PgUrokVDw$Boba#a@NeT0&!6Wbu`79l6e%HCa| zqUzVYm#knkV;?gfDhspm6fE0*7FLFw2s=dYO+V zXI@_*&*OQ;*Xb#V5{%NMvvO!w+M(~mL1LRPxH&BPE`>c6nq0{An_U8`URLI}D(}yL znO|Sl4HytnR*e_k^39)4gm-9{o_oO~_G+(TY^i20L^8vwQlM#gre>0#CdA6$OxwTg zhf0Yx^XGX9})1YPs5j622c1t1}2O zi*GJi{M5bs!Va-QXdd$ajtqRwWocX`FrqXQ-=0`fu0h;+;;{t_*P}hOvGCX(X3I@M zU^)eiyu_qDvSBh{+2(viNO(5jUn;d3$|Hq%GUCFr86|^AqYJh|c*$tdyhC5LhJOUdlc; z#I(g-NP3Ou7$t9nWtLMGN%-x|MqZ_Z+>CFf>+&UxX40JCNFn`m4y{%S!~Ve*K?Z-g z=2boD%&K_ zUbIZ`)U@9@-+se>pmr}Z!y&!p45xJ-Qq6wKDv(;*^?u@y9Jl)$KLXdGsJT()#lhGtAZo-#iG?gC_Vf<8qb1?Cob0 z8l5|6U`!FEW#)U=nqe~__y~yLQ1`lLiHrj1Pz3gEOAmly?F_q7OWIB2<@#YzsIWG% z&P{KYjoS(Donl9U)_kLtURytI?RkTUj=8j%PLYQI_$*$aAz7NbCUa{e-nQu(tgwVR zRnn(B4!4HY7s(v=76` zx8y}#J9u^mn~Pn&iH=-Vr*~AEo3A1?j2vJ=-q}<5R#*OyM!n*%a^eunetP`qL{GWo z74S*z<43*&H+xrx=)4fF73J*7k&@rB0EBDp>OIuDk5Ikzh)w~DU~PCV`}UK8^eapX z)mHJ4UpXQ&2ByWn{)X8=G=W{@-G(nBOwwAZW6kBC!ffX#6mPn-e=#&QerQGgW5WN# z(5C5py4+>TT*iq2CG3BhfS>;gMu*cEU;ne${S|iFu(z)Nv)8==bepJrKT^Jb?R0I} zr%854bbZS#|Ml?|S?V2ZIVL;%F+L#a@SX{o{4434Qkk^V(GEV5rrO;mZ@u~V43wBK zQx_U$ODe1;SI+&TLa(#_m5dINvsUs2R|8LW&P<)Nh%Nr3;3zR*rqV3^mo`=wuxvNB z&p7@g-%LMz<+6N|yJ;hMM)mJoBLCkAfuKWMX;-AsG@GqN|-;t)c<$On@A$We5+?WZOy}i?Y#_SnF4#WLKM&_iV z&CMW*TkcTg{49c}K2?sC+264mkVxPzTX_e0{27k{kvMyQcDY67{p*uPCOWr%nFocR zg{p8v&Zyaiuf>9uL~LWiI!5Q=+r$ zeN~aInvRVpBT$6|SAMKY`6N~F*mOid(53^dX2;WSrod3+kr(8CfZpIFvr*8BowsHi zKwBIN(I57V88xHrm}%{vS%(~W;Rb%$d=>v};yCnY$wQO-ely`s*!8%PVtGR;N1c9` z%m*)s^3g%Me9t|zM5^e!|8ZRCgqJ(ri!$S5OSCKYTBUrWfhAPw%-aBs=6%jeQ#QH8 z{oQsBtl7Tm6RgNd(n-Gtl>bq>uXfuD!8Sy~J`@XZ@HTYe#k4f^H_ZPF? z59E022t*a#hbm<;b0`OG8>I@ntD!rd;(sAJt|CvGW$Rlx6OH~HuP+?hDA(_tZ&TgS zp5vs)kQHPW_f9JUhin_)l5$0Hj&5B;5`*c=!O=a;i(V1;J)KJ~{&oY+&K|h_f+Ilb z5;ENXXCWt4<6d=3T}=^MoMPt?z>zK|>bg4j88y($TH!<@i8ylUJsZXCVgyiyy)PCG zp!MEE(^h-9FYA=bi?QDyZiJC@ijZOliU5~0DRANhi1+7P%QgLbKpNqD18iLika{@u z_O3X--_M}_IcyaJXs687m_vFRQHqC1nfjM|i5j(K&Yr~L250tP{m3!rI!zCjIF@YY z2;cqOixJXo-I!yex;SFNgIlvisPLeII4e++ShzYL1I?hvn+FRNdpm|KP^h{tjKVHS zV4?xwq0QkYdP?X@px8kSUSXDeu%ocjlhFtt{?nBift`LUn0$B>M1T=!k3VYUIsHH{ zJ8T)tzqbjbXqsQMIYX}~olo?_q9aY?BuJ^uOJJ5?+>tE2ES9GcK4F6(K8;FQ zAOwTkAGd0!i`=jc70LNcp4MF|nWKkoL1!&rU_M)1IZLrLza#eWlDpcYz}SNj6Ge0d zGYnrabBq63zM0?-o5C0o6&zQu_@3djdi&h#HC^r`XXmwgB4Jp?%xK(|qc_7s@!aWg zV7q@mt?rDU^k-I*pz`J-_~81_rS=mF12z`FvPBZ!V>;xfsk}HJdRtkj`$T-bs?_ap z`U&RB#$i0C3wk??Jyw}gg*#!Y5d%2%ilKuJ6A!yS~{rAi|yTN ze&hZ7<)S$f1?~)hBnc+H|FK% z7|^qh%)H>iF;%Mjx*7L+4m{0ecXMjiIP z+Jk@CTo6M`>qy|hvndsfYC7QCmk47V&NE@#iu^%1Yc1{#t){5#r)saxRgF0X)5XKH zLt_eljAGq%&`n{xRI?;9VGQ5Y@nUV5A^KvKJG3cvm<`}q3aJ4h%1W#V7y zDvuC_2A`J%qvkyc3Do!po31&BzrxRhIyB>~T7K{Sno#6b;y=1i4B*0jf8@H{885bU z`6*=R5uXop?N5Yfx%u`@w--BwG;bIq9#Gf<5TJJ%AWtjj3C{dIsEj27A!)2q5rcWd z8&Pks{Z|rs_{!3}-FpX>cs918eD$PVY}MEl+atz#c+`8rbey7s=yBv3`hp~1q+OrwDJ(KU zIa_C4=ASURtDbz7v*v=)k*UPjt+=?6qeZ{ngCnc2r3E`g50$uo_~wa9e6INR;5~ey z9UTsn_~S2*wTX~2zq6?Kbp-w3;`p-7VxU}%!#jHB zTl>4kLB;=T>e-qf3RyzHLMB6+OUerGIrj9@3=`!m^>DVe@fAYFCq_9=01U3g;>!u? zmsERc07E&?K8PMDY{d!=pxpoV{BA22)!Uau4j|2%4(RWPs5MT;5ZYII7sgc%wKEHd z{lbw~#peMukGqT2{TI8Lf#5VNv+^VK14pXeo8V#W^PG%Z+U13?`=&~P=Jfe$OxqEfvdCIVOxsie4!H(`^m3);;JI-tn zw+qxFJ-x}671LSj=CWp^8Res@zQ}E4u}8SQ(TR+bJs$2pnghdPfvnqp&FaB zNnlWmO-~Z~S~b^BGG+)LS?=d-qX*lHn{;0l54>{h>hYG>FUiBna*U9WucAc1mp(M) z3$^g~3gRI2;3l;<#ZvTIC%-5DGMqnL;I(^cX&A56o6Ah9W~BB~>vv>lr~4z-{8gqr zh?InHI69A?R?`wgLGU#)_MP9A?C5IB>dP57{D;?goB07Jzl9@G)lQl{RX>ypwE}i5{%~h37jJpUjus4eNz0Fkt!z#9-9El_Ev;sE ze^N(e77 zupZ$D&x{GO^tC$`m?1yig*Tv!3!XzHncj+OK_n;a8U{bzB}bQx@P?koKn{ zGMrY1q4BofQq( zZWyPbZ7YJeCnU_pS`Uv^oen`84EAqtM79N`9#;lOBA#9kA3WmNOQk|{n%}3<)Rrru z4Gc!>&?zDw%cN@$50;>dS<%|>sv>^{{+6JpTg!n<^wB*m zqI2&{w50xYOU09Kl8k2!3&^VN&*Lb6hs|=gdl_z1VKC2kY zqEnDcwOcXdS>lu-x5m1?es1wF>=+TD;I{7GXZ_~zh@bU-lXm?){tr&wpQPw_Ri9+> z*_T?YG#LJ40phFP;BF^u3681neCIr-9?MR4tGYvh*$mT4O@ZI{@6p1qG;pnOp*8H- z$tyN}ZaIVJuGLcHduPi0<3ZC^g-2qHAuZ~BP?2>dKptFvr453W0Sc^Mq+PO4Mg}ZH z>2fo_(p-S`;S1%*2YI9x$R_72KG!tG@nuFy%LW07e*_PIx|{O-J%XafP<1UembsHP z6C~@FJO=WK5;ZOHLDeHnzaz5tDsRWNXci6Z^%LjuW$8qvRh%YbRs0^&^6WMy1ccAk zvIMbxCFC~-Q>)3=c zgGSWusWdP59cAloQu~H!~zr=lyx2e}I17+XVcR#G%5EX0+)T9P9MRKYzjqOa{Lc>o%Hj zy4=d*OR9mjRS8N@WcL@m=F}`jyv*F)qh?4G=d5ET0e-1clTB2pkx{n96gmsMB!+t# zZ2Z?`08uHfk4`Y~&}dG?vHks)Zic~$vbufa%xVA35XVuJ*axGahb{(nF*;}|TZZ>` zUiI)z$?w|pN0G<$KvyR}PfZ5lsa_fU5_d$eCFi@b_UR(?k?cD6sxP0uUQhf*gs4Tj z?tt_jM2gu|Zvlu$n%rS;;!D0n-BYjexwXl`^ibqca#>yTDrm<&wMFEKn&#c3~BUf)MFURx=mfYfG5Gt zpXd-AJ7;E;r4Ki!5EuAefjAqH>66UI*&QH*Niq=a(_9Y_lh7A59H6czFfC5Pm>XJy zadHs`D%q7oi8yc{c#Qsf%&rX86$%Bh$6%EH0}=hCEdg_tc+Zw2rs=^Y?;j~ub6ILY z$@gno`3Iawjgxzrn=&vz*Bjvk7T-~1Zfk%jqG@ZhZ%*Hk4;M#&8jWrtf#nIcgnpT zWNw4;WNR9|_HaoGSQVU&aT*-@EGQ>xGx}!+;5dQ+2r511yfYqy$^h)gA6_}M2*fQ1 zRo^{*p`MwO;!U4;_hz+gL0QhWJ93CYTCwR?W>uk-5uZJ|Pr`#~MJal3=etIxFwzJ> zwWMuRwmZwAcDXmlS6h`lxpt>G55F&2$HW~L5zBvfq&Byk@xCgW{4V4aSA%nb!GSaS znw3^^s+84mqprGq?4*k4@|pL&WeGR0V0aTUipO~bsQux!vEw>iP0ghl-8fOa3N7?W zjxxX7K~ZA}Y?lNQ&nY#p4j~uk01CwSmF8vev7;v2*Ie!H$<`@FgNDATsr%`dNhGwD zbAs6@@{VN0{dvo_T%cr*NZzJjhRoH|UO6X_{qbT@Jd00>=Da0V9~`GiVGC;SbwscEY` zL;&EvFpXSZ>bed-CYJ0jzWkucRDcaLlB`38l}A#`!IREG5NCQHLLOxXa~Kms`3Bxt z8Uc@yTvh`Mj|oIi*>yt%3xhN1eiJwjY=YC;>fho0MQr5f&D}%Srk9mowoquUpjX|bb2pE*sH#aCposrCB%&2F4t`| zmQ(M#w`UOTa=nmTn{KP-R*LW0uoGcS_q~+|f((?$%TcWhsU-2PaAfU%=n}vTiN(l5 zt5n){XHU|-P7|h7q}aI6wzx`g1fZtDE14SV(!t8;n&@}EyNRNKnd69LFv2@jrLA8@ z{Oq@|LfTuVKg`N1EoR6&hq>1W6o z9}j7@GI!ABEoe`yzWp)|tF3VHJSU0AiF~8*>pGQ8fb4Pp1vpwe=RIO|JI7Cc(>P2KLE{lL@0Zx2^( zr<(g#r82A#L%iI+-dHDS=|;%WIL8n@#EqUC3o>6AG-6$c3HvDtitp@fc1u^%YmUj;C7$kU5uER z%P0n{M&!bI{Wsq`vR6N**S{@IKKb&;>go%4p(7!G`_iTUd$NVuq-cSubsp&Ien8U6 zq{oqxZ;Ftg;Vh`HN+V**V6j5H#0<`{C`-@`Qr; zEu6+jQ6QA$FWFWx%$`s51may33ePfMV@h%I*cpOTjz-baA(E#f;ay~r5?I(g;rCPV znti7Xg_Fa*dB-LqHcv`1+W*+(7}}L*B(mDC#X56+-^30?fv{P-(avhUN@$QcAeny- z$N`^R-Qwf4KdBu`#TbW1D#~hJ*5fCI&$27-PnT)md**Ee}rQnL!^Ie2co9A~EawvY5$HLYP5%*l8Z=sZf{p_+*N2KR<0!-5s zuagS9?fbgj)MpmnseM|cx@!;neLMR}S;h&&+A5X8x$h^V_n9H)w(YPv6dP2R`AKfP z{NDS;#j9xgVLMJXU19cZ?woNGgK~1gd|CK)Tp(M6;mif^%N;)4R`Rb za@9~k>e4?cIHKx5J}NjtE!q8L$#s4RXupPW+!sF^9r_dlj~U6yNjU>N1V*i+V`#T3wZFee9Hce zzWLpn($Lx>!@;kNspkZ}?6IFdoz(F$Cgoiy2b{ZQJyUy2$aEX83(AwKB3+{fI90eY zG$-*|0-S0d3OVB47Yc>+jSrqWE>+8O4q?dn-F7kctd8lCJE+aHD4t7;SUMvHu!ykX zlR-BF9eV=#N>#ddSbCh~d2+8*l``{*0@Sw>Kzvd{4O~jw=wpqHGd&4};dw>)U8`;J zIQA{`)u8o$d+M^Fi5c<0gL#xSKCAH5R%{3d>ze6E1odApn_b<4SI**8FW9k53OfZf zYE|m;G*#On2_Pxc79Eh8^N(p&quf(|+s{dN^NHOyDnNCO^buZJ0@}c_!=X z7=wlwu~fyk0i!F4h@H7O8IK+lku>=Q1Km0o7F8X5bx%K25t>~299}xPjCK{B>+EGk z4+obFDmD_~dV5wYe=mIm5miynI!vR1=X3owL&iHEC4JI5rNRes0LLRVvn~|w;hT>f zn2$OTza1;s+B(GNWfs|GE^dLomAF!fti<_@4Jje1oeZa^reuT(%K)7n!zI#x-jKoc zeDt4?|2?TTJlR0+@|xsb9`o*|hs)6A0B&v(vurQiex!QE{K(A!N%9|*xFwi{5+IE2 zaaQYQp``EMm~?h!H~^M(z%d$-?(-? z6}l?)8837eWkTkDxmIzKR^S)fhqV;Sld#!tdN0iDxtoPZwLMv41tM$*^(`;MWKb$6 zUNBP9It!U{7)e#cuS3$dqv6GL(jd4LP-x3f3rSd5gANoWG@-z?LbLaf6;a35hX(~s zG^UT;P7rJjeArh<+c4|G4`FW7={@@z?4>Em-gQ~=!-^@F+UocZPP7OFbHl7fa2=35 zxBOxNr0EL>6Y^4qKpqEN@Ti+bML<9j`!z?naA@A4-Zx#r23D5VoV?x`@QAsVD`zTT zGP?=ky8oORdc~NO#0q(4E{YXSM341{wRiTz>8Oy0J`KJc7mzG4Bzg$nF0*yqD=9(~ zTVp3H-#dPDe|z^SFdc9%um@XpBr=b1c$H#On>xIClyF;0TmXy>i}2WwE1Ok+BBrAP z2{eWg$V}(gXJkJ5|MiVYpZf)yBMQGnHjr9-x&Qij?{&pPdz2o$gvsa^<*v>>!ur!4 z^&puckGF_IH;^)w0sphw;@ghQnrZEGq+s@R@II^Axo;J+*j2}sDNO-!u>}Tt2^UD+ z@po|dA1Sg+2j!5%`8Ik61kDcOk(uiwAfD_ZEwP1ROOnTu5NDDC z&3Y$g&pD$U%9?BUu5%v2nr?ca^(ynvCWV|P%i-h4S9!%y=|!D>r11jq?-Pk^wP>WX zeHcnVc=wVA7Y&&NIsDDLakw>5U0MpRCX)-1xP(=|ST=sJoaUv-*s!Ln)l*83u_1i> z@219nDp{u2i`2CSl1z}SDgx4@AFmk`L=F(cG^Wnwc~~tZBx;Rh6H1gcnCVFB2M3Qp?mherRpvu?oqTf?!JXP zVdetZ$)wN;#G$Jr{k}@cbgT?(&$UmARy`@wlz(2sF5M}nNg3PY%HYSmuOTPctHbbivfH!icu0HL&`Q*{3`->);-%^H=ls0rKuW>e zy$%XYX3!fnC9jb7d)db8ebgX}_Hk2CS8~U0zM~D_DwOfl#$&uuQBWThJ@{}9qWp^W zhaJ3D%ro`id&YE(o}lEWvBBD94t9=4DV`T5VIsv}M2xyfpDExS-jsSGrlmgS%@Kh- zr=tn7QvE8nLuNiC8N)0af?8<(p+JuZ*O>N29FxG!<_fb0XClkOpTB}7@7uiAY(j?k&DTGh(4xrfTaX7trS zi%^hZ`*+LT=N6j6Oyo^?z%b7*t}>er^h^zl0~7u6<40=EFYo^MT1t!(iyEMG5m994 zKh7$n&hI=1x4blA5sTBDT5I%#! zQPjX6{qdiU-gg2G%$@G6A6Wj^DXh4RSc+W|O!}zY|3)IVCJi*K<@@uy{reeY4#2Du zieBlU{O^fSS%C($lcgWY3jcm42|Ec)WFcnh{`XRV6RG+D4SGI1MhOO#N#^kHiYc0G z)#(@rNR+n_S;k!b8-T-lkPYrz2>AOBr_C-;0F_Rn?92Yl)x-j+HFlHbCs(Y zqGF&F-!j^AZ66$E_+Rx>#lN4#-oFuK?hzBo+QE7|RY5Ae0BPTebf99;?Khp%b`bDd z)3VNupAI&6kKPp&Epn|5*wAWk4kFa@e%X_P@&;s=dG$LFs3VAyx~1mQvd*h?s8HXk zDTw44W6M5v^Gfp_PCwqQ+Ftbf^qD?7pDJDI?Cj&2HBNluj0WAH*xPF^{>ih}S1-(9 zPg`?Sd!h?23$><(K;P!)tmKd2d*63utYkID8WncM&UAeCbJaVa90lRc>b^7iqV3$CZN*IZt`RBQ z=@!?@JxGjje{rac<%Ztte1vo zMOV)5&il9y8=1?G#M-~!kH)Wi;Q~j59OqM?M2}$vT=v!>FKv-V zPo@=XE-BVGXA4tj^*-d`O;F}=J#~yQ5G!@LT6W|c_ID>8UpSP=R?;A(s<(qQAqhQC z{=1Zd($QPvyo+iFer3~g8>w)%A-I-y?Z7TzixS2)0_$qphrD$JI1+aHK6FE!H-h#T z3-_5%D6p_ua>X6k6udQaoNU~Ax9c5Nd4pe!Md{S`$I zTeNn@w`ehCInS4ucC~mnHF1R3Qa0h6<3Br7NAS=paCcH6`+o{&L`)Rtu*#^3rfr9R z$L}TY_ahN=;6`huMt+Kzmz?wYTzHVqW3GMAMIw9UjG6hPSjD*lYDuZfXn#{s(ZX7- zuAlc{z-XsdLA}gp7tZ2a6I?;XU8NZ!{IWCVKE0MMI@8VvIT7;8ZjXP^Z;jmP-tTp= z$htLht}Czv-kmq{)Oj*@l~Z(U(rY^=8;|8NXuLP; zY7JUasta&-;AFE`crLiX`dH!UVUbmqpvgek3#!yRkt!W=n#m#h?VI+jk|rw&B&*!3tGqI0Yhh}+8L}qS)y6&1l`{L2P1#5PTgr>`=Dlbrt&8|A zKWS!vK}f&-WtXFp(|kp>!Y z$um(3y?n%YlX6!wnTb4K?O0yKpZ%}oDM2;DmUTaonD@cV;Yyp@Y7@EDz!kbZXSE|q6%qntS>->1sxnL%BpqW9+@AOj7IRnv2yD~yw`$TsRM)0>?T3YTkXlJIa|1=PzWM_lV)&Kckf6PGs&E`bA<4 z_WP6S6m~@&ArWI3!TPF%i#&=e$PeL2z;)hSYN6$I&}2L`J)W{M=m#2M|8w9A&l|ar zC+!rdm0DijNy)RQ2)zSBUOyE+c z=bkA5$?{=BVcKUJb@_J;rraY86S^$(!F2)eB|{4b;+^8khmWZY+Ydhn@Rl)i`5D$M z;x#())dy(ROAWA>Z%!ri@mWpzlA7Mt^g9qILuDs13iXb$R{&Y(q;9loSu*)nfSc*V zO>@o9yjVM-XEf%wQ#k{wlBMoXQN~?)*KOIOLk6@h`Dr=gxpd1iro}w8Wp?>uxZMY% z*G_WKZ>VAt5jE*e9NULShCOsP;C5m^my1?^65LYC;lo-K8!8F3}*{ezfen)}s zdbONOfjzh42wC4cig^mQxns0LWL#TL#2ddiE{L1ObqB)`+wA9cWYJ?>t7i@Lf5R0Q zi`Vzh@}@*i2K5lngxICCn(gj<+t8+gSW(0s%5p~VmY&vQ(H>C*fmo%BCfveqSBvD? zc_3K^o1s$Zsk-L~vMsqQM?+=`^RTks6Ll{IDDR1J7D5PU)d!1hHtf&_E2uxfz@Mkw zXI9Wl_3)6yRlLbLG?n2j{{ZdM1C@LkZ?;%XHquW4ZQXxwxAhOStxF<0?3fe92GmNj zaTu%@PZfqYgfbl}2IYuUjR^R2AClRS>@iYy6jqN;VYRECx8@IB{)FBWU@F%yMp$gk zAbtV*VL^i4TcFqEakW6MH#wszn$04`>z0>iPS++LE&A$Ee1S*}H<@QuSa zwC^oebi9qK$alWm#_;E;kZ+QKz%vgD5l9}c(g~K9U}Mx%mqw(S`@GVQ+!tD^3wg2Hi1v*OKEfQdua_!#AYtatqFj_c~znRV1t1JZ>HF9Qd75bqlH?A3I4A+u=zpjpNP zK{&mOsUq1q+u?ZZ05l;GVh6pxeT&c1JR?=@U<+-NsyP|nQPy4hA1{b@(Y!1M^FA#?;TkBJ;imu7~Ul5Z5=s zDm*a09Mso7-za`1E1BVX@7b}6ZB6>}bn6<#H_na!t)*Y&pm~(Wpz@>XdMK)H3iKn9 z=pF3o4Z%_AL}T@;<%s4WUs)@meSRE8+3`agBb6IG)_3&DOxVje)JrX`BwZG5TGAyq ztw&X7Fhkz(NHEnDNjSw+-r7ws4~&NZ=mr*o-xMSM-pp*VGs7_r(4yDjMc7h zUV|PHB?j837(0);Pim|QgaR54i-=fI+(}aI$?xFc-_k>HKL5(xZdTx6`b_cIx!1Ip zgTsp5b1vy@r2qtLjIGNBrccKydLc1_FjhsDL+)E3Kc`2L#;GTvM>_$t;noX+qV)8w zSn?Vy0(n-oLK3A`&pT?bbJcIG@Uw*Rp>1auUQ_m>?{B(C)LpRtgxLXxyCkB|B6%AT z!OwN~6&?ED*`l#h$S`vk?59PDrn4fvYKHTKq#nv|y&D7OWmbBuHYOhoQ|!nq@#6%v z0ByPK(anvt5S7)`U<)OZ${2jVZ2Y~_c#(lLJ5{U_IX{d+$KW7b>xt2d`P|wz+DqQR z49#{*UL4A203Y9>c9-s|wZBGqHqAO%QKBR}ENelU?Kw_e5INlyw2F{O>{;EdAd-25 zja)9Ao~V`k1$mfYUyEs^lb-4%_XGy@Ck>oa%{OFC70U2LiG%hs9g=r^Cpm2iWgn-2 z0+?@b%~m9-9#wjoeinZ14ebk$SeGnFzYRy0-diOUZsKcg@55LF%{~9~XsJ6OxT^A`@+)8oR;!@lt!9xNREmB-caWC%fS{xFrxI^($ zybxRp6pBl6Kk2vMcb~Jz{&V=b#+oY$Yh=xtYhKU&jDP%gNO4f81fz0fRf#sX?lXQ~ zbAk9x;n|^+Wc$TRriq1s^%;h>T=TZ%TvRC0jtJ#*(Pdu0y{V#H7!hHru($rx21bR$ z8H!TIisI()zYBVOZ7%}{6G`1S1fN=;*DgjheCo#Hrqxk~J{@%bd>+FH?`_rjRsJt8 zA;V87&ce?B&iv1T{15cBfW{Bw?UarGfS6y%$XHNZz0cTcBmbU+;2kZ9ar!OW25~z7 zFp`f12o%$bQEjjPFEk_P5UJUdDH0S6zN2c}DfJMtn6z`~EtgGPMk2YYS6|IB6)j!%YPY|zWk|SoMKy34 zvnu(qT|ZcS+r8AgQ>$1IVyB1K-wr(@V?%OtQ^!NUfL0{fKJ2o&o)j`dND#hF4kEq( zuF#+Yqq|lp*Vv@U5T)Tviv=FhL?A?5+p;YGJ9)(w0pIogKmmni?pQ@g7jn?@zV5a& zACYo7h!}}8zKu@+Q?B)JkLq5xUchF(sN#)bkIcI#bA;m~o(<-$3!uR*Lo1P+M@!BE z2zY6SX+Ys*P+Ui1;OB?*o`_d#aX_iWAAS-ilgcajYQmJD@P4^;ho7e1!r4-^F+1Yyvl>wL7WwWU%YB-@9aT1K#thEa`MtO=RhbJ@I5f9rJ zlekXU56@~Z9|45>jdwF=IfEB*Bfra# ztVshEn;7v)EX@yDir0On)2mN)p{3(u``pbw8+gz{?)1-y{lpjL4t9Q)oK-*&&b#fr z7PgdEX{WEDqK86z+C$^u%3ZEPx^C~J<$*+khW!piOZ4lgC`=xMe#15oxdMQJSh6n6u9o{ zw~No*DQi|G`C8#n``O7icCVL#G~RE@0V30H$J<$^_JYtuXLJw)s4zk^QjfBvxIQ3{hl``_|QiD+;`<;!01x5>1QYY)+f z25#+iFxk2LWNzbu>RycR+L;*7UN^9rn0~A-`^GM(kldzVRCk+2|jIh4k;P z4My$j@r1ujV^{UguP$$A6StKYpzfCcLUBf*oc8f?W(^H9fo#sdu{O+B_#`)97cG02 zezgVM8#JtEb!t~$&9=Sp9ta=%TKW3MXI0@-@?Hs8I9K?s{$yQBJYO34hP9TCT*S$m zsXtycY-*B%q%0n%%xLB|8w@XnrGm}F#WH8Ncis!bGc3nMk#l3KGu9$-R%o8c0VcfotsWLoOK-V4?v(#R2J*(Ky0GQX@OeGd65)-oYe znyoxh9CiGDJWtj8#A;U~fo84|E}0F0O*g-vTzWcwpEunL8Sy^MK}cP9G$0#`WX+&6 zLc}DEqZ#hq1R{72EeYp?-ibd+{=jSwnW`U4O&0GZc{O?x501xk0}aqWRs@J7$_26Q zvLya?Mf!fLix()Z438Q_wZqNp(Z@5MlEJXRDr3Somep^HC1vp_UzP_+h>Q*w|C-ia zCO(szaQc+&$D@^;*WDw}AJDKhqJ_DJIlC5~&7UEnTJvr~b;Nc0yE#{z1`*fb5-DUP z;$>hYs-5>CCK+}O0eloeel#DeoZd866z*)UAL@zhGdj9O`nk0SA3?3GDDV!T&AwLD zDV$9YhG&}I^;H`RnEw@B)9L>;b8mXwRCO#&`+iv>)Afn)2^U#sh~;zpCC0TJOi#t! zAZ#y-PTE_K|88@IGhqd&7c;eUW%!}~HV5o8S4)&5s+nMcjO%5#UJO&Z6#s?RbFbF* zT}b~wKFnrz;<~_`zn}3K^))@bg+P6~*ortE>u!f^h0?y}=`bR?ZS+DQ!FH*uIwiJA zvU1*Kz2@UiVf2Eo77cD-`g8;%)Yg&)SMkgzl>a}-$7K`|V$)KHyH!aKtNLk!Im8@5 z$oKWm1JeD$GCGv;*?-VaKtI3@$a+k?SxPt^!R(-FRe)PZY=~ON=m|}9VI3y~kyu_7bdt@MOUe0-nnDTTdUYgmSi`$DkKJLVlzSlKdsFVcp{1$nFS_<<0W?k~Kp5akojzw_cKb zGY^0lI-tUxZsO~^$*etIrD4(?bSHrY`G?^UO@;?wo@DQF;q=Rv?+|;eJW~w*j21dE z!$JEg@fCrT)fN#kxgVDA>>7#pX;7_>o8% zs?RbRQbw=0Q^E)_y+nlAsKtD&+oniL9iS^U?1Q4av!S-h**>2N%o!u(wfE)8d6f=H zlKC|0VIxHAAeDa<3XTOeTVQCn(^bbW_1^Dxr}BQc`a_DmI1_Ak94CIn_-64`kQV4~ zD98@;D!8pGORmFlXRwy{R3^u8Ta`SXtaf8D8bt!cgQsfL@Ivda?Wn!`;9nJszvDG| zQ{*zjI~s9o-aF;DQ7ykoabzd!y_BHr^~}Iw9NZa>GVtBwCs3t8@!4JO%-c_A36j1Y zUHt50XDbhSI8sN4vzs3LgOIAQavUvPU3kRGwMZEQNb!run;kLD59zezx(93!=H^vc z$QWKW?q7KHjqiwNfa#d8Nb>u&qvC+Eh;7&S?sLjoQw5t)f||4pIqudNUdK^=DI z4Z$Q(_s(8^*F{P(%l|cNfXj_LUl1Nzr|puBqXzmCN#Q?h6mf^wL1^)x0ozq_H>VqQ;(`OFSU(n7I7`MH_-X-sor*z(ws};{|}u8r~1bL zGjU?--vDXPtH7b01D{Eij3D>xb!iSG6{V8iGn@|yStGStxNGFCPXb3`xPR73C2l;f9dS%s<$kH~qGAeWP6u)H zk#7ydkdIp;(brdAvn(+Y0f?HG`2E#Vr8&Iz5@DVROQ#XZANZ8U4J%#n(^m_yL0h#$ zsleFy52717(Bm!{_yL`*u6?2gPbsTZXdqjv+shDFm|@W+wgf0&UAW6#@-RwHrG zd$n4MzbO?rIz=%I1mf8>yB5bX#bO9SKeksZ!-mNnOR0sqyD2f74x~O$lW!nJX@;@FaPi980$zKw`W>cCP*1KDn7&;1y z1d{+#hbrmsRWv{YB#}~=AHVpU7X4{fzNqPrAj$bXrcA=HH4d!5Vx2Sl=)>-BC(4mp zCDz%ybkxooYvUw&BOKf^CqC*HK&_o5Wk^6-gw~GxS zyT$#kg-Yq(tE4DD`fW-rF`2FyH*P-+;CByfFCF3T`Q#>rqL3|Di*Da_-kVvS<7CtD zd5CPuWlK_N^1wOyfMQ8#MgV4iXpFd%sceEiA% z1JMFOq4KA=Qz)VZ(f7>~FJE?5%J-#~6(Nn~Crt$edmf!u+r?7x?d7rr6xz?DTi3B) zL!;hC-@i3ByCidL5BZL{CvYF8C;4)`Rruvmp6_M6t9$SI^Yoaj%BoiQvJ#8@Qu@o! zQ67bUIkoilF&EZo*$cPYvraRoR`-7v?BbuzReu^~b{eOhKU#klQc?L=_34n8-RhhZ zeRJ9vzJX6Q}Tw@fC%jQ^l=V5>4h^5DuHDLKtZX8hmF zQ;0whx47tZ2h!X#NZF(__N5xATYCl>1{L`&N+`t8~brVqC(=ltu zQ4Ble=b}ZIp^pqUX2l6u)m=g~lGcvKqEn4%_0W3Nev4l+nPkgDhSq&>pZ48dH1ntB zshj!zmoc;-WT?|p{zbWtoMf^ELWQwbhW3HK7%5p2{J)9nk|9x>umcOt{v@iBP5o7a z)`dHWZ%XhZR@!ftz)>p9g7(jO{kmz!EFysk7a02Stm{#->fYXOv*))>wFUTf>|x%l zZyOhGgTJ_f|DadhKXKX@8Bl}nwLO(_K$yK1bGqw6__)5_&kJHd=n2w8tOI`DhqyO% zaUkaEr?w;pRz?hQIAWRLKsH#c-gylsKzq~MGai8)3t(Cg%lI!{C}~HYbJ4dn=Ulpr zjeMbb>O|B%dyL`Npl%L~8>BGu=EbiD<>R#+`iy|RG6{+vT-T0IloVsCrXrPI<*Mq6 zeVF?3-~u$oMIvy?Ovt(fNYrw#sBMb~-?Gie7{^=1zi_V8 z6Yad8YVHr2Jjlb{o{H$i?2j}o-B9BbsYUcQi@b}yWrcU^I-e4M(TzmZrX>ei(EdxW zU}2MmlHbR+PV`OO=clK@|H3N-(2))s;|TLKDoUfM39-5_!a3}BxwBm>c%YJ(tTlQm z@;@vhWpMQv)_Wb@J2Ba?*%zAjBb#$2K89gOP6mIxBA+Qe+ZPed(JOwg%GL2nkFMm= zWzk@O9ssGP`G*!IV4z|mV2}(lNQmJdIz)(Mkjf5OW(hk^RQ^{zLV&FVxxb(ZU;3@l zf4fAKNQ$s~nt^Dt^l$&qiTJe0LIw|Xt4P*JLd+HaC_|s*^LY>*gBp1zx+vTK!DOf; ze_uINTZs8zE=B&AOL<*x&Hu~V%Ky4a>^XJ3|H7@&zi?}`o_pxO-K4)NlID6!>_0Cg zZTeSMGR^Z7asOuw20OAO0KR&>kl&>$l-7=6;V;GJVM1&0SK0b2Q+@t>$#>ZDgmy^T znj(~lQM4v>2<&E}mfkoHG;0h?_67duBcoCv-d>NQKzsvBq+q;i$U)d&jj8-E*85au zfEb=F`w1QxQtBwWTnI!E0vgvigxnKq>361 z@U|nn^bh6xM0pz=)-WsL(GOcw`4zQNqnO_Ms65UqYII5{Io!o_e=gW5BsgE6L$n*g zo}E&ggA_QiNXj~(byRE|IVrin_K&4BEvQ_aJ{~O?sA#%blGpsa)_MYI^JNN^%snHc zDAMveN*ovXwQ4Xw;e(r7aMV|tby)-qO=`Ff(9n!$kt{7L^@}*i| zG?YmC-tIljG}~#bOuUjH{+u8$DB8Vqf#~ivs9BE&pI@8i=iBY6<+r)~q2~G#E(R`8 z6}Y=wCvpbY@2iv^OCg%JgBkgj&qeCdM}>mx12hWpDW-na=>Eu__SeepD{cR<#{<*t z6knPjX%vh@jd<`O3=L&>NlgCJ`|J7nFkS#mE$8OUh}{6jdUrJ|F|=FSz6J`2Hn~D# zfHW_u8C>P$hq-YiN-&1R<#tKK9ewEX9g83DYTHVUpVkO_1G=zqU6Y4aRp{uV@Drz# z5)%Pel4l|gOFluLp1Mp16B$O;huL<)t(!07V*_>@Sa!eG>b*Lh#cO!?U2|`$i@@h0 zvi=lYvWdtT{$Q^SnqF9re>h>87Ja@I81CIzXj8LVL!Cc+@1uF8DS4VHDX>?t#L6g7 z2Ujx5Q!wGycfyj31Gt@keF@W_0<=gSowo{P-5&ygElJR>miK*yGZk_+?4<9@RLLYi zaR@xHtjXUf*Zgsvc2oFf$q?0&ji^mBkYSRq*BUTZE}N4S0rGD3?uN>wj!|3v zI8Vo(_>thl?kO>{v>~PHU5ch4D!20|RrS@`y6NTbW<_uj;Xn!zqLys7$K_ZYl1tFg z{Tw~TYEA5yZsRijY^PMWOe4a9so?ISj_b~mFVT;u=dY{QY1^K3LM#+__*R>G$=8k54o3o~Nh70284^jLv+=Py#qaqS{U5zUIE7DHDNd9HmV=rBdU!Kpl^nq+?Q(T180Qw5ccF6C4j%6_@1mfdZO z<&Nq%x@+BH5l4rMA@)KPxso1{?2R;sr&0ZCG+M>eGB&%J4Ss8wwxDkIyA>>Gp56^E zgtLP3k7m9W+sZb1ooM_pbe9-z5pt9ua* z4GS2DXqH&>apwHCFy=lk4_M$~xmOW^=#RO36POAGyRw#)wC_x}T3Ju5GxoW8I;Hcu zp2ZHZ&Qw3cNs|1?uD}FIs5kgcs;B%NivY2>NtLY7{YdyIx8kRiylYWe*J>*3)WH=6 zn8gHSHaIIGH`;<@ptS|P>gvu@CI(zn69GoFCdEXe2yZEwW#{}Y_jf2Y;Q1#_t5bCm4X5*diqG@Ft}($rOlSF zBD;1$v>6Bs_xFp2K|l?_d)hCz*}pMf#i*u7<5I;JwRvP0f!(lh7AR6=#U|f>-lW z1H!?|?qfVY!1Bsgw9*V?Y$AT7dGcXG!)gpoKmH2y?rZMht2#Ms+^;4{P$tN;XB6=O zc^NR5o|4?!^=#3a4gey4Ul2%{xVOYmpDNw^i=gs9YDydPk0n!&KB)t{TasILl_kB}(&IePqt4*q92) zizqb>gFhKx?vUN$1q~vt>jPmO+C9v(?T+n{qRp+Vc3fG4<-pi|HvORb-`vxMkfm~s zG731}?blkDhP}_7#uvC$QcB0FPpQ>t(A!1I1}dUE288?O#nDZ{8S97*+8Fv zy(9!35TYiofZ2VfY1&qjphuZ~uR_XH#vjvLZ=aLE{O*;f+47a@$}oIvBM=20GXZAc z@@1v&?oH#tm5`4M4}gSG&|8xXtI?;Ti{=O(bwS|r=b{jY(H~FIj`sEIVB-f*-f7!| zn;W-}qP-pY{flBGK8bsCplw|JSNAkhC+llmx=n-3l608_i{;^>Qxpu|JiBRRiJGUv z6}G<4xi(@M4PIE&FC(6ZcpjHeSg(J7>KH6yQgVL0?n%&XOUhAnKw~9*PkWITAOsR* zxz;bb|MFgO*_Q_66;w9qV5#Iqa&OZSpuytK*IW<6ZbToG1TsvUNxy(8{BWp>noc>^ z@G1|e0>YkE%bjh+%)E$RQbXKm(8T5HCD<6f*qB{(RApcUlNvotdZzo)Ub4qmXucmd zCoCZr&rOlpgp=6ckUjZY&2}oXo@{p#)BLVO`KKbHt>!=^8cfe2fHF=q>f0ixJSf)S zjM_z-5F3M5Lc#zUEz_(BRm3zH08~E?-+l`9t_Gl%>+{&?P+KN1oY{IOs~T=h9cIOQR}Ai%Uo6$6x@gYqcVm=+tMD zpC-Z~vdN2*v0pGMz(lvRr3AEGU-YF%!*yBF}&4=xA<+EW@#kQ8w&v_kJvXyac z6?ny-6$26^4@w83!}ttN!yM89@oyT7u^^`lXHitKWR!nKQnAd{4fO$Vd;V`@Yr%lZ zjlvDT!N?Y0n=Kv`ka)l;Re4^>VN98i_|OJ1-|6iyKh}|f z6;Y|}v-cLAKI26drRms`3O~UOa5c{;VC0Lr*O7S@^>mpldNq6u9Ed)IO>4UdiXzO8 zztzs4Ha(AbP6hemCGqf%CH0dttLIHosDSg}$M=pX4G(|({Z4OD(f}90kL<~-*QTFp zIL?bar!X!)6d4&5s!7ZvO2Jm6qVfCV{gG=ntu``4zICHhwvG3D**0jBQ4c*GiWINo)$oO8)0&W zy{X{smqXEcee{=A`3ZX+BvIdID)s2#CECKJ%&y_(zfWOfW3 zQ;83TLGISq*C?ZsSna!mxtQSEnBecJA9>vP-v#$#H;s_&bN}EDuxih_tAm=!m;g>) z(`3XF3EWe^tS<}vc?5!|!hwq~lpgO|v3CV_E56E61u0Z2CWXSCPkvXHn=AOdBE3F% zpI!ds5|yjKS$Os}enfaWsI=!Bdkg-}hhl)(JJxZn50@gof5hD={v;~x>qBalD_dn?_gjm> zTCo{?;7aADvovcdVmwoCn7xFd7EPRF#|QfU?pXh6YEY1~^5${)B0tt=c_n zbAt%#8cBaJ;d{R^-+U}KOxb*ng$rh&*^z#I}jwY z}_ZysI5sw4|Y8V@RZpfd^V?eM(6`BwGyT6PD_0qj#i*?vgjST{+t_g$UXF&Io^DWKxfu z%AI=%uys3F_V>Jvj|?;A)CW}=b`_T;tEHi#9-lKoqj<{#sgbW+K4ybuDwpeZ(?`|& zwL*VP5mQqGkNsMM6uX7jf@%GzSUr6(;7~|O%%V81&Xx+vncageUU;E=WH4}IoreE2 z)=^1p`k|y}*4~xxin*R;vG;j1Cb-oXvvItG#6YjogZ9FmM!bkxFCWA`>&s|&wQ-9F z?^|4Du-a`qs`2(C(vh`oN!H0@fW)9#pz(!hEdo(&G~>#tL&bi!MctCy_)hW=8GZ4TTxGewwF)l82%3sY1w8Z3eiU zw^e_B6iIVtrt*opb_N3PducNCNFCEy%)Yp);ABFr5p&w3-Re0~=9>iD`Q>r<8mHVW z)4H*yFuW}dTs6BH2c`!^jYHNR?(ur)uoRZFPwwmBVsAZ(um+{JA8z*a-le^|ve0n< zIgwoaJ@R4!-Q0S+m!DIfIRV5lI6N~Lp*-Joj74Xu!};dWrI6&X;mgg&nom6AbWCN2 zetC7GAo~v+D^oGn1T$_!AWL|kcO{#6h)JF|_z(>jzmZ*Rq1}^U(|Dcn;;}OMfQ2zb zn)3sXiaI8V-&DQHk%?%Wt&Wa*-?AO}Smbn*m9_X)`Blwz!K;PG{NCUqf@Zbg<)1Cc zcTjTZM>A9;4~qN5tOd-b#x$G?ABToTH#Cjk5R;W|*&K{1Y8GCHwbqca`uDpcv~vn^ zKkke6*t_z+uUF)*OJp5|uurDdnVR(~w%O*c~V-ZTn(EhjKD)6w#5CM;>^!uG^y3+miSj~ahG5Rg}9 zGB-%!?*DCt1jBZL9D7_(eS=nLaM=1F|2vp|WL^1=51-w>nN>H5KeGx_^VJ>m*tja3 zJ5NJ>m~lR^iqs)y_vDWK$AuunTfHCg-2=4;YWkp1hIxk05pCC$-0cU;F@J{=sUBJ| z1BgVU{GQ<~#o8P?epusK?tCpf5GGn&ljI(oPJKwh$M*a=1zX3nTCYDKhEjn>J7c9r zg+sBAX^+bdCJ(tPO5OfKNse}YRCnz)C!`Yh@{wQDi*29#bXxV}L7eK1gb>f0wZdxK z_AS4Yp*ynqyzZ28V3ht4)4N5lNejgmn(pQJfj@#rXQdi=S``$OH1*`rS5T?-<+F*) zzP5$n%0;l>SZp_W>SP-A+bH?o5}{L(H#?Byd-^`GQ(lezZN!*!goM1C`euP#K+TEK*3a059!d{ zl6>khH7ky_2RdFpRZ6eC$mV>E{oPLwgq1{v^9l;*DaiyyNAhcUCfX)qwA+#?uC3aaHTIaT6YdYqkf4}IiWX!${K?I~HRwhvo6>{^_lm2=N~{#E$J z_ATsCt%B_*Iy-;Ri2_V9sr2$#nS#|@_e?X%E19Njm5Sod5Q~z`1n^Qlw_RT9sny7# z3{v!p`gHJw|I-=ub|6`KKzH6rMD>`!%i^pr&ULU}A%p#spVf=I&o2^6nUtnnC?t_x z(i{rY%Q*ko3Qc-%i2qy?ab`AF%R!1=ynJARUzA+@a1U98f?79>OG#bTiBS=TW8&$~ zEc2ur(L*~+qU05W)Nw_;uBmZTf~?g2HY1hfF1b$6)MjyR)=}YAmngK90`;w8$kJO` z^zu+s4h0a#R6Ci&&(_wF&7ErX63pTdMv`^hel<2!G^=9lbUr;X%}x4tLi-j^w9xk; zpj)jy@FYqMk)QpzkSHC$rrpD#M%SEJSfimKE`PsfeU(yP?biOb4#Sf|?l3wSCEcHn zP3o%4V^J=~d~ul{rX+Cd{s?Ld$6BzbvkSmuF0ciVQ1DQ)dCmuCn8jLk^6u3nZYEgQ z^n{1uhtkyq6nUT9P9NR?L9~{>Q|{vZK|LLy>W`k(8O zYBJ!?OlUyk@%^2h1sw=iinTB~%(HOFsSpRU6qko(au-8jy8A$7u7rW5%Ja=Hx)+iW zINvYg{7VQLbY1YUvCE`Dkv}V@A3Q8kL{zd_U2HWF|7PC^r-#fnQPFC8RDTBs69etwEq zhC&Y~m&#>g{Q5hua|i$S1v*0qjlarrDHh?to0b$dcVqCvp4XH5%eT3O(es&DJ(G_)MYP&oVK{zx0~LS<4UF{7fMmD}q48!Rv>; z78R$c{tZ3+ou$8Qz)gEY5_|8nC`Hk?gl_n_&Crd2v*_pY=mhmKz(vCW!~?L(JgLTW z_MHk$?#Mx9di%c0u3}=O81Xqof0;5p9Z9OI9SwJ(KHEF@X%{&C_LZ1~yxP0|4mcgL zX8G8VHYf#G8SCMsW>yFn%uo`Q{1Z6mpnOt%cy&P5;JS#BdhG&)6^3C5X;+#!SjVxh zo5n_?A4(7NPI`L=eDBtN8|PR)GyQ{q{;I!o;cjJhlp6$Z&u5?oDR8Y3Jg|crex70l zZK#VY=Y3VrL=-ID^n`gcDQGEuF|bcEjNy!}4&GlZ4e>S~h0Y7yew(QcUz@U2Io zRzjZIBDe5y>zB&4M+n(vJ~nc*ATcPF{6-(tY>Wct25xZ;n(^vahx$MxWJ!)P(lX%3& zu!o>B3B}rDQSD5XgP-@iQB}bR6UxuC=5u6FTg>SlTI7w~n^`$_z)K0Mfi9*?xaz~m zXSj&hm)?~7|vL6Jmb&b#WU@%VU`iqL^Y*;G!i`rRK{N%$AoUY3plwJ@pk+X&pG@8 zgVZnFmI_lCpE=A-0R$KO^;{n2on2(j9UHAt29?S&1Dvm8pdwR=y^TC;043xj36JJ~ zl<|vhI(3}qdRp=r*c2((ziD(ZQ;y>x3hDYl;##ISV+wT4K6oTR^m(*oHzFrSX( z0Gw(JSdT*M!?s{XkXGakQCXHj2n_L?DW^;EteOmDe$IJ7O4B)?o;4eODI*nv$)aAa zq;SFGq@h|A*4>k*FTieyIQt4Aj!X^3&)62ByOsPHD9X?$*$?!Ij{brAD2z)(WOWau z8NXfGhj$4rtwfs?wZTU!yc`L1qg-9gZlw_ml|JVakTMx!x~e4-1G*BFg)@c{JDYLo zCMXQJ1N}{nk(nUn@?`4dKye1*ZS&4Aw`FYW3%AbUMTfamZ}+ zyB|RCRm~y?-Hu^J)#VAQvgzYwoBKe|1NScDL!_XF zGFK9NT|POF*{5yJU^RRYd|E7R!tsxg33$ z^R_31pS9<$N+c-h#8^Fy0;XVs12}Ok33GNdmCx> zu#6-PRd|^iEM9y{u&v`|gBv@LC$PLI_RAd1tP$7X9xacLDZ0*rtRuqXThyN3J+7G3 zRi%OT^_gNZyKx*6dd20~eqAxM_*M06ymZ6w4T_wU)EHSOUz3j0XCoH<-P(>Yj1bBx zf7*-w<27qsdC@|>*2$49&BHF~NKIX*w-LQvF!oOQ!mRkd&Y`U3O{(WYUHh=zX z7pd$#ILl+%Dk{7-b-BkgZm8N8u^sTPihTi_JWlO5_j?3WPK*6K*{<#l+)XUXR0cSjP67iPjuel@x z^Zc#2=rRoV%R^B5xTh6&w&}KPw{n=-ewxoEr3#huBnXy_J#iS%#*QF+K3X~~b^T$C zhRMC=&CgX6iwB)`5sAy{RbEO=qM|Dvn&5zP|7`dPG#ppKpbR2Ru{us7%FO~*ht4em z^`U*Wcs5u4*mJSUkd8ix(}518Ug!6gtyEca^(4CTt>&HCp=_sdnf~PfilSc!3=#5@ zFU{9-iSz4xmGddr`TTaW#(Dg zz){|>%6|Q3liR3Z*reuMS<~^?Lq#J|^x^ilA1r|Ji3I4_^j7$!@LY|K3+!`uJ}54J8gZwk;ojQSt* zTJHDl5?s|r+4PJW^Vs!Dw{6Z+%s(GjJ0h=<#C7U)AKM2>1glgIxZ`p9B*QGWsMLUJ zR#&b;*LeX>)XCCb3#~g4%cBlk}?#n7aaWY@v$k8C79Q1xB8} zo3g0*TEXNcBDj#(A_rtY+lX9?>)uCuHX zC=b$T!L{}XZvnz;6qB_k+;j2{#o=2JR1SLgCB8Faa!zbuZC-NYW39)s&`w{z5rI|M zaO3@ob>2;z@869@?EQU%v|{hqRy^seeu9{S>0z|l{}p_5Lx_+rZayx?h`q*a{G?V+ z8TZ#ksrg%jRZ}|RVZ~HHnm?Q(mxz!#{xBg#4?&YSW%qvzsu+>yFc8D%Fg$Pmt(Ri; z{HuF-y09xT{$ri||D9s+t)DT#(Xm}|C8g%SBYC7(l@PMY>Su-pxqoDnZ!Cz*kFgLj zwX^+mc|@eZ-zvs93%q}&md~{BDnKPs4bbi6;iQ$6|I$zbJ7T{+AyF`P$SP6>c0WV> N0Tk5bt7YE>{T~L5FMj|4 literal 0 HcmV?d00001 diff --git a/CRSim/CRSim.csproj b/CRSim/CRSim.csproj index 742eb44..bd9d679 100644 --- a/CRSim/CRSim.csproj +++ b/CRSim/CRSim.csproj @@ -14,6 +14,7 @@ + @@ -33,6 +34,7 @@ + @@ -84,6 +86,9 @@ Code + + Code + Code diff --git a/CRSim/Models/StylesInfoData.json b/CRSim/Models/StylesInfoData.json index edaf1f0..b90f63a 100644 --- a/CRSim/Models/StylesInfoData.json +++ b/CRSim/Models/StylesInfoData.json @@ -151,5 +151,16 @@ "Station", "Text" ] + }, + { + "UniqueId": "Ankang ExitScreen", + "Title": "安康站出站口看板", + "Station": "Ankang", + "StyleName": "ExitScreenView", + "ImagePath": "Assets/StyleImages/Ankang/ExitScreen.png", + "Parameters": [ + "Station", + "Text" + ] } ] \ No newline at end of file diff --git a/CRSim/Models/TrainInfo.cs b/CRSim/Models/TrainInfo.cs index 2506a82..ab99261 100644 --- a/CRSim/Models/TrainInfo.cs +++ b/CRSim/Models/TrainInfo.cs @@ -6,7 +6,7 @@ public string Origin { get; set; } public string Terminal { get; set; } public DateTime? ArrivalTime { get; set; } - public DateTime DepartureTime { get; set; } + public DateTime? DepartureTime { get; set; } public List TicketChecks { get; set; } public string WaitingArea { get; set; } public string Platform { get; set; } diff --git a/CRSim/ViewModels/Windows/ScreenViewModel.cs b/CRSim/ViewModels/Windows/ScreenViewModel.cs index 7896819..7a75270 100644 --- a/CRSim/ViewModels/Windows/ScreenViewModel.cs +++ b/CRSim/ViewModels/Windows/ScreenViewModel.cs @@ -25,6 +25,8 @@ namespace CRSim.ViewModels public List TrainInfo { get; set; } = []; + public StationType StationType = StationType.Both; + protected ScreenViewModel(ITimeService timeService, ISettingsService settingsService) { @@ -42,7 +44,7 @@ namespace CRSim.ViewModels { if (CurrentPageIndex==0) { - List itemsToRemove = [.. TrainInfo.Where(info => info.DepartureTime.Subtract(_settings.StopDisplayUntilDepartureDuration) < _timeService.GetDateTimeNow())]; + List itemsToRemove = [.. TrainInfo.Where(info => (info.DepartureTime??info.ArrivalTime).Value.Subtract(_settings.StopDisplayUntilDepartureDuration) < _timeService.GetDateTimeNow())]; foreach (var item in itemsToRemove) { @@ -58,7 +60,7 @@ namespace CRSim.ViewModels public Task WaitForDataLoadAsync() => _dataLoaded.Task; - public void LoadData(Station station,string ticketCheck,string platform) + public void LoadData(Station station, string ticketCheck, string platform) { ThisStation = station; ThisPlatform = platform; @@ -67,15 +69,20 @@ namespace CRSim.ViewModels foreach (var trainNumber in trains) { - if (trainNumber != null && trainNumber.DepartureTime != null && (ticketCheck==string.Empty || trainNumber.TicketChecks.Contains(ticketCheck)) && (platform == string.Empty || trainNumber.Platform==platform)) + if (trainNumber != null && + (StationType == StationType.Both || + trainNumber.StationType == StationType.Both || + StationType == trainNumber.StationType) && + (ticketCheck == string.Empty || trainNumber.TicketChecks.Contains(ticketCheck)) && + (platform == string.Empty || trainNumber.Platform == platform)) { TrainInfo.Add(new TrainInfo { TrainNumber = trainNumber.Number, Terminal = trainNumber.Terminal, Origin = trainNumber.Origin, - ArrivalTime = trainNumber.ArrivalTime == null ? null : trainNumber.DepartureTime.Value < _timeService.GetDateTimeNow() ? trainNumber.ArrivalTime.Value.AddDays(1) : trainNumber.ArrivalTime.Value, - DepartureTime = trainNumber.DepartureTime.Value < _timeService.GetDateTimeNow() ? trainNumber.DepartureTime.Value.AddDays(1) : trainNumber.DepartureTime.Value, + ArrivalTime = trainNumber.ArrivalTime == null ? null : trainNumber.ArrivalTime, + DepartureTime = trainNumber.DepartureTime == null ? null : trainNumber.DepartureTime, TicketChecks = trainNumber.TicketChecks, WaitingArea = station.WaitingAreas.Where(x => x.TicketChecks.Intersect(trainNumber.TicketChecks).ToList().Count!=0).FirstOrDefault().Name, Platform = trainNumber.Platform, diff --git a/CRSim/ViewModels/Windows/Stations/Ankang/ExitScreenViewModel.cs b/CRSim/ViewModels/Windows/Stations/Ankang/ExitScreenViewModel.cs new file mode 100644 index 0000000..c10fd74 --- /dev/null +++ b/CRSim/ViewModels/Windows/Stations/Ankang/ExitScreenViewModel.cs @@ -0,0 +1,55 @@ +namespace CRSim.ViewModels.Ankang +{ + public class ExitScreenViewModel : ScreenViewModel + { + public ObservableCollection LeftScreen { get; private set; } = []; + public ObservableCollection RightScreen { get; private set; } = []; + public ExitScreenViewModel(ITimeService timeService, ISettingsService settingsService) + : base(timeService, settingsService) + { + Text = $"西安局集团公司推出西铁行APP站车服务产品,欢迎体验使用。"; + ItemsPerPage = 7; + PageCount = 1; + StationType = StationType.Arrival; + timeService.RefreshSecondsElapsed += RefreshDisplay; + Initialize(); + } + private async void Initialize() + { + await WaitForDataLoadAsync(); + RefreshDisplay(null,null); + } + private void RefreshDisplay(object? sender, EventArgs e) + { + Application.Current.Dispatcher.Invoke(() => + { + int pageCount = (int)Math.Ceiling((double)TrainInfo.Count / (ItemsPerPage * PageCount)); + LeftScreen.Clear(); + RightScreen.Clear(); + int startIndex = CurrentPageIndex * ItemsPerPage * PageCount; + var leftItems = TrainInfo.Skip(startIndex).Take(ItemsPerPage).ToList(); + while (leftItems.Count < ItemsPerPage) // Fill up with new object() if not enough items + { + leftItems.Add(new TrainInfo()); + } + foreach (var item in leftItems) + { + LeftScreen.Add(item); + } + + // Get the slice for the right screen (next 12) + var rightItems = TrainInfo.Skip(startIndex + ItemsPerPage).Take(ItemsPerPage).ToList(); + while (rightItems.Count < ItemsPerPage) // Fill up with new object() if not enough items + { + rightItems.Add(new TrainInfo()); + } + foreach (var item in rightItems) + { + RightScreen.Add(item); + } + + CurrentPageIndex = CurrentPageIndex + 1 >= Math.Min(_settings.MaxPages, pageCount) ? 0 : CurrentPageIndex + 1; + }); + } + } +} diff --git a/CRSim/ViewModels/Windows/Stations/BeijingXi/PrimaryScreenViewModel.cs b/CRSim/ViewModels/Windows/Stations/BeijingXi/PrimaryScreenViewModel.cs index d1fd989..e6f6f6a 100644 --- a/CRSim/ViewModels/Windows/Stations/BeijingXi/PrimaryScreenViewModel.cs +++ b/CRSim/ViewModels/Windows/Stations/BeijingXi/PrimaryScreenViewModel.cs @@ -9,6 +9,7 @@ { ItemsPerPage = 13; PageCount = 2; + StationType = StationType.Departure; timeService.RefreshSecondsElapsed += RefreshDisplay; Initialize(); } diff --git a/CRSim/ViewModels/Windows/Stations/ChengduDong/PrimaryTicketCheckScreenViewModel.cs b/CRSim/ViewModels/Windows/Stations/ChengduDong/PrimaryTicketCheckScreenViewModel.cs index 6cd0182..d530709 100644 --- a/CRSim/ViewModels/Windows/Stations/ChengduDong/PrimaryTicketCheckScreenViewModel.cs +++ b/CRSim/ViewModels/Windows/Stations/ChengduDong/PrimaryTicketCheckScreenViewModel.cs @@ -7,6 +7,7 @@ : base(timeService, settingsService) { Text = "持户口簿、护照、临时身份证的旅客,请在非居民身份证通道排队。请主动礼让老、弱、病、残、孕的旅客。"; + StationType = StationType.Departure; timeService.RefreshSecondsElapsed += RefreshDisplay; Initialize(); } diff --git a/CRSim/ViewModels/Windows/Stations/ChengduDong/SecondaryScreenViewModel.cs b/CRSim/ViewModels/Windows/Stations/ChengduDong/SecondaryScreenViewModel.cs index ad3b9a0..33131dc 100644 --- a/CRSim/ViewModels/Windows/Stations/ChengduDong/SecondaryScreenViewModel.cs +++ b/CRSim/ViewModels/Windows/Stations/ChengduDong/SecondaryScreenViewModel.cs @@ -10,6 +10,7 @@ Text = " 检票口信息请以车站显示屏信息为准。公共场所请妥善保管个人贵重物品。"; ItemsPerPage = 12; PageCount = 2; + StationType = StationType.Departure; timeService.RefreshSecondsElapsed += RefreshDisplay; Initialize(); } diff --git a/CRSim/ViewModels/Windows/Stations/Fuzhou/TicketCheckScreenViewModel.cs b/CRSim/ViewModels/Windows/Stations/Fuzhou/TicketCheckScreenViewModel.cs index b3148e8..0b2e931 100644 --- a/CRSim/ViewModels/Windows/Stations/Fuzhou/TicketCheckScreenViewModel.cs +++ b/CRSim/ViewModels/Windows/Stations/Fuzhou/TicketCheckScreenViewModel.cs @@ -7,6 +7,7 @@ : base(timeService, settingsService) { Text = $"开车前{settingsService.GetSettings().StopCheckInAdvanceDuration.TotalMinutes}分钟停止检票"; + StationType = StationType.Departure; timeService.RefreshSecondsElapsed += RefreshDisplay; Initialize(); } diff --git a/CRSim/ViewModels/Windows/Stations/Guangyuan/PrimaryScreenViewModel.cs b/CRSim/ViewModels/Windows/Stations/Guangyuan/PrimaryScreenViewModel.cs index fb0a882..9354bc1 100644 --- a/CRSim/ViewModels/Windows/Stations/Guangyuan/PrimaryScreenViewModel.cs +++ b/CRSim/ViewModels/Windows/Stations/Guangyuan/PrimaryScreenViewModel.cs @@ -9,6 +9,7 @@ Text = "成都铁路客服电话:028-12306"; ItemsPerPage = 12; PageCount = 1; + StationType = StationType.Departure; timeService.RefreshSecondsElapsed += RefreshDisplay; Initialize(); } diff --git a/CRSim/ViewModels/Windows/Stations/Harbin/PrimaryScreenViewModel.cs b/CRSim/ViewModels/Windows/Stations/Harbin/PrimaryScreenViewModel.cs index e0e29f0..09d7ec5 100644 --- a/CRSim/ViewModels/Windows/Stations/Harbin/PrimaryScreenViewModel.cs +++ b/CRSim/ViewModels/Windows/Stations/Harbin/PrimaryScreenViewModel.cs @@ -10,6 +10,7 @@ Text = $"开车前{settingsService.GetSettings().StopCheckInAdvanceDuration.TotalMinutes}分钟停止检票"; ItemsPerPage = 6; PageCount = 2; + StationType = StationType.Departure; timeService.RefreshSecondsElapsed += RefreshDisplay; Initialize(); } diff --git a/CRSim/ViewModels/Windows/Stations/Jinanxi/SmallScreenViewModel.cs b/CRSim/ViewModels/Windows/Stations/Jinanxi/SmallScreenViewModel.cs index 66db7f0..58f09af 100644 --- a/CRSim/ViewModels/Windows/Stations/Jinanxi/SmallScreenViewModel.cs +++ b/CRSim/ViewModels/Windows/Stations/Jinanxi/SmallScreenViewModel.cs @@ -8,6 +8,7 @@ { ItemsPerPage = 9; PageCount = 1; + StationType = StationType.Departure; timeService.RefreshSecondsElapsed += RefreshDisplay; Initialize(); } diff --git a/CRSim/ViewModels/Windows/Stations/Shanghai/OutsideScreenViewModel.cs b/CRSim/ViewModels/Windows/Stations/Shanghai/OutsideScreenViewModel.cs index 3deaf26..b3d0cf5 100644 --- a/CRSim/ViewModels/Windows/Stations/Shanghai/OutsideScreenViewModel.cs +++ b/CRSim/ViewModels/Windows/Stations/Shanghai/OutsideScreenViewModel.cs @@ -8,6 +8,7 @@ { ItemsPerPage = 9; PageCount = 1; + StationType = StationType.Departure; timeService.RefreshSecondsElapsed += RefreshDisplay; Initialize(); } diff --git a/CRSim/ViewModels/Windows/Stations/Zibo/PrimaryScreenViewModel.cs b/CRSim/ViewModels/Windows/Stations/Zibo/PrimaryScreenViewModel.cs index e53e3e7..3493bff 100644 --- a/CRSim/ViewModels/Windows/Stations/Zibo/PrimaryScreenViewModel.cs +++ b/CRSim/ViewModels/Windows/Stations/Zibo/PrimaryScreenViewModel.cs @@ -9,6 +9,7 @@ { ItemsPerPage = 8; PageCount = 2; + StationType = StationType.Departure; timeService.RefreshSecondsElapsed += RefreshDisplay; Initialize(); } diff --git a/CRSim/ViewModels/Windows/Stations/Zibo/SecondaryScreenViewModel.cs b/CRSim/ViewModels/Windows/Stations/Zibo/SecondaryScreenViewModel.cs index 9750834..ec9ea11 100644 --- a/CRSim/ViewModels/Windows/Stations/Zibo/SecondaryScreenViewModel.cs +++ b/CRSim/ViewModels/Windows/Stations/Zibo/SecondaryScreenViewModel.cs @@ -9,6 +9,7 @@ Text = $"开车前{settingsService.GetSettings().StopCheckInAdvanceDuration.TotalMinutes}分钟停止检票"; ItemsPerPage = 18; PageCount = 1; + StationType = StationType.Departure; timeService.RefreshSecondsElapsed += RefreshDisplay; Initialize(); } diff --git a/CRSim/Views/Windows/Stations/Ankang/ExitScreenView.xaml b/CRSim/Views/Windows/Stations/Ankang/ExitScreenView.xaml new file mode 100644 index 0000000..6e189a3 --- /dev/null +++ b/CRSim/Views/Windows/Stations/Ankang/ExitScreenView.xaml @@ -0,0 +1,172 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CRSim/Views/Windows/Stations/Ankang/ExitScreenView.xaml.cs b/CRSim/Views/Windows/Stations/Ankang/ExitScreenView.xaml.cs new file mode 100644 index 0000000..06b3289 --- /dev/null +++ b/CRSim/Views/Windows/Stations/Ankang/ExitScreenView.xaml.cs @@ -0,0 +1,34 @@ +using CRSim.ViewModels.Ankang; + +namespace CRSim.Views.Ankang +{ + ///

+ /// SecondaryScreen.xaml 的交互逻辑 + /// + public partial class ExitScreenView : Window + { + public ExitScreenViewModel ViewModel { get; } + public ExitScreenView(ExitScreenViewModel viewModel) + { + InitializeComponent(); + RenderOptions.SetEdgeMode(this, EdgeMode.Aliased); + ViewModel = viewModel; + DataContext = viewModel; + } + private void Window_MouseDown(object sender, MouseButtonEventArgs e) + { + if (e.ChangedButton == MouseButton.Left) + { + DragMove(); + } + } + + private void Window_KeyDown(object sender, KeyEventArgs e) + { + if (e.Key == Key.Escape) + { + Close(); + } + } + } +} diff --git a/CRSim/Views/Windows/Stations/ChengduDong/PrimaryTicketCheckScreenView.xaml b/CRSim/Views/Windows/Stations/ChengduDong/PrimaryTicketCheckScreenView.xaml index 5c55ac1..e24bec3 100644 --- a/CRSim/Views/Windows/Stations/ChengduDong/PrimaryTicketCheckScreenView.xaml +++ b/CRSim/Views/Windows/Stations/ChengduDong/PrimaryTicketCheckScreenView.xaml @@ -22,6 +22,7 @@ + @@ -96,6 +97,7 @@ + @@ -138,6 +140,7 @@