From d898666075e8b313ce339ef6207bd5c1798a154d Mon Sep 17 00:00:00 2001 From: Mikael de Verdier Date: Sun, 9 Aug 2026 01:02:50 +0200 Subject: [PATCH 01/11] updated calendar and event page for nollning; event page now uses eventRead object from calendar (still reloads it in init); overall minor improvements --- .../nollning_26/calendar/alcfree_icon.png | Bin 0 -> 28665 bytes .../nollning_26/calendar/alcfull_icon.png | Bin 0 -> 29271 bytes .../data/nollning_26/calendar/byob_icon.png | Bin 0 -> 32269 bytes .../nollning_26/calendar/event_background.png | Bin 0 -> 15546 bytes .../nollning_26/calendar/event_banner.png | Bin 0 -> 12203 bytes lib/screens/calendar/calendar.dart | 330 +++++++--------- lib/screens/event/event.dart | 363 +++++++++--------- 7 files changed, 321 insertions(+), 372 deletions(-) create mode 100644 assets/data/nollning_26/calendar/alcfree_icon.png create mode 100644 assets/data/nollning_26/calendar/alcfull_icon.png create mode 100644 assets/data/nollning_26/calendar/byob_icon.png create mode 100644 assets/data/nollning_26/calendar/event_background.png create mode 100644 assets/data/nollning_26/calendar/event_banner.png diff --git a/assets/data/nollning_26/calendar/alcfree_icon.png b/assets/data/nollning_26/calendar/alcfree_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..1855cdeab1bd1a87ef5d7026948ec34e10efd772 GIT binary patch literal 28665 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

U`&M36exsY2&@liPrn;_D)Kp=>3xZ*b; z_;sh=4B2Rh=3$v+@?-a@0G{a7&X>x*5npa7R$Z9w^5|z@haKn5D@h|gqy4xq2PRPp z75)EQuyA$tI~WHCRK2k)=a0Dh_VEx4@G{YKKC&1}nB{Cr?rQ01$L3 z5k<(90>o%ga(XM8P#MKQo2DH4RIBp$y^aYxksq3eF9ZJgHr%(bz-PvOVg5$YRZSHF zzL}SJ^gP%}C7uDZ!g1@rQ?tf5B+ZyY#HstwPN zFSGZad!-b{`&EA;A2;~hFrGo$Z-wUPz|pDkgb{+ptX9z>!H@zC_mIP;NpmBfD5uSW zq%N?K(09U^4oEky+c`>K7R+=_jn#{hA7^|I-iMO}ysWopGNu&vLZxw_ut zQcckTU9)S#E@1cSUTufCBQo!jKNZ^gEjfR{2o4uSJF(%VYD~ze z7qB3pG5=WsFm{y4wzV+D3Wu1svuZ@Suf z3_57*N)TB9(Ni>42R7UJHsu0{bdHZY-P{!`>zSg1t-GpgdYYRHCdvu@?v(k$P1VSe zpo@TUgbX4x-kI>g^PTSx;phL-o+oUwTRsrj8MTsYsJqgV1D!G%+TWt5_RO)&`+T?nD-VGB#(G=dxc z#wOh=4e=a_HXsh_d!xu%`bc=5VKd``_(-3(k&HeVtO(6UWSvY@7uXJ!% z+N;d@tu*gahswy2nZNz`JW zE;ZN)JgPKvwxSB9uMv8SimLO;D&rH3={qrWJjT3XUuV>8bKq?dR%8ZFmB>e@-c&bf zdF8J1UPU&Si$B(;6fCwGasXucC#H-`@M^x~P)n_tw>yn$DsmOqqyfX&O1?29Kaz=F z+_pRWO69UNm&=19R48)GU7eF-Zu+>T1p0{~#SIf5;FmogOp_g$zCfS=2-P9l-ydLt ze7YxCZP&K6=Qs^2e+@P+`FW-Yrcjo0`k18<`d1Fb4ACRsR>d*jC|Nu7`i!&{246ti z{Z|mK1FBW0u7laM0ZMg`j2at9A-;7vFd(R8Tx!5tBq zXj|3!O{>Jx8xT3{w{f-1lFl9y>0+hSvVJnwGI+S7LOD!J_zhp``gI@G$iK`(vx^$V zZD5gwWYtLOv%@|RKmb(KmAU0Og{Xi2(@Ht}kF$KISedHKUeG4dg;H;ETl*EEZ6wDo znIe)8mmJ!pA_h?G1u_?BMcA~Gf~d^Yv~3>leF7JE2B@+w?lF}kU1k)_wzJjic5*&h z)IUO4ex?H-F#~Zsfm)#9pYL0z_&$I+7vJiW{wn|r_Q?iN&N86v;&J-JAgeO|R4t1| z7$`bvNRDX{LfMYX({EPbYi2foW=&AyV~&iH_WUCwu-a_SCt0msf}hsSh>%Cb>9$U| z3GdRqWdXBezGx}cgIbChqXObbL4XYF{|;AE{z$-b!;|`V@4p<5vIAKpcE%`juQ)l} z5240n0eUdfscwZpMmz$uK80`hy!csUZJy7Kuo1xH;;jx8gLLQ!V&JssoE%Sg*j3){QNifrfBd#masxq#`Z{Wm(_rO?46bHqa`zi012B z?zNs+42TiD4vZ^EhOPa5IIdYYoS%6;4w!qg6b$L1DDy zqyT+%>|vI33Q8SYvmB5bM|_;r2%MqPoXifdp*l!S&sb*kTC^V{cOFf?*pCXL@jvO7 zHd1jOzx&H1b6s@y1Mm=JztI5S*{isc_h~3i@ao{BTI8w(Rx@SYs1i8Cc|u}z2NzwT zN3PZ0xvKT8woaM;By#wXq^~9py3-EX?o&?1?$nPm=f9UWy}x9UFAweO%F4tfH7`c@ zE*e^j#4vI-K? z=Ov^Sjb-F7$jV-jRuGq#z920vZ!viC|9imI{jQ@!!2kRJn%X@R9uWP%BltMF+I#!h ZxO)80&#-goUxH_-v^Dk7WtXfY{uhQJ)nxzx literal 0 HcmV?d00001 diff --git a/assets/data/nollning_26/calendar/alcfull_icon.png b/assets/data/nollning_26/calendar/alcfull_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..50831466e39367e2656c271e3ffabb4b4dac1f41 GIT binary patch literal 29271 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 literal 0 HcmV?d00001 diff --git a/assets/data/nollning_26/calendar/byob_icon.png b/assets/data/nollning_26/calendar/byob_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..febad7d39f490e39001da5467b070d5ce72c2a1a GIT binary patch literal 32269 zcmcF~gDa{+<)S^xcDc;?Hv0}pXsU#rOD?%?5)P~s=0URD8*FdUp!-(jF~JkmfQ-{IFU z<=%PD@85Y<^4SE;M)+m=dmBtLqI@@R;+}bTkv%p|sKlVz6U7{I5`V4rVeK)Cq*x*$ z^_OCB<7bWUO2z4U2KfC^UHl=Y6l=^TdV_&c*f7k{L|M$d3%^6Z2+4Gp192Y%P1N0b z{N}dNl1*9L#XOq!{KDl>!e(cBcl&qA%|gfW2^|QA2MHzpfAFh`vbP#ncF=FFMCQ_T zn6X>qYKZ9}+ngjQAvP>nb&$Q0U5*OG1{z+Rb%<+fuxYq z=Nx`zfT1{wURjz;)Eyq660c6DP;K*1!Aky zCt}7VO1AyT^ZWA?`%mYTS{`gTXp9Do#QcD2suj2DY`EcY$!f)q z`g}}vzUr?&yGcE4bnFfMnobbv#XC~JTW0hix9HAQ z>Y3%RAGX~nlN{k4At>|f0wG8sTmAtIKN6_@%YAM}nVpsN<%8TRV*Fs=&@#xMqH_WC z8{>#7kaPS)I}YEkF&3T-b0ycEV$aR%b5LMP_ZRkf>{QBe_+v9Uz2sS-#j1Yq;+ zEn^%7HTey(SxePcWm-rJ}x zWfvQ$2sH>%b*+BFYoKvNXjyU(nzws+1nT%`zZ~k0zHo}$MY6oL$3jL8mN~@*Dq9X; z^I5Lm+k+mkYyaF~OBCOJh-tC%*V1+~TIZ@J(nGSKM#?zm;iWb(JKh~H1goB?HMQaN zvPO*m_F9TY_h%8?ZP|H|ynWfUfj{y=q*O|T59A**Wm`66aE{zS9hfUjX#=Qid4GPe zr!&RTh`jwL7wp9d_xJ#^P8lnE<8b143*GV_ zZlpAQX>Y!NyEUf|G%xij;`3ezvTM2CuHr7G=Bff(UycH(UCFy*3 zrcIyb%8=H|T&zJV&{c?g(t`x3gQoLBmhh6*(n%&{f@LDeL|&a46>C|DKOy`I!SSlG z&c>IVChp@37@}jobHUd8a?5TZXuq+N0fpCYx^bprml^eN5B(1$9Zq#=3_9|_@O>oF zSN`<^g8-_Bjl3Jo7gOkEl5H6cAPih4;M;hcwb{SP8amYeto$#pd>V&h5}qFWZ@uT4 zh8bKq0rh4y!hAOxTXv?SlI6GqXC@2wf7&yVR1zU%wKxyTpnHzm!2l57t&rN{klxXV zBL6xOS<1M}$^$qsfEYfw95IHG+0*O&6X6jp9F@pHM$Wq8RnXT$c$G zb9(Z0QX(h4BqgC9Yv6dryPe8wASC&m?eU>+kPP-wJjN|=U?#@VMRwT*4c9^5m=Zm) z+4EG^bt>2Liwn%lCD6Uqmg_U01A>vL5-w*my=YQ~2|HQh0BGK;U6W{m3SE z^>${G1`e>40?-n2 zkW1KNxGLvO3g{N(sQ0h*$2%(9g|N!flioHGhBp_+n3vpJIiioa_AW?} z=7-`gp{+P}u@7%Cd}V6gq;WCwo%3FYIznM!;zW)_B-SiN^zd(C=hw*^@J?PurD|jnk$?w!NMCf&R>X^S;7!0wgxCTZ$g|5E;)b;+;G1tq_X3A8a7*>*w zZ6LYvAnMvxF@EMTum=u<>;*OGmU_JDFjmov;N~vKV#((RJ%l6+=QaRiC9`jFMZ_-F z!YcSFJv05Igx*!Qgjkuvx?Hdm%H`*NU1i&(e8p@ylV_!!UQ`+!_fI>UTi4hLy;J%J zvB&6j&%nt^NVn6c94>?qt}%tjvIDE-#mW`mK0@YO3do8J3*$bKv{J%Z@V>zw3Z^sg6ClyO+Jzq%kE^)m z>J`VC5BR0H-R$Y#u%wqv-vPavYv|gHk(d0v1*IG`TovozogMJJn-lCuTSm=R zUB~3_XH6euPc8+auQ&ZxY(V#@@il3FMH&Vev6$K~E1h>^6+OK_jEQUs5BLVb+81zpB(e%pmU8n1iqzz34R0P5#9 z89D8#M?`*azehD;A5~yos;843X|Id_clUzmMq%&-e4AP-)8eD=xx25hW#_g*;Dz|} z_|c2g8`e1CBy#sp_hXBH|dXnL4Dk?PF>*G-p z>Aqc^0a1woLnhPhKF`0dOl9>BMzaSut516emc61vW;uDt^j8|C>+6}AEic9vr~%Iv z@MvZ82Q}BuH(b=zMIg7}1DU0u!>GQ93JX0``%5r!ij=LhA(+`NO7ypPq=f@C6#dHu zN0B>>cQ~8CoS;(|Ui-yeywEEASge0&2&52E_&C1&(0v9?dIZI7@sWahHOJdm_^ob6 z=XBy4KRgydGA$N|8H{z|@-aDdoIECB+85dQUBf$Y^44fIH(vS$^3UvbIo)Hv(1fj1 z_o})R*_8AQR0QarIWUvoIP1Fu75MbgMoY)vTo7o%{b*%K(vkkq80Ux+ajTRI6eX}S8^=|bjJDb{^LW}k7qT-IW3oFRNMA7crN?m94P_OFve{&sO2-NX+IKXzUhjVs)4LNDX$K6M-CgytJfv=+a!kwZ&(yTbDpjkKg1<+^27i zSfjW%zICHHZ#+*uFSKXMz~j4h$6*2;vA?x%UTr4E$6sGwSNP-Rs*AZ~tAPn})m^`} z*zv=*ylyr#+mX98p4YBSJ~#S2f|EB8^>!CZGog#Ogf#Z-_CK$KoV`J3MuNZ4Ndy}I=2>sYN@{$hK4^G z`}!Ygw^Q4U0~mHI1oD5}`H(C5T|9pHX zHmkB`Ql8Ya!Cvr5er4TK*O>j`s}5znpxj(ddZshFwW8#M%6i@j;aRUOm-815v#-Yg z>hvg4V_K23%ItpC4n%u4YquWE9Yti*@h3iy2ySnJf{q42dj^(X72U5R7x7?tQWZW5 zE+Yu@?1t&~s3@X!21N$<21zC|Qc`7XDu(>i#yZk}aQ$F^Nkf*xL7 zg=$}4!{nBk3y6DVuvdIAf>>t7`%csdDj5#7mul7zxK3IR$p@UuJ3foEy`Hc2oc?R` zBlGOeoU(aZR&IVQHSqujYU1wIL>uEC=_90^ouxdfmfy6KbUsx3em19B^Ynd{FN!mJ zvU+6)-=ULD)$~uv+uk3sX(^v{Z9@P3vSLpT!8Y)??^8xnN233X9HMBr;rnGmCqKVv z;PpTX(yFDfj}+eTXpSoxzvbGZgYAPBgWT(8KYt`7x*6cAzH+gK>2BG{1iESun=A6i zYY>FoUyg-Va1o>{kQ)nE*fS3vd zzRe0z_1OG$fwN}$${;_)sUFUW;n|0Y^w+jDgjqO@)Ju4kAl2fF?ChXTI6+h@(D`k6;la>W~T?+03TIiDbK5)Kax+{JMzdjdq@xC~(VI9`=b z>CAiCJFKj2*IQ%c?qzuC<9bl7zO?Xvy(spO(dr#<)Gfhm3s2qFCw6=0K#IPr& zGWT%X)x+R>aN^K?^6g~vkNhaE@r`BFfjf?}#FpKmsn6jt&2|x{7jkv|i2YSh*!eOL zfbj;t#n4XB=j7V58JU_s>A+x^^KYM(=kEQ9=Y{NY^V6NNWh+e<3D%~rM?+B0l2A$} z#+=C-TbXh1B}F7MR^T64v5QeDGY_I2SKR%%NB!1KKJ780%if_L%RU4Fs>E%im?8Ig z5fOzR)rX;^mUYn9voVU+y8{YOq>xLHApNJ~*b2YU`)y1759M^#wewPYds1>OEsr1@ zOxI4r{Xe^0gdEyQ89)o5dmGSPu0lshPCLhOUF-aQL-k+Ox3&tqB57*PRT2=qDt2?ERZuRKK-f3%_TuL@_O#E*5oU&w z7oGjZU&;KbGQ$fdTXa`XMzOn(I2*(je;)ANm*=9H-^lAcJfU1TCa*8$=rRuCistwQ zCFMEPz%;KyOi$mEBwFC}doA9B0+}$6GMAV76L-6XPSP}L#(;ThPW=$&kCPU!UC`gM z-S2X{6G|C5AzJkeJU+s90>g^vZ?8&879n@GJ!^On25qv3*YL6ff-;E6daj{o*Ss(D*j1!t*$YRn&n5W_S0F6D0C zKy->_!Nh`MQnKK<@{>N`ieGd${+^4qJ6omkdX!2reIJ137`wwrFya35z&3knE(q;C zE)y%x8N;GLA1}ywMi%x$3T31!^7)HAH_kxS@yaSO61t?&G8t?>8f~f0^-}#4;6VKY zLVrGe31%Pslx4$U$opP{TE7bL`pC_!X=1?j6+bI#2E{eMy9$A#oLqlZTvr!b6->@0 zW4@~qNqcI_H2}$Hj6u&IL8;|dAeLTum?Y(!FeRIfZrIoUBd6rG=@QdcU;n2Kx4V3I z)6AivXm32YA@)9_!2ni4tJTLWHTfVhT9aQguf!M^r{pizan*Az3xht|DZJMO&=>rOV3IW!4*w+hHS$=x&hr{%E}qL zd2SdAS${adx{L?izO}#C2lHC>T*UeSsqSZy4fwvdhI)(-^c6VnQzNHZ@zdY1`w{I& z`C!|HR}Hh>zwfE)J-mT+)__mnPfJkQU*>-msu!xiTojxV`0!aw z9*7ix1W7dxHxgZ&cGBTALK$rS`d1v`vO^Eyyknc}Y$z$FOSuRrKOrB#+cEICGM?1#tI947Hz#x>ovGPg*hry7W zk!WlnD|`R6Kg$6VBWV}sK0}B=D#BsGk)8xd{m{7Uaka z0Z}n!a|)fp^F`)=Jb3$4r2}&+cOt(Qz*2lEUd~uw0mDOXb~@Q9a+~OVur_M0s{iKE zl!><1Q9|u*dIj;0Ca}@uaJ_om|2Uo{)Z~+xs%xERA zIR9MZ2QusZ?lb+PTPg#AKs!l^hC72G+(1luqz#X>N&*Mj|A0Ioi!0_TrZ}ywlRqHV zs$m}1&el-+6&JcI#&I+nzANEqfE&kZvQSU_If)zrt_;Od$Cs&0U^l3j)lu@$=K&Ms ztAQon3!n(ruh{DNUq54Wie~%SAUu>{E5G^^S-#K{+tH~Yx z1ci3nNVi-Y67yum7y&CRhDkDOmi2soJP31MC_6j7fGp_U z!8Hr&?7HS1p>Ofw39mc=9!DFX1Q3}RmUGK27W)et24|TpnLM|%moq{Y%LfyG>r02i zUR!x(%AAe=dhwW8^(k#!Vu7BE3<1Uh!qLzt%)3CfLC^p6O{|0Oi8|vkE>(sZCr1UzJWXC2%@flPgzaAf+gQIZJ5S6z3})kgi`<0! zd7Sdctg0@Jw|EE4dZ@F*x&EI z?x{;H{FfU}^&1&fO}Mi0^4n13q8xWJ6YcV}>WNn3Mh9x_;^RtRkweVak=%(Q0Ty-) z%6`B_sU4-SJKs~}PTZs+HuejKin`6H2)9;-B3mk2eiR0uA|~%^qc&TrB)xTEp)VXxlaME!1|&M4O7CMs2_dZ0rnZuJwN&3 zyOY#pemxx}ZuIclTsT9fVmIO~KPJI<81Amh%VlV}KrX-kbx9(sb>a`a2Gk_Yxi>|N#RQW@xa(K2bayae#+fe`O7UdEtl@DU& zSg7ifm6qzD;U{?KUW%G0{wkjTt;B;aGqLbGZg^yrc>Hj5_l+;5@;_!A%C*dQc+8o? zUl#=be!`=w#CNIDvX{T#iKwsNdIKRT;UHBZ?6}?}f7ALX>Du(G(yXS|`>z@l$NU1s zJL>c1T?}D4SFO=&{7kbmI{We0=wVwqJ36J+skdn`IJ}j^RPN0ZGd6bVhKqW%wUl8Q z&G8amjO8sp)iMDDdxGuN!@8zo({*9JRZ5GUa;*yC+-FMnCM;QkeW_cLe_+vY7}d4) zi595Cd@e*+uV5krKsGnS_@zp6<_$`yD28<}5XqIihNSXJbcm|G-2;88Ot`}ugm!su zip~vLWkBp6w76STf;nR3RMLlBoFYa_MhXqM{y82|eJk8vMuQaL=)S8O_XXD$kHV-#0Nx5oP(W^pV8%kJE5A?{4pZbumPL8?TkW3t z%#nrp(aqJBTC+e%AMPiWSpMSkBnpRm89p-rAX?EKK*T{ zs{Q(HrT^N-`$uk|29EDCj;&3R&jI5xRp0~VX}Y)ns9T~9tV-9=pCs^5@0?jAMNhe@ z_VRCW)SF3X+h|uBMRTo_Yl+SujVF9o8{x_q_sN&v%sDeFT1s~>+&ny`980fm&r{>1 zzBb-+x;&hD1~xz4IPKM6;3jb&=@!{H``%}o5)eBfk?tT6QbM~&EIAF^u zaGS}3TMwcK-7MkLD#_gMQc$hZcE6AeL$NfgNV2mc@x2XtR~I86Z@)hcnVcTQ<#BE% z<@HY5mAeSxzzzC`5$EZKkzVjfyt~6e;qaZx;Aemb_Q1N#Hz!$de<5eA!iaf!Hq40K zL{Nj_d}8@ubw)(<)~bANQvy$!O*Y%nZ`DJzlYhq-1(Efe1}BM5N(o?FQ^yk-wga0`-iQVtJpPYWFv zM*^h(APksV(kv(rAq9XUkX?u-U7@j!wf)iP7^DyIo7&w0HSE-rTF+Lf;#~l8Kh-6JwN4&s;SWIjmWKGXuhRP!H zhZ)D(fW-{v%4Z~mFnKhbL+mW(dVpmR=V~+xboaomN5kOcxn0NAxNa3d?;M7*SIA|U zhYb^`a1tL<62@+4dk77-lLTTB2=B{P$GM*7*?$`Xmc;-ql^MEvOAa%VKtkW)K`QG` zNc~H&@ zIU(~q#ywT6)eixvi1fCG40b?{!_BaFASLhM!*uqHM(IyvH(9dA`>RiXVCK4V*POUw z(!M`Y6M4tY=6b+zBA4z8EA6O3n)7&&hWO2fs)wydwJi&yqM@?%v19|L(N_dODkA9r zcOU?7AOZ#Ci-PIjFj>YA>`fnje#3*enUkcDR#$Q14Fk(XaznBlx`}F@)Iyp%dgE!W z4>R)q+aGl$47JCP;>f~SN0jwl+NjPM+y70lb_O3J8n;_l`LOb6Z%%1G7*X3*vmw`x?ZQ z4*BB?!NtyTjJ!X#F%3-63Jh+az+-cYM2DmR@Y3lB{o8@F%9aN(fJy&%$NCZtN&X>c z!WqgN4#)y(=k>SF-B%m^&#rkfUqkzkS6$Y<>i2?@Xu+q?ndvW_d_jAAGEz6udU%&| z)WF#gX8d5ecvd{fxy>F*I?;*eRTAOufQy`Me(%M%p@5452wzL#QUHOcME_ISTyA}P zz?;mGVm!-Eo^aWSi@4GmBY^4R&FdfOGrU~=o)%HagCx~Zm?s8so{R%xAU7c{l34a* z40}P(q%oocz`z9LVJ}=8+(U$;=qe)67=NKX=Le<$0+9avv5CVOfLsAn{dx2TCWdPKn8`h)x8}-SQDS=B3?4Jhq?N+Fuz!lpmey=HrhWw+kE!5G~nYSd#sx}6%MK*~p0Lace$ zo#U7%Ksz!m379K2iHJof=w%r{uv+ERvbqTA8ESp}?qkp$dNvY$ya-s(E&F{8P&ly9 zt03gEk>lNZ!M}@50@`!+Zi(!MtXZn^Hv>VXD%k*}xlPKod7*Obji8k;DT1A>)&~F| z%=CiA=mFRO=$oNV$%)hKPK|(+%61^=u%RyUhR-yXuHicP12P{Upwu2eijU>-yT8g> znuCq+Fh{ZKYJB)5Q;;PhQc{PPI!Cu6z_LL?^EZD&5>&sGaCi^`Mu!G75@Y)OR;2!d5q-JR*Cfa3 zBn%^u0I(y8Hp5G~0bwV-65atx8#pd`@`B%;44Fo*{n$kg zzzeMlfhs_In6fQ304$+OY>Z^x!BpZ7HI))LXpq=)^;p5RV-RcD>N1ROL3cU%0ekSj zT$3gGm0}L5745FmxHsoILS2hmh#N@KN&Zp%3yy{)h}sISHCd}f;1U2xUau40cg#)W zN*lptzawxtHE4V@5UMgq;)j!!Rl%%OGz*I~#y-mbTc_%Qi>P$;Jtg--tn7uT$`)a+ zZh?P#;-MU}mzDrH=CmuIDF{SbX$N=%7Rw7YaFhG!0OYe}C|g{@ml;VMWP(k0)<`1X zdp#-x(LnT0uzERNr#n5`i$`Dgv>=L*S+{%6rVrxe5vzKQ>RHoCWFT08x_`}_c%+O6${0I&$? z4;>I-V4RQU6ci`LmX`wlliAAhKf08|1q^!c_A$>Vg+fB%SL5ZEY>cc?FNm)Hogw%> zBeVl&__L+KzCdU(Rmwy-5xvkD0B*A?{{t!5@Dn)%fh9@YOhWyP=Da{S6B`gV9yUPW z!~isKhzsD*x--3)DCaCLs(4k0oY`y~kGz@>Imhp&2V>&oGkSh6&A;%lL8S}4LreDO zN>8wDIJIE{F7i|6?J-lgN5CJ2?Bwp1Q;<=rBs?3KvO5zr3@|@3QnHBt#>>vB!%e+t z^#?rkDn9+J!h7d;472*Y68`+f*Tmd*irbxp5`h}?@|pRApBu?9g=5v%X`&~haXp_g z(+%bgMw{zZ^0uV4SKCofxF>8Cm_ECqPG-}O5TLuE9kKV@LG?2+IFhAN z+$DFXq~+AimToIJ3}SIMy$p@jo!{d15TUyO?grwk!^sCnLnm1>`xQSw)}w_eYp#2J z48DJ7CxL{$oe7HCov-HA)qp7}5H{`uX|}EgEg|*yP#tcD2<;ZGb|?ke+a$bI&+qck zsBebU)a{nq2@`UK4LEMAtS(j%BNC zo^_N_0hja3?Do$Md5>n#RvRRa?nG<{8bJb*o6>a*--(<63@)LbP{1;`?3Dh4`uboE z7%*Teb(ER;QB+q@QEnHoceO2tb^|FD?{IOe#>5OJza1Td-KPA+OA|i32eFSEU_m9a zCGyKs#wFw>#u+#DE_(XC>Hch4=M7l!Y0Tw~___e^$e&xM_8v0g)CAYjnqcub5@W#T zrxqgR@q)7QH+#P|<)svr*!D`HNMmCg^{bVVjzdJ~XJ@qv%h?auHCc?CckU2+byQbC zUz_>kobdG;uvht{S#-DXm+uA_Np_HR>!~txjA3$8L})D=Z_(0*hD5?ddFjFHqaD6T zk2)he%1y6mwm8xVR)ChVN_(vATfLYcW}paA3roKlTeJL39>vH#kOIpn>d43}ijU*> zXs{ZrP?2eB@qiz!eeo&Z_4TZ~2en*D%(3Dog5$Mi>4Gx-%7+h413yWfgnL)sb-TMB z#cejIKnO4XE4|ndnbOHEqsLzWD5>w5pqQL-DnBG`iL^Z83oH}BQ2(hhKaKM|Z>n82 zkVE3OFw93WuHQc~HbarP+v zXO-j>8NL?AsMpyz3GaN0=K|CfVp8|Es<~9vwg43cL$Hf^-*MM_Fag%Fe-5`22$BHL z2?P^(J%HJz=>4gSsxpR;b0FjZlZ3|0?ZOApX(xk5BSIt-AR7BsKa|)e7?f$Nskv2G zGFfkkx18?%Y1gRe!-qKw?q{smUWjeNK&XQHx>{JdZN32c6dQ;s>q|%d)^b!Dd2aK2 zLgg5D?uq;_e0&S77Bsuyuebl%>otygXf11lB^ZQb1Zh7#r6+PNP!!bKU8SWiMAVXD zGXRn6(d|qajChN1`+mpoLtG$ zi+}k0&Ichc|5)VKhqbi$6R?wT_sUdoGI`u?mm5~25oqA7fY)`464tK(`e~ zrnHSSkjS;zcxT@{pS`}~dsideKlIb$vCEimJ`mE-C~cRlvk_O--H;+Z)c4JR1On$-L<(86{!KG)DHH`)I76bn9T#zd=+N!0D+MSezbG!QV}|}@y=MM;nhH8Hq^IPg zfj@kgsIya{ zz#4;SAd@R;ZHuE}KyhJD-wlT{1;9!^rA2-n^s3%b8=s{Lf}-B+PGNX2+@$POY9B@+ zEx2Qu_c&H-AiR55{Fu)E5?BE6@UK_{hIm|Y-$UzV17JH6(DLCE;B zE-)KWvAnnuo;UKzk7WuzsQv|1#_K!9IJZ){LDd-Ot+DJomp(mS(KTA;O3F!@;$AW7~XT?WLvW24&_h z(XaQGtkZvwsv62V?yz{AKbr(1!*5PANy^S;ht0lMD_YmX87(iYHJ{0=Z#5FK{?>Ar zPoyCkfgb;7zkXSCD6>VV#J6U5Sq8)*Uz6a?UlVw~u+owUZZWYC3=sOqm6C%`V`W8+ zfS{f%9P3|V=<4ytBob%0HYH=4p1OV);80&7@_`V*>3g4)N)mkX3msH^dM2Om3R4fk zOrY@Pi>RjGaAfQLme?5Z?*&Lr$=q>%( zwAXAMuJ}2S0f6)t8cf}8cO?z#l$gbXK)wuUK_a_XpQEh@0ad&M7$8zif62TQ+hMhI z`zg}R&ueoWvdF7LU{SIp)Kp2fHn`r+K^6@y`IGbe6hF(pO_gP`M)=jc5-J_--6t*) zZu$HJQ$NZ#NtJ~-CHXF=Wz0-dDQ&sJa%$^KvIbtyyr4YNjj<7v6k2!hdyAKi^+t-R zeK~x$&eiMVuD9Jgx3ED75OD+PD#tqb#0^N}61T3-09_3f;m1NBsqD58|yKdK?Z7yv&;4YV6h-X5~B1 zTi;k!^OmI18L?eP^Cn$&MJsJzZ{?^Z5rx9jK3KWw=n>S7V2^rjr#Eo9a@fPscKAP81r>2-<}#!oC5>J9EFK@{cCu$CqV|2V^kDx-^9i?-=E zwx5`gBg{pIeP&o{cY{o(mHMWzaRo4`-aoSn&}KGa)vc^9w#l*O-G$D^8_ovX>DRpp z_V%8US5Z6AnBo{nss&Q6Kvf+N=~_E#1bZSirk*z4g;qhr8-Y_{{1T%rD{{2;+3%qz zFXTE%z8+WusT$yy#HROE^!I<;vhA5a<)k*zlb{?u`MG0DLntlu=gAAU*P*;oB_C*p ztx}(S9Miux%fyl=HpFky7PK!2jMA#PREgF~#WLiv){qvMtfI|)u64Sh;3qmDb~koa zWzk>=GQXb`s%aI7+{xq|cgrrHxZ6RTy3Q}xnj7+5<|gBI8ru3CeDdbex?A{3bxFm$ z-R%w)i+hC1aLz>?EcHF5-qk~}5Gy>6zmCjJ-2T|O=O<@RNO0W-W9kI{P;&P2A|!4* z>R?vlrQs@@20?4(6GCarvtm##ukst?Q#>nj9q}e>^Xr@#uVxuCe-QkNGtty#xR3U2 z(AOWi{9$dWDRyfh>-fGY3)*cHEx4{!eyQ|%P0!Tsea!aX@1u{QT2anzrS?q%JKYAO zf+=gI?{Z7+4Fk2*`Hce%-u^5hS^xaU)8=>Tx1m4n#1zN&W_G{q%f1vp8m>;rlQo$y zoH2b>9!ho$MY#%`7Wcn&J_#x{W6#c7)+zALA-Rcowb-I%QD+k+sYY?>Em{X3ewTEf zR8U2A={-D^W1CV;JM-82=`IKIw|$t#Z2_UPu)u$`HqaVp11b9~y^;L;)&9Z))!(uG z!Y(@*DQNq+>Qt0;28)=C`O%XFkA7*Yk~5vmnx5h+?NP&m>nxq1RP*?dZ%1~c)NQqx zZh9kc^iQmyR;g))TCrzJTW8UTHmr);4gpT>v$V4kWQX6EeSJ6UlLJ`iGp!|Fmqhrv zY|2E@nVi5y9}P8Br+{c`d=g&unkP0#uv*yOUE83=G{k_KK%z)J+Q+`v58KHbZ^6lJ ztYmp6jORzWHK;rwIE~!P<+JPE`?d4ud~9xz_&n7vx2_(Sk1vdmj4Y;hp=l zT7zF*tRSg*bjUgxYzSY_rpzk{YexKG&My)$jy|^|^cc!ZR7Mow4M09j5=yC2#=RK{oZ9iA1y>oX1Xc;DoyIIfDH{gAh(2C~o&zp0<@VwJJXA%IFciKKR z6nd3o8?O15DZN&WZ)pvPj4$~OW{dJ4M|00!$}j!0mxRd~KLyJN39FDQNVL@qQizp* zhbjdgz&-t|=wKXb<3nfMIPF{sRIgSP?yOZ8MffxgMaL;C4qDB3Y{7cmmz8XJR!MN2 zARTm3zQuERuBsN@aG`U)P1E$Bu%6a(%jsVmL{&6Z{u@c`PEHwDHT1cPBR%^7txzJ7N zoK2v``EJ&w!iE~RrtRl9@p+*>-6!#~`|b4=99>5#iymh%iMkH-o4A{ICh2nqUL}xm z^K!qtt5)dkHlp+^O%DsZ=cra9Je*m?aMK*8rTU9C&4Ri^elb|>F=4Bt!}27-+6O! zdb=c~&wBq^^3vM0HO$Uvx?}L_4JLYL|J@0+qE2J_Vt%K+M0zVU9cZhR7#Mu9ERu3i z<@bK?lhQx`rTh_Q7{F^YloyzF2|ctZnYyXY(8;HHtV8m7B<7>zI-6|uSMq~vZ^wQY z*a0ztgq~B{#&({eH9>E--b=y;b9_7-^5asRNe2aK7wU5eT=I4e-n!a7Ac&N$QcSSpHlI*SB)vK3j z!oQgym7_dD7rmd3*>!8K@3EcciCt zXgwy?_^ZYe%1ez5!)szu;s&a4OdeK=^Y~Jv=wX9W5x@s2oeXh-nwB0n2B3f@AD{zY z;x!Ebyk`@DKJUr=deyKHY>w}VY}tbVbeZ`1zglRCHSc+e242FzU?$IDMsmnH@&#c= zf^trBcL=T|AjRw-_W2ao}7_O*KbYlM7tE+WB2jli4+F!%HzQq1_wy`Br|7$aaE{r^$NytqJfE^12IOZZ1et7G}a9aqxd zYDs~i0jF6U4|24=eV=c*)qeQDR=}Pc5Ho^&aPtz?Ig`Pd1TF~W!feN=9h%S*VZjJ1 zsN^O5x2Y%T%6_VVP_=GVg7{x!2lPNE&pBqU&cD3WQ^LRaOpO^z>P!I)w#Y<}3Q)2} z>>8;g^C?%pCWM%A1CIr{^2ZmfO%J1I#Ir)SgFCT06+K{sOE5XkUN!h;oT;&ml>bUs zH87`y7GSUOYTep_(uRZIGj&+=P*hklv=$HIL5PwF1tt9bSn84wHkb{!8xH%?M-CfQ z0V>EZ80|7V9D0HAFI1`INm6EzI(q;fwM{`Ost|Qavtte{(FJWj*xkMP z*WC7!uHfTgay%;AEr5p?#lgu~w6O(>G-~_?>8i(+Zv$1}|9S-;>nCgcn%g(=DfB_- z!~K@clc->W8Qns}O%1>5V>#bmK>m!vHv@xr#YIIp-{L`H{`Eo*^m5_-YrfrU*MPgz z$yTg<^xp_10b_f>9%s7SbfW(RWUB17ZEpvx9RpB~5DFOY?6SA;aEsjJ|7l6B3Wg%!(ppg~RvoR~rB6ha=4O8aTILofiMb z$MCNbqaO`uqd#59JpA`h%*9His<3sT@R%5&n}VT0&CTzEcij1v9UWmn3Dm9;5yLkB z79S*Z5g({wLf523ROWTw9Cic&m4EdOEnEPjk^VuLz{y*pd&M>MSPb?#@5`@6>L8E9 zP6>fyzok6(;lJh%B9L`PS-E9dpz16znf$QzW@@B_&@+fo<_J)ehw<`|D&YSYB6wZ+ z0+5#icpLAq=)6=#a`%0RoojQ0Lk3SiFcsT@S7{q`O)`KA00+kpOP%2I6s?mm(XHXGR42VLy+?4!>PyvnP_4*MSg z6|l%%W_pDc0}04_J&@6JDRKMWW}x0HM_D*Xr{DNT?f?4a%wTKhrUul#ve5wXp`Xx$ zG;J85OqQ=|KRHz5hI%%}sy4V;xXf!*14nxOAS=t^sl58i!m>ApmA>b#*~6mwuFEzc z0|hD+59}Z)mtOVgRmV?2Ip%+NKz-^v7gR+=Cr}|U@b(bh_VqOUJ zHzw(bWO5S51K!&vjZ@xXSjm3&^!Yzgcr~vAxc~8KT_;I|=}YxsC=clS7qCZuU<8TB z&jV}^Mkhw>1Em8B*x-ho+_Ecn0tb!sZ9gZlRDcwjzr@Ph>khJj*gBsFzCCYUnE;(X zGjDG`6jMFwnw1F$6bo~0 zMu&${C5DATUdWh?B}SkCmz?u4G3UwQsu(Qoqp}-H#;dLLN)9jR>8E3$p?>NPfG`!+{XfmURaBK<`0u;uk`e@!a)Ag)tEA+j6r=^Ek&qIQ z?vPX(C8Qe!1QZGB77*!@ZYe40-p~5|_c&vmi+!~(&be|7d}FSe&okfe=Q|G^=ToUc zZR{5pd5$;Hu}iBem_+aLY@?Zy*3^C3* zJu;xtoN}JV;Pkq|S#f3m>ZE6@%aka0j&$Ax3P_v<7LP}RR~A$QBz*z~e~S8e46g?u z=tak6`u=U|{!+;1oO9#C_203_mB6nOQ0d#cfx^Fn%jCIW#V{9Y;Eh)_vQeG6zV1v* z1CYV1EytbDtYk@RPUkwG^z$hDELX=5y1w)%IA%Xo9|hS4DU^pXpmDX6jKTBV*mF+7 zw&}3$VUj^{XgR}onEOvFRqB-RXZt^h9yR^@yxZyQ?pO&`LI+g>A5gMd#Lx|ObVfbn zw?6K|?HQl1FL0eHg1S&YFJ@rft*nr!jI&B0WXnV0-4~XCNp5J8>quXqETC;q(|jl@ zIOBy=lM3`%0vZ?EJ+`r2@<-g>EepLGfcA4@UBOPP6M?OCG#{v@-9@j|c09c9=sxMV zU!AD}E350axeIfvE*s9M(=2+9UW|kGLNtah1Bo42sTf?Lk*!tNBUecGba=g)=SQD( zukDuO+;Pu<-UjnP9Dv!z{1z}zFj6{VO31zO`M1OVh;8T3M5LzJTdQh!y^>MclF=Uv zd9rQKq<>-1G0cAZ?;Tonmv^;S+E@SR}{P&6*OzfU+fd>1hfSKLw$1f-C2fgq-}zDYiaB3&tPP^$*jdR>vdP+%r2a5L|3 z%h2Y;$}j}kDXusbdGriYl!7p-Gv|3ZiS=Qu#nxL>t=D=)smqxYDIDsQfd4W*F7K05 z4SP+?6jG*fH9`j&IW7IlIX)Ow-4v9m- zY(bnZisjaCgP^Euu+kU*3SGuypUDU}heRJAqy6h#HUIcVW9tGR)7HL79n~>U7pJ{bJ6QY)F?;decG_-+_6%D z;3yC1hq_6btlJy5b+Cv*h{Xxl^Q)R?w_unq)~z1b4+kO0f_U}o1zXLpb9uA|OwvH9 zWINQRG8E;B&=a|bpvhzD7k;B95!=8J{m3#0>D!_{L@ENP;fxJ`Jk6Wu(pOz=g8CnsOo4lnTuFl;8-s--5(zT^Z7z|UffL3um6hES)ebr6hELW}jN1~$9YpI=pz2cEa7 zG}yt`9RC<@S7uubcy$#vrzjnRE0&?lFgcsofO9~{z!f<;uiB$ML|&d0ynzNE24?t! zZeZKR1Iw5X7;LbfnANDlg{4>Ig1wBRNu!r3?NR)YUTEDk4Xz-q-{Ix3cwt-8PP-S~LA)#5p+ATZVNpVA7U##bh-mw)6dMtXmQ@ zr%NBN{X_l}$%~?}?}b*2ogJegh0v-Emn&WZ|BXnO9gw3irUZrPRXPaJDOjhPs{D(~ zCjM#9Q(hT!NhsVdElWF=$Yl&l3BMoyf8c+zh0W96Swa4yU7}A!ZWhsIHv*H%GNGPx z=Dw3mdtBZa-|#i^Cdr9POT7{+C6w zWchD@V^T;SBa(h=e)WEwSBf0-VjdO{XTDi2>hOyfQP2WPP&TVVf0tA3R?GQP4(f^Q-UdE|EFQOI{{@YRt zH5^rF%;|wJ*@dFGRJPCaI(*@PiKuA`mQpTCNBcs^T`bq||pCL+>ZEm~w@jc^HiBKKoP;ELe7QvDr0Ad`jI8ui zYxEC(=z8#@1s1ZU9T7ZO%|)-EIug;NK0=MKPM>J2_K>ooJMFg{YYsF@(jXZMY$+-h zU#j{pSGgWK^g?3H-oy!$Q);`fB&uT{nu4b7JtkNdU{6fwX(tmIX<`1CI*-EIV-o{$ z=gvy!bZPKcO?)KT5f?(XngUf!0u_rd&xVe54jw8SJ|-MA-NAx_p3CA_3Bxb9j#0zc z7DG3_ZZF1)MZ<&CEtEWc1XNhdef%o^ilWeVM-S_sBm<2960(ioR~T>qPi^zt)*h3Q z(*ITYRRS`*+y`8TNRWF#UyJ?UebIFnxlmR74mk3(d@Fb${PJfgwm_T8K$jUG+=&;| z)9Z`@zFYU5!pZC*o>`RtUhEJ56QtQ?@bFm;S>c$=Bx!9dEj7|a6n?q_%yBwfB0qX; zY^_^sDR)G;(J(98Q-UY#nY_gR&e&ozN@8>qp(@ZhaA~j|QoFGHZSVqFyPOv-eX5b* zmFS!s5fLXx&D1lfFIV+(aYi3lJbrI9Rue&18U$r;9tv%LWKr}gB$f;3T z*R6B2ZBG{*j`2G=Z&@CPT&&`QH3f{>TOse|Tf3Il(u9O>nyX&U>nKn=>BzgLhRzw* z{+)V^uLW#@3G&rM^TRDM8Cxr-koK7Q%HB1udpBhHErUmbSX~@-d2-g zO3q611Ue->pXB!wxpj6Ljs)HL>BIlMj>$aeMFYD@&gf8F&(1 zyqBIL)x}r%97YY>Rbo(Q2{3pzv0V?(&0f=<_Q>RlaeKSp8`_;`k!oH36>6|`8urNt z!sm-n+a?3lXW!-3JDfR{Z^%$o5F7Ng+R@b>UfeI6Xi6c_@zVF?xxTP6OW6(zi-qel zs*~T}_IiuIc707aoAr>|DTk7F^v%NWM}r_xfiaH@fnO*YrfuCmK47PnT;}_3JN-P( z{rzkaq^H-zo7sCq4O~RJt~vozC5pFThfUS-zweS{LuZvDUI(+94SC7b43P_+wMT{l z4>~b)ee}=VjddbEDOfb^USCzhuM(kj9FSlOEZQKMcH1Jz_S$VT{^_2;z#_g=s2+NObn}TFfNEM-;ER&$$twn!kM+H9Fv)m!=QaA{ z)vw?gXItb_YxR%hguWKYES{~-eGGdZWcCD*MxeL)tmnEbOEg7t6RAll2Cpn(pAVA1 zzg-ud$z3R|K9oWe$;+Bl_C3O1&(W96*#>vJl8oq6bO*(*f{5@Xjc@kEjHn)kw7E;G-?Kt zc9^9Xj=n_h2ujx*-j7k7o82b}AUm2|o~gA{rA9R#-axklE#;m^7_@fnKK?0bMK9&< zN-AYS!^7=Or{5rq>q|rJgv3U-Kzxv&x3VfBnnv!Ob`?B4AIPDPFuu?2 z9pdft_CZy`OV*@j>vz>#9>X)f&>7$Od6TNjXN+1cq#UL;7hj9a7m%{(37t`b0%cs? z=dL9ft-GOm=n33bR1P`^gUUV;m13LfU!Up~Exh}l00VX@nqG%x`HMwFp2AMd2RtvI zKW!x~V2DG8nmzAru(MWuCg0>lD_9Z!;03xSjnEk?e7^E4K+6U_dIuz*L`%`J^*&FM9Kr9#a4Z zE;@zIk*54{6x?uzvD{`GokRvI8lX>Lw0TEDSO9YnS+y*?%o!D%%(+9F4_41L8Bu(Z zi*S4-5qgbWv>`{mmOqGa-5(_vNMO5rYkvg zO;=d}(!?kk*h97N(v=zNy2IJSytYn(+7y6o(M{j#Pu#*w$Q+zrV?$b`2`}vaO_Hb8 z3ATb=fyvyOZL<;NekOM4KO?yfXybiBuRMBy40^ z*rHp6t)jwz7l4; zxA7(3LD8EE0f3Yw)B6PVZx3N7m~$u?nQie_i^|qhpyK5E)?OSo(R`t+bcgSMz>)a& zlm@$$yeJzcya%oss+0go2^W*H;z)#^9881WK=N{tFN6^*YlZ;n0$(*!Ho1VnYJR_e z^9Cje@2}vwu6J+g9Pn)MmGwP~%4AKCX*PHDW9+@TMS$#^m~NkL5tyxp1P(^GD`obE zq1hGz02s>egb*5r4+JGsO@EKOegE4ujjm_F+*{nNWt4>Thv)& z{YPMr_$4`@DCl+tgPIxA7K~=QH1#*^;AqgcnnvHakL9XQ<6BUdg_ge`q&3?*^^3cO z-v%QxT~tR9{1F~&?&AF9h9%#(Cm`q*^$yHTm;6cyD*9v*h1d2+SHUVLz`Ew6*eA3x zOeOg9h2geeKZuMn{X7C6%?JtO%D^-vYj7fP!F70j5CX2jtlluBB(DJkW9*U6bqow5 z?VJ8)QTEemPbB4O>NfE3wMDPs$z3N^j$USSO(#cj$u^bV22-B@r0-4_0|h)|f-GJ1 zg85D9-~We=axfrm$D*yf7B4=-{?(#5JFnnfNTsaO_ODLnDpXOABw z{s15Ko=dAz3JRTE@gK}GB~5)INrcwfyjt-aNqn8AI>ess-0=|DM1!mP%62y=#llE~b^m|L!^asMCf!?dQk} zzm-V*0di}C_pYQ>i4m*LseXvY+qldbms2L@D| zBlKVcl~QF$OKi8T1@t5M2kQOSNbD5)h&65}BB&ziPdTrSz>e?_++Dve8{5dRHZpng=8yh&8**e_}Mg=Ldm$Qw80k7U2u6w+rOL>FL}c zK(l<0!HR%+Fp@*DhX6&+8ba%Tfdu0cB^T$H;Yq%d7l}HJ3uT@4(dGLdG>MyG!>;D@;7lL2kd>ORiD-b3Lz-!anaKk(GkHU<9eSc?+6#GU(M4z|^O9DzeJD zMTiFj6KJ%Rk?!3{TO>BTKV7H7fl4CP4ECvu4n|53`~HKAMDVtezAU~<++$NdA;w6m zHNNEAubwuJRqdWDZ@;BL`Ab2ALv%u0^$y$NcR5 zbf~mR2s1Zhj_9KgN48pO7Zu}Hzo&c%*{lICP$8oI{#ZozYB2nczO`2w!{ELtDxrIa zC)aVEKy-QY#N4Gqbx{Z`Las)V%OMADqvCQ-0wmtBEXuR8;^X5Z4YjU%cfFahhiOW% zxI}Li^|9q&X`G-+h)*0dv`ttL%cBn~DCFocD;*3{RLw*((=(X}!JCOKsqN>WpDnrN ze?i`CcWLgitlClvYW$6Dfb_y&lmpk*E0XS^T*^Y(}NkG+WUGpVdI!=d`ur4{~ zM3Zu9xx`nDLPrqjO$QJAvEa&Q5-4jH5d0?AGWDPttMNZR-*ZW1cy<$a)rz|m+%xFP&CUXo%q0| zo_`qSV5&nwwNfioD$&gytuQ+urllq@rK_qbGO#`NBbF=fF169{Ywd3w|yuS`^m)RSQPUm;Ur|d+%?Ch8n z^%HmfBQ$Tz)2fAtCb^$jH<`K?Ezvm`G&AXWeXtM&#bb`c2> zVg1{Hz#8hBJp0sdqXZjSD`yAhVJ|Kpg??U7xLD`>UX15PgK1!`t-cc2M^(4sT3%B4 z&MR5~yTLBa?BqQ2GBn@W z=2CAK>3`diWwr|uQ3e|?LqXcij{6JNNgN(-9Vj+R)j3r*xu%C=A> z(>4gRBPxkz1u&1+E5A5&_(2PWZC(6~j3b@FMhr4xOxi1XIUj@r4TcaEjep#iEns_`6}n7ReC|q%Yl|wViJ5~4IQ!{ zeia-#L}h@T(TnsJVGgYsalV`!aA6yFdZMkZdP`A#>OL|OX{w47NQfkBCog@Fk29!e zou(Z}JW2%19}-_!U9w^sPCnSBgoyyw9qzyc=W8Y_M-OVTc7Ukk^&;%lfXtH z<0LnpU6VkS`=n+SraibC&AK66g4(~h@|8*)M*wp!j?0K&WzkS7-uSM;rq%v@hd6qa#x1zUbNZdZQ-=iYBbEux zlyXaICZ~SQf>oTpO&_LhnTX7tYAvN}D#Ht%%Y{ybk4$dYOt9b}Ma(05!*GZy(M5o#|L|6aKeA!CfagQ!vM|($Oju92xMMx3RxciPVAyeZndv++){ zHKp5!LO$NbF5f0e+mqxT)GO&&!R3$A#R3v}hrQvf{b%F%$aE&z%i%V$e1+-=InZ4o z{WS45Hc3PpygG$9grj=wyae?j_rP^}P2oM*t9SJna&;t@;t3e(skR`UCVa)imtX+G}SoM|wA87$wjF38? zK(O;ne11~JLertnw%@_i!*Z)KWjgdG3e&q1l}e-LO2pYP&E#wJx06BzlG$FwktCw7 zO&nZMgDMQjAM#d{O&qdplr(YiCM#Kl<3-gv&K>SLq6s^@Rl^}6 zYjus1zUIUqZ<(e%fazG&au)FFmvO*V(^1B;zx}AIEbqs=-_pu7FSuzsRtOE9V^3~# zSYTG(0TnsXFUHE2V~lq>IK(+Biv9sST&HB9auq8lMi6ORqeCsg}O6n6IW5s1WmSgkCJS`$gWg*t8#Cu|JhNtKUN^O_4YpTNW?Ku z)|D6=8Cu!gJ~VB8sE!lRH$|Eg1BM>nvtW+k5WRA%n}c;l#Jy`ET&riiAv8lq_gPXX z>|(%>9k|UaStL-;;C-#p$Jym!d~$oKBC|aSAA23~Yy!PO;8(6M#p{<{-WjH6yVPWE%!U!IjzE-Afhr<|OdnSZyPKiJIYc2K+7 z2;FQ)otvAUCG`mb}?OLidxLCt_JW&u5%ixqXQiwSsOFkOyWJoF*oc z@912@Ib}YCl)JG;4w0S2^F5#Usy?bE#^JO(&z%%aSSJZbY6pIQ*)=rue81Y;lRwYY za=*%w@2t~SI8YQ8s9xv=uo!-3v+<&k9 zvoQbTB5fW&j|+cd6YpD730jEdY%HbLF-qKmcjcdS=P@IUo8m$V5A+DCE}GaWI^vSt ziTy9g`UR!qn89v1Q&D{>v*@sT@m&@|$_g%H{ctinDf>7c~pr^_{x^ zrP;)4*L?cqBgZ%IkjFcO;_kkz;XE_iPyJ*N_LT0oWy>)VfU`lMdqdzd*cko_5wH# zCXnKIiE1I)&qeN7KBp84xh;27&Q}n}u<1Qjw&QF}%FvUErxtfh`8=|oT}~p2D&)(5 zmetD?qyre_n=sD~_?xBB)cr1_dnr7z0{WM!G8alt>|e%kE8?&Wd_;yTYZKTZ2Z<;! zSdA%XnB?EsIe%5-Aho@QrYzGVhxg(AwJHT0gZsB|wiz%5G0js-7{MdW z=%@UpI>P%Q!ewlsn$pPrWF+UI!<1t8Te(%uVZ9-dDTXQR$L*GtwpDF0> zeYvn+u6326I6uo<_UtyjB#B>ls26z|Si}17Zl4;_;qBQ{Hzc1E#<%G+MTGd*zmiek zAWPuBB;La~co-)dWu>lOVQ(X>V1#IS7i*>!6(^cs&o_0iT)!jBv9mblw*jtGf6K&a zeQ27^t!}picenA(j)H$}rVM)tWgS&Ax+D6vdG9iccGZ1HjzKDDaNknXoxz>!yz<4= z=RKK^773Q0k4?P0hVGd?f3|MleSSlz^;Nuk??;j__T|cJgr@iCe?D!OFWbF)Cvz-% z!|&uIsmlOwTOC?Th=K6LeOLWACA*huk7Yt4GavWz(?IS)HpTH=y#g=i{wQ~0^`cb8 zW9zPIcQrd%_ThW#87jnwN7;vNqUv++t)FfMzwTx7tLVW)6zyt&WmM244Lf*ARVWYQ z2s@@<9Wc)od6gySo`9(V+FVo1Z*uN+dTUSJRgde2#l!IypGb?QZihJ+l;iTqsDIkM zTcn~hT5Q}@QFJ#eJweu0m1fw3eSCRmG+jaY!!Cd z^$x=(Z~ZxZl=eIr5kgz#W?eD7Tw7L>@A=9~n5Bm6s9a>@?)MTmq>3_5k|(L6VKZl}lS|_gc>X;A+$6E8NsLK2l$GyB}AUm{=}W$+5NQ zXH9HhHTn)ty1T4|j?@O!1g;N3W3N=+*Jzz(j-Am5yT53*p1KrNRgC+OnXis9a(!qg zKE9e+A+}Ik&)Qy9nybhg(<%G0QlmwNhfbNN;dgkoA@uK+lZmcUw?aID*OrUeC4dT*_#VYF=B_=!xQhB%?k+D2r zkpn7%u1o6189lHh9fqp7Q#JrXlqKdeUKIpf3$}H*lI)@O56vCf=(^4NXT4YZY^8Jf6J5G7;!gP zHtIn*Yb&vw3@*3RrR{PZic;~X3CWm8;usJtlXOwT2|+FBH|>8EHoU)b>!Z(&MuRrX z>~1oYO?(6C>>(U(h4B9;6LS2r36byd18r%xuIz$w#^Vb|){K?5%XTP|Ve4D4VTNgD&msU7rdX9Gc`l~jOwfUPz~)*wASgtjcwZ&na9E1;9qb=4fw?|ljZjd6mV~#HzFjw(0 zFjdM${xmWp@J!=ek?{B&bk&Gtw!aM&!cl+Hu)dW4<-J;ppTxML6=y6Gl0H;rS4i&L zKs?)va(SK|HDk=WlHEl6;xL2#*Lftu^IGEsy2#64+5E)l>0c&sa$OUos!1t1{u@_75qyDwP zWN^o|C+HzNgwAcTB2hg6x7N2jmxi?GUCU=_OovfE+^#Y%nlAJ z>krzv8@#p^e73CGRj&)g<-Gj>`lb&w3$%8&7_NB2QJa;Cr-z7F+#bJ7cAvkHWRP?b zJY`0R=TUkiBR-TYYfZzcCFrx;;_KJx&PKLQ_t643@w0}@#?p3$5fJHB@%4}&=^@hm zNj{%;BkD0Zk0xeq-|K$3c6ATwtDMd>2M5?_XWR4+B76me{M@on1g26P9+d1F5q=$U zI$jF@;T7TEo1!a1CjuFP-qa^XzMMt^QMa~Z)`fO^tl1p1;UM8&gy)sn2}C`?tPVo# zO*1>raQr|>sF7NGPFbx+#x0IFX{TD%J)LV%Z!}GQR9-|BUwtq)ihYQ*SJF_=>L&QQ z%F?m^xrTivW%IQobImJWPDbfWaHj{JGOfJbT~=`|@}s zyuHuQ3o+X_8S!h~>)YSop5D0+3btytJuBCq=5FCI{p$RIR@ITjQ=VGfE*suN9eyB9 zFFNKgYjm+XTq^P`p}hR}Cu!gHWeUk2j-(qq_mwq)7dHDuLI28y3A=+BWH!o;*5ZsA zf7~eZco;}EjII5V$(-H&m5r47SNe|=uh+bv>hRxNf82dif~}DK{uHo}C@Xu#owQua zd9_dL&3atSTQ4y`VB+$Ai z;3@gVUL^`FyZ^5b{*F5Rb;)4sFt`=(NC+pUBbXg!o;#Yna5NP*wl{@;5chcQ@pJMB za`Ff~<>eE;$1BVu$j-wf%)=A$l-lS2b%V97iN#B||MLx(1SKtS1MC0u21g5PQwPTv Z*02B1_k5y_poM!7k7bmki&2Jt{|jK|ki-B0 literal 0 HcmV?d00001 diff --git a/assets/data/nollning_26/calendar/event_background.png b/assets/data/nollning_26/calendar/event_background.png new file mode 100644 index 0000000000000000000000000000000000000000..0145a400032fccec2946bea37c007b75ebaa8669 GIT binary patch literal 15546 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 literal 0 HcmV?d00001 diff --git a/assets/data/nollning_26/calendar/event_banner.png b/assets/data/nollning_26/calendar/event_banner.png new file mode 100644 index 0000000000000000000000000000000000000000..80ff29c537d74d492d51daabc7b94f8906b1b9ba GIT binary patch literal 12203 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 S(2096Fc}F&@!F5ZA^#6XZ2Hdt literal 0 HcmV?d00001 diff --git a/lib/screens/calendar/calendar.dart b/lib/screens/calendar/calendar.dart index 78ac6f2c..d38ee5a0 100644 --- a/lib/screens/calendar/calendar.dart +++ b/lib/screens/calendar/calendar.dart @@ -28,7 +28,7 @@ class _CalendarState extends State { } void openEventPage(EventRead event) { Navigator.push(context, - MaterialPageRoute(builder: (context) => EventPage(eventId: event.id))); + MaterialPageRoute(builder: (context) => EventPage(event: event, eventId: event.id))); } List _getEventsForDay(DateTime day) { @@ -46,203 +46,159 @@ class _CalendarState extends State { })); } - Widget checkAlcoholEventType(String alcType, {bool isIcon = false}){ - final String alcServed = "assets/data/nollning_25/calendar/alkfullImg.png"; - final String noAlc = "assets/data/nollning_25/calendar/alkfriImg.png"; - final String byob = "assets/data/nollning_25/calendar/byobImg.png"; - final String alcServedIcon = "assets/data/nollning_25/calendar/alkfullIcon.png"; - final String noAlcIcon = "assets/data/nollning_25/calendar/alkfriIcon.png"; - final String byobIcon = "assets/data/nollning_25/calendar/byobIcon.png"; - + Widget? checkAlcoholEventType(String alcType, {bool isNollning = false}){ switch (alcType) { case "Alcohol-Served": - if (isIcon) return Image.asset(alcServedIcon, fit: BoxFit.fill); + if (isNollning) { + return Image.asset("assets/data/nollning_26/calendar/alcfull_icon.png"); + } - return Image.asset(alcServed, fit: BoxFit.fill); + return Icon(Icons.wine_bar_rounded); case "Alcohol": - if (isIcon) return Image.asset(byobIcon, fit: BoxFit.fill); + if (isNollning) { + return Image.asset("assets/data/nollning_26/calendar/byob_icon.png"); + } - return Image.asset(byob, fit: BoxFit.fill); + return null; default: - if (isIcon) return Image.asset(noAlcIcon, fit: BoxFit.fill); + if (isNollning) { + return Image.asset("assets/data/nollning_26/calendar/alcfree_icon.png"); + } - return Image.asset(noAlc, fit: BoxFit.fill); + return null; } } Widget createEventCard(EventRead event) { String locale = Localizations.localeOf(context).toString(); var t = AppLocalizations.of(context)!; - if(event.isNollningEvent) { - return Container( - child: Card( - shadowColor: Colors.transparent, - color: Colors.transparent, - surfaceTintColor: null, - child: InkWell( - onTap: () => openEventPage(event), - child: Container( - margin: EdgeInsets.zero, - child: Stack( - children: [ - Positioned.fill(child: checkAlcoholEventType(event.alcoholEventType)), - Container(child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Padding(padding: EdgeInsets.only(top: 5)), - Container( - margin: EdgeInsets.only(bottom: 7, left: 30), - child: Text( - t.localeName == "en" ? event.titleEn : event.titleSv, - style: TextStyle( - fontFamily: "MinionPro", - fontWeight: FontWeight.bold, - fontSize: 20, - color: Color(0xFFFCBD1D) - ), - textAlign: TextAlign.left, - ), - ), - Row( - children: [ - Padding(padding: EdgeInsets.only(left: 30)), - Icon( - Icons.access_time_rounded, - size: 20, - ), - Text( - /* better error checking */ - " " + - DateFormat("HH:mm") - .format(event.startsAt.toLocal()) + - " - " + - DateFormat("HH:mm").format(event.endsAt.toLocal()) + - ", " + - DateFormat("MMMMd", locale) - .format(event.startsAt.toLocal()), - style: TextStyle( - fontFamily: "MinionPro", - fontWeight: FontWeight.normal, - fontSize: 15, - ), - textAlign: TextAlign.left, - ), - ], - ), - Row( - children: [ - Padding(padding: EdgeInsets.only(left: 30)), - Icon( - Icons.room, - size: 20, - ), - Text( - " " + - event.location, + + final formattedStartTime = DateFormat("HH:mm").format(event.startsAt.toLocal()); + final formattedEndTime = DateFormat("HH:mm").format(event.endsAt.toLocal()); + final formattedDay = DateFormat("MMMMd", locale).format(event.startsAt.toLocal()); + + final alcPolicyImage = checkAlcoholEventType(event.alcoholEventType, isNollning: event.isNollningEvent); + + return Card( + elevation: 5, + shadowColor: null, + color: null, + margin: const EdgeInsets.all(5), + child: InkWell( + onTap: () => openEventPage(event), + child: Container( + padding: event.isNollningEvent ? const EdgeInsets.only(left: 20, top: 20, right: 20, bottom: 40) : const EdgeInsets.all(10), + decoration: !event.isNollningEvent ? null : const BoxDecoration( + image: DecorationImage( + image: AssetImage("assets/data/nollning_26/calendar/event_banner.png"), + centerSlice: Rect.fromLTWH(32, 49, 364, 1) // To hide stretching + // fit: BoxFit.fill + ) + ), + child: Row( + children: [ + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Padding( + padding: const EdgeInsets.only(bottom: 7), + child: Text( + t.localeName == "en" ? event.titleEn : event.titleSv, style: TextStyle( - fontSize: 14, - color: Theme.of(context).colorScheme.onSurface, + fontSize: 20, + color: Theme.of(context).colorScheme.primary, ), - textAlign: TextAlign.left, - ), - ], - ), - Padding(padding: EdgeInsets.only(bottom: 10)) - ])) - ], - ), - ), - ))); + // overflow: TextOverflow.ellipsis + ) + ), - } else { + Row( + children: [ + const Icon( + Icons.access_time_rounded, + size: 20 + ), - return Container( - child: Card( - shadowColor: null, - color: null, - child: InkWell( - onTap: () => openEventPage(event), - child: Container( - margin: EdgeInsets.zero, - child: Container( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Container( - margin: EdgeInsets.only(bottom: 7), - child: Text( - t.localeName == "en" ? event.titleEn : event.titleSv, - style: TextStyle( - fontSize: 20, - color: Theme.of(context).colorScheme.primary, - ), - textAlign: TextAlign.left, - ), - ), - Row( - children: [ - Icon( - Icons.access_time_rounded, - size: 20, - ), - Text( - /* better error checking */ - " " + - DateFormat("HH:mm") - .format(event.startsAt.toLocal()) + - " - " + - DateFormat("HH:mm").format(event.endsAt.toLocal()) + - ", " + - DateFormat("MMMMd", locale) - .format(event.startsAt.toLocal()), - style: TextStyle( - fontSize: 14, + Padding( + padding: const EdgeInsets.only(left: 10), + child: Text( + /* better error checking */ + "$formattedStartTime - $formattedEndTime, $formattedDay", + style: const TextStyle( + fontSize: 14, + ) + ) ), - textAlign: TextAlign.left, - ), - Expanded( - child: Row( - mainAxisAlignment: MainAxisAlignment.end, - crossAxisAlignment: CrossAxisAlignment.end, - children: [ - // Alcohol is served - if (event.alcoholEventType == "Alcohol-Served") - Icon(Icons.wine_bar_rounded, size: 20), - ], + ] + ), + + Row( + children: [ + const Icon( + Icons.room, + size: 20, ), - ) - ], - ), - Row( - children: [ - Icon( - Icons.room, - size: 20, - ), - Text( - " " + + + Padding( + padding: const EdgeInsets.only(left: 10), + child: Text( event.location, - style: TextStyle( - fontSize: 14, - color: Theme.of(context).colorScheme.onSurface, + style: TextStyle( + fontSize: 14, + color: Theme.of(context).colorScheme.onSurface, + ) + ) ), - textAlign: TextAlign.left, - ), - ], - ), - ], + ], + ), + ], + ) ), - margin: EdgeInsets.all(10), - ), - ), - ), - // Introduction events background needs access to entire card - margin: EdgeInsets.all(4), + + if (alcPolicyImage != null) + SizedBox( + width: 40, + height: 40, + child: alcPolicyImage + ), + ] + ) + ) ), ); - } + } + + Widget? _getMarkers(List events) { + if (events.isEmpty) return null; + + return Row( + mainAxisAlignment: MainAxisAlignment.center, + children: events.map((event) { + final alcPolicyImage = checkAlcoholEventType(event.alcoholEventType, isNollning: event.isNollningEvent); + + if (!event.isNollningEvent || alcPolicyImage == null) { + return Container( + width: 8, + height: 8, + margin: const EdgeInsets.all(1), + decoration: BoxDecoration( + color: Theme.of(context).colorScheme.inverseSurface, + shape: BoxShape.circle + ) + ); + } + + return Container( + width: 13, + height: 13, + margin: EdgeInsets.all(1), + child: alcPolicyImage + ); + }).toList(), + ); } @override @@ -294,35 +250,7 @@ class _CalendarState extends State { return _getEventsForDay(day); }, calendarBuilders: CalendarBuilders( - markerBuilder: (context, day, events) { - if (events.isEmpty) return null; - - final defaultMarkerAnon = (Color color) => Container( - width: 8, - height: 8, - margin: const EdgeInsets.all(1), - decoration: BoxDecoration( - color: color, - shape: BoxShape.circle, - ), - ); - - return Row( - mainAxisAlignment: MainAxisAlignment.center, - children: events.map((event) { - if (!event.isNollningEvent) { - return defaultMarkerAnon(Theme.of(context).colorScheme.inverseSurface); - } - - return Container( - width: 13, - height: 13, - margin: EdgeInsets.all(1), - child: checkAlcoholEventType(event.alcoholEventType, isIcon: true), - ); - }).toList(), - ); - }, + markerBuilder: (context, day, events) => _getMarkers(events) ), ), Container( diff --git a/lib/screens/event/event.dart b/lib/screens/event/event.dart index fde70c6c..44439e96 100644 --- a/lib/screens/event/event.dart +++ b/lib/screens/event/event.dart @@ -11,14 +11,21 @@ import 'package:fsek_mobile/api_client/lib/api_client.dart'; import 'package:flutter_markdown_plus/flutter_markdown_plus.dart'; class EventPage extends StatefulWidget { - final int eventId; - EventPage({Key? key, required this.eventId}) : super(key: key); + final EventRead? event; + final int? eventId; + + EventPage({ + super.key, + this.eventId, + this.event + }); + @override _EventPageState createState() => _EventPageState(); } class _EventPageState extends State { - EventRead? event; + late EventRead? event = widget.event; AdminUserRead? user; String? userType; GroupRead? group; @@ -72,10 +79,14 @@ class _EventPageState extends State { } Future _loadInitData() async { + // Loads/reloads event + try { + if (widget.event?.id == null && widget.eventId == null) return; + final eventResponse = await ApiService.apiClient .getEventsApi() - .eventsGetSingleEvent(eventId: widget.eventId); + .eventsGetSingleEvent(eventId: widget.event?.id ?? widget.eventId!); final event = eventResponse.data; if (event == null) return; @@ -188,194 +199,204 @@ class _EventPageState extends State { appBar: AppBar( title: Text(t.eventTitle), ), - body: Container( - width: double.infinity, - child: Padding( - padding: const EdgeInsets.all(16.0), - child: RefreshIndicator( - onRefresh: () => _onRefresh(), - child: ListView( + body: RefreshIndicator( + onRefresh: () => _onRefresh(), + child: SingleChildScrollView( + physics: const AlwaysScrollableScrollPhysics(), + child: Container( + padding: const EdgeInsets.all(16.0), + constraints: BoxConstraints( + minHeight: MediaQuery.of(context).size.height - kToolbarHeight - MediaQuery.of(context).padding.top, + ), + decoration: !event!.isNollningEvent ? null : const BoxDecoration( + image: DecorationImage( + image: AssetImage("assets/data/nollning_26/calendar/event_background.png"), + centerSlice: Rect.fromLTRB(50, 50, 529, 950) // To hide stretching + ), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, children: [ - Text(locale == "sv" ? event!.titleSv : event!.titleEn, - style: Theme.of(context).textTheme.headlineMedium!.copyWith( - fontSize: 30, - )), - Divider( - color: null, - ), - Row( - children: [ - Icon( - Icons.access_time_rounded, - ), - Text( - /* better error checking */ - " " + - DateFormat("HH:mm").format( - event?.startsAt.toLocal() ?? DateTime.now()) + - getDots() + - " - " + - DateFormat("HH:mm").format( - event?.endsAt.toLocal() ?? DateTime.now()) + - ", " + - DateFormat("MMMMd", locale).format( - event?.startsAt.toLocal() ?? DateTime.now()), - style: TextStyle( - fontSize: 14, - color: Theme.of(context).textTheme.bodyMedium!.color), - ), - ], - ), - Row( - children: [ - Icon( - Icons.room, - ), - Text( - " " + (event?.location ?? "intigheten"), - style: TextStyle( - fontSize: 14, - color: Theme.of(context).textTheme.bodyMedium!.color), - ), - ], - ), - Divider( - color: null, - ), - Container( - margin: EdgeInsets.fromLTRB(0, 0, 0, 0), - width: double.infinity, - /* should be parsed html */ - child: Markdown( - shrinkWrap: true, - physics: NeverScrollableScrollPhysics(), - data: (locale == "sv" - ? event!.descriptionSv - : event!.descriptionEn) - .replaceAll("
", ""), - onTapLink: (text, href, title) { - if (href != null) { - launchUrl(Uri.parse(href)); - } - }, - styleSheet: - MarkdownStyleSheet.fromTheme(Theme.of(context)) - .copyWith( - p: Theme.of(context) - .textTheme - .bodyMedium - ?.copyWith(height: 1.2), - ), - )), - Divider( - color: null, - ), - Padding( - padding: const EdgeInsets.fromLTRB(0, 5, 0, 5), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row(children: [ - Text(t.eventDressCode + event!.dressCode) - ]), - Visibility( - visible: event!.price <= 0 ? false : true, - child: Text(t.eventPrice + - (event?.price.toString() ?? "") + - " kr")), - ], + Text(locale == "sv" ? event!.titleSv : event!.titleEn, + style: Theme.of(context).textTheme.headlineMedium!.copyWith( + fontSize: 30, + )), + Divider( + color: null, ), - ), - Divider( - color: null, - ), - Padding( - padding: const EdgeInsets.fromLTRB(0, 5, 0, 5), - child: Column( + Row( children: [ - Visibility( - visible: event!.price <= 0 ? false : true, - child: Row( - children: [ - Icon(Icons.attach_money_rounded), - Text(t.eventCostsMoney) - ], - ), + Icon( + Icons.access_time_rounded, ), - Visibility( - visible: event!.food, - child: Row( - children: [ - Icon( - Icons.restaurant_rounded, - ), - Text(t.eventFoodServed) - ], - ), + Text( + /* better error checking */ + " " + + DateFormat("HH:mm").format( + event?.startsAt.toLocal() ?? DateTime.now()) + + getDots() + + " - " + + DateFormat("HH:mm").format( + event?.endsAt.toLocal() ?? DateTime.now()) + + ", " + + DateFormat("MMMMd", locale).format( + event?.startsAt.toLocal() ?? DateTime.now()), + style: TextStyle( + fontSize: 14, + color: Theme.of(context).textTheme.bodyMedium!.color), ), - alcoholEventRow(event!, context), - Visibility( - visible: event!.canSignup, - child: Row( - children: [ - Icon( - Icons.event_rounded, - ), - Text(t.eventHasSignup) - ], - ), + ], + ), + Row( + children: [ + Icon( + Icons.room, ), - Visibility( - visible: event!.lottery, - child: Row( - children: [ - Icon( - Icons.casino_outlined, - ), - Text(" " + t.eventHasLottery) - ], - ), + Text( + " " + (event?.location ?? "intigheten"), + style: TextStyle( + fontSize: 14, + color: Theme.of(context).textTheme.bodyMedium!.color), ), ], ), - ), - Visibility( - visible: event!.canSignup, - child: Divider( + Divider( color: null, ), - ), - Visibility( - visible: (!(event!.council == null)), - child: Container( + Container( + margin: EdgeInsets.fromLTRB(0, 0, 0, 0), + width: double.infinity, + /* should be parsed html */ + child: Markdown( + shrinkWrap: true, + physics: NeverScrollableScrollPhysics(), + data: (locale == "sv" + ? event!.descriptionSv + : event!.descriptionEn) + .replaceAll("
", ""), + onTapLink: (text, href, title) { + if (href != null) { + launchUrl(Uri.parse(href)); + } + }, + styleSheet: + MarkdownStyleSheet.fromTheme(Theme.of(context)) + .copyWith( + p: Theme.of(context) + .textTheme + .bodyMedium + ?.copyWith(height: 1.2), + ), + )), + Divider( + color: null, + ), + Padding( + padding: const EdgeInsets.fromLTRB(0, 5, 0, 5), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Text( - t.eventInCaseOfQuestions, + Row(children: [ + Text(t.eventDressCode + event!.dressCode) + ]), + Visibility( + visible: event!.price <= 0 ? false : true, + child: Text(t.eventPrice + + (event?.price.toString() ?? "") + + " kr")), + ], + ), + ), + Divider( + color: null, + ), + Padding( + padding: const EdgeInsets.fromLTRB(0, 5, 0, 5), + child: Column( + children: [ + Visibility( + visible: event!.price <= 0 ? false : true, + child: Row( + children: [ + Icon(Icons.attach_money_rounded), + Text(t.eventCostsMoney) + ], + ), ), - InkWell( - child: new Text( - t.localeName == "sv" - ? event!.council.nameSv - : event!.council.nameEn, - style: TextStyle( - color: Colors.blue[300], - ), + Visibility( + visible: event!.food, + child: Row( + children: [ + Icon( + Icons.restaurant_rounded, + ), + Text(t.eventFoodServed) + ], ), - onTap: () => _goToPostContact(event!.council.nameSv), ), - Divider( - color: null, + alcoholEventRow(event!, context), + Visibility( + visible: event!.canSignup, + child: Row( + children: [ + Icon( + Icons.event_rounded, + ), + Text(t.eventHasSignup) + ], + ), + ), + Visibility( + visible: event!.lottery, + child: Row( + children: [ + Icon( + Icons.casino_outlined, + ), + Text(" " + t.eventHasLottery) + ], + ), ), ], ), ), - ), - signupInfoWidget(), - ], - ), - ), + Visibility( + visible: event!.canSignup, + child: Divider( + color: null, + ), + ), + Visibility( + visible: (!(event!.council == null)), + child: Container( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + t.eventInCaseOfQuestions, + ), + InkWell( + child: new Text( + t.localeName == "sv" + ? event!.council.nameSv + : event!.council.nameEn, + style: TextStyle( + color: Colors.blue[300], + ), + ), + onTap: () => _goToPostContact(event!.council.nameSv), + ), + Divider( + color: null, + ), + ], + ), + ), + ), + signupInfoWidget(), + ], + ), + ) ), ), ); From 777452452575756fdf1d5fea8544f3ebb7931220 Mon Sep 17 00:00:00 2001 From: georgelgeback Date: Wed, 5 Aug 2026 17:25:14 +0200 Subject: [PATCH 02/11] =?UTF-8?q?Add=20back=20phone=20numbers=20for=20f?= =?UTF-8?q?=C3=B6set=20with=20clickable=20formatting?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/l10n/app_en.arb | 2 ++ lib/l10n/app_localizations.dart | 12 ++++++++++++ lib/l10n/app_localizations_en.dart | 7 +++++++ lib/l10n/app_localizations_sv.dart | 7 +++++++ lib/l10n/app_sv.arb | 2 ++ lib/screens/nollning/emergency_contacts.dart | 6 ++++++ 6 files changed, 36 insertions(+) diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index 908c977a..1fe887c9 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -371,6 +371,8 @@ "emergencyNumSeven": "+46 77 33 113 13", "emergencyTitleSeven": " - Information in case of accidents and crises", "emergencyContentSeven": "Sweden's national information number. You can call this number to get information in the event of serious accidents and crises in society.", + "emergencyTitleEight": "Föset", + "emergencyContentEight": "If you need to get in touch with a member of the Fös quickly, you can call us on the following numbers. \n\nElina Kazemi-Esfeh\n073 772 5955 \n\nEdith Fållsten\n076 871 7087 \n\nAda Parén\n076 047 0583 \n\nAlice Önnerheim\n070 922 1301 \n\nLinnea Becker\n076 139 9402 \n\nManne Mönster\n070 948 7839 \n\nHarald Barck-Holst\n076 319 3169 \n\nYou can find contact information for other parts of the guild on the website contact page: https://fsektionen.se/contact/.", "game": "Moose game", "gameDescription":"Coming soon!", diff --git a/lib/l10n/app_localizations.dart b/lib/l10n/app_localizations.dart index e507b816..7e0a2004 100644 --- a/lib/l10n/app_localizations.dart +++ b/lib/l10n/app_localizations.dart @@ -2084,6 +2084,18 @@ abstract class AppLocalizations { /// **'Sveriges nationella informationsnummer. Dit kan du ringa om du vill få information vid allvarliga olyckor och kriser i samhället.'** String get emergencyContentSeven; + /// No description provided for @emergencyTitleEight. + /// + /// In sv, this message translates to: + /// **'Föset'** + String get emergencyTitleEight; + + /// No description provided for @emergencyContentEight. + /// + /// In sv, this message translates to: + /// **'Om du snabbt behöver komma i kontakt med någon av oss i föset så kan du ringa oss på följande nummer. \n\nElina Kazemi-Esfeh\n073 772 5955 \n\nEdith Fållsten\n076 871 7087 \n\nAda Parén\n076 047 0583 \n\nAlice Önnerheim\n070 922 1301 \n\nLinnea Becker\n076 139 9402 \n\nManne Mönster\n070 948 7839 \n\nHarald Barck-Holst\n076 319 3169 \n\nKontaktinformation till andra delar av sektionen kan du hitta på hemsidans kontakt-sida: https://fsektionen.se/contact/.'** + String get emergencyContentEight; + /// No description provided for @game. /// /// In sv, this message translates to: diff --git a/lib/l10n/app_localizations_en.dart b/lib/l10n/app_localizations_en.dart index 93fe5d13..2195519e 100644 --- a/lib/l10n/app_localizations_en.dart +++ b/lib/l10n/app_localizations_en.dart @@ -1080,6 +1080,13 @@ class AppLocalizationsEn extends AppLocalizations { String get emergencyContentSeven => 'Sweden\'s national information number. You can call this number to get information in the event of serious accidents and crises in society.'; + @override + String get emergencyTitleEight => 'Föset'; + + @override + String get emergencyContentEight => + 'If you need to get in touch with a member of the Fös quickly, you can call us on the following numbers. \n\nElina Kazemi-Esfeh\n073 772 5955 \n\nEdith Fållsten\n076 871 7087 \n\nAda Parén\n076 047 0583 \n\nAlice Önnerheim\n070 922 1301 \n\nLinnea Becker\n076 139 9402 \n\nManne Mönster\n070 948 7839 \n\nHarald Barck-Holst\n076 319 3169 \n\nYou can find contact information for other parts of the guild on the website contact page: https://fsektionen.se/contact/.'; + @override String get game => 'Moose game'; diff --git a/lib/l10n/app_localizations_sv.dart b/lib/l10n/app_localizations_sv.dart index dfaa768a..ceed6c6a 100644 --- a/lib/l10n/app_localizations_sv.dart +++ b/lib/l10n/app_localizations_sv.dart @@ -1073,6 +1073,13 @@ class AppLocalizationsSv extends AppLocalizations { String get emergencyContentSeven => 'Sveriges nationella informationsnummer. Dit kan du ringa om du vill få information vid allvarliga olyckor och kriser i samhället.'; + @override + String get emergencyTitleEight => 'Föset'; + + @override + String get emergencyContentEight => + 'Om du snabbt behöver komma i kontakt med någon av oss i föset så kan du ringa oss på följande nummer. \n\nElina Kazemi-Esfeh\n073 772 5955 \n\nEdith Fållsten\n076 871 7087 \n\nAda Parén\n076 047 0583 \n\nAlice Önnerheim\n070 922 1301 \n\nLinnea Becker\n076 139 9402 \n\nManne Mönster\n070 948 7839 \n\nHarald Barck-Holst\n076 319 3169 \n\nKontaktinformation till andra delar av sektionen kan du hitta på hemsidans kontakt-sida: https://fsektionen.se/contact/.'; + @override String get game => 'Moose game'; diff --git a/lib/l10n/app_sv.arb b/lib/l10n/app_sv.arb index b2ebf01b..170714c1 100644 --- a/lib/l10n/app_sv.arb +++ b/lib/l10n/app_sv.arb @@ -371,6 +371,8 @@ "emergencyNumSeven": "113 13", "emergencyTitleSeven": " - Krisinformation", "emergencyContentSeven": "Sveriges nationella informationsnummer. Dit kan du ringa om du vill få information vid allvarliga olyckor och kriser i samhället.", + "emergencyTitleEight": "Föset", + "emergencyContentEight": "Om du snabbt behöver komma i kontakt med någon av oss i föset så kan du ringa oss på följande nummer. \n\nElina Kazemi-Esfeh\n073 772 5955 \n\nEdith Fållsten\n076 871 7087 \n\nAda Parén\n076 047 0583 \n\nAlice Önnerheim\n070 922 1301 \n\nLinnea Becker\n076 139 9402 \n\nManne Mönster\n070 948 7839 \n\nHarald Barck-Holst\n076 319 3169 \n\nKontaktinformation till andra delar av sektionen kan du hitta på hemsidans kontakt-sida: https://fsektionen.se/contact/.", "game": "Moose game", "gameDescription":"Kommer snart!", diff --git a/lib/screens/nollning/emergency_contacts.dart b/lib/screens/nollning/emergency_contacts.dart index 3b9c28ba..c4aadb6d 100644 --- a/lib/screens/nollning/emergency_contacts.dart +++ b/lib/screens/nollning/emergency_contacts.dart @@ -72,6 +72,12 @@ class _EmergencyContactsPageState extends State { headerPhoneNumber: t.emergencyNumSeven, headerText: t.emergencyTitleSeven, bodyText: t.emergencyContentSeven, + ), + _EmergencyText( + // Dummy number because this title is different + headerPhoneNumber: "", + headerText: t.emergencyTitleEight, + bodyText: t.emergencyContentEight, ) ], ), From 83ee9b400bea2a63e55de52650b802a0ce14929d Mon Sep 17 00:00:00 2001 From: georgelgeback Date: Fri, 7 Aug 2026 07:12:32 +0200 Subject: [PATCH 03/11] Add country code in english to be consistent --- lib/l10n/app_en.arb | 2 +- lib/l10n/app_localizations_en.dart | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index 1fe887c9..8c418ab9 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -372,7 +372,7 @@ "emergencyTitleSeven": " - Information in case of accidents and crises", "emergencyContentSeven": "Sweden's national information number. You can call this number to get information in the event of serious accidents and crises in society.", "emergencyTitleEight": "Föset", - "emergencyContentEight": "If you need to get in touch with a member of the Fös quickly, you can call us on the following numbers. \n\nElina Kazemi-Esfeh\n073 772 5955 \n\nEdith Fållsten\n076 871 7087 \n\nAda Parén\n076 047 0583 \n\nAlice Önnerheim\n070 922 1301 \n\nLinnea Becker\n076 139 9402 \n\nManne Mönster\n070 948 7839 \n\nHarald Barck-Holst\n076 319 3169 \n\nYou can find contact information for other parts of the guild on the website contact page: https://fsektionen.se/contact/.", + "emergencyContentEight": "If you need to get in touch with a member of the Fös quickly, you can call us on the following numbers. \n\nElina Kazemi-Esfeh\n+46737725955 \n\nEdith Fållsten\n+46768717087 \n\nAda Parén\n+46760470583 \n\nAlice Önnerheim\n+46709221301 \n\nLinnea Becker\n+46761399402 \n\nManne Mönster\n+46709487839 \n\nHarald Barck-Holst\n+46763193169 \n\nYou can find contact information for other parts of the guild on the website contact page: https://fsektionen.se/contact/.", "game": "Moose game", "gameDescription":"Coming soon!", diff --git a/lib/l10n/app_localizations_en.dart b/lib/l10n/app_localizations_en.dart index 2195519e..0a6cc770 100644 --- a/lib/l10n/app_localizations_en.dart +++ b/lib/l10n/app_localizations_en.dart @@ -1085,7 +1085,7 @@ class AppLocalizationsEn extends AppLocalizations { @override String get emergencyContentEight => - 'If you need to get in touch with a member of the Fös quickly, you can call us on the following numbers. \n\nElina Kazemi-Esfeh\n073 772 5955 \n\nEdith Fållsten\n076 871 7087 \n\nAda Parén\n076 047 0583 \n\nAlice Önnerheim\n070 922 1301 \n\nLinnea Becker\n076 139 9402 \n\nManne Mönster\n070 948 7839 \n\nHarald Barck-Holst\n076 319 3169 \n\nYou can find contact information for other parts of the guild on the website contact page: https://fsektionen.se/contact/.'; + 'If you need to get in touch with a member of the Fös quickly, you can call us on the following numbers. \n\nElina Kazemi-Esfeh\n+46737725955 \n\nEdith Fållsten\n+46768717087 \n\nAda Parén\n+46760470583 \n\nAlice Önnerheim\n+46709221301 \n\nLinnea Becker\n+46761399402 \n\nManne Mönster\n+46709487839 \n\nHarald Barck-Holst\n+46763193169 \n\nYou can find contact information for other parts of the guild on the website contact page: https://fsektionen.se/contact/.'; @override String get game => 'Moose game'; From c5ad8d429897c877c6a7812358092dc257ccb1bb Mon Sep 17 00:00:00 2001 From: Mikael de Verdier Date: Tue, 11 Aug 2026 03:17:36 +0200 Subject: [PATCH 04/11] fixed pubspec; (nollning)event title is now centered and padded; increased banner resolution; event_banner and event_background now invert colors for dark themes; decorationimages now dynamically scale to available space (minor improvement, mostly just to be safe even if the user's screen is very thin --- .../nollning_26/calendar/event_banner.png | Bin 12203 -> 32366 bytes lib/screens/calendar/calendar.dart | 143 +++---- lib/screens/event/event.dart | 369 +++++++++--------- pubspec.yaml | 1 + 4 files changed, 269 insertions(+), 244 deletions(-) diff --git a/assets/data/nollning_26/calendar/event_banner.png b/assets/data/nollning_26/calendar/event_banner.png index 80ff29c537d74d492d51daabc7b94f8906b1b9ba..d8f29fc15674224e9383370461bc37d08f04e5bf 100644 GIT binary patch literal 32366 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 o=#gl{Y8l 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 literal 12203 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 S(2096Fc}F&@!F5ZA^#6XZ2Hdt diff --git a/lib/screens/calendar/calendar.dart b/lib/screens/calendar/calendar.dart index d38ee5a0..0b380de5 100644 --- a/lib/screens/calendar/calendar.dart +++ b/lib/screens/calendar/calendar.dart @@ -88,86 +88,95 @@ class _CalendarState extends State { margin: const EdgeInsets.all(5), child: InkWell( onTap: () => openEventPage(event), - child: Container( - padding: event.isNollningEvent ? const EdgeInsets.only(left: 20, top: 20, right: 20, bottom: 40) : const EdgeInsets.all(10), - decoration: !event.isNollningEvent ? null : const BoxDecoration( - image: DecorationImage( - image: AssetImage("assets/data/nollning_26/calendar/event_banner.png"), - centerSlice: Rect.fromLTWH(32, 49, 364, 1) // To hide stretching - // fit: BoxFit.fill - ) - ), - child: Row( - children: [ - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Padding( - padding: const EdgeInsets.only(bottom: 7), - child: Text( - t.localeName == "en" ? event.titleEn : event.titleSv, - style: TextStyle( - fontSize: 20, - color: Theme.of(context).colorScheme.primary, - ), - // overflow: TextOverflow.ellipsis - ) - ), + child: LayoutBuilder( + builder: (context, constraints) { + const imageWidth = 940; + final scale = imageWidth / constraints.maxWidth; // Maybe a bit overkill but just to make sure the decorationimage doesn't fail - Row( + return Container( + padding: event.isNollningEvent ? const EdgeInsets.only(left: 20, top: 20, right: 20, bottom: 40) : const EdgeInsets.all(10), + decoration: !event.isNollningEvent ? null : BoxDecoration( + image: DecorationImage( + scale: scale, + image: AssetImage("assets/data/nollning_26/calendar/event_banner.png"), + invertColors: Theme.of(context).brightness == Brightness.dark, // is this the correct way to do this? + centerSlice: Rect.fromLTWH(70 / scale, 108 / scale, 800 / scale, 1 / scale) // To hide stretching + // fit: BoxFit.fill + ) + ), + child: Row( + children: [ + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, children: [ - const Icon( - Icons.access_time_rounded, - size: 20 - ), - Padding( - padding: const EdgeInsets.only(left: 10), + padding: const EdgeInsets.only(bottom: 7), child: Text( - /* better error checking */ - "$formattedStartTime - $formattedEndTime, $formattedDay", - style: const TextStyle( - fontSize: 14, - ) + t.localeName == "en" ? event.titleEn : event.titleSv, + style: TextStyle( + fontSize: 20, + color: Theme.of(context).colorScheme.primary, + ), + // overflow: TextOverflow.ellipsis ) ), - ] - ), - Row( - children: [ - const Icon( - Icons.room, - size: 20, + Row( + children: [ + const Icon( + Icons.access_time_rounded, + size: 20 + ), + + Padding( + padding: const EdgeInsets.only(left: 10), + child: Text( + /* better error checking */ + "$formattedStartTime - $formattedEndTime, $formattedDay", + style: const TextStyle( + fontSize: 14, + ) + ) + ), + ] ), - Padding( - padding: const EdgeInsets.only(left: 10), - child: Text( - event.location, - style: TextStyle( - fontSize: 14, - color: Theme.of(context).colorScheme.onSurface, - ) - ) + Row( + children: [ + const Icon( + Icons.room, + size: 20, + ), + + Padding( + padding: const EdgeInsets.only(left: 10), + child: Text( + event.location, + style: TextStyle( + fontSize: 14, + color: Theme.of(context).colorScheme.onSurface, + ) + ) + ), + ], ), ], - ), - ], - ) - ), + ) + ), - if (alcPolicyImage != null) - SizedBox( - width: 40, - height: 40, - child: alcPolicyImage - ), - ] - ) + if (alcPolicyImage != null) + SizedBox( + width: 40, + height: 40, + child: alcPolicyImage + ), + ] + ) + ); + } ) - ), + ) ); } diff --git a/lib/screens/event/event.dart b/lib/screens/event/event.dart index 44439e96..39d8fa74 100644 --- a/lib/screens/event/event.dart +++ b/lib/screens/event/event.dart @@ -203,199 +203,214 @@ class _EventPageState extends State { onRefresh: () => _onRefresh(), child: SingleChildScrollView( physics: const AlwaysScrollableScrollPhysics(), - child: Container( - padding: const EdgeInsets.all(16.0), - constraints: BoxConstraints( - minHeight: MediaQuery.of(context).size.height - kToolbarHeight - MediaQuery.of(context).padding.top, - ), - decoration: !event!.isNollningEvent ? null : const BoxDecoration( - image: DecorationImage( - image: AssetImage("assets/data/nollning_26/calendar/event_background.png"), - centerSlice: Rect.fromLTRB(50, 50, 529, 950) // To hide stretching - ), - ), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text(locale == "sv" ? event!.titleSv : event!.titleEn, - style: Theme.of(context).textTheme.headlineMedium!.copyWith( - fontSize: 30, - )), - Divider( - color: null, + child: LayoutBuilder( + builder: (context, constraints) { + const imageWidth = 579; + final scale = imageWidth / constraints.maxWidth; // Maybe a bit overkill but just to make sure the decorationimage doesn't fail + + return Container( + padding: const EdgeInsets.all(16.0), + constraints: BoxConstraints( + minHeight: MediaQuery.of(context).size.height - kToolbarHeight - MediaQuery.of(context).padding.top, + ), + decoration: !event!.isNollningEvent ? null : BoxDecoration( + image: DecorationImage( + scale: scale, + image: AssetImage("assets/data/nollning_26/calendar/event_background.png"), + invertColors: Theme.of(context).brightness == Brightness.dark, // is this the correct way to do this? + centerSlice: Rect.fromLTWH(50 / scale, 50 / scale, 479 / scale, 900 / scale) // To hide stretching ), - Row( - children: [ - Icon( - Icons.access_time_rounded, + ), + child: Column( + crossAxisAlignment: event!.isNollningEvent ? CrossAxisAlignment.center : CrossAxisAlignment.start, + children: [ + Padding( + padding: event!.isNollningEvent ? EdgeInsets.symmetric(horizontal: 25) : EdgeInsets.zero, // padding is not actually constant (depends on scale) but not too important + child: Text( + locale == "sv" ? event!.titleSv : event!.titleEn, + style: Theme.of(context).textTheme.headlineMedium!.copyWith( + fontSize: 30, + ), + textAlign: event!.isNollningEvent ? TextAlign.center : TextAlign.start + ) + ), + Divider( + color: null, ), - Text( - /* better error checking */ - " " + - DateFormat("HH:mm").format( - event?.startsAt.toLocal() ?? DateTime.now()) + - getDots() + - " - " + - DateFormat("HH:mm").format( - event?.endsAt.toLocal() ?? DateTime.now()) + - ", " + - DateFormat("MMMMd", locale).format( - event?.startsAt.toLocal() ?? DateTime.now()), - style: TextStyle( - fontSize: 14, - color: Theme.of(context).textTheme.bodyMedium!.color), + Row( + children: [ + Icon( + Icons.access_time_rounded, + ), + Text( + /* better error checking */ + " " + + DateFormat("HH:mm").format( + event?.startsAt.toLocal() ?? DateTime.now()) + + getDots() + + " - " + + DateFormat("HH:mm").format( + event?.endsAt.toLocal() ?? DateTime.now()) + + ", " + + DateFormat("MMMMd", locale).format( + event?.startsAt.toLocal() ?? DateTime.now()), + style: TextStyle( + fontSize: 14, + color: Theme.of(context).textTheme.bodyMedium!.color), + ), + ], ), - ], - ), - Row( - children: [ - Icon( - Icons.room, + Row( + children: [ + Icon( + Icons.room, + ), + Text( + " " + (event?.location ?? "intigheten"), + style: TextStyle( + fontSize: 14, + color: Theme.of(context).textTheme.bodyMedium!.color), + ), + ], ), - Text( - " " + (event?.location ?? "intigheten"), - style: TextStyle( - fontSize: 14, - color: Theme.of(context).textTheme.bodyMedium!.color), + Divider( + color: null, ), - ], - ), - Divider( - color: null, - ), - Container( - margin: EdgeInsets.fromLTRB(0, 0, 0, 0), - width: double.infinity, - /* should be parsed html */ - child: Markdown( - shrinkWrap: true, - physics: NeverScrollableScrollPhysics(), - data: (locale == "sv" - ? event!.descriptionSv - : event!.descriptionEn) - .replaceAll("
", ""), - onTapLink: (text, href, title) { - if (href != null) { - launchUrl(Uri.parse(href)); - } - }, - styleSheet: - MarkdownStyleSheet.fromTheme(Theme.of(context)) - .copyWith( - p: Theme.of(context) - .textTheme - .bodyMedium - ?.copyWith(height: 1.2), - ), - )), - Divider( - color: null, - ), - Padding( - padding: const EdgeInsets.fromLTRB(0, 5, 0, 5), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row(children: [ - Text(t.eventDressCode + event!.dressCode) - ]), - Visibility( - visible: event!.price <= 0 ? false : true, - child: Text(t.eventPrice + - (event?.price.toString() ?? "") + - " kr")), - ], - ), - ), - Divider( - color: null, - ), - Padding( - padding: const EdgeInsets.fromLTRB(0, 5, 0, 5), - child: Column( - children: [ - Visibility( - visible: event!.price <= 0 ? false : true, - child: Row( - children: [ - Icon(Icons.attach_money_rounded), - Text(t.eventCostsMoney) - ], - ), + Container( + margin: EdgeInsets.fromLTRB(0, 0, 0, 0), + width: double.infinity, + /* should be parsed html */ + child: Markdown( + shrinkWrap: true, + physics: NeverScrollableScrollPhysics(), + data: (locale == "sv" + ? event!.descriptionSv + : event!.descriptionEn) + .replaceAll("
", ""), + onTapLink: (text, href, title) { + if (href != null) { + launchUrl(Uri.parse(href)); + } + }, + styleSheet: + MarkdownStyleSheet.fromTheme(Theme.of(context)) + .copyWith( + p: Theme.of(context) + .textTheme + .bodyMedium + ?.copyWith(height: 1.2), + ), + )), + Divider( + color: null, + ), + Padding( + padding: const EdgeInsets.fromLTRB(0, 5, 0, 5), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row(children: [ + Text(t.eventDressCode + event!.dressCode) + ]), + Visibility( + visible: event!.price <= 0 ? false : true, + child: Text(t.eventPrice + + (event?.price.toString() ?? "") + + " kr")), + ], ), - Visibility( - visible: event!.food, - child: Row( - children: [ - Icon( - Icons.restaurant_rounded, + ), + Divider( + color: null, + ), + Padding( + padding: const EdgeInsets.fromLTRB(0, 5, 0, 5), + child: Column( + children: [ + Visibility( + visible: event!.price <= 0 ? false : true, + child: Row( + children: [ + Icon(Icons.attach_money_rounded), + Text(t.eventCostsMoney) + ], ), - Text(t.eventFoodServed) - ], - ), - ), - alcoholEventRow(event!, context), - Visibility( - visible: event!.canSignup, - child: Row( - children: [ - Icon( - Icons.event_rounded, + ), + Visibility( + visible: event!.food, + child: Row( + children: [ + Icon( + Icons.restaurant_rounded, + ), + Text(t.eventFoodServed) + ], ), - Text(t.eventHasSignup) - ], - ), + ), + alcoholEventRow(event!, context), + Visibility( + visible: event!.canSignup, + child: Row( + children: [ + Icon( + Icons.event_rounded, + ), + Text(t.eventHasSignup) + ], + ), + ), + Visibility( + visible: event!.lottery, + child: Row( + children: [ + Icon( + Icons.casino_outlined, + ), + Text(" " + t.eventHasLottery) + ], + ), + ), + ], ), - Visibility( - visible: event!.lottery, - child: Row( + ), + Visibility( + visible: event!.canSignup, + child: Divider( + color: null, + ), + ), + Visibility( + visible: (!(event!.council == null)), + child: Container( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, children: [ - Icon( - Icons.casino_outlined, + Text( + t.eventInCaseOfQuestions, + ), + InkWell( + child: new Text( + t.localeName == "sv" + ? event!.council.nameSv + : event!.council.nameEn, + style: TextStyle( + color: Colors.blue[300], + ), + ), + onTap: () => _goToPostContact(event!.council.nameSv), + ), + Divider( + color: null, ), - Text(" " + t.eventHasLottery) ], ), ), - ], - ), - ), - Visibility( - visible: event!.canSignup, - child: Divider( - color: null, - ), - ), - Visibility( - visible: (!(event!.council == null)), - child: Container( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - t.eventInCaseOfQuestions, - ), - InkWell( - child: new Text( - t.localeName == "sv" - ? event!.council.nameSv - : event!.council.nameEn, - style: TextStyle( - color: Colors.blue[300], - ), - ), - onTap: () => _goToPostContact(event!.council.nameSv), - ), - Divider( - color: null, - ), - ], ), - ), + signupInfoWidget(), + ], ), - signupInfoWidget(), - ], - ), + ); + } ) ), ), diff --git a/pubspec.yaml b/pubspec.yaml index e8fd72c6..af297764 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -126,6 +126,7 @@ flutter: - assets/data/nollning_25/schema/ - assets/data/nollning_25/homescreen/ - assets/data/nollning_26/homescreen/ + - assets/data/nollning_26/calendar/ fonts: - family: Brandon Grotesque From eb37a0120946a48f08144c035881cff786858574 Mon Sep 17 00:00:00 2001 From: Mikael de Verdier Date: Fri, 14 Aug 2026 01:21:08 +0200 Subject: [PATCH 05/11] added an export calendar button that links to fsektionen.se/calendar/subscribe; changed calendar chevrons to be colored by them (they weren't before on android) --- lib/screens/calendar/calendar.dart | 55 +++++++++++++++++++++++++----- 1 file changed, 46 insertions(+), 9 deletions(-) diff --git a/lib/screens/calendar/calendar.dart b/lib/screens/calendar/calendar.dart index 0b380de5..745dccf6 100644 --- a/lib/screens/calendar/calendar.dart +++ b/lib/screens/calendar/calendar.dart @@ -1,10 +1,12 @@ import 'package:flutter/material.dart'; -import 'package:fsek_mobile/api_client/lib/api_client.dart'; -import 'package:fsek_mobile/services/api.service.dart'; import 'package:intl/intl.dart'; import 'package:table_calendar/table_calendar.dart'; +import 'package:url_launcher/url_launcher.dart'; +import 'package:fsek_mobile/api_client/lib/api_client.dart'; +import 'package:fsek_mobile/services/api.service.dart'; import 'package:fsek_mobile/screens/event/event.dart'; import 'package:fsek_mobile/l10n/app_localizations.dart'; + class Calendar extends StatefulWidget { @override _CalendarState createState() => _CalendarState(); @@ -210,14 +212,19 @@ class _CalendarState extends State { ); } + Future openExportCalendarLink() async { + final uri = Uri.parse("https://fsektionen.se/calendar/subscribe"); + + await launchUrl( + uri, + mode: LaunchMode.externalApplication // for some reason it gives a PlatformError when not having this + ); +} + @override Widget build(BuildContext context) { String locale = Localizations.localeOf(context).toString(); - if (locale == "sv") { - DateFormat("MMMMEEEEd", "sv_SE").format(_selectedDay); - } else { - DateFormat("MMMMEEEEd", "en_US").format(_selectedDay); - } + return Container( height: MediaQuery.of(context).size.height, color: Theme.of(context).colorScheme.surface, @@ -258,9 +265,39 @@ class _CalendarState extends State { eventLoader: (day) { return _getEventsForDay(day); }, - calendarBuilders: CalendarBuilders( - markerBuilder: (context, day, events) => _getMarkers(events) + headerStyle: HeaderStyle( + leftChevronIcon: Icon( + color: Theme.of(context).primaryColor, + Icons.chevron_left, + size: 25 + ), + + rightChevronIcon: Icon( + color: Theme.of(context).primaryColor, + Icons.chevron_right, + size: 25 + ) ), + calendarBuilders: CalendarBuilders( + markerBuilder: (context, day, events) => _getMarkers(events), + headerTitleBuilder: (context, day) => Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + DateFormat("MMMM yyyy", locale).format(day), + style: const TextStyle( + fontSize: 18 + ) + ), + + IconButton( + icon: const Icon(Icons.open_in_browser_rounded), + color: Theme.of(context).primaryColor, + onPressed: openExportCalendarLink + ), + ] + ) + ) ), Container( alignment: Alignment.centerLeft, From b1ef7e23eb6b9136c7941cc0f5302135cffad95b Mon Sep 17 00:00:00 2001 From: Mikael de Verdier Date: Fri, 14 Aug 2026 03:48:00 +0200 Subject: [PATCH 06/11] fixed floating error bug with centerslicing in calendarPage and eventPage; minor improvements to centerslicing --- lib/screens/calendar/calendar.dart | 23 ++++++++++++++++++----- lib/screens/event/event.dart | 21 +++++++++++++++++---- 2 files changed, 35 insertions(+), 9 deletions(-) diff --git a/lib/screens/calendar/calendar.dart b/lib/screens/calendar/calendar.dart index 745dccf6..39e45dd6 100644 --- a/lib/screens/calendar/calendar.dart +++ b/lib/screens/calendar/calendar.dart @@ -93,17 +93,30 @@ class _CalendarState extends State { child: LayoutBuilder( builder: (context, constraints) { const imageWidth = 940; - final scale = imageWidth / constraints.maxWidth; // Maybe a bit overkill but just to make sure the decorationimage doesn't fail + // const imageHeight = 280; + + final scale = imageWidth / constraints.maxWidth; + + const horizontalSlice = 70.0; + const verticalSlice = 108.5; + final scaledCenterSlice = Rect.fromLTWH( + horizontalSlice / scale, + verticalSlice / scale, + (imageWidth - 2 * horizontalSlice) / scale, + 1 / scale + ); return Container( padding: event.isNollningEvent ? const EdgeInsets.only(left: 20, top: 20, right: 20, bottom: 40) : const EdgeInsets.all(10), decoration: !event.isNollningEvent ? null : BoxDecoration( image: DecorationImage( - scale: scale, - image: AssetImage("assets/data/nollning_26/calendar/event_banner.png"), + image: ResizeImage( // Can not just use scale in DecorationImage because it is prone to floating point errors + AssetImage("assets/data/nollning_26/calendar/event_banner.png"), + width: constraints.maxWidth.toInt() // imageWidth / scale + // height: (constraints.maxWidth * imageHeight / imageWidth).toInt() // imageHeight / scale + ), invertColors: Theme.of(context).brightness == Brightness.dark, // is this the correct way to do this? - centerSlice: Rect.fromLTWH(70 / scale, 108 / scale, 800 / scale, 1 / scale) // To hide stretching - // fit: BoxFit.fill + centerSlice: scaledCenterSlice // To hide stretching ) ), child: Row( diff --git a/lib/screens/event/event.dart b/lib/screens/event/event.dart index 39d8fa74..90861dd6 100644 --- a/lib/screens/event/event.dart +++ b/lib/screens/event/event.dart @@ -206,7 +206,18 @@ class _EventPageState extends State { child: LayoutBuilder( builder: (context, constraints) { const imageWidth = 579; - final scale = imageWidth / constraints.maxWidth; // Maybe a bit overkill but just to make sure the decorationimage doesn't fail + const imageHeight = 1000; + + final scale = imageWidth / constraints.maxWidth; + + const horizontalSlice = 50.0; + const verticalSlice = 50.0; + final scaledCenterSlice = Rect.fromLTWH( + horizontalSlice / scale, + verticalSlice / scale, + (imageWidth - 2 * horizontalSlice) / scale, + (imageHeight - 2 * verticalSlice) / scale + ); return Container( padding: const EdgeInsets.all(16.0), @@ -215,10 +226,12 @@ class _EventPageState extends State { ), decoration: !event!.isNollningEvent ? null : BoxDecoration( image: DecorationImage( - scale: scale, - image: AssetImage("assets/data/nollning_26/calendar/event_background.png"), + image: ResizeImage( // Can not just use scale in DecorationImage because it is prone to floating point errors + AssetImage("assets/data/nollning_26/calendar/event_background.png"), + width: constraints.maxWidth.toInt() // imageWidth / scale + ), invertColors: Theme.of(context).brightness == Brightness.dark, // is this the correct way to do this? - centerSlice: Rect.fromLTWH(50 / scale, 50 / scale, 479 / scale, 900 / scale) // To hide stretching + centerSlice: scaledCenterSlice, // To hide stretching ), ), child: Column( From 989f3e9881f8e66620c5d9de75780d86edc8a6d4 Mon Sep 17 00:00:00 2001 From: Mikael de Verdier Date: Sat, 15 Aug 2026 18:02:41 +0200 Subject: [PATCH 07/11] fixed rare overflow with calendar markers --- lib/screens/calendar/calendar.dart | 42 ++++++++++++++++-------------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/lib/screens/calendar/calendar.dart b/lib/screens/calendar/calendar.dart index 39e45dd6..bdfa4642 100644 --- a/lib/screens/calendar/calendar.dart +++ b/lib/screens/calendar/calendar.dart @@ -198,30 +198,32 @@ class _CalendarState extends State { Widget? _getMarkers(List events) { if (events.isEmpty) return null; - return Row( - mainAxisAlignment: MainAxisAlignment.center, - children: events.map((event) { - final alcPolicyImage = checkAlcoholEventType(event.alcoholEventType, isNollning: event.isNollningEvent); + return FittedBox( + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: events.map((event) { + final alcPolicyImage = checkAlcoholEventType(event.alcoholEventType, isNollning: event.isNollningEvent); + + if (!event.isNollningEvent || alcPolicyImage == null) { + return Container( + width: 8, + height: 8, + margin: const EdgeInsets.all(1), + decoration: BoxDecoration( + color: Theme.of(context).colorScheme.inverseSurface, + shape: BoxShape.circle + ) + ); + } - if (!event.isNollningEvent || alcPolicyImage == null) { return Container( - width: 8, - height: 8, + width: 13, + height: 13, margin: const EdgeInsets.all(1), - decoration: BoxDecoration( - color: Theme.of(context).colorScheme.inverseSurface, - shape: BoxShape.circle - ) + child: alcPolicyImage ); - } - - return Container( - width: 13, - height: 13, - margin: EdgeInsets.all(1), - child: alcPolicyImage - ); - }).toList(), + }).toList() + ) ); } From fa30e9711a1b860d729f2da3ab8a5fc0f873d0b7 Mon Sep 17 00:00:00 2001 From: Mikael de Verdier Date: Sat, 15 Aug 2026 22:20:45 +0200 Subject: [PATCH 08/11] increased marker size --- lib/screens/calendar/calendar.dart | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/screens/calendar/calendar.dart b/lib/screens/calendar/calendar.dart index bdfa4642..edda9ae3 100644 --- a/lib/screens/calendar/calendar.dart +++ b/lib/screens/calendar/calendar.dart @@ -206,9 +206,9 @@ class _CalendarState extends State { if (!event.isNollningEvent || alcPolicyImage == null) { return Container( - width: 8, - height: 8, - margin: const EdgeInsets.all(1), + width: 10, + height: 10, + margin: const EdgeInsets.symmetric(horizontal: 1), decoration: BoxDecoration( color: Theme.of(context).colorScheme.inverseSurface, shape: BoxShape.circle @@ -217,9 +217,9 @@ class _CalendarState extends State { } return Container( - width: 13, - height: 13, - margin: const EdgeInsets.all(1), + width: 16, + height: 16, + margin: const EdgeInsets.symmetric(horizontal: 1), child: alcPolicyImage ); }).toList() From f2c90e97a9cafc6f9f5810ebea08008a840ce2df Mon Sep 17 00:00:00 2001 From: Markus Pettersson Date: Sun, 16 Aug 2026 11:37:29 +0200 Subject: [PATCH 09/11] Added override annotations to initState() --- lib/screens/calendar/calendar.dart | 7 ++++++- lib/screens/event/event.dart | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/screens/calendar/calendar.dart b/lib/screens/calendar/calendar.dart index edda9ae3..e786b082 100644 --- a/lib/screens/calendar/calendar.dart +++ b/lib/screens/calendar/calendar.dart @@ -17,7 +17,10 @@ class _CalendarState extends State { DateTime _selectedDay = DateTime.now().toLocal(); List _selectedEvents = []; List _events = []; + + @override void initState() { + super.initState(); _selectedDay = DateTime.utc(_now.year, _now.month, _now.day); ApiService.apiClient .getEventsApi() @@ -26,18 +29,20 @@ class _CalendarState extends State { this._events = value.data!.toList(); _selectedEvents = _getEventsForDay(_selectedDay); })); - super.initState(); } + void openEventPage(EventRead event) { Navigator.push(context, MaterialPageRoute(builder: (context) => EventPage(event: event, eventId: event.id))); } + List _getEventsForDay(DateTime day) { final events = this._events.where((item) => isSameDay(item.startsAt.toLocal(), day)).toList(); events.sort((a, b) => a.startsAt.compareTo(b.startsAt)); return events; } + Future _onRefresh() async { ApiService.apiClient .getEventsApi() diff --git a/lib/screens/event/event.dart b/lib/screens/event/event.dart index e7df4034..d1784a33 100644 --- a/lib/screens/event/event.dart +++ b/lib/screens/event/event.dart @@ -74,6 +74,7 @@ class _EventPageState extends State { "AlcoholFree": EventSignupCreateDrinkPackageEnum.alcoholFree, }; + @override void initState() { super.initState(); _loadInitData(); From 02a6c621e0613c0463a177b8380dced1ebc3eabf Mon Sep 17 00:00:00 2001 From: Markus Pettersson Date: Sun, 16 Aug 2026 11:53:54 +0200 Subject: [PATCH 10/11] Make refresh loading indicator actually wait for the refresh to finish. --- lib/screens/calendar/calendar.dart | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/lib/screens/calendar/calendar.dart b/lib/screens/calendar/calendar.dart index e786b082..a7603d3b 100644 --- a/lib/screens/calendar/calendar.dart +++ b/lib/screens/calendar/calendar.dart @@ -37,20 +37,22 @@ class _CalendarState extends State { } List _getEventsForDay(DateTime day) { - final events = this._events.where((item) => isSameDay(item.startsAt.toLocal(), day)).toList(); events.sort((a, b) => a.startsAt.compareTo(b.startsAt)); return events; } Future _onRefresh() async { - ApiService.apiClient + return ApiService.apiClient .getEventsApi() .eventsGetAllEvents() - .then((value) => setState(() { - this._events = value.data!.toList(); - _selectedEvents = _getEventsForDay(_selectedDay); - })); + .then((value) { + if(!mounted) return; // We don't want to do a setstate when the state is no longer active. + setState(() { + this._events = value.data!.toList(); + _selectedEvents = _getEventsForDay(_selectedDay); + }); + }); } Widget? checkAlcoholEventType(String alcType, {bool isNollning = false}){ From 7b50efceeb32b6f361e0a4f40b0f1f85ffaf6f91 Mon Sep 17 00:00:00 2001 From: Mikael de Verdier <107776328+MikaeldeVerdier@users.noreply.github.com> Date: Sun, 16 Aug 2026 22:36:48 +0200 Subject: [PATCH 11/11] changed calendar link to section of website instead of calendar file MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Georg Elgebäck <50551748+georgelgeback@users.noreply.github.com> --- lib/screens/calendar/calendar.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/screens/calendar/calendar.dart b/lib/screens/calendar/calendar.dart index a7603d3b..bf1aa02e 100644 --- a/lib/screens/calendar/calendar.dart +++ b/lib/screens/calendar/calendar.dart @@ -235,7 +235,7 @@ class _CalendarState extends State { } Future openExportCalendarLink() async { - final uri = Uri.parse("https://fsektionen.se/calendar/subscribe"); + final uri = Uri.parse("https://fsektionen.se/calendar#subscribe"); await launchUrl( uri,