From 6efce0e33ecfde97f0405aa15c7ca4220085d8aa Mon Sep 17 00:00:00 2001 From: pfedotovsky Date: Fri, 10 Mar 2023 12:52:40 +0400 Subject: [PATCH 01/11] Add mock .NET 6 iOS project --- DotNetRu.iOS-net6/AppDelegate.cs | 31 +++++ .../AppIcon.appiconset/Contents.json | 118 ++++++++++++++++++ .../AppIcon.appiconset/Icon1024.png | Bin 0 -> 10753 bytes .../AppIcon.appiconset/Icon120.png | Bin 0 -> 1155 bytes .../AppIcon.appiconset/Icon152.png | Bin 0 -> 1381 bytes .../AppIcon.appiconset/Icon167.png | Bin 0 -> 1503 bytes .../AppIcon.appiconset/Icon180.png | Bin 0 -> 1558 bytes .../AppIcon.appiconset/Icon20.png | Bin 0 -> 352 bytes .../AppIcon.appiconset/Icon29.png | Bin 0 -> 422 bytes .../AppIcon.appiconset/Icon40.png | Bin 0 -> 537 bytes .../AppIcon.appiconset/Icon58.png | Bin 0 -> 700 bytes .../AppIcon.appiconset/Icon60.png | Bin 0 -> 700 bytes .../AppIcon.appiconset/Icon76.png | Bin 0 -> 870 bytes .../AppIcon.appiconset/Icon80.png | Bin 0 -> 888 bytes .../AppIcon.appiconset/Icon87.png | Bin 0 -> 942 bytes DotNetRu.iOS-net6/DotNetRu.iOS-net6.csproj | 16 +++ DotNetRu.iOS-net6/Entitlements.plist | 6 + DotNetRu.iOS-net6/Info.plist | 42 +++++++ DotNetRu.iOS-net6/LaunchScreen.storyboard | 27 ++++ DotNetRu.iOS-net6/Main.cs | 7 ++ DotNetRu.iOS-net6/Resources/LaunchScreen.xib | 45 +++++++ DotNetRu.iOS-net6/SceneDelegate.cs | 55 ++++++++ DotNetRuApp.sln | 27 ++++ 23 files changed, 374 insertions(+) create mode 100644 DotNetRu.iOS-net6/AppDelegate.cs create mode 100644 DotNetRu.iOS-net6/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 DotNetRu.iOS-net6/Assets.xcassets/AppIcon.appiconset/Icon1024.png create mode 100644 DotNetRu.iOS-net6/Assets.xcassets/AppIcon.appiconset/Icon120.png create mode 100644 DotNetRu.iOS-net6/Assets.xcassets/AppIcon.appiconset/Icon152.png create mode 100644 DotNetRu.iOS-net6/Assets.xcassets/AppIcon.appiconset/Icon167.png create mode 100644 DotNetRu.iOS-net6/Assets.xcassets/AppIcon.appiconset/Icon180.png create mode 100644 DotNetRu.iOS-net6/Assets.xcassets/AppIcon.appiconset/Icon20.png create mode 100644 DotNetRu.iOS-net6/Assets.xcassets/AppIcon.appiconset/Icon29.png create mode 100644 DotNetRu.iOS-net6/Assets.xcassets/AppIcon.appiconset/Icon40.png create mode 100644 DotNetRu.iOS-net6/Assets.xcassets/AppIcon.appiconset/Icon58.png create mode 100644 DotNetRu.iOS-net6/Assets.xcassets/AppIcon.appiconset/Icon60.png create mode 100644 DotNetRu.iOS-net6/Assets.xcassets/AppIcon.appiconset/Icon76.png create mode 100644 DotNetRu.iOS-net6/Assets.xcassets/AppIcon.appiconset/Icon80.png create mode 100644 DotNetRu.iOS-net6/Assets.xcassets/AppIcon.appiconset/Icon87.png create mode 100644 DotNetRu.iOS-net6/DotNetRu.iOS-net6.csproj create mode 100644 DotNetRu.iOS-net6/Entitlements.plist create mode 100644 DotNetRu.iOS-net6/Info.plist create mode 100644 DotNetRu.iOS-net6/LaunchScreen.storyboard create mode 100644 DotNetRu.iOS-net6/Main.cs create mode 100644 DotNetRu.iOS-net6/Resources/LaunchScreen.xib create mode 100644 DotNetRu.iOS-net6/SceneDelegate.cs diff --git a/DotNetRu.iOS-net6/AppDelegate.cs b/DotNetRu.iOS-net6/AppDelegate.cs new file mode 100644 index 00000000..7daff64c --- /dev/null +++ b/DotNetRu.iOS-net6/AppDelegate.cs @@ -0,0 +1,31 @@ +namespace DotNetRu.iOS_net6; + +[Register ("AppDelegate")] +public class AppDelegate : UIApplicationDelegate { + public override UIWindow? Window { + get; + set; + } + + public override bool FinishedLaunching (UIApplication application, NSDictionary launchOptions) + { + // create a new window instance based on the screen size + Window = new UIWindow (UIScreen.MainScreen.Bounds); + + // create a UIViewController with a single UILabel + var vc = new UIViewController (); + vc.View!.AddSubview (new UILabel (Window!.Frame) { + BackgroundColor = UIColor.SystemBackground, + TextAlignment = UITextAlignment.Center, + Text = "Hello, iOS!", + AutoresizingMask = UIViewAutoresizing.All, + }); + Window.RootViewController = vc; + + // make the window visible + Window.MakeKeyAndVisible (); + + return true; + } +} + diff --git a/DotNetRu.iOS-net6/Assets.xcassets/AppIcon.appiconset/Contents.json b/DotNetRu.iOS-net6/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 00000000..cf6f488e --- /dev/null +++ b/DotNetRu.iOS-net6/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,118 @@ +{ + "images": [ + { + "scale": "2x", + "size": "20x20", + "idiom": "iphone", + "filename": "Icon40.png" + }, + { + "scale": "3x", + "size": "20x20", + "idiom": "iphone", + "filename": "Icon60.png" + }, + { + "scale": "2x", + "size": "29x29", + "idiom": "iphone", + "filename": "Icon58.png" + }, + { + "scale": "3x", + "size": "29x29", + "idiom": "iphone", + "filename": "Icon87.png" + }, + { + "scale": "2x", + "size": "40x40", + "idiom": "iphone", + "filename": "Icon80.png" + }, + { + "scale": "3x", + "size": "40x40", + "idiom": "iphone", + "filename": "Icon120.png" + }, + { + "scale": "2x", + "size": "60x60", + "idiom": "iphone", + "filename": "Icon120.png" + }, + { + "scale": "3x", + "size": "60x60", + "idiom": "iphone", + "filename": "Icon180.png" + }, + { + "scale": "1x", + "size": "20x20", + "idiom": "ipad", + "filename": "Icon20.png" + }, + { + "scale": "2x", + "size": "20x20", + "idiom": "ipad", + "filename": "Icon40.png" + }, + { + "scale": "1x", + "size": "29x29", + "idiom": "ipad", + "filename": "Icon29.png" + }, + { + "scale": "2x", + "size": "29x29", + "idiom": "ipad", + "filename": "Icon58.png" + }, + { + "scale": "1x", + "size": "40x40", + "idiom": "ipad", + "filename": "Icon40.png" + }, + { + "scale": "2x", + "size": "40x40", + "idiom": "ipad", + "filename": "Icon80.png" + }, + { + "scale": "1x", + "size": "76x76", + "idiom": "ipad", + "filename": "Icon76.png" + }, + { + "scale": "2x", + "size": "76x76", + "idiom": "ipad", + "filename": "Icon152.png" + }, + { + "scale": "2x", + "size": "83.5x83.5", + "idiom": "ipad", + "filename": "Icon167.png" + }, + { + "scale": "1x", + "size": "1024x1024", + "idiom": "ios-marketing", + "filename": "Icon1024.png" + } + ], + "properties": {}, + "info": { + "version": 1, + "author": "xcode" + } +} + diff --git a/DotNetRu.iOS-net6/Assets.xcassets/AppIcon.appiconset/Icon1024.png b/DotNetRu.iOS-net6/Assets.xcassets/AppIcon.appiconset/Icon1024.png new file mode 100644 index 0000000000000000000000000000000000000000..b573205418896a726aca2711a04b355f2ac39377 GIT binary patch literal 10753 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 F1OQcq5<>t0 literal 0 HcmV?d00001 diff --git a/DotNetRu.iOS-net6/Assets.xcassets/AppIcon.appiconset/Icon152.png b/DotNetRu.iOS-net6/Assets.xcassets/AppIcon.appiconset/Icon152.png new file mode 100644 index 0000000000000000000000000000000000000000..1c1931312b67f4d54580f0307a9b19af555085d6 GIT binary patch literal 1381 zcmeAS@N?(olHy`uVBq!ia0vp^GeDSw4M<8HQcwg^oCO|{#S9GG!XV7ZFl&wkP>``W z$lZxy-8q?;Kn_c~qpu?a!^VE@KZ&eB?k`Ul$B+ufw|9I!Lb7F!e_X!nd(p}47@?)% z9=BMwoxOH*QLm$8NO#N=tv9Kc4=u>WDg4FZjhT?Z6g6DBAb zcnC@?;ou2kVbf%478zv1U#Dj)%#Hq6+RlEx;=Z}noKk`S9bG^ z`1|AE-R~b?_Tu--W2cwTztiizKKt8Gu}v4wFS-)YxOL0Ag6QpAf800Uac%CM?{{=V zSDugVI(jek;eXFhpRaZ&@J;;2{pxM>+kp6{sAgG-7X`Af{}-;1=Pm8fInKB6___7P z>HPakGH1;HEoQqf{L9D6ZFX7uo87W9W9R*r31*8?1}DLm?0QxwOR6>A-BntS8sYgR?SU%2f>>VL2H64RQ5Z>tL5T$`P7!YcmDzJD2JZ6&Om z*-rZ(d7NXmt-irIbygGS8`qLssUVF=l3egI8r|%18GL_Maw7t z^8dT@?5#Kkn_b`cWdIdql?AtG{phxPV={?1@$rma)#aM&w4^@vFz1*Z6U*Maj6=s> zT03R-_Z#NRu9{qTy|w6Gxs>Mq{56qccRjOb9q^j#cIx~wt()HcN3&OH?|vI#`7>eL zi??TvmCSl~jnR3z@jcyZa~@q>(S0CCHzl0urt{wN(~myoZftXV)f~oss!ZX?e8)Wg zbk)h8|>w>cj+Q@2>)x`|q3+DxdOFAPv z?w7fj_cNqIigWAKUrP74KiKB%7Bu}|zsbRMmrR!KW82KS-M0Jdx2;dbP6|JM?=83M z&CRqIK0m81LJp-Ri~H|6Rr}USUQA-&y}r1Xk~Q_uvp#+m&sO@iSbNXKlYeq*=Ql=d q+n)WZo!MoFyY`^X*6?ztj*0VtTXf!f`6a+ok-^i|&t;ucLK6V1xMsHi literal 0 HcmV?d00001 diff --git a/DotNetRu.iOS-net6/Assets.xcassets/AppIcon.appiconset/Icon167.png b/DotNetRu.iOS-net6/Assets.xcassets/AppIcon.appiconset/Icon167.png new file mode 100644 index 0000000000000000000000000000000000000000..4e3e8bd8efb7f2bfc0cd3ec6233298f4285e47d6 GIT binary patch literal 1503 zcmdUvi&v5d0L4E`(`o8FW|DfeW)HV!tmx1ScIjs2 ze3Dw3Dda?=^8Ff``6$yOB@;-pVV?%W#|JUnf6+Pj-ru?R54d^$zMh8q7Wx1H7&sI?3K1u0b@d#ThJN+b>r9Wz5@%y9L^AS!~_hyj=~UlC7r?dY$ZN?0s$Lb#NGGW(H>I$K?!N*|A`}*3nL$c}~D~NbdawE+MBs5z&W1>F7NZ!L@LXMp% zSj(TKfwx7l%eIyhb%;{xMA?X^w79i2ND^^)%lV!aJOpSG-(eTPLhaEkI z)#}DMDg70OdXImTwdB4^#>Z!((3tkF)~>j5vw=NiTlcwvQ?oFdP}i+vq*oBD2i4uS z89mJl{cr$m9C4WlQ7%q#&oLI$DDwO_DEgVsI!oQEZ6ij{c=-4d;?saWw?RBpY(9TT z@LE9@ehz$R)`3qHNfX3{^CxK0+>FmX+_y>KX7tw7+Q-;FW61O@*$^|!g}+Zz+eK6) z*0$xmZ8DDaJUFk_bT>(Bwjo=5|384j#|F(wS-uPaW zTsIrZ>p+$^IhIjenjGLtL33Ot3e%$YDn}rjApH}jx+ID!PR1#U>Kcf|DLD(v1Vg?PR-NkR z{6V;ogrX<~eKJm9?!h^r8RqpXqs5lJFFRS(MS9C) z#IhMB#Bmjt$xEQ>Qd+KAzev%sSah7~^66GSsOvbrG!FGl+rPFaCUK%vsiS?354-#Q z&@HR#Nw0y0jPo^~cUKM1ot0`vB#-}YWsOjmNRr8!avA3pLVV4s=7d47#=mV?pgwA0 z{bc?L?J!?JzswY8$1?|S1Xb2W=P(dx&87LG%Sr)0A<0zmyOUHQ@A!a?(PgHbpMz+J zMCYh~{tIVRvn^LtN5ElRFc>-47Fq%-?Hlepk`JyKOdeu!lM%NK;H5(=GCaP3JHb-$$IG7A9(Re5}$C zO{Y^&Q%UlhlrA{){X%hyf=D&W5=-z6^3c)0(K+{i?!BKM?&r5pAtu0kkD;X@004W? zKAwR(1wYe3UpL`g{nI+xo#Ydo3IIm?KXV6AQTdH-xg#~u8wD^%t);pE!6W^V0KhCZ z()_Fk0D4VmPvnmoI~HgC<4vQj`O5kCdmn*&3c@B9|CM>H(&hHo zBWE#|%BSj)Z5lq^+W899@^Ec8a0IgF*p~!nS_x`8!0JGb&GI^R&aBfki;(xnIPT+O z=ytziRT!7PxbU(kLNVI;MDS*Cn&9{VUluP*A*^$Z4~Yos4Pr>s$o6mjzmADpF)?~# z@jh)HyG*J2$40y{KF(=rPkD`-WPeq4VsC_QQ&8^fX#Y>!W?H->=tIJfU3-jyX z=^h<7jRqr!X59Us$tr3(NSy!VLGue&!zsO4oQ0v>OYGiM4$&ax0C+<_2~}skFLOFE z`wT-OtvTQL0THmpQt=Czgz^!j+JJiDMe z_9T6(w29g!tY(P9z@M!8@e{}4Po0TDMSqr-jWxWuFv6bITZByoc2S0Qb8;Em(HGO_ zQue}c$TB4q!!~LBa5OLbmQq`ejf#jmTSa&wRxvy+@;R5}lWaYnB)&7nxV#-4STaew z1KNc4YMbjXnv!@P;Y)Z2HP&5s%*GEXH!Zr$*_@?N#tQ8bYF2%*e1(vlv$f1STI@DJ zzLtx#YFi~r6B}N&k0F$e_2*uz;pV$`b+l`PYH3!Q>Xi?YGwN1vTjU8>60H>Ee+r`9 zih2^#nP(5Z7Mz3tA>l&WGAKB9Hu!No?M_dPD1xd1-3tM)%Ly8egB%U2^_H zVA=~E<{!-tudOFP*1aAWCHvI!`0V_9p7SOzd;B*&LF0|XN+Ac!`|e6-ncpm5wkfW} z`jV)^k6e$mJsIX=8P}dgY;HDfT#}gI>~yi+F<-lyMdUd97I$lxM>4NM12_7cIx~5m z7G7jH{S7ChbC?tNFA7=q u%jWg73Ww?aobowYX4QfG)Ghby8T2o6`lp|qwL%RT01Te4elF{r5}E+g-iaXq literal 0 HcmV?d00001 diff --git a/DotNetRu.iOS-net6/Assets.xcassets/AppIcon.appiconset/Icon29.png b/DotNetRu.iOS-net6/Assets.xcassets/AppIcon.appiconset/Icon29.png new file mode 100644 index 0000000000000000000000000000000000000000..bdd130c3533a790bb74dc41c9449ac92a35f91fa GIT binary patch literal 422 zcmV;X0a^ZuP)|_=KlV-gVKz`+>u~=iGDe_nmW==ej!146$U~SOHR0ib_!_YRjfm!dcV@ zug?uNUgv)J&;$S87PM3wmp40;ybSYCPPZ+0lk85p*q?dRvC_!7g4lBqAtpx98i^|W zL#`hJFxaDHt>%EQbWUd2hzVCpsPP)^9(VC{tJ|E_Cwo2HL4b8(IzEliOsRE7p=W8Q z$;bZzH&aXmp-PF**Am`-_o4nZEb;q`JQihcrQz`mO=xC`uPU3P-x8+^$-K%2M44MD z&G6^l;B6%%65kbsjy%wFUG8hC7Gf_!zNcI*O=IXgin`>VgA|pbQgppVM^MURaWqK6 Q$p8QV07*qoM6N<$f-C~EaR2}S literal 0 HcmV?d00001 diff --git a/DotNetRu.iOS-net6/Assets.xcassets/AppIcon.appiconset/Icon40.png b/DotNetRu.iOS-net6/Assets.xcassets/AppIcon.appiconset/Icon40.png new file mode 100644 index 0000000000000000000000000000000000000000..75d27899e32c19478fd914072864166c937fcc0c GIT binary patch literal 537 zcmV+!0_OdRP){d(V$|3f^#jaM643@xCADcrHBCy!ZMW42&5J4hdo*K`bPQg#@vX zAQlqDVtB#+UV?4*J~qrC=4-#!Ipxx)64MBe7hD$AGh5F>3HpOW5C{v9I(de}?I&eD zv_1?@Ca}4bh3Q#4MB?tI-|_XWqcPPpm*?)=O7VW%|O z#dL$N67v!z_X`kM5#TcYrW!Nlvq_&k;}~=aa(JW6u!dNTyP%*_t_{{0e*x+qOt3$? zXL10%^=$nI9R>YC2ke}VgSCFwHNrEOI(|{T<034x^6>hspqGv%e!Q)MXX0JzKK|Wi zFE#Ba4@4$!f^zXonv1y_T%5f&AJXvVok^F#I@o>TO!VT8gaomWAQlqDLV{RG5DN)n bF}&ap%6*B^)@pj400000NkvXXu0mjf(5>oa literal 0 HcmV?d00001 diff --git a/DotNetRu.iOS-net6/Assets.xcassets/AppIcon.appiconset/Icon58.png b/DotNetRu.iOS-net6/Assets.xcassets/AppIcon.appiconset/Icon58.png new file mode 100644 index 0000000000000000000000000000000000000000..06afa60917f35358a1f61d08d10c440432bc0d01 GIT binary patch literal 700 zcmeAS@N?(olHy`uVBq!ia0vp^Rv^s51|%Qu_R;`SoCO|{#S9GG!XV7ZFl&wkP>``W z$lZxy-8q?;Kn_c~qpu?a!^VE@KZ&di3`~KZE{-7;jBjVzdPE0`H1uzsc1>WR=;fs7 z3rjg(M$NhHq|W{J3Sa4l;LO#lTURyPKZyQ&_^8DTA@;zMK!cgR*({}jQ+`Z-z~9N4 z_2K!P)hzKfm1-YZAD#TEuxEeuR9tjNATSRi%&PoL;N6Maw=!^<#I1`|CYDq<$>pZIp1Gj=3+5_{GcL| zso6N6Xa9Lyfso_*`(+c_%9G@)qRkXz-|1Aza-Dl_*^=-;<*i*eci`Pp1A+a8^VvEh zVy&7Yo_zUK^Haj;pwUGQwuH^%&d#5UFU&H#^vap}(ya|?Kh9WJPOy;wZhbW{J1RWi z#Vlgl;(a?eaP9f#EP2jB^NI8{vBmpV&&hmK#k$mD_s^E4mamTQnI(0z_59bTAO8BY z?%1{6_x9~mT?;pE4l2+0xb695;nWB%uO8l(4_~)B-|a8@;3IQDN^C+%fZzWApF+yd z_x^p~sv)W>e(u!%dDlN|{>i#!sfHQL(~?i0bGpywM(BC{uu0r%b3rOP{QsFPx$BNh zI(hTlis$tXXZ6;u-DacVBiS8x-R9r}?Sk^pC$_|Lq@TJgA2cb{v_E)Tamch6b~~k} z^u*uYAECP1uz>5;Hr*RvUg%w^+oE1(cJe|3@3~jon?iP;{bUtwB=$8)wKws@=Xo8w zmdPxxU0$!4cH`dC++@~$XD%N;G1JQJaQdo#LF>jH2lL;({*~@L@lSiBB#!6<3m;=$ YQNGXVR!{jmU}9tNboFyt=akR{0D(wBr2qf` literal 0 HcmV?d00001 diff --git a/DotNetRu.iOS-net6/Assets.xcassets/AppIcon.appiconset/Icon60.png b/DotNetRu.iOS-net6/Assets.xcassets/AppIcon.appiconset/Icon60.png new file mode 100644 index 0000000000000000000000000000000000000000..2e0db2a6123440f30a37f1b6a69753c01d74bc6e GIT binary patch literal 700 zcmeAS@N?(olHy`uVBq!ia0vp^HXzKw1|+Ti+$;i8oCO|{#S9GG!XV7ZFl&wkP>``W z$lZxy-8q?;Kn_c~qpu?a!^VE@KZ&di3`~KZE{-7;jBjUIdMtJnX_)_dSNo*BPKWYR zrnlrWZH(P+)*5<**^ygxi%|b5rPf;&4O3lhyja(Yh`2^4uiYl-BB0$YWn-YW;E`dz zjfcs}`4c-^rhj)lG5_S5|NrmXzdt+M;nS+v#^@7@_Z<5U9=ej4_-cbeX~YaG9Uob- zWqjPh?X4>hgN2{W`A~hK;qXsRF5mCx^NN*cZ94z%8mr6U>zmGgU2l+hKjQ}*-}iL~ z-u>ZlJ2FpSb_>V$iu$hE`jd|DJ-eH8>E3u?xo4hvb;$G1b7sTc?FU!yDBIm3(EfSzjGx|$5|vr~ z8fWwtg-Yo6EqtB%hw=2~QUEdnH#Nd?L>-l_9;%k?#RQ?%vJxx^cH{&M3 zwTBc1+l-aIclrFhV3^RH<5JD1?=SBd`7~TZusdSqZI;*nHawhhE}j4Q{)$yw1XeEC z%a<(IZ}%kPdBR2w*Pm_4r&jGdzIV;GGfSJlNxE%VqtiKaU51Hs?QT}Jwr|1Tjt7aJ z-udX%YA3fA!8MEDt;&CpX>j<~smN3NBAV`X_2lXrZgJoB-dQ@kc-sf9hyUN{Z@MS7 z@tytTQsLi^^t7b|_+ADnzW(}m+VL6HZVz9)zSsP4=l)G0s>yZ_sxF2FZ{nQk5NRQ@ zXUc8sCowsn1gC842w#*tZ_U|c#SbPk<7<{r+Aa9UQSq03+~=)NKF*KofW#K=NR;(! WKFVR5TxtbOYz&^RelF{r5}E)t4@Uw3 literal 0 HcmV?d00001 diff --git a/DotNetRu.iOS-net6/Assets.xcassets/AppIcon.appiconset/Icon76.png b/DotNetRu.iOS-net6/Assets.xcassets/AppIcon.appiconset/Icon76.png new file mode 100644 index 0000000000000000000000000000000000000000..755bc880a9ec72638840e9c5ae10c5055194275e GIT binary patch literal 870 zcmeAS@N?(olHy`uVBq!ia0vp^J|N7&1|*M957Y)yoCO|{#S9GG!XV7ZFl&wkP>``W z$lZxy-8q?;Kn_c~qpu?a!^VE@KZ&di3{1a0T^vIy7~js`pDmmyaeThi>PuUqSe-Lv zg1CY@vi~={ank17#qsaP5gk3QseDv>!Tjk*?yCO&8{OF@-z2* z*!r~2Pwjkqs^$0aI~N2Ky)ri3mOH+@@8s3X@hNLJTr9bNZ{Mw^aL%jqKg%x-s{Z{} zK~^}dcix$k#qLjzJ{B!>zSuFZdRNr?Z+cEg#J5yDyYF}G4Uz37 zF*EL&RWYUOw?Fy&M*p>`m*IZJlWLph8u|CI-rWQQ?w&2Iy zKJMVilkQKo*M!IA``SPDTr;D3Th{l9#?P+3dCA=o|8dDnZDTdPJJpssvx*(`V&x42 zlQ+Ii-pU@f$o*}4-SjUtj(d)5elY9rmOS(L+!Gfs$~`G~?fLo-_qVF}mGeSpEb`xc z=PnQl;9b@bTp?P08^Hg)~``W z$lZxy-8q?;Kn_c~qpu?a!^VE@KZ&di49vWqE{-7;jBjV#X9Nd|9P?kZ$i(f)q@dN# zyFC`hp3P%j&cU@v_RR&qpwgm%6;?mkUuA{PndLa$BCK|#8zmZyiL`~>i5h3KAl^9-d1(r=ffNSJ4vPW3vh6;EOZc{0&!DY zH|0l4dEy+uf0IKVy2zyZKu6nlo;ReN~bITV_ou`*V*6Zl43FUnn6=V5%>7&=#YCOd^&u;p>@G|3P z7Wu8mi;eG}`JI0HopXWfg483)x(wq2C4bXowL2?%A>-yzvn*k;>iA2 z{Wp$1F)3b;GuBhj~Bp;|JpQwO z*ZW?p32)ivnF=fQmx+n2<-IL>p5@rIHIr_An6O28-nPvq-=A(TeY?v)&x?;|w#~BR zhhEF~iLvQtHW*IQ#0=BoH)_-a^uzRwoUhf^Et$~ zpYVGAagkVyv&Ga1{V9UKE}zP=nwMN=^)gel=|T1}@paA1=1Ft@RNaWmn_@-KZJ=&DT+y^{-2M~^``W z$lZxy-8q?;Kn_c~qpu?a!^VE@KZ&di49w1+E{-7;jBn={`UD4xwDB)G7T_S_$gG#6 zwnM9MiJD&00Z%sT2Pq~Sj67ndc!Z0(Sv_FzlbHFsXUz-&@s4FHR5cb(S;6w!_PWT2 zrL|ui|Hpm$RL^;`xjee!{@(X@{>x4ZyPG%vJZEEp4+qaFR;Qf~8sZ#JnHI(UeNxecVf1CH;JhSbLPtAAP`**5>takg~eq55}eQ$51cE!2=Kd-H- zrIze`+QPDM%KnWaT59F*S@rb(OyMt{?Rxz64Qu{cZ$JKt`BuNP`rOZn^|4!aJKkFF zqQdd=%KJ?xN`u6Hwd;HN#%^ty+qEV}f7h>FN$F3&-sqBHi%snRJ+0=rjr0$dt@Aqf zWY&FOd&9EYW_HZu-9 zYOC*mx6lyP=MG-Hd-d0Q4_G;kMWU#}2# zo0F3vb@ZO!npwU}FJ8O9@8D-4`5!utomawVpUl*%(6ijDroA94O3Uww)+`aLMWtm| z%UoXjimm;4c3T;o(KU+Fh#8-FS2R z_Xf{n%qf2R=j={YJ8$auRIBrc`O6(~`S~B$?e5(c#-{l8$F=W=E5m(GJ4bAOKQY6y zYV-Th%@zWH1Eys0;~vT}C$bxmv8=DplYYQ69;m5X6t{`{4epL?ox zO6!|n2lX`sk8k-O6R>TnwdJg7F?#A-pG_>eba}a~{Ldu$P;bZ0?>k-|e0IEA-AjIM zJkL_Es`b47s}0Yu(Tx1bu{=`JRn&eiC;R{3R7rHGX||qm$-h4Zra#Y40cI}-Pgg&e IbxsLQ06r+Fc>n+a literal 0 HcmV?d00001 diff --git a/DotNetRu.iOS-net6/DotNetRu.iOS-net6.csproj b/DotNetRu.iOS-net6/DotNetRu.iOS-net6.csproj new file mode 100644 index 00000000..df47d6c4 --- /dev/null +++ b/DotNetRu.iOS-net6/DotNetRu.iOS-net6.csproj @@ -0,0 +1,16 @@ + + + net6.0-ios + DotNetRu.iOS_net6 + Exe + enable + true + 13.0 + + + false + + + false + + diff --git a/DotNetRu.iOS-net6/Entitlements.plist b/DotNetRu.iOS-net6/Entitlements.plist new file mode 100644 index 00000000..36a87067 --- /dev/null +++ b/DotNetRu.iOS-net6/Entitlements.plist @@ -0,0 +1,6 @@ + + + + + + diff --git a/DotNetRu.iOS-net6/Info.plist b/DotNetRu.iOS-net6/Info.plist new file mode 100644 index 00000000..b1c9b380 --- /dev/null +++ b/DotNetRu.iOS-net6/Info.plist @@ -0,0 +1,42 @@ + + + + + CFBundleDisplayName + DotNetRu.iOS_net6 + CFBundleIdentifier + com.companyname.DotNetRu.iOS_net6 + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1.0 + LSRequiresIPhoneOS + + UIDeviceFamily + + 1 + 2 + + UILaunchStoryboardName + LaunchScreen + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + XSAppIconAssets + Assets.xcassets/AppIcon.appiconset + + diff --git a/DotNetRu.iOS-net6/LaunchScreen.storyboard b/DotNetRu.iOS-net6/LaunchScreen.storyboard new file mode 100644 index 00000000..71da417f --- /dev/null +++ b/DotNetRu.iOS-net6/LaunchScreen.storyboard @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/DotNetRu.iOS-net6/Main.cs b/DotNetRu.iOS-net6/Main.cs new file mode 100644 index 00000000..d830e180 --- /dev/null +++ b/DotNetRu.iOS-net6/Main.cs @@ -0,0 +1,7 @@ +using DotNetRu.iOS_net6; + +// This is the main entry point of the application. +// If you want to use a different Application Delegate class from "AppDelegate" +// you can specify it here. +UIApplication.Main (args, null, typeof (AppDelegate)); + diff --git a/DotNetRu.iOS-net6/Resources/LaunchScreen.xib b/DotNetRu.iOS-net6/Resources/LaunchScreen.xib new file mode 100644 index 00000000..3f0a845f --- /dev/null +++ b/DotNetRu.iOS-net6/Resources/LaunchScreen.xib @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/DotNetRu.iOS-net6/SceneDelegate.cs b/DotNetRu.iOS-net6/SceneDelegate.cs new file mode 100644 index 00000000..b9626610 --- /dev/null +++ b/DotNetRu.iOS-net6/SceneDelegate.cs @@ -0,0 +1,55 @@ +namespace DotNetRu.iOS_net6; + +[Register ("SceneDelegate")] +public class SceneDelegate : UIResponder, IUIWindowSceneDelegate { + + [Export ("window")] + public UIWindow? Window { get; set; } + + [Export ("scene:willConnectToSession:options:")] + public void WillConnect (UIScene scene, UISceneSession session, UISceneConnectionOptions connectionOptions) + { + // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`. + // If using a storyboard, the `window` property will automatically be initialized and attached to the scene. + // This delegate does not imply the connecting scene or session are new (see UIApplicationDelegate `GetConfiguration` instead). + } + + [Export ("sceneDidDisconnect:")] + public void DidDisconnect (UIScene scene) + { + // Called as the scene is being released by the system. + // This occurs shortly after the scene enters the background, or when its session is discarded. + // Release any resources associated with this scene that can be re-created the next time the scene connects. + // The scene may re-connect later, as its session was not neccessarily discarded (see UIApplicationDelegate `DidDiscardSceneSessions` instead). + } + + [Export ("sceneDidBecomeActive:")] + public void DidBecomeActive (UIScene scene) + { + // Called when the scene has moved from an inactive state to an active state. + // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive. + } + + [Export ("sceneWillResignActive:")] + public void WillResignActive (UIScene scene) + { + // Called when the scene will move from an active state to an inactive state. + // This may occur due to temporary interruptions (ex. an incoming phone call). + } + + [Export ("sceneWillEnterForeground:")] + public void WillEnterForeground (UIScene scene) + { + // Called as the scene transitions from the background to the foreground. + // Use this method to undo the changes made on entering the background. + } + + [Export ("sceneDidEnterBackground:")] + public void DidEnterBackground (UIScene scene) + { + // Called as the scene transitions from the foreground to the background. + // Use this method to save data, release shared resources, and store enough scene-specific state information + // to restore the scene back to its current state. + } +} + diff --git a/DotNetRuApp.sln b/DotNetRuApp.sln index 16a6565f..8f909bda 100644 --- a/DotNetRuApp.sln +++ b/DotNetRuApp.sln @@ -31,6 +31,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DotNetRu.AppUtils", "DotNet EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DotNetRu.RealmTests", "DotNetRu.RealmTests\DotNetRu.RealmTests.csproj", "{B2777691-1F4C-4496-A2F5-E146F5B7B174}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DotNetRu.iOS-net6", "DotNetRu.iOS-net6\DotNetRu.iOS-net6.csproj", "{92157E62-D610-4ED4-8236-877FA448BF39}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -272,6 +274,30 @@ Global {B2777691-1F4C-4496-A2F5-E146F5B7B174}.Release|x64.Build.0 = Release|Any CPU {B2777691-1F4C-4496-A2F5-E146F5B7B174}.Release|x86.ActiveCfg = Release|Any CPU {B2777691-1F4C-4496-A2F5-E146F5B7B174}.Release|x86.Build.0 = Release|Any CPU + {92157E62-D610-4ED4-8236-877FA448BF39}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {92157E62-D610-4ED4-8236-877FA448BF39}.Debug|Any CPU.Build.0 = Debug|Any CPU + {92157E62-D610-4ED4-8236-877FA448BF39}.Debug|ARM.ActiveCfg = Debug|Any CPU + {92157E62-D610-4ED4-8236-877FA448BF39}.Debug|ARM.Build.0 = Debug|Any CPU + {92157E62-D610-4ED4-8236-877FA448BF39}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {92157E62-D610-4ED4-8236-877FA448BF39}.Debug|iPhone.Build.0 = Debug|Any CPU + {92157E62-D610-4ED4-8236-877FA448BF39}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {92157E62-D610-4ED4-8236-877FA448BF39}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {92157E62-D610-4ED4-8236-877FA448BF39}.Debug|x64.ActiveCfg = Debug|Any CPU + {92157E62-D610-4ED4-8236-877FA448BF39}.Debug|x64.Build.0 = Debug|Any CPU + {92157E62-D610-4ED4-8236-877FA448BF39}.Debug|x86.ActiveCfg = Debug|Any CPU + {92157E62-D610-4ED4-8236-877FA448BF39}.Debug|x86.Build.0 = Debug|Any CPU + {92157E62-D610-4ED4-8236-877FA448BF39}.Release|Any CPU.ActiveCfg = Release|Any CPU + {92157E62-D610-4ED4-8236-877FA448BF39}.Release|Any CPU.Build.0 = Release|Any CPU + {92157E62-D610-4ED4-8236-877FA448BF39}.Release|ARM.ActiveCfg = Release|Any CPU + {92157E62-D610-4ED4-8236-877FA448BF39}.Release|ARM.Build.0 = Release|Any CPU + {92157E62-D610-4ED4-8236-877FA448BF39}.Release|iPhone.ActiveCfg = Release|Any CPU + {92157E62-D610-4ED4-8236-877FA448BF39}.Release|iPhone.Build.0 = Release|Any CPU + {92157E62-D610-4ED4-8236-877FA448BF39}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {92157E62-D610-4ED4-8236-877FA448BF39}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {92157E62-D610-4ED4-8236-877FA448BF39}.Release|x64.ActiveCfg = Release|Any CPU + {92157E62-D610-4ED4-8236-877FA448BF39}.Release|x64.Build.0 = Release|Any CPU + {92157E62-D610-4ED4-8236-877FA448BF39}.Release|x86.ActiveCfg = Release|Any CPU + {92157E62-D610-4ED4-8236-877FA448BF39}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -279,6 +305,7 @@ Global GlobalSection(NestedProjects) = preSolution {C4B4592F-6AC4-4FE6-B63E-5D2DE47FD340} = {B3B306B8-9A3D-4CD6-81FD-9C9EAB3C5788} {22F77CDE-8816-45D7-A7A1-CA9282145F0A} = {B3B306B8-9A3D-4CD6-81FD-9C9EAB3C5788} + {92157E62-D610-4ED4-8236-877FA448BF39} = {B3B306B8-9A3D-4CD6-81FD-9C9EAB3C5788} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {99195DFD-D57B-48C9-95EE-ED1C95C8220C} From dac41302c397f5f56af72a713e211a3a55315674 Mon Sep 17 00:00:00 2001 From: pfedotovsky Date: Fri, 10 Mar 2023 22:28:45 +0400 Subject: [PATCH 02/11] Update iOS project to new csproj and MAUI --- .../DotNetRu.RealmTests.csproj | 2 +- DotNetRu.iOS-net6/AppDelegate.cs | 31 - DotNetRu.iOS-net6/DotNetRu.iOS-net6.csproj | 16 - DotNetRu.iOS-net6/Entitlements.plist | 6 - DotNetRu.iOS-net6/Info.plist | 42 -- DotNetRu.iOS-net6/LaunchScreen.storyboard | 27 - DotNetRu.iOS-net6/Main.cs | 7 - DotNetRu.iOS-net6/Resources/LaunchScreen.xib | 45 -- DotNetRu.iOS-net6/SceneDelegate.cs | 55 -- DotNetRu.iOS/AppDelegate.cs | 203 +------ .../AppIcon.appiconset/Contents.json | 0 .../AppIcon.appiconset/Icon1024.png | Bin .../AppIcon.appiconset/Icon120.png | Bin .../AppIcon.appiconset/Icon152.png | Bin .../AppIcon.appiconset/Icon167.png | Bin .../AppIcon.appiconset/Icon180.png | Bin .../AppIcon.appiconset/Icon20.png | Bin .../AppIcon.appiconset/Icon29.png | Bin .../AppIcon.appiconset/Icon40.png | Bin .../AppIcon.appiconset/Icon58.png | Bin .../AppIcon.appiconset/Icon60.png | Bin .../AppIcon.appiconset/Icon76.png | Bin .../AppIcon.appiconset/Icon80.png | Bin .../AppIcon.appiconset/Icon87.png | Bin DotNetRu.iOS/DotNetRu.iOS.csproj | 532 ++++++------------ DotNetRu.iOS/Effects/NonScrollableEffect.cs | 26 - DotNetRu.iOS/Helpers/LaunchFacebook.cs | 2 +- DotNetRu.iOS/Helpers/LaunchTwitter.cs | 2 +- DotNetRu.iOS/Helpers/Toaster.cs | 16 - DotNetRu.iOS/Info.plist | 2 +- DotNetRu.iOS/Localize.cs | 2 +- DotNetRu.iOS/Main.cs | 15 - .../SessionUserActivity.cs | 91 --- .../SpeakerUserActivity.cs | 86 --- .../Renderers/AlwaysScrollViewRenderer.cs | 41 +- .../NonScrollableListViewRenderer.cs | 48 +- .../Renderers/SelectedTabPageRenderer.cs | 94 ++-- DotNetRu.iOS/Resources/floor_1.png | Bin 37464 -> 0 bytes DotNetRu.iOS/Resources/floor_2.png | Bin 31602 -> 0 bytes DotNetRu.iOS/Resources/floor_3.png | Bin 22840 -> 0 bytes DotNetRu.iOS/Resources/hotel_logo.png | Bin 5035 -> 0 bytes DotNetRu.iOS/Resources/hotel_logo@2x.png | Bin 12715 -> 0 bytes DotNetRu.iOS/Resources/hotel_logo@3x.png | Bin 20545 -> 0 bytes DotNetRu.iOS/Resources/tab_minihacks.png | Bin 613 -> 0 bytes DotNetRu.iOS/Resources/tab_minihacks@2x.png | Bin 1282 -> 0 bytes DotNetRu.iOS/Resources/tab_minihacks@3x.png | Bin 1987 -> 0 bytes .../Resources/tab_minihacks_selected.png | Bin 512 -> 0 bytes .../Resources/tab_minihacks_selected@2x.png | Bin 993 -> 0 bytes .../Resources/tab_minihacks_selected@3x.png | Bin 1565 -> 0 bytes DotNetRuApp.sln | 79 +-- 50 files changed, 327 insertions(+), 1143 deletions(-) delete mode 100644 DotNetRu.iOS-net6/AppDelegate.cs delete mode 100644 DotNetRu.iOS-net6/DotNetRu.iOS-net6.csproj delete mode 100644 DotNetRu.iOS-net6/Entitlements.plist delete mode 100644 DotNetRu.iOS-net6/Info.plist delete mode 100644 DotNetRu.iOS-net6/LaunchScreen.storyboard delete mode 100644 DotNetRu.iOS-net6/Main.cs delete mode 100644 DotNetRu.iOS-net6/Resources/LaunchScreen.xib delete mode 100644 DotNetRu.iOS-net6/SceneDelegate.cs rename {DotNetRu.iOS-net6 => DotNetRu.iOS}/Assets.xcassets/AppIcon.appiconset/Contents.json (100%) rename {DotNetRu.iOS-net6 => DotNetRu.iOS}/Assets.xcassets/AppIcon.appiconset/Icon1024.png (100%) rename {DotNetRu.iOS-net6 => DotNetRu.iOS}/Assets.xcassets/AppIcon.appiconset/Icon120.png (100%) rename {DotNetRu.iOS-net6 => DotNetRu.iOS}/Assets.xcassets/AppIcon.appiconset/Icon152.png (100%) rename {DotNetRu.iOS-net6 => DotNetRu.iOS}/Assets.xcassets/AppIcon.appiconset/Icon167.png (100%) rename {DotNetRu.iOS-net6 => DotNetRu.iOS}/Assets.xcassets/AppIcon.appiconset/Icon180.png (100%) rename {DotNetRu.iOS-net6 => DotNetRu.iOS}/Assets.xcassets/AppIcon.appiconset/Icon20.png (100%) rename {DotNetRu.iOS-net6 => DotNetRu.iOS}/Assets.xcassets/AppIcon.appiconset/Icon29.png (100%) rename {DotNetRu.iOS-net6 => DotNetRu.iOS}/Assets.xcassets/AppIcon.appiconset/Icon40.png (100%) rename {DotNetRu.iOS-net6 => DotNetRu.iOS}/Assets.xcassets/AppIcon.appiconset/Icon58.png (100%) rename {DotNetRu.iOS-net6 => DotNetRu.iOS}/Assets.xcassets/AppIcon.appiconset/Icon60.png (100%) rename {DotNetRu.iOS-net6 => DotNetRu.iOS}/Assets.xcassets/AppIcon.appiconset/Icon76.png (100%) rename {DotNetRu.iOS-net6 => DotNetRu.iOS}/Assets.xcassets/AppIcon.appiconset/Icon80.png (100%) rename {DotNetRu.iOS-net6 => DotNetRu.iOS}/Assets.xcassets/AppIcon.appiconset/Icon87.png (100%) delete mode 100644 DotNetRu.iOS/Effects/NonScrollableEffect.cs delete mode 100644 DotNetRu.iOS/Helpers/Toaster.cs delete mode 100644 DotNetRu.iOS/Main.cs delete mode 100644 DotNetRu.iOS/PlatformFeatures/ProActiveSuggestions/SessionUserActivity.cs delete mode 100644 DotNetRu.iOS/PlatformFeatures/ProActiveSuggestions/SpeakerUserActivity.cs delete mode 100644 DotNetRu.iOS/Resources/floor_1.png delete mode 100644 DotNetRu.iOS/Resources/floor_2.png delete mode 100644 DotNetRu.iOS/Resources/floor_3.png delete mode 100644 DotNetRu.iOS/Resources/hotel_logo.png delete mode 100644 DotNetRu.iOS/Resources/hotel_logo@2x.png delete mode 100644 DotNetRu.iOS/Resources/hotel_logo@3x.png delete mode 100644 DotNetRu.iOS/Resources/tab_minihacks.png delete mode 100644 DotNetRu.iOS/Resources/tab_minihacks@2x.png delete mode 100644 DotNetRu.iOS/Resources/tab_minihacks@3x.png delete mode 100644 DotNetRu.iOS/Resources/tab_minihacks_selected.png delete mode 100644 DotNetRu.iOS/Resources/tab_minihacks_selected@2x.png delete mode 100644 DotNetRu.iOS/Resources/tab_minihacks_selected@3x.png diff --git a/DotNetRu.RealmTests/DotNetRu.RealmTests.csproj b/DotNetRu.RealmTests/DotNetRu.RealmTests.csproj index 66e23b55..f04ea414 100644 --- a/DotNetRu.RealmTests/DotNetRu.RealmTests.csproj +++ b/DotNetRu.RealmTests/DotNetRu.RealmTests.csproj @@ -2,7 +2,7 @@ Exe - netcoreapp3.1 + net7.0 diff --git a/DotNetRu.iOS-net6/AppDelegate.cs b/DotNetRu.iOS-net6/AppDelegate.cs deleted file mode 100644 index 7daff64c..00000000 --- a/DotNetRu.iOS-net6/AppDelegate.cs +++ /dev/null @@ -1,31 +0,0 @@ -namespace DotNetRu.iOS_net6; - -[Register ("AppDelegate")] -public class AppDelegate : UIApplicationDelegate { - public override UIWindow? Window { - get; - set; - } - - public override bool FinishedLaunching (UIApplication application, NSDictionary launchOptions) - { - // create a new window instance based on the screen size - Window = new UIWindow (UIScreen.MainScreen.Bounds); - - // create a UIViewController with a single UILabel - var vc = new UIViewController (); - vc.View!.AddSubview (new UILabel (Window!.Frame) { - BackgroundColor = UIColor.SystemBackground, - TextAlignment = UITextAlignment.Center, - Text = "Hello, iOS!", - AutoresizingMask = UIViewAutoresizing.All, - }); - Window.RootViewController = vc; - - // make the window visible - Window.MakeKeyAndVisible (); - - return true; - } -} - diff --git a/DotNetRu.iOS-net6/DotNetRu.iOS-net6.csproj b/DotNetRu.iOS-net6/DotNetRu.iOS-net6.csproj deleted file mode 100644 index df47d6c4..00000000 --- a/DotNetRu.iOS-net6/DotNetRu.iOS-net6.csproj +++ /dev/null @@ -1,16 +0,0 @@ - - - net6.0-ios - DotNetRu.iOS_net6 - Exe - enable - true - 13.0 - - - false - - - false - - diff --git a/DotNetRu.iOS-net6/Entitlements.plist b/DotNetRu.iOS-net6/Entitlements.plist deleted file mode 100644 index 36a87067..00000000 --- a/DotNetRu.iOS-net6/Entitlements.plist +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/DotNetRu.iOS-net6/Info.plist b/DotNetRu.iOS-net6/Info.plist deleted file mode 100644 index b1c9b380..00000000 --- a/DotNetRu.iOS-net6/Info.plist +++ /dev/null @@ -1,42 +0,0 @@ - - - - - CFBundleDisplayName - DotNetRu.iOS_net6 - CFBundleIdentifier - com.companyname.DotNetRu.iOS_net6 - CFBundleShortVersionString - 1.0 - CFBundleVersion - 1.0 - LSRequiresIPhoneOS - - UIDeviceFamily - - 1 - 2 - - UILaunchStoryboardName - LaunchScreen - UIRequiredDeviceCapabilities - - armv7 - - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UISupportedInterfaceOrientations~ipad - - UIInterfaceOrientationPortrait - UIInterfaceOrientationPortraitUpsideDown - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - XSAppIconAssets - Assets.xcassets/AppIcon.appiconset - - diff --git a/DotNetRu.iOS-net6/LaunchScreen.storyboard b/DotNetRu.iOS-net6/LaunchScreen.storyboard deleted file mode 100644 index 71da417f..00000000 --- a/DotNetRu.iOS-net6/LaunchScreen.storyboard +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/DotNetRu.iOS-net6/Main.cs b/DotNetRu.iOS-net6/Main.cs deleted file mode 100644 index d830e180..00000000 --- a/DotNetRu.iOS-net6/Main.cs +++ /dev/null @@ -1,7 +0,0 @@ -using DotNetRu.iOS_net6; - -// This is the main entry point of the application. -// If you want to use a different Application Delegate class from "AppDelegate" -// you can specify it here. -UIApplication.Main (args, null, typeof (AppDelegate)); - diff --git a/DotNetRu.iOS-net6/Resources/LaunchScreen.xib b/DotNetRu.iOS-net6/Resources/LaunchScreen.xib deleted file mode 100644 index 3f0a845f..00000000 --- a/DotNetRu.iOS-net6/Resources/LaunchScreen.xib +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/DotNetRu.iOS-net6/SceneDelegate.cs b/DotNetRu.iOS-net6/SceneDelegate.cs deleted file mode 100644 index b9626610..00000000 --- a/DotNetRu.iOS-net6/SceneDelegate.cs +++ /dev/null @@ -1,55 +0,0 @@ -namespace DotNetRu.iOS_net6; - -[Register ("SceneDelegate")] -public class SceneDelegate : UIResponder, IUIWindowSceneDelegate { - - [Export ("window")] - public UIWindow? Window { get; set; } - - [Export ("scene:willConnectToSession:options:")] - public void WillConnect (UIScene scene, UISceneSession session, UISceneConnectionOptions connectionOptions) - { - // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`. - // If using a storyboard, the `window` property will automatically be initialized and attached to the scene. - // This delegate does not imply the connecting scene or session are new (see UIApplicationDelegate `GetConfiguration` instead). - } - - [Export ("sceneDidDisconnect:")] - public void DidDisconnect (UIScene scene) - { - // Called as the scene is being released by the system. - // This occurs shortly after the scene enters the background, or when its session is discarded. - // Release any resources associated with this scene that can be re-created the next time the scene connects. - // The scene may re-connect later, as its session was not neccessarily discarded (see UIApplicationDelegate `DidDiscardSceneSessions` instead). - } - - [Export ("sceneDidBecomeActive:")] - public void DidBecomeActive (UIScene scene) - { - // Called when the scene has moved from an inactive state to an active state. - // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive. - } - - [Export ("sceneWillResignActive:")] - public void WillResignActive (UIScene scene) - { - // Called when the scene will move from an active state to an inactive state. - // This may occur due to temporary interruptions (ex. an incoming phone call). - } - - [Export ("sceneWillEnterForeground:")] - public void WillEnterForeground (UIScene scene) - { - // Called as the scene transitions from the background to the foreground. - // Use this method to undo the changes made on entering the background. - } - - [Export ("sceneDidEnterBackground:")] - public void DidEnterBackground (UIScene scene) - { - // Called as the scene transitions from the foreground to the background. - // Use this method to save data, release shared resources, and store enough scene-specific state information - // to restore the scene back to its current state. - } -} - diff --git a/DotNetRu.iOS/AppDelegate.cs b/DotNetRu.iOS/AppDelegate.cs index f96a70f9..af21a3b8 100644 --- a/DotNetRu.iOS/AppDelegate.cs +++ b/DotNetRu.iOS/AppDelegate.cs @@ -7,31 +7,29 @@ namespace DotNetRu.iOS using DotNetRu.AppUtils.Logging; using DotNetRu.Clients.Portable.Model; using DotNetRu.Clients.UI; - using DotNetRu.iOS.Renderers; using DotNetRu.Utils; using DotNetRu.Utils.Helpers; - using FFImageLoading.Forms.Platform; using FFImageLoading.Transformations; using FormsToolkit; - using FormsToolkit.iOS; using Foundation; - - using ImageCircle.Forms.Plugin.iOS; - using Social; using UIKit; - using Xamarin.Forms; - using Xamarin.Forms.Platform.iOS; + using Microsoft.Maui; + using Microsoft.Maui.Hosting; + using Microsoft.Maui.Controls.Compatibility.Platform.iOS; [Register("AppDelegate")] - public partial class AppDelegate : FormsApplicationDelegate + public partial class AppDelegate : MauiUIApplicationDelegate { private static UIColor primaryColor; + // TODO: MauiProgram.CreateMauiApp(); + protected override MauiApp CreateMauiApp() => throw new NotImplementedException(); + /// public override void WillEnterForeground(UIApplication uiApplication) { @@ -39,25 +37,6 @@ public override void WillEnterForeground(UIApplication uiApplication) ((App)Xamarin.Forms.Application.Current).SecondOnResume(); } - /// - public override void ReceivedRemoteNotification(UIApplication app, NSDictionary userInfo) - { - // Process a notification received while the app was already open - this.ProcessNotification(userInfo); - } - - /// - public override bool HandleOpenURL(UIApplication application, NSUrl url) - { - if (!string.IsNullOrEmpty(url.AbsoluteString)) - { - ((App)Xamarin.Forms.Application.Current).SendOnAppLinkRequestReceived(new Uri(url.AbsoluteString)); - return true; - } - - return false; - } - /// public override bool OpenUrl(UIApplication app, NSUrl url, NSDictionary options) { @@ -70,37 +49,19 @@ public override bool OpenUrl(UIApplication app, NSUrl url, NSDictionary options) return false; } - /// - public override bool OpenUrl( - UIApplication application, - NSUrl url, - string sourceApplication, - NSObject annotation) - { - if (!string.IsNullOrEmpty(url.AbsoluteString)) - { - ((App)Xamarin.Forms.Application.Current).SendOnAppLinkRequestReceived(new Uri(url.AbsoluteString)); - return true; - } - - return false; - } - /// public override bool FinishedLaunching(UIApplication uiApplication, NSDictionary launchOptions) { - Forms.Init(); - - this.SetMinimumBackgroundFetchInterval(); - - InitializeDependencies(); - - this.LoadApplication(new App()); + // TODO return init of dependencies + // InitializeDependencies(); InitializeThemeColors(); - // Process any potential notification data from launch - this.ProcessNotification(launchOptions); + // this is needed to tell linker to keep this type. See https://github.com/luberda-molinet/FFImageLoading/issues/462 + var ignore = new CircleTransformation(); + + // this is needed to tell linker to keep this type + var dummy = new DateTimeOffsetConverter(); NSNotificationCenter.DefaultCenter.AddObserver(UIApplication.DidBecomeActiveNotification, this.DidBecomeActive); @@ -114,22 +75,16 @@ public override bool FinishedLaunching(UIApplication uiApplication, NSDictionary return base.FinishedLaunching(uiApplication, launchOptions); // && shouldPerformAdditionalDelegateHandling; } - private static void InitializeDependencies() - { - Toolkit.Init(); - - ImageCircleRenderer.Init(); - NonScrollableListViewRenderer.Initialize(); - SelectedTabPageRenderer.Initialize(); - - CachedImageRenderer.Init(); + //private static void InitializeDependencies() + //{ + // Toolkit.Init(); - // this is needed to tell linker to keep this type. See https://github.com/luberda-molinet/FFImageLoading/issues/462 - var ignore = new CircleTransformation(); + // ImageCircleRenderer.Init(); + // NonScrollableListViewRenderer.Initialize(); + // SelectedTabPageRenderer.Initialize(); - // this is needed to tell linker to keep this type - var dummy = new DateTimeOffsetConverter(); - } + // CachedImageRenderer.Init(); + //} private static void InitializeThemeColors() { @@ -153,44 +108,6 @@ private void DidBecomeActive(NSNotification notification) ((App)Xamarin.Forms.Application.Current).SecondOnResume(); } - private void ProcessNotification(NSDictionary userInfo) - { - if (userInfo == null) - { - return; - } - - Console.WriteLine("Received Notification"); - - var apsKey = new NSString("aps"); - - if (userInfo.ContainsKey(apsKey)) - { - var alertKey = new NSString("alert"); - - var aps = (NSDictionary)userInfo.ObjectForKey(apsKey); - - if (aps.ContainsKey(alertKey)) - { - var alert = (NSString)aps.ObjectForKey(alertKey); - - var uiAlertView = new UIAlertView($"{AboutThisApp.AppName} Update", alert, (IUIAlertViewDelegate)null, "OK", null); - - try - { - uiAlertView.Show(); - - } - catch (Exception) - { - // ignored - } - - Console.WriteLine("Notification: " + alert); - } - } - } - #region Quick Action public UIApplicationShortcutItem LaunchedShortcutItem { get; set; } @@ -202,35 +119,10 @@ public override void OnActivated(UIApplication uiApplication) // Handle any shortcut item being selected this.HandleShortcutItem(this.LaunchedShortcutItem); - - // Clear shortcut after it's been handled this.LaunchedShortcutItem = null; } - void CheckForAppLink(NSUserActivity userActivity) - { - var link = string.Empty; - - switch (userActivity.ActivityType) - { - case "NSUserActivityTypeBrowsingWeb": - link = userActivity.WebPageUrl.AbsoluteString; - break; - case "com.apple.corespotlightitem": - if (userActivity.UserInfo.ContainsKey(CSSearchableItem.ActivityIdentifier)) - link = userActivity.UserInfo.ObjectForKey(CSSearchableItem.ActivityIdentifier).ToString(); - break; - default: - if (userActivity.UserInfo.ContainsKey(new NSString("link"))) - link = userActivity.UserInfo[new NSString("link")].ToString(); - break; - } - - if (!string.IsNullOrEmpty(link)) - ((App)Xamarin.Forms.Application.Current).SendOnAppLinkRequestReceived(new Uri(link)); - } - // if app is already running public override void PerformActionForShortcutItem( UIApplication application, @@ -320,57 +212,6 @@ private void ContinueNavigation(AppPage page, string id = null) new DeepLinkPage { Page = page, Id = id }); } - /// - public override void UserActivityUpdated(UIApplication application, NSUserActivity userActivity) - { - this.CheckForAppLink(userActivity); - } - - /// - public override bool ContinueUserActivity( - UIApplication application, - NSUserActivity userActivity, - UIApplicationRestorationHandler completionHandler) - { - this.CheckForAppLink(userActivity); - return true; - } - - #endregion - - #region Background Refresh - - private void SetMinimumBackgroundFetchInterval() - { - UIApplication.SharedApplication.SetMinimumBackgroundFetchInterval(MINIMUM_BACKGROUND_FETCH_INTERVAL); - } - - // Minimum number of seconds between a background refresh this is shorter than Android because it is easily killed off. - // 20 minutes = 20 * 60 = 1200 seconds - private const double MINIMUM_BACKGROUND_FETCH_INTERVAL = 1200; - - // Called whenever your app performs a background fetch - public override void PerformFetch(UIApplication application, Action completionHandler) - { - // Do Background Fetch - var downloadSuccessful = false; - - try - { - Forms.Init(); // need for dependency services - } - catch (Exception ex) - { - ex.Data["Method"] = "PerformFetch"; - DotNetRuLogger.Report(ex); - } - - // If you don't call this, your application will be terminated by the OS. - // Allows OS to collect stats like data cost and power consumption - var resultFlag = downloadSuccessful ? UIBackgroundFetchResult.NewData : UIBackgroundFetchResult.Failed; - completionHandler(resultFlag); - } - #endregion } } diff --git a/DotNetRu.iOS-net6/Assets.xcassets/AppIcon.appiconset/Contents.json b/DotNetRu.iOS/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from DotNetRu.iOS-net6/Assets.xcassets/AppIcon.appiconset/Contents.json rename to DotNetRu.iOS/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/DotNetRu.iOS-net6/Assets.xcassets/AppIcon.appiconset/Icon1024.png b/DotNetRu.iOS/Assets.xcassets/AppIcon.appiconset/Icon1024.png similarity index 100% rename from DotNetRu.iOS-net6/Assets.xcassets/AppIcon.appiconset/Icon1024.png rename to DotNetRu.iOS/Assets.xcassets/AppIcon.appiconset/Icon1024.png diff --git a/DotNetRu.iOS-net6/Assets.xcassets/AppIcon.appiconset/Icon120.png b/DotNetRu.iOS/Assets.xcassets/AppIcon.appiconset/Icon120.png similarity index 100% rename from DotNetRu.iOS-net6/Assets.xcassets/AppIcon.appiconset/Icon120.png rename to DotNetRu.iOS/Assets.xcassets/AppIcon.appiconset/Icon120.png diff --git a/DotNetRu.iOS-net6/Assets.xcassets/AppIcon.appiconset/Icon152.png b/DotNetRu.iOS/Assets.xcassets/AppIcon.appiconset/Icon152.png similarity index 100% rename from DotNetRu.iOS-net6/Assets.xcassets/AppIcon.appiconset/Icon152.png rename to DotNetRu.iOS/Assets.xcassets/AppIcon.appiconset/Icon152.png diff --git a/DotNetRu.iOS-net6/Assets.xcassets/AppIcon.appiconset/Icon167.png b/DotNetRu.iOS/Assets.xcassets/AppIcon.appiconset/Icon167.png similarity index 100% rename from DotNetRu.iOS-net6/Assets.xcassets/AppIcon.appiconset/Icon167.png rename to DotNetRu.iOS/Assets.xcassets/AppIcon.appiconset/Icon167.png diff --git a/DotNetRu.iOS-net6/Assets.xcassets/AppIcon.appiconset/Icon180.png b/DotNetRu.iOS/Assets.xcassets/AppIcon.appiconset/Icon180.png similarity index 100% rename from DotNetRu.iOS-net6/Assets.xcassets/AppIcon.appiconset/Icon180.png rename to DotNetRu.iOS/Assets.xcassets/AppIcon.appiconset/Icon180.png diff --git a/DotNetRu.iOS-net6/Assets.xcassets/AppIcon.appiconset/Icon20.png b/DotNetRu.iOS/Assets.xcassets/AppIcon.appiconset/Icon20.png similarity index 100% rename from DotNetRu.iOS-net6/Assets.xcassets/AppIcon.appiconset/Icon20.png rename to DotNetRu.iOS/Assets.xcassets/AppIcon.appiconset/Icon20.png diff --git a/DotNetRu.iOS-net6/Assets.xcassets/AppIcon.appiconset/Icon29.png b/DotNetRu.iOS/Assets.xcassets/AppIcon.appiconset/Icon29.png similarity index 100% rename from DotNetRu.iOS-net6/Assets.xcassets/AppIcon.appiconset/Icon29.png rename to DotNetRu.iOS/Assets.xcassets/AppIcon.appiconset/Icon29.png diff --git a/DotNetRu.iOS-net6/Assets.xcassets/AppIcon.appiconset/Icon40.png b/DotNetRu.iOS/Assets.xcassets/AppIcon.appiconset/Icon40.png similarity index 100% rename from DotNetRu.iOS-net6/Assets.xcassets/AppIcon.appiconset/Icon40.png rename to DotNetRu.iOS/Assets.xcassets/AppIcon.appiconset/Icon40.png diff --git a/DotNetRu.iOS-net6/Assets.xcassets/AppIcon.appiconset/Icon58.png b/DotNetRu.iOS/Assets.xcassets/AppIcon.appiconset/Icon58.png similarity index 100% rename from DotNetRu.iOS-net6/Assets.xcassets/AppIcon.appiconset/Icon58.png rename to DotNetRu.iOS/Assets.xcassets/AppIcon.appiconset/Icon58.png diff --git a/DotNetRu.iOS-net6/Assets.xcassets/AppIcon.appiconset/Icon60.png b/DotNetRu.iOS/Assets.xcassets/AppIcon.appiconset/Icon60.png similarity index 100% rename from DotNetRu.iOS-net6/Assets.xcassets/AppIcon.appiconset/Icon60.png rename to DotNetRu.iOS/Assets.xcassets/AppIcon.appiconset/Icon60.png diff --git a/DotNetRu.iOS-net6/Assets.xcassets/AppIcon.appiconset/Icon76.png b/DotNetRu.iOS/Assets.xcassets/AppIcon.appiconset/Icon76.png similarity index 100% rename from DotNetRu.iOS-net6/Assets.xcassets/AppIcon.appiconset/Icon76.png rename to DotNetRu.iOS/Assets.xcassets/AppIcon.appiconset/Icon76.png diff --git a/DotNetRu.iOS-net6/Assets.xcassets/AppIcon.appiconset/Icon80.png b/DotNetRu.iOS/Assets.xcassets/AppIcon.appiconset/Icon80.png similarity index 100% rename from DotNetRu.iOS-net6/Assets.xcassets/AppIcon.appiconset/Icon80.png rename to DotNetRu.iOS/Assets.xcassets/AppIcon.appiconset/Icon80.png diff --git a/DotNetRu.iOS-net6/Assets.xcassets/AppIcon.appiconset/Icon87.png b/DotNetRu.iOS/Assets.xcassets/AppIcon.appiconset/Icon87.png similarity index 100% rename from DotNetRu.iOS-net6/Assets.xcassets/AppIcon.appiconset/Icon87.png rename to DotNetRu.iOS/Assets.xcassets/AppIcon.appiconset/Icon87.png diff --git a/DotNetRu.iOS/DotNetRu.iOS.csproj b/DotNetRu.iOS/DotNetRu.iOS.csproj index 4e9fcc1e..ac13d8c8 100644 --- a/DotNetRu.iOS/DotNetRu.iOS.csproj +++ b/DotNetRu.iOS/DotNetRu.iOS.csproj @@ -1,376 +1,210 @@ - - + - Debug - iPhoneSimulator - {FEACFBD2-3405-455C-9665-78FE426C6842};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - {22F77CDE-8816-45D7-A7A1-CA9282145F0A} - Exe + net7.0-ios DotNetRu.iOS - Resources - DotNetRu.iOS - - - publish\ - true - Disk - false - Foreground - 7 - Days - false - false - true - 0 - 1.0.0.%2a - false - false - true - ..\ - true + Library + enable + true + 13.0 + true - - true - portable - false - bin\iPhoneSimulator\Debug - __UNIFIED__;__MOBILE__;__IOS__;DEBUG;ENABLE_TEST_CLOUD;MOBILE - prompt + + false 4 - false - x86_64 - None - True - true - true - true - true + Automatic iPhone Developer - HttpClientHandler - - - - - true - 10000 - false - true - - - true - bin\iPhone\Release - prompt - 4 - - - ARM64 - false - iPhone Distribution - true - - - MOBILE - - - HttpClientHandler - true - false - SdkOnly - - - true - bin\iPhoneSimulator\Release - prompt - 4 - i386 - false - SdkOnly - ENABLE_TEST_CLOUD;MOBILE - iPhone Distribution - HttpClientHandler - - - - - true - portable - false - bin\iPhone\Debug - __UNIFIED__;__MOBILE__;__IOS__;DEBUG;ENABLE_TEST_CLOUD; - prompt - 4 - false - ARM64 - - - true - iPhone Developer - true - - - HttpClientHandler - - - true - true - SdkOnly - true - true - true - true - bin\iPhone\Release - prompt - 4 - Entitlements.plist - ARMv7, ARM64 - false - iPhone Developer - ENABLE_TEST_CLOUD;MOBILE - - - bin\Debug\DotNetRu.iOS.xml - bin\Debug - 4 - false - - - + false + + + + + + + + ViewController.cs + + - - 3.3.2 - runtime; build; native; contentfiles; analyzers; buildtransitive - all - - - 5.1.2 + - - 4.7.0 + all - - 1.2.0 - - - 3.0.1 + - - 1.6.1 + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - false - - - false - - - false - - - false - - - false - - - false - - - false - - - false - - - false - - - false - - - false - - - false - - - false - - - false - - - Designer - - - - - - - - - - - - - - - - - ViewController.cs - - - - - - - - {CD2623BD-3609-4BE9-80EF-0974F3A1A27D} - DotNetRu.Clients.UI - - - {7B4C73DF-8A4A-4AD1-92D9-A064065CDD71} - DotNetRu.DataStore.Audit - - - {DFA0F0F6-C396-412E-86A9-E9095F71CC36} - DotNetRu.Utils - - - DotNetRu.AppUtils - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + Resources\icon_facebook%402x.png + + + Resources\toolbar_share%402x.png + + + Resources\icon_blog%403x.png + + + Resources\tab_sessions_selected%403x.png + + + Resources\tab_events_selected%403x.png + + + Resources\tab_events_selected%402x.png + + + Resources\tab_sessions_selected%402x.png + + + Resources\icon_blog%402x.png + + + Resources\icon_facebook%403x.png + + + Resources\toolbar_share%403x.png + + + Resources\icon_website%402x.png + + + Resources\toolbar_overflow%402x.png + + + Resources\icon_twitter%402x.png + + + Resources\icon_retweet%403x.png + + + Resources\icon_retweet%402x.png + + + Resources\icon_twitter%403x.png + + + Resources\toolbar_overflow%403x.png + + + Resources\icon_website%403x.png + + + Resources\icon_code%402x.png + + + Resources\icon_heart%402x.png + + + Resources\icon_vkontakte%403x.png + + + Resources\icon_view%402x.png + + + Resources\tab_about%402x.png + + + Resources\tab_sessions%403x.png + + + Resources\icon_linkedin%403x.png + + + Resources\tab_events%403x.png + + + Resources\tab_events%402x.png + + + Resources\icon_linkedin%402x.png + + + Resources\tab_sessions%402x.png + + + Resources\tab_about%403x.png + + + Resources\icon_view%403x.png + + + Resources\icon_vkontakte%402x.png + + + Resources\icon_heart%403x.png + + + Resources\icon_code%403x.png + + + Resources\icon_presentation%402x.png + + + Resources\icon_video%402x.png + + + Resources\tab_about_selected%403x.png + + + Resources\tab_feed_selected%402x.png + + + Resources\icon_github%403x.png + + + Resources\tab_sponsors%402x.png + + + Resources\tab_speakers%403x.png + + + Resources\tab_feed%403x.png + + + Resources\tab_speakers%402x.png + + + Resources\tab_feed%402x.png + + + Resources\tab_sponsors%403x.png + + + Resources\icon_github%402x.png + + + Resources\tab_feed_selected%403x.png + + + Resources\icon_video%403x.png + + + Resources\tab_about_selected%402x.png + + + Resources\icon_presentation%403x.png + + + + + + + + + diff --git a/DotNetRu.iOS/Effects/NonScrollableEffect.cs b/DotNetRu.iOS/Effects/NonScrollableEffect.cs deleted file mode 100644 index d9044663..00000000 --- a/DotNetRu.iOS/Effects/NonScrollableEffect.cs +++ /dev/null @@ -1,26 +0,0 @@ -using Conference.iOS.Effects; -using UIKit; -using Xamarin.Forms; -using Xamarin.Forms.Platform.iOS; - -[assembly: ResolutionGroupName("DotNetRu")] -[assembly: ExportEffect(typeof(NonScrollableEffect), nameof(NonScrollableEffect))] -namespace Conference.iOS.Effects -{ - public class NonScrollableEffect : PlatformEffect - { - private UITableView NativeList => Control as UITableView; - - protected override void OnAttached() - { - if (NativeList != null) - { - NativeList.ScrollEnabled = false; - } - } - - protected override void OnDetached() - { - } - } -} diff --git a/DotNetRu.iOS/Helpers/LaunchFacebook.cs b/DotNetRu.iOS/Helpers/LaunchFacebook.cs index a4badcc2..7bc80a47 100644 --- a/DotNetRu.iOS/Helpers/LaunchFacebook.cs +++ b/DotNetRu.iOS/Helpers/LaunchFacebook.cs @@ -3,7 +3,7 @@ using DotNetRu.iOS.Helpers; using Foundation; using UIKit; -using Xamarin.Forms; +using Microsoft.Maui; [assembly: Dependency(typeof(LaunchFacebook))] diff --git a/DotNetRu.iOS/Helpers/LaunchTwitter.cs b/DotNetRu.iOS/Helpers/LaunchTwitter.cs index a6956f5f..276d7654 100644 --- a/DotNetRu.iOS/Helpers/LaunchTwitter.cs +++ b/DotNetRu.iOS/Helpers/LaunchTwitter.cs @@ -3,7 +3,7 @@ using DotNetRu.iOS.Helpers; using Foundation; using UIKit; -using Xamarin.Forms; +using Microsoft.Maui; [assembly:Dependency(typeof(LaunchTwitter))] namespace DotNetRu.iOS.Helpers diff --git a/DotNetRu.iOS/Helpers/Toaster.cs b/DotNetRu.iOS/Helpers/Toaster.cs deleted file mode 100644 index b227c1f6..00000000 --- a/DotNetRu.iOS/Helpers/Toaster.cs +++ /dev/null @@ -1,16 +0,0 @@ -using DotNetRu.Clients.Portable.Interfaces; -using DotNetRu.iOS.Helpers; -using GlobalToast; -using Xamarin.Forms; - -[assembly: Dependency(typeof(Toaster))] -namespace DotNetRu.iOS.Helpers -{ - public class Toaster : IToast - { - public void SendToast(string message) - { - Device.BeginInvokeOnMainThread(() => { Toast.ShowToast(message); }); - } - } -} diff --git a/DotNetRu.iOS/Info.plist b/DotNetRu.iOS/Info.plist index 1ae2523d..f08f82aa 100644 --- a/DotNetRu.iOS/Info.plist +++ b/DotNetRu.iOS/Info.plist @@ -11,7 +11,7 @@ LSRequiresIPhoneOS MinimumOSVersion - 10.0 + 13.0 UIDeviceFamily 1 diff --git a/DotNetRu.iOS/Localize.cs b/DotNetRu.iOS/Localize.cs index 06ab5570..fb3460c3 100644 --- a/DotNetRu.iOS/Localize.cs +++ b/DotNetRu.iOS/Localize.cs @@ -3,7 +3,7 @@ using DotNetRu.Clients.Portable.Interfaces; using Foundation; -using Xamarin.Forms; +using Microsoft.Maui; [assembly: Dependency(typeof(DotNetRu.iOS.Localize))] diff --git a/DotNetRu.iOS/Main.cs b/DotNetRu.iOS/Main.cs deleted file mode 100644 index f320bb9e..00000000 --- a/DotNetRu.iOS/Main.cs +++ /dev/null @@ -1,15 +0,0 @@ -namespace DotNetRu.iOS -{ - using UIKit; - - public class Application - { - // This is the main entry point of the application. - public static void Main(string[] args) - { - // if you want to use a different Application Delegate class from "AppDelegate" - // you can specify it here. - UIApplication.Main(args, null, "AppDelegate"); - } - } -} diff --git a/DotNetRu.iOS/PlatformFeatures/ProActiveSuggestions/SessionUserActivity.cs b/DotNetRu.iOS/PlatformFeatures/ProActiveSuggestions/SessionUserActivity.cs deleted file mode 100644 index cf10842a..00000000 --- a/DotNetRu.iOS/PlatformFeatures/ProActiveSuggestions/SessionUserActivity.cs +++ /dev/null @@ -1,91 +0,0 @@ -using System; -using System.Linq; -using System.Threading.Tasks; -using CoreSpotlight; - -using DotNetRu.Clients.Portable.Model.Extensions; -using DotNetRu.DataStore.Audit.Models; -using DotNetRu.iOS.PlatformFeatures.ProActiveSuggestions; -using DotNetRu.Utils.Helpers; -using Foundation; -using Xamarin.Forms; - -[assembly: Dependency(typeof(SessionUserActivity))] - -namespace DotNetRu.iOS.PlatformFeatures.ProActiveSuggestions -{ - using Xamarin.Forms.Platform.iOS; - - public class SessionUserActivity - { - private NSUserActivity activity; - - public Task Execute(TalkModel entity) - { - this.activity?.Invalidate(); - - this.activity = new NSUserActivity($"{AboutThisApp.PackageName}.session") { Title = entity.Title, }; - - this.RegisterHandoff(entity); - - this.activity.BecomeCurrent(); - - return Task.CompletedTask; - } - - public Task Finish() - { - this.activity?.ResignCurrent(); - return Task.CompletedTask; - } - - private void RegisterHandoff(TalkModel talkModel) - { - var userInfo = new NSMutableDictionary(); - var uri = new NSString(talkModel.GetAppLink().AppLinkUri.AbsoluteUri); - - userInfo.Add(new NSString("link"), uri); - userInfo.Add(new NSString("Url"), uri); - - var keywords = new NSMutableSet(new NSString(talkModel.Title)); - foreach (var speaker in talkModel.Speakers) - { - keywords.Add(new NSString(speaker.FullName)); - } - - foreach (var category in talkModel.Categories) - { - keywords.Add(new NSString(category.Name)); - } - - this.activity.Keywords = new NSSet(keywords); - this.activity.WebPageUrl = NSUrl.FromString(talkModel.GetWebUrl()); - this.activity.UserInfo = userInfo; - - // Provide context - var attributes = - new CSSearchableItemAttributeSet($"{AboutThisApp.PackageName}.session") - { - Keywords = - keywords.ToArray() - .Select( - k => - k.ToString()) - .ToArray(), - Url = NSUrl.FromString( - talkModel.GetAppLink() - .AppLinkUri - .AbsoluteUri) - }; - - attributes.DueDate = talkModel.Sessions.First().StartTime.DateTime.ToNSDate(); - attributes.StartDate = talkModel.Sessions.First().StartTime.DateTime.ToNSDate(); - attributes.EndDate = talkModel.Sessions.First().EndTime.DateTime.ToNSDate(); - - attributes.ImportantDates = new[] { attributes.StartDate, attributes.EndDate }; - - this.activity.ContentAttributeSet = attributes; - this.activity.EligibleForHandoff = true; - } - } -} diff --git a/DotNetRu.iOS/PlatformFeatures/ProActiveSuggestions/SpeakerUserActivity.cs b/DotNetRu.iOS/PlatformFeatures/ProActiveSuggestions/SpeakerUserActivity.cs deleted file mode 100644 index 70402d8c..00000000 --- a/DotNetRu.iOS/PlatformFeatures/ProActiveSuggestions/SpeakerUserActivity.cs +++ /dev/null @@ -1,86 +0,0 @@ -using System.Linq; -using System.Threading.Tasks; -using CoreSpotlight; - -using DotNetRu.Clients.Portable.Model.Extensions; -using DotNetRu.DataStore.Audit.Models; -using DotNetRu.iOS.PlatformFeatures.ProActiveSuggestions; -using DotNetRu.Utils.Helpers; -using Foundation; -using Xamarin.Forms; - -[assembly: Dependency(typeof(SpeakerUserActivity))] - -namespace DotNetRu.iOS.PlatformFeatures.ProActiveSuggestions -{ - public class SpeakerUserActivity - { - private NSUserActivity activity; - - public Task Execute(SpeakerModel entity) - { - this.activity?.Invalidate(); - - this.activity = new NSUserActivity($"{AboutThisApp.PackageName}.speaker") { Title = entity.FullName }; - - this.RegisterHandoff(entity); - - this.activity.BecomeCurrent(); - - return Task.CompletedTask; - } - - public Task Finish() - { - this.activity?.ResignCurrent(); - return Task.CompletedTask; - } - - private void RegisterHandoff(SpeakerModel speakerModel) - { - var userInfo = new NSMutableDictionary - { - { - new NSString("Url"), - new NSString( - speakerModel.GetAppLink().AppLinkUri.AbsoluteUri) - } - }; - - var keywords = new NSMutableSet( - new NSString(speakerModel.FullName)); - if (speakerModel.Talks != null) - { - foreach (var session in speakerModel.Talks) - { - keywords.Add(new NSString(session.Title)); - } - } - - this.activity.Keywords = new NSSet(keywords); - this.activity.WebPageUrl = NSUrl.FromString(speakerModel.GetWebUrl()); - - this.activity.EligibleForHandoff = false; - - this.activity.AddUserInfoEntries(userInfo); - - // Provide context - var attributes = - new CSSearchableItemAttributeSet($"{AboutThisApp.PackageName}.speaker") - { - Keywords = - keywords.ToArray() - .Select( - k => - k.ToString()) - .ToArray(), - Url = NSUrl.FromString( - speakerModel - .GetAppLink() - .AppLinkUri - .AbsoluteUri) - }; - this.activity.ContentAttributeSet = attributes; - } - } -} diff --git a/DotNetRu.iOS/Renderers/AlwaysScrollViewRenderer.cs b/DotNetRu.iOS/Renderers/AlwaysScrollViewRenderer.cs index 841ff687..71588409 100644 --- a/DotNetRu.iOS/Renderers/AlwaysScrollViewRenderer.cs +++ b/DotNetRu.iOS/Renderers/AlwaysScrollViewRenderer.cs @@ -1,24 +1,23 @@ -using DotNetRu.Clients.UI.Controls; -using DotNetRu.iOS.Renderers; -using Xamarin.Forms; -using Xamarin.Forms.Platform.iOS; +//using DotNetRu.Clients.UI.Controls; +//using DotNetRu.iOS.Renderers; +//using Xamarin.Forms; +//using Xamarin.Forms.Platform.iOS; -[assembly: ExportRenderer(typeof(NonScrollableListView), typeof(NonScrollableListViewRenderer))] -[assembly: ExportRenderer(typeof(AlwaysScrollView), typeof(AlwaysScrollViewRenderer))] +//[assembly: ExportRenderer(typeof(NonScrollableListView), typeof(NonScrollableListViewRenderer))] +//[assembly: ExportRenderer(typeof(AlwaysScrollView), typeof(AlwaysScrollViewRenderer))] -namespace DotNetRu.iOS.Renderers -{ - public class AlwaysScrollViewRenderer : ScrollViewRenderer - { - public static void Initialize() - { - } - - protected override void OnElementChanged(VisualElementChangedEventArgs e) - { - base.OnElementChanged(e); - this.AlwaysBounceVertical = true; - } - } -} +//namespace DotNetRu.iOS.Renderers +//{ +// public class AlwaysScrollViewRenderer : ScrollViewRenderer +// { +// public static void Initialize() +// { +// } +// protected override void OnElementChanged(VisualElementChangedEventArgs e) +// { +// base.OnElementChanged(e); +// this.AlwaysBounceVertical = true; +// } +// } +//} \ No newline at end of file diff --git a/DotNetRu.iOS/Renderers/NonScrollableListViewRenderer.cs b/DotNetRu.iOS/Renderers/NonScrollableListViewRenderer.cs index 427dfad4..1bd115c9 100644 --- a/DotNetRu.iOS/Renderers/NonScrollableListViewRenderer.cs +++ b/DotNetRu.iOS/Renderers/NonScrollableListViewRenderer.cs @@ -1,28 +1,28 @@ -using DotNetRu.Clients.UI.Controls; -using DotNetRu.iOS.Renderers; -using Xamarin.Forms; -using Xamarin.Forms.Platform.iOS; +//using DotNetRu.Clients.UI.Controls; +//using DotNetRu.iOS.Renderers; +//using Xamarin.Forms; +//using Xamarin.Forms.Platform.iOS; -[assembly: ExportRenderer(typeof(NonScrollableListView), typeof(NonScrollableListViewRenderer))] -[assembly: ExportRenderer(typeof(AlwaysScrollView), typeof(AlwaysScrollViewRenderer))] +//[assembly: ExportRenderer(typeof(NonScrollableListView), typeof(NonScrollableListViewRenderer))] +//[assembly: ExportRenderer(typeof(AlwaysScrollView), typeof(AlwaysScrollViewRenderer))] -namespace DotNetRu.iOS.Renderers -{ - public class NonScrollableListViewRenderer : ListViewRenderer - { - public static void Initialize() - { - } +//namespace DotNetRu.iOS.Renderers +//{ +// public class NonScrollableListViewRenderer : ListViewRenderer +// { +// public static void Initialize() +// { +// } - protected override void OnElementChanged(ElementChangedEventArgs e) - { - base.OnElementChanged(e); - if (this.Control != null) - { - this.Control.ScrollEnabled = false; - this.Control.ShowsVerticalScrollIndicator = false; - } - } - } -} +// protected override void OnElementChanged(ElementChangedEventArgs e) +// { +// base.OnElementChanged(e); +// if (this.Control != null) +// { +// this.Control.ScrollEnabled = false; +// this.Control.ShowsVerticalScrollIndicator = false; +// } +// } +// } +//} diff --git a/DotNetRu.iOS/Renderers/SelectedTabPageRenderer.cs b/DotNetRu.iOS/Renderers/SelectedTabPageRenderer.cs index ffa3e7a9..163c1d98 100644 --- a/DotNetRu.iOS/Renderers/SelectedTabPageRenderer.cs +++ b/DotNetRu.iOS/Renderers/SelectedTabPageRenderer.cs @@ -1,55 +1,55 @@ -using System; -using DotNetRu.iOS.Renderers; -using UIKit; -using Xamarin.Forms; -using Xamarin.Forms.Platform.iOS; +//using System; +//using DotNetRu.iOS.Renderers; +//using UIKit; +//using Xamarin.Forms; +//using Xamarin.Forms.Platform.iOS; -[assembly:ExportRenderer(typeof(TabbedPage), typeof(SelectedTabPageRenderer))] -namespace DotNetRu.iOS.Renderers -{ - public class SelectedTabPageRenderer : TabbedRenderer - { - public static void Initialize() - { - var test = DateTime.UtcNow; - } +//[assembly:ExportRenderer(typeof(TabbedPage), typeof(SelectedTabPageRenderer))] +//namespace DotNetRu.iOS.Renderers +//{ +// public class SelectedTabPageRenderer : TabbedRenderer +// { +// public static void Initialize() +// { +// var test = DateTime.UtcNow; +// } - public override void ViewWillAppear(bool animated) - { +// public override void ViewWillAppear(bool animated) +// { - if (this.TabBar?.Items == null) - return; +// if (this.TabBar?.Items == null) +// return; - var tabs = this.Element as TabbedPage; - if (tabs != null) - { - for (int i = 0; i < this.TabBar.Items.Length; i++) - { - this.UpdateItem(this.TabBar.Items[i], tabs.Children[i].Icon); - } - } +// var tabs = this.Element as TabbedPage; +// if (tabs != null) +// { +// for (int i = 0; i < this.TabBar.Items.Length; i++) +// { +// this.UpdateItem(this.TabBar.Items[i], tabs.Children[i].Icon); +// } +// } - base.ViewWillAppear(animated); - } +// base.ViewWillAppear(animated); +// } - void UpdateItem(UITabBarItem item, string icon) - { - if (item == null) - return; - try - { - icon = icon.Replace(".png", "_selected.png"); - if(item?.SelectedImage?.AccessibilityIdentifier == icon) - return; - item.SelectedImage = UIImage.FromBundle(icon); - item.SelectedImage.AccessibilityIdentifier = icon; - } - catch(Exception ex) - { - Console.WriteLine("Unable to set selected icon: " + ex); - } +// void UpdateItem(UITabBarItem item, string icon) +// { +// if (item == null) +// return; +// try +// { +// icon = icon.Replace(".png", "_selected.png"); +// if(item?.SelectedImage?.AccessibilityIdentifier == icon) +// return; +// item.SelectedImage = UIImage.FromBundle(icon); +// item.SelectedImage.AccessibilityIdentifier = icon; +// } +// catch(Exception ex) +// { +// Console.WriteLine("Unable to set selected icon: " + ex); +// } - } - } -} +// } +// } +//} diff --git a/DotNetRu.iOS/Resources/floor_1.png b/DotNetRu.iOS/Resources/floor_1.png deleted file mode 100644 index f7a80ada2c7a7802ad3524a3e6ab28b0ca7dac86..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37464 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 diff --git a/DotNetRu.iOS/Resources/floor_2.png b/DotNetRu.iOS/Resources/floor_2.png deleted file mode 100644 index 2be30a700260c08b0a57f912ee9f2635fe5fce83..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31602 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 NQ-I4C%DwsYe*sz(CZhlV diff --git a/DotNetRu.iOS/Resources/floor_3.png b/DotNetRu.iOS/Resources/floor_3.png deleted file mode 100644 index 831df522cfaf8717e19597e37f76a6c8d77fbcf7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22840 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�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%0A)EXyeA(Q}& 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%0AX8*m8Dq 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 diff --git a/DotNetRu.iOS/Resources/tab_minihacks.png b/DotNetRu.iOS/Resources/tab_minihacks.png deleted file mode 100644 index 14cc50814314ea700caf74c6a8b22e33796bd885..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 613 zcmV-r0-F7aP)Px%A4x<(R7ef&m(5F6K^TYiDivx}LPRNo5ZDJ?-MDb6CN5e?3lY@XM9`*{xM@`` z`~wt(HVL|S<3}I}Qn;}oND};5sNhGNw2;tJ>iKc+z}(?-oH>di-WQ%bGw=I*=e%dm zoVoYr<>l-QtUxz4{*A#;a!QW6zr;}j;`iY-Tn^+1`U;4&!pLYUc#CElc2h&|&vlf_ zosY_J3ur@p-ATC1c*F7e43*OXcO3B~<3;0h3wTRl6!wgO_6F!~LQOgKaLGzc(l3P` z%a_qzW^~)~sK7%|QmDNoq0dR`XZ+0extmbScGD8*?hoL*<@4=sBDCjHUKwOOPPc$n z1l3ZeO%rUHL13!_v|Dduh>C z+BnOvbe#j&)JfZO+F>&=ty_R9)JAy&7eJfv55zH@p5`rUp#KmCeI`;-W1z?J1ZE+Q z)seIW&F~Ex!P~B&9D-l455*8_T_or{S%cQlWTV&jzydrrj)3+f+FrOAkdsyV2=59M zWsPQcw&Pae1=+*l-uI;Fk@!rgRnys_!cWZfI(~u)u#al{0xC{t$TqyN15thRnnY<7 z+kpr03ckPxm;;@h`q5DdO`r|?6!ZppS-zJlQ&i4SuT~N|L4{1gXLtwt@;Wt};YuyX zxmw~l$tRJUE8xGcfbU}*Kp6Vppvrgh^R4>_9Or4{FO+(700000NkvXXu0mjfK2jh9 diff --git a/DotNetRu.iOS/Resources/tab_minihacks@2x.png b/DotNetRu.iOS/Resources/tab_minihacks@2x.png deleted file mode 100644 index 3ff8a4e831d67e243b8e85d01038bbd6fc8bb7e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1282 zcmV+d1^xPoP)Px(yh%hsRA>e5Slf$DQ5fHYkxRxU!=Py>(zt{&@<56(@gTPp8PphgQ64-ihBOcS z2TJ5p%8QWDxV+3rsZj_uZsRgSF&OvX&t9MQIkWbfHRr5#oMZM^zq9sQ>s#ONTi?2$ zAV?&MKoWr@0!ajt2xJq1A~e1T{K_Gk!Bq_8g^Yn0x$L}fO?T1zeh!R`RW|5Y1@PU0 zO_PaBsGI_jx5cDrQ|B@OuR-|KhBQl^CulDL$kJ30^vT*nI1)6|=D?PX3E`2MXVWHD zCka4oXzVMv2~uQa!koWf;St`fm`r=XK3HC3VO^%;a|>M;DiVNd7`ty_@G5lbEcCjl zbfQF#9GkSZiv>RgvwP?leJ_b~#WVvxqfvi=9eWgK0OhBEQGkq$LDflBbf&F>#UC+N z2crC>s_Tf+F&6VkWAqjnwSwT2(wo(do~!DJpC^HP}?ejOW^ zCFOCL=zmQCxT~5}>YM&4l@Va)8H8Mk%r@cI@$$Avxfdq-Uz-5T)HnT8DkC5c8C0EC z37_!mjLV*saR6>9s|)})9-YVth(kIZA7#QP{5lREmz0}fqW?9`00w}Y4L7>^`sRN( zAz70#YR-#=FD?L+z{sV`Qjok3jk-p9bh=HBc)}Skvl*} zH!Y1l+oCT@QTU_nHX$<};PH1F$XaS(fy;pxiiv5~npNG#v~u6sxr+Bq8WGR_SE^1o zU}@@h*&?Vl0t^B>JO~hJ#0Sf_NkNX%#fn!hYoz7W=ZvL4+`yUdR=QgPG(dw}08aBN z;4Cm0pvVJgbePTAukgvks2I##?@NKNz-GYtf0IjKlrKaEYYnz+r2&fc zgPooX$Wr`C0cQXif&I>`n+?^Xnw{t4>pZX$h`Xwz%D?Oa1s!?@ zL{A7G%nZD&_XZyXnb_o8LH30MnHcCno2}4gu(`um^q`%0Rd$??@d%pgiLDfNdF3Y0 z5lcA12K6s@fCblwSut0wkdI_-1)Q2ycwM zr;GD#_&x|M0(ffZg!{-mU=JWSOtyay)Bpu1CGhwV&;dvwByC681K>8mcLiq(FE&!o zl>5n1pbRKz;fU`9xR&KH742yBn@gt&*bR&W{yQ0f9?bxj1LpvCp2y}2pb8iQ^cvw+ zmH{~YFMDkBhseM5&pUS#0Pi8rbAn_BP>>P$4X!m&j^SH)>i_@%07*qoM6N<$f^KF~CIA2c diff --git a/DotNetRu.iOS/Resources/tab_minihacks@3x.png b/DotNetRu.iOS/Resources/tab_minihacks@3x.png deleted file mode 100644 index cd8340a69bacaff55a70f30e17205aa99bea47e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1987 zcmV;!2R!(RP)Px+eMv+?RCodHT5XJ8LlmyBZPgFevRbWT5u`zV)rw7)2qL~pt5GG9NPNd1!4F@F z5QIdEkf;!8d_*H5qDd=Mgtm!~NE*coR-@G-RkYh~i+Uc}**?8Hciws5z3<$)@6Jii z-gD2KIrE%z?#!J#?~WRkC}kjJAY~wBAY~wBAY~wBAY~wBAY~wBpd~Xf6;XW(-WfS> z1-|*Oak-C0TnHdD2EZuZ zrs4}#fJqX?YREluAB*@sfS3X(-lpOUu>|db2sEH|O^v8==ZY)X3%DXuK$;dyrS4p9JI|9=OTZ4NwT zHfaIc0c5WbV0?E$wCeoIMji&6eU~5}QtdO)Ydx<0 zgC1%N6JauXz^sS>YmeBt1@TQA=)MEjzw2qB)Sd`kL0;M>=C3HnPMP7v8g)LqceJ{?N5;p{e~xQ)(rJy04oU!oo=`W9fb zbR92pEwK#-TCms)p!kMU0L_;(N4^EnifTfg&e50+LZ7f&eamRq0@V94rZeDAU+}&K z=oN?c%z$hVRVqOC;gJ+rMJ>P&Rtt;Lw*dNK(P8nEr_vxc!l*ybFcQ5!AWSHCHa;{4 zMjET;%h}(z0AGoh=_1z>6_ifzTK&puSB%`xa|`W5C&0)YUHk%>51SYH7CZK4rJ*Ow|X-g-i3X%w?Eu^DO}TEtbxgiR=FX)LJL2F}$cM>&o~Qxnla*&5gI)`uGdK_1Y-v~l zxvnGZdJ4doi|%hPmw{~}w{W^Q*1&A`vFH@1K0tZ+u8;;@B}APs)>8m_d0kxH2-$4C zL_H{Sr^KzCp$$fe{L0@13>{>Ioa+qexf+o8JHVpG;gRcjb8J^fZA~sQ|MCH@|9a#D_`$+k3gqsF}KjaBh;zCFx|#VAL5KUiY)u z#HgAhxYy$AydIHhkM;I?!Tq@f?wXzy`Fr_Cm)s)ZBjpIdDkZwU0yOH^xGheLFBm__Aj5*%#@n9Af8A*f>3NGTiI1*fi!C%~acc8JO8HR^m+-+zQe#8CDCL-i4;|o{U ze2)KI6UU6&^*Eq=AFM^7`~kQVTomzW1Ahe0zA)=8LLYp* z2JQk!NwF+JdCB3j(hWWvJRLj*JQ>WbY?inrtpl$C^Zl_5yb{cl*hB?q;41htvtc9T zu?71N=8nJRR*|@iF~mY}si`DYwE&e&wheSDfGsNlb*TUWlWiL+6~LC2fVxzGfXTKE zl?q_XNB(mkJOt*|wol0c=?bs7nP1m~7in zsQ|XDw7Bj=#AnX(W4hj1M&8p5C?o4KW-5RrBZ(;kDFZ13DFZ13DFZ13DFdN0@E<+B VXf#&PCszOf002ovPDHLkV1mE#oz4IN diff --git a/DotNetRu.iOS/Resources/tab_minihacks_selected.png b/DotNetRu.iOS/Resources/tab_minihacks_selected.png deleted file mode 100644 index 2897f4521ac6aab70e2d8f69469e8a825b7d6783..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 512 zcmV+b0{{JqP)Px$x=BPqR7ef&mAxy4Q5?s;TL=U4l1X_hECwrsMTwGu3`$vyW}8`*KY-mtN*Rzv z${^)!z#vviQsVQi``mtxd%NeJdvlZft547G{9exUea>^9^Ar^1?GLQL0vbO9c&4W! z)$pA%>w4_93C&5N$OXtKrEBL>aTDksadRiXBhwSleiviH-mYGuwO$6dHsA`_B&m%UnL9xg_r2N` z=%eW!&TX?RV4I|NeP^tw+7<`+HKu0{f5VKEx{G8Ep$ujqbOWmI1!M#82wp3yRoMc) zj%mn5z%~6t@C1Y4ZB%IVzD7wvYA}%5T0000Px&n@L1LRA>e5SWT-=Q4~Ht^G!k*Ns2^-!c58lF_5p6feGC*Q3htp03{RuKuHM` zGovZnk>%Pw2XT9fj_o}CJ&e~_KXYJ?gv-dtH%aSDp zk^)JAq(D+&APNjY@D<>fA?|={1W*f`jw&oW@35VEFwB-jp%!pkKrWJl4kE!3Fvb106>U0a=g1<{KZ$gbm_?$CXj z06hpA84Bz$|3uXL!B_KepHqBPm;&qpo`}zPI0xr6UxR^f3pjoRct*p2R@y!X?or(w zUfgu7R`1HPFLIyTpjaNel-g!VU92x?+A8o-q9zBUvuqODsC2tbn+T^!QLZ1}8Z`mj z1T)ne+3Sq57AyJtYts1LYxzt|q6zRo0v9L=v?rj1MQhUd7YfTmjja^{mMRIfC!mBy zYts0a2}@}K?nwd)Ff35A_5=bUQQaE8lxrvm$SX6upJjf9^#e+*c5xX9H6KRZo7AI^55a^vg3*PvKTJFhtzbK_%XoESF% z7XbGJtOekY5bi@Z15uVcYlkz{z&@So)n^ucswS&LA0XpbM$&uw!w8}zS0G$m7_q(D-jBNg}!W^dCUT$pi~ P00000NkvXXu0mjfPx)*GWV{RCodHTT7@NMG%cqW6Vm8#KeRsPeDP{_>T~XA}XRHY7A&_3#g+E z4C)S83Q!hx1dNrMK_$Q}m=3dJ=Cj2XWEPAkAdWz7`#+;t20AhxPPd~+Db-PKEog~S zUW%=g7nSe?|7Ot7bMSW$)_gvPb;%{KVOG8=I^T}RKfvnNB${GU`wX~7tZ_Dt0L$+6 zX_47k?H0sCs-s8C_M@MfRWX)Z4vAyNN|h(@CtUg~!!6#=q_f78xi66N4)|5;t2P0sGofXT;K#Aj zsd2KU&9k0o39V`8Kqwqtd=LId%_7QZ6Cg9X3hT7bftt4<;-mclok!tOlURkZ)?S-{ zZ=hjDXgOE#DOMXmN=Kh_+7FOSz^)vJwF&qeO5YQT*9tzxY6D2==yOi{0g`xZ&v96r z0P1{0D85nfDOMXmN=Kh_8vm!@VAv6Obg?bR;hY3)6^btee~P$nV>JP^tu0|(a|dq_ zj_v@Tb%dRh06tt~eS4EI9AjC+$=Wz3Q~H?Z19XcBLhce`xI6Y?s5(5NFVKh5D`sK2 zkPT~U>pzGECdMunG4eTinwXmiyAoOtfdY`55?0Og2+p{*{gTH*MjWs^sZ42o?*5bRz~{UjZtr@m*ju=pd*jfOCE2bB^a= z#kMoy*-lVyV5Q5mm|*Ey#ShF_{cHri1>)}{O9waQ-%s%WNf3`!s%%s6`Xx{*$P(xH z!MOv}Yl#W_owOCuatKr+&}}|7>;F!G=u^p-$`Wv8pI}YG_5~FsU>AI4X+6010wQX= zZP%!%#tQ#06@7My{Z`mH738gf01v+I2ki$cR}*k2Xjfv zG<3WOS_dk!m44>I2laZ;<)Ag7RiKq1ma@(E3kLRq_JCOCZU^lI@g&w;#|Yd8ec_Ja z|FM>Itlvx>zss$$v5ELR1C*F0fu15OnCxgs2GlU0t~^9neqh0 zP#O5xJBTlw<(JfN?gMwf1NuN+*z^PlFr0M+905nb5pV Date: Fri, 10 Mar 2023 22:58:10 +0400 Subject: [PATCH 03/11] Update projects to .NET 7 --- DotNetRu.AppUtils/DotNetRu.AppUtils.csproj | 2 +- DotNetRu.Clients.UI/DotNetRu.Clients.UI.csproj | 2 +- DotNetRu.DataStore.Audit/DotNetRu.DataStore.Audit.csproj | 2 +- DotNetRu.Models/DotNetRu.Models.csproj | 2 +- DotNetRu.Utils/DotNetRu.Utils.csproj | 4 ++-- RealmUpdateLibrary/DotNetRu.RealmUpdateLibrary.csproj | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/DotNetRu.AppUtils/DotNetRu.AppUtils.csproj b/DotNetRu.AppUtils/DotNetRu.AppUtils.csproj index f2897e51..e0a442d5 100644 --- a/DotNetRu.AppUtils/DotNetRu.AppUtils.csproj +++ b/DotNetRu.AppUtils/DotNetRu.AppUtils.csproj @@ -1,7 +1,7 @@ - netstandard2.1 + net7.0 enable diff --git a/DotNetRu.Clients.UI/DotNetRu.Clients.UI.csproj b/DotNetRu.Clients.UI/DotNetRu.Clients.UI.csproj index 99810282..a341955e 100644 --- a/DotNetRu.Clients.UI/DotNetRu.Clients.UI.csproj +++ b/DotNetRu.Clients.UI/DotNetRu.Clients.UI.csproj @@ -1,6 +1,6 @@ - netstandard2.1 + net7.0 True diff --git a/DotNetRu.DataStore.Audit/DotNetRu.DataStore.Audit.csproj b/DotNetRu.DataStore.Audit/DotNetRu.DataStore.Audit.csproj index 46c30c4b..28dd7320 100644 --- a/DotNetRu.DataStore.Audit/DotNetRu.DataStore.Audit.csproj +++ b/DotNetRu.DataStore.Audit/DotNetRu.DataStore.Audit.csproj @@ -1,6 +1,6 @@ - netstandard2.1 + net7.0 ..\ True diff --git a/DotNetRu.Models/DotNetRu.Models.csproj b/DotNetRu.Models/DotNetRu.Models.csproj index 4dbf6d21..8f247c37 100644 --- a/DotNetRu.Models/DotNetRu.Models.csproj +++ b/DotNetRu.Models/DotNetRu.Models.csproj @@ -1,6 +1,6 @@ - netstandard2.1 + net7.0 True diff --git a/DotNetRu.Utils/DotNetRu.Utils.csproj b/DotNetRu.Utils/DotNetRu.Utils.csproj index 547fb810..f8eccd75 100644 --- a/DotNetRu.Utils/DotNetRu.Utils.csproj +++ b/DotNetRu.Utils/DotNetRu.Utils.csproj @@ -1,7 +1,7 @@ - netstandard2.1 - True + net7.0 + True diff --git a/RealmUpdateLibrary/DotNetRu.RealmUpdateLibrary.csproj b/RealmUpdateLibrary/DotNetRu.RealmUpdateLibrary.csproj index 869f806b..be8d183b 100644 --- a/RealmUpdateLibrary/DotNetRu.RealmUpdateLibrary.csproj +++ b/RealmUpdateLibrary/DotNetRu.RealmUpdateLibrary.csproj @@ -1,7 +1,7 @@ - netstandard2.1 + net7.0 From 851c778834f4c2243b7870d0e86c339a11cfefab Mon Sep 17 00:00:00 2001 From: pfedotovsky Date: Sat, 11 Mar 2023 00:09:47 +0400 Subject: [PATCH 04/11] WIP: Change Xamarin namespaces to Maui --- DotNetRu.Clients.UI/About/AboutPage.xaml | 5 +- DotNetRu.Clients.UI/About/AboutPage.xaml.cs | 4 +- DotNetRu.Clients.UI/About/AboutPageItem.cs | 2 +- .../About/AboutTemplateSelector.cs | 2 +- DotNetRu.Clients.UI/About/AboutViewModel.cs | 4 +- .../About/Friends/FriendCell.xaml | 2 +- .../About/Friends/FriendDetailsPage.xaml | 2 +- .../About/Friends/FriendDetailsPage.xaml.cs | 2 +- .../About/Friends/FriendDetailsViewModel.cs | 2 +- .../About/Friends/FriendsPage.xaml | 2 +- .../About/Friends/FriendsPage.xaml.cs | 2 +- .../About/Friends/FriendsViewModel.cs | 2 +- .../About/Subscriptions/SubscriptionCell.xaml | 2 +- .../Subscriptions/SubscriptionCell.xaml.cs | 2 +- .../Subscriptions/SubscriptionsPage.xaml | 2 +- .../Subscriptions/SubscriptionsPage.xaml.cs | 2 +- .../Subscriptions/SubscriptionsViewModel.cs | 2 +- .../About/TechnologiesUsedPage.xaml | 2 +- DotNetRu.Clients.UI/App.xaml | 2 +- DotNetRu.Clients.UI/App.xaml.cs | 5 - DotNetRu.Clients.UI/AppShell.xaml | 2 +- DotNetRu.Clients.UI/AppShell.xaml.cs | 2 +- DotNetRu.Clients.UI/BasePages/BasePage.cs | 2 +- .../BasePages/EvolveGroupHeaderView.xaml | 2 +- .../BasePages/EvolveGroupHeaderView.xaml.cs | 2 +- DotNetRu.Clients.UI/BasePages/MenuItem.cs | 2 +- .../BasePages/NavigationService.cs | 2 +- .../BasePages/ViewModelBase.cs | 4 +- .../Controls/AlwaysScrollView.cs | 2 +- DotNetRu.Clients.UI/Controls/CardView.cs | 2 +- .../Controls/FooterDivider.xaml | 2 +- .../Controls/FooterDivider.xaml.cs | 2 +- .../Controls/HeaderDivider.xaml | 2 +- .../Controls/HeaderDivider.xaml.cs | 2 +- .../Controls/LabelSection.xaml | 2 +- .../Controls/LabelSection.xaml.cs | 2 +- .../Controls/NonScrollableListView.cs | 2 +- .../Controls/PinchToZoomContainer.cs | 2 +- .../Controls/SectionDivider.xaml | 2 +- .../Controls/SectionDivider.xaml.cs | 2 +- .../CommunityIDToImageSourceConverter.cs | 2 +- .../Converters/EventColorDisplayConverter.cs | 2 +- .../Converters/EventDateDisplayConverter.cs | 2 +- .../Converters/EventDayDisplayConverter.cs | 2 +- .../EventDayNumberDisplayConverter.cs | 2 +- .../Converters/HasReminderTextConverter.cs | 2 +- ...eetupDetailsPageItemsToVisibleConverter.cs | 2 +- .../Converters/SessionTimeDisplayConverter.cs | 2 +- .../Converters/SocialMediaTypeConverter.cs | 2 +- .../Converters/TalkLogoConverter.cs | 2 +- .../Converters/TranslateConverter.cs | 2 +- .../DotNetRu.Clients.UI.csproj | 95 ++++++++++++++++++- .../Effects/ListViewSelectionOnTopEffect.cs | 2 +- .../Effects/NonScrollableEffect.cs | 2 +- .../Feedback/CategoryCellView.xaml | 2 +- .../Feedback/CategoryCellView.xaml.cs | 2 +- .../Feedback/ConferenceFeedbackPage.xaml | 2 +- .../Feedback/ConferenceFeedbackPage.xaml.cs | 2 +- .../Feedback/ConferenceFeedbackViewModel.cs | 2 +- .../Feedback/FeedbackPage.xaml | 2 +- .../Feedback/FeedbackPage.xaml.cs | 2 +- .../Feedback/FeedbackViewModel.cs | 2 +- .../Feedback/Rating3Control.xaml | 2 +- .../Feedback/Rating3Control.xaml.cs | 2 +- .../Feedback/RatingControl.xaml | 2 +- .../Feedback/RatingControl.xaml.cs | 2 +- .../Feedback/RatingConverter.cs | 2 +- DotNetRu.Clients.UI/Feedback/StarBehavior.cs | 2 +- .../Handlers/NewsSearchHandler.cs | 4 +- .../Handlers/SpeakersSearchHandler.cs | 2 +- DotNetRu.Clients.UI/Helpers/MessagingUtils.cs | 2 +- DotNetRu.Clients.UI/Helpers/Settings.cs | 2 +- .../Localization/LanguageService.cs | 2 +- .../Localization/LocalizableTab.cs | 2 +- .../Localization/LocalizedResources.cs | 2 +- DotNetRu.Clients.UI/MauiProgram.cs | 14 +++ .../Meetups/FilterSessionsPage.xaml | 2 +- .../Meetups/FilterSessionsPage.xaml.cs | 2 +- .../Meetups/FilterSessionsViewModel.cs | 2 +- .../Meetups/MeetupDetailsPage.xaml | 2 +- .../Meetups/MeetupDetailsTemplateSelector.cs | 2 +- .../Meetups/MeetupDetailsViewModel.cs | 2 +- DotNetRu.Clients.UI/Meetups/MeetupsPage.xaml | 2 +- .../Meetups/MeetupsViewModel.cs | 2 +- .../Meetups/TalkModelExtensions.cs | 2 +- DotNetRu.Clients.UI/Meetups/TalkPage.xaml | 2 +- DotNetRu.Clients.UI/Meetups/TalkPage.xaml.cs | 2 +- DotNetRu.Clients.UI/Meetups/TalkViewModel.cs | 4 +- DotNetRu.Clients.UI/News/CalendarService.cs | 4 +- DotNetRu.Clients.UI/News/NewsPage.xaml | 2 +- DotNetRu.Clients.UI/News/NewsPage.xaml.cs | 4 +- DotNetRu.Clients.UI/News/NewsViewModel.cs | 2 +- .../News/NotificationsViewModel.cs | 2 +- DotNetRu.Clients.UI/News/SocialPostCell.xaml | 2 +- .../News/SocialPostCell.xaml.cs | 2 +- .../News/SocialPostImagePage.xaml | 2 +- .../News/SocialPostImagePage.xaml.cs | 2 +- DotNetRu.Clients.UI/Speakers/SpeakerCell.xaml | 2 +- .../Speakers/SpeakerCell.xaml.cs | 2 +- .../Speakers/SpeakerDetailsPage.xaml | 2 +- .../Speakers/SpeakerDetailsPage.xaml.cs | 4 +- .../Speakers/SpeakerExtensions.cs | 2 +- .../Speakers/SpeakerFacePage.xaml | 2 +- .../Speakers/SpeakersPage.xaml | 2 +- .../Speakers/SpeakersPage.xaml.cs | 2 +- .../Speakers/SpeakersViewModel.cs | 2 +- 106 files changed, 218 insertions(+), 121 deletions(-) create mode 100644 DotNetRu.Clients.UI/MauiProgram.cs diff --git a/DotNetRu.Clients.UI/About/AboutPage.xaml b/DotNetRu.Clients.UI/About/AboutPage.xaml index de363aca..61e5f37a 100644 --- a/DotNetRu.Clients.UI/About/AboutPage.xaml +++ b/DotNetRu.Clients.UI/About/AboutPage.xaml @@ -1,6 +1,6 @@ - diff --git a/DotNetRu.Clients.UI/About/AboutPage.xaml.cs b/DotNetRu.Clients.UI/About/AboutPage.xaml.cs index 9c87f095..f9557305 100644 --- a/DotNetRu.Clients.UI/About/AboutPage.xaml.cs +++ b/DotNetRu.Clients.UI/About/AboutPage.xaml.cs @@ -3,8 +3,8 @@ using DotNetRu.Clients.Portable.Model; using DotNetRu.Clients.Portable.ViewModel; using DotNetRu.Utils.Helpers; -using Xamarin.Essentials; -using Xamarin.Forms; + +using Microsoft.Maui; namespace DotNetRu.Clients.UI.Pages.About { diff --git a/DotNetRu.Clients.UI/About/AboutPageItem.cs b/DotNetRu.Clients.UI/About/AboutPageItem.cs index 638644c1..d74b8673 100644 --- a/DotNetRu.Clients.UI/About/AboutPageItem.cs +++ b/DotNetRu.Clients.UI/About/AboutPageItem.cs @@ -9,7 +9,7 @@ public class AboutPageItem public CommunityModel Community { get; set; } - public MenuItem MenuItem { get; set; } + public Portable.Model.MenuItem MenuItem { get; set; } public string Text { get; set; } } diff --git a/DotNetRu.Clients.UI/About/AboutTemplateSelector.cs b/DotNetRu.Clients.UI/About/AboutTemplateSelector.cs index 4d24459d..b5940506 100644 --- a/DotNetRu.Clients.UI/About/AboutTemplateSelector.cs +++ b/DotNetRu.Clients.UI/About/AboutTemplateSelector.cs @@ -1,4 +1,4 @@ -using Xamarin.Forms; +using Microsoft.Maui; namespace DotNetRu.Clients.UI.About { diff --git a/DotNetRu.Clients.UI/About/AboutViewModel.cs b/DotNetRu.Clients.UI/About/AboutViewModel.cs index 24cfed2f..0c10c9f4 100644 --- a/DotNetRu.Clients.UI/About/AboutViewModel.cs +++ b/DotNetRu.Clients.UI/About/AboutViewModel.cs @@ -18,8 +18,8 @@ using DotNetRu.Utils.Helpers; using Microsoft.AppCenter.Analytics; using MvvmHelpers; -using Xamarin.Essentials; -using Xamarin.Forms; + +using Microsoft.Maui; namespace DotNetRu.Clients.Portable.ViewModel { diff --git a/DotNetRu.Clients.UI/About/Friends/FriendCell.xaml b/DotNetRu.Clients.UI/About/Friends/FriendCell.xaml index 4bdaff43..a08840b2 100644 --- a/DotNetRu.Clients.UI/About/Friends/FriendCell.xaml +++ b/DotNetRu.Clients.UI/About/Friends/FriendCell.xaml @@ -1,6 +1,6 @@ diff --git a/DotNetRu.Clients.UI/About/Friends/FriendDetailsPage.xaml b/DotNetRu.Clients.UI/About/Friends/FriendDetailsPage.xaml index 78badfe4..c9e7ab7d 100644 --- a/DotNetRu.Clients.UI/About/Friends/FriendDetailsPage.xaml +++ b/DotNetRu.Clients.UI/About/Friends/FriendDetailsPage.xaml @@ -1,6 +1,6 @@ diff --git a/DotNetRu.Clients.UI/App.xaml b/DotNetRu.Clients.UI/App.xaml index 6fe70e0d..7dc6ad7a 100644 --- a/DotNetRu.Clients.UI/App.xaml +++ b/DotNetRu.Clients.UI/App.xaml @@ -1,7 +1,7 @@ diff --git a/DotNetRu.Clients.UI/App.xaml.cs b/DotNetRu.Clients.UI/App.xaml.cs index 192021b7..a05f9493 100644 --- a/DotNetRu.Clients.UI/App.xaml.cs +++ b/DotNetRu.Clients.UI/App.xaml.cs @@ -1,5 +1,3 @@ -using Xamarin.Forms.Xaml; -using System; using System.Globalization; using DotNetRu.Clients.Portable.Services; @@ -11,9 +9,6 @@ using Microsoft.AppCenter.Analytics; using Microsoft.AppCenter.Crashes; using Microsoft.AppCenter.Push; -using Xamarin.Essentials; -using Xamarin.Forms; -using System.Collections.Generic; using Realms.Sync; using DotNetRu.AppUtils.Logging; using DotNetRu.AppUtils.Config; diff --git a/DotNetRu.Clients.UI/AppShell.xaml b/DotNetRu.Clients.UI/AppShell.xaml index d9bb5bd3..d4e22de3 100644 --- a/DotNetRu.Clients.UI/AppShell.xaml +++ b/DotNetRu.Clients.UI/AppShell.xaml @@ -1,6 +1,6 @@ diff --git a/DotNetRu.Clients.UI/BasePages/EvolveGroupHeaderView.xaml.cs b/DotNetRu.Clients.UI/BasePages/EvolveGroupHeaderView.xaml.cs index eb1404be..011f6995 100644 --- a/DotNetRu.Clients.UI/BasePages/EvolveGroupHeaderView.xaml.cs +++ b/DotNetRu.Clients.UI/BasePages/EvolveGroupHeaderView.xaml.cs @@ -1,4 +1,4 @@ -using Xamarin.Forms; +using Microsoft.Maui; namespace DotNetRu.Clients.UI.Cells { diff --git a/DotNetRu.Clients.UI/BasePages/MenuItem.cs b/DotNetRu.Clients.UI/BasePages/MenuItem.cs index e85ccc42..c15e03a6 100644 --- a/DotNetRu.Clients.UI/BasePages/MenuItem.cs +++ b/DotNetRu.Clients.UI/BasePages/MenuItem.cs @@ -4,7 +4,7 @@ using MvvmHelpers; - using Xamarin.Forms; + using Microsoft.Maui; public class MenuItem : ObservableObject { diff --git a/DotNetRu.Clients.UI/BasePages/NavigationService.cs b/DotNetRu.Clients.UI/BasePages/NavigationService.cs index 214de1f2..8e89ad33 100644 --- a/DotNetRu.Clients.UI/BasePages/NavigationService.cs +++ b/DotNetRu.Clients.UI/BasePages/NavigationService.cs @@ -1,5 +1,5 @@ using System.Threading.Tasks; -using Xamarin.Forms; +using Microsoft.Maui; namespace DotNetRu.Clients.UI.Helpers { diff --git a/DotNetRu.Clients.UI/BasePages/ViewModelBase.cs b/DotNetRu.Clients.UI/BasePages/ViewModelBase.cs index 8a6d00d3..bb97b6de 100644 --- a/DotNetRu.Clients.UI/BasePages/ViewModelBase.cs +++ b/DotNetRu.Clients.UI/BasePages/ViewModelBase.cs @@ -8,8 +8,8 @@ namespace DotNetRu.Clients.Portable.ViewModel using DotNetRu.Clients.Portable.Interfaces; using MvvmHelpers; - using Xamarin.Essentials; - using Xamarin.Forms; + + using Microsoft.Maui; public class ViewModelBase : BaseViewModel { diff --git a/DotNetRu.Clients.UI/Controls/AlwaysScrollView.cs b/DotNetRu.Clients.UI/Controls/AlwaysScrollView.cs index 2de357f1..8f913d5d 100644 --- a/DotNetRu.Clients.UI/Controls/AlwaysScrollView.cs +++ b/DotNetRu.Clients.UI/Controls/AlwaysScrollView.cs @@ -1,4 +1,4 @@ -using Xamarin.Forms; +using Microsoft.Maui; namespace DotNetRu.Clients.UI.Controls { diff --git a/DotNetRu.Clients.UI/Controls/CardView.cs b/DotNetRu.Clients.UI/Controls/CardView.cs index bc6f87d4..e2445fad 100644 --- a/DotNetRu.Clients.UI/Controls/CardView.cs +++ b/DotNetRu.Clients.UI/Controls/CardView.cs @@ -1,6 +1,6 @@ namespace DotNetRu.Clients.UI.Controls { - using Xamarin.Forms; + using Microsoft.Maui; public class CardView : Frame { diff --git a/DotNetRu.Clients.UI/Controls/FooterDivider.xaml b/DotNetRu.Clients.UI/Controls/FooterDivider.xaml index 1a029649..f006ad6b 100644 --- a/DotNetRu.Clients.UI/Controls/FooterDivider.xaml +++ b/DotNetRu.Clients.UI/Controls/FooterDivider.xaml @@ -1,6 +1,6 @@  diff --git a/DotNetRu.Clients.UI/Controls/FooterDivider.xaml.cs b/DotNetRu.Clients.UI/Controls/FooterDivider.xaml.cs index 4989d434..7444dc9e 100644 --- a/DotNetRu.Clients.UI/Controls/FooterDivider.xaml.cs +++ b/DotNetRu.Clients.UI/Controls/FooterDivider.xaml.cs @@ -1,4 +1,4 @@ -using Xamarin.Forms; +using Microsoft.Maui; namespace DotNetRu.Clients.UI.Controls { diff --git a/DotNetRu.Clients.UI/Controls/HeaderDivider.xaml b/DotNetRu.Clients.UI/Controls/HeaderDivider.xaml index aedc6907..727d912e 100644 --- a/DotNetRu.Clients.UI/Controls/HeaderDivider.xaml +++ b/DotNetRu.Clients.UI/Controls/HeaderDivider.xaml @@ -1,6 +1,6 @@  diff --git a/DotNetRu.Clients.UI/Controls/HeaderDivider.xaml.cs b/DotNetRu.Clients.UI/Controls/HeaderDivider.xaml.cs index b1cd652e..a48ec697 100644 --- a/DotNetRu.Clients.UI/Controls/HeaderDivider.xaml.cs +++ b/DotNetRu.Clients.UI/Controls/HeaderDivider.xaml.cs @@ -1,4 +1,4 @@ -using Xamarin.Forms; +using Microsoft.Maui; namespace DotNetRu.Clients.UI.Controls { diff --git a/DotNetRu.Clients.UI/Controls/LabelSection.xaml b/DotNetRu.Clients.UI/Controls/LabelSection.xaml index 66f38c8e..fe7bf7ce 100644 --- a/DotNetRu.Clients.UI/Controls/LabelSection.xaml +++ b/DotNetRu.Clients.UI/Controls/LabelSection.xaml @@ -1,6 +1,6 @@  diff --git a/DotNetRu.Clients.UI/Controls/LabelSection.xaml.cs b/DotNetRu.Clients.UI/Controls/LabelSection.xaml.cs index 51e935ad..864014a6 100644 --- a/DotNetRu.Clients.UI/Controls/LabelSection.xaml.cs +++ b/DotNetRu.Clients.UI/Controls/LabelSection.xaml.cs @@ -1,4 +1,4 @@ -using Xamarin.Forms; +using Microsoft.Maui; namespace DotNetRu.Clients.UI.Controls { diff --git a/DotNetRu.Clients.UI/Controls/NonScrollableListView.cs b/DotNetRu.Clients.UI/Controls/NonScrollableListView.cs index 9b55aa55..491a83ff 100644 --- a/DotNetRu.Clients.UI/Controls/NonScrollableListView.cs +++ b/DotNetRu.Clients.UI/Controls/NonScrollableListView.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; using System.Linq; - using Xamarin.Forms; + using Microsoft.Maui; public class NonScrollableListView : ListView { diff --git a/DotNetRu.Clients.UI/Controls/PinchToZoomContainer.cs b/DotNetRu.Clients.UI/Controls/PinchToZoomContainer.cs index 5c709bf3..00649454 100644 --- a/DotNetRu.Clients.UI/Controls/PinchToZoomContainer.cs +++ b/DotNetRu.Clients.UI/Controls/PinchToZoomContainer.cs @@ -1,5 +1,5 @@ using System; -using Xamarin.Forms; +using Microsoft.Maui; namespace DotNetRu.Clients.UI.Controls { diff --git a/DotNetRu.Clients.UI/Controls/SectionDivider.xaml b/DotNetRu.Clients.UI/Controls/SectionDivider.xaml index af7df6b1..94ff5459 100644 --- a/DotNetRu.Clients.UI/Controls/SectionDivider.xaml +++ b/DotNetRu.Clients.UI/Controls/SectionDivider.xaml @@ -1,6 +1,6 @@  diff --git a/DotNetRu.Clients.UI/Controls/SectionDivider.xaml.cs b/DotNetRu.Clients.UI/Controls/SectionDivider.xaml.cs index 66eafe09..fb08df53 100644 --- a/DotNetRu.Clients.UI/Controls/SectionDivider.xaml.cs +++ b/DotNetRu.Clients.UI/Controls/SectionDivider.xaml.cs @@ -1,4 +1,4 @@ -using Xamarin.Forms; +using Microsoft.Maui; namespace DotNetRu.Clients.UI.Controls { diff --git a/DotNetRu.Clients.UI/Converters/CommunityIDToImageSourceConverter.cs b/DotNetRu.Clients.UI/Converters/CommunityIDToImageSourceConverter.cs index 76f0b6d0..c30d2a1b 100644 --- a/DotNetRu.Clients.UI/Converters/CommunityIDToImageSourceConverter.cs +++ b/DotNetRu.Clients.UI/Converters/CommunityIDToImageSourceConverter.cs @@ -2,7 +2,7 @@ using System.Globalization; using System.Reflection; using DotNetRu.DataStore.Audit.Services; -using Xamarin.Forms; +using Microsoft.Maui; namespace DotNetRu.Clients.UI.Converters { diff --git a/DotNetRu.Clients.UI/Converters/EventColorDisplayConverter.cs b/DotNetRu.Clients.UI/Converters/EventColorDisplayConverter.cs index 4c794f08..a059e3a5 100644 --- a/DotNetRu.Clients.UI/Converters/EventColorDisplayConverter.cs +++ b/DotNetRu.Clients.UI/Converters/EventColorDisplayConverter.cs @@ -4,7 +4,7 @@ using System.Diagnostics; using System.Globalization; - using Xamarin.Forms; + using Microsoft.Maui; public class EventColorDisplayConverter : IValueConverter { diff --git a/DotNetRu.Clients.UI/Converters/EventDateDisplayConverter.cs b/DotNetRu.Clients.UI/Converters/EventDateDisplayConverter.cs index fd3f5461..3fd19ba0 100644 --- a/DotNetRu.Clients.UI/Converters/EventDateDisplayConverter.cs +++ b/DotNetRu.Clients.UI/Converters/EventDateDisplayConverter.cs @@ -7,7 +7,7 @@ using DotNetRu.Clients.Portable.Model.Extensions; using DotNetRu.DataStore.Audit.Models; - using Xamarin.Forms; + using Microsoft.Maui; using Xamarin.Forms.Internals; [Preserve] diff --git a/DotNetRu.Clients.UI/Converters/EventDayDisplayConverter.cs b/DotNetRu.Clients.UI/Converters/EventDayDisplayConverter.cs index 20d1ca2d..30d57f5e 100644 --- a/DotNetRu.Clients.UI/Converters/EventDayDisplayConverter.cs +++ b/DotNetRu.Clients.UI/Converters/EventDayDisplayConverter.cs @@ -6,7 +6,7 @@ namespace DotNetRu.Clients.UI.Converters using DotNetRu.Clients.Portable.Extensions; using DotNetRu.Clients.UI.Localization; - using Xamarin.Forms; + using Microsoft.Maui; public class EventDayDisplayConverter : IValueConverter { diff --git a/DotNetRu.Clients.UI/Converters/EventDayNumberDisplayConverter.cs b/DotNetRu.Clients.UI/Converters/EventDayNumberDisplayConverter.cs index 5b0231cc..110043d4 100644 --- a/DotNetRu.Clients.UI/Converters/EventDayNumberDisplayConverter.cs +++ b/DotNetRu.Clients.UI/Converters/EventDayNumberDisplayConverter.cs @@ -6,7 +6,7 @@ using DotNetRu.Clients.Portable.Extensions; - using Xamarin.Forms; + using Microsoft.Maui; public class EventDayNumberDisplayConverter : IValueConverter { diff --git a/DotNetRu.Clients.UI/Converters/HasReminderTextConverter.cs b/DotNetRu.Clients.UI/Converters/HasReminderTextConverter.cs index 9741d2a0..cae7d9e5 100644 --- a/DotNetRu.Clients.UI/Converters/HasReminderTextConverter.cs +++ b/DotNetRu.Clients.UI/Converters/HasReminderTextConverter.cs @@ -3,7 +3,7 @@ namespace DotNetRu.Clients.UI.Converters using System; using System.Globalization; using DotNetRu.Clients.UI.Localization; - using Xamarin.Forms; + using Microsoft.Maui; public class HasReminderTextConverter : IValueConverter { diff --git a/DotNetRu.Clients.UI/Converters/MeetupDetailsPageItemsToVisibleConverter.cs b/DotNetRu.Clients.UI/Converters/MeetupDetailsPageItemsToVisibleConverter.cs index dccffaee..ae0f3c55 100644 --- a/DotNetRu.Clients.UI/Converters/MeetupDetailsPageItemsToVisibleConverter.cs +++ b/DotNetRu.Clients.UI/Converters/MeetupDetailsPageItemsToVisibleConverter.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using System.Globalization; using DotNetRu.Clients.UI.Meetups; -using Xamarin.Forms; +using Microsoft.Maui; namespace DotNetRu.Clients.UI.Converters { diff --git a/DotNetRu.Clients.UI/Converters/SessionTimeDisplayConverter.cs b/DotNetRu.Clients.UI/Converters/SessionTimeDisplayConverter.cs index dd9bd470..6ec3d91c 100644 --- a/DotNetRu.Clients.UI/Converters/SessionTimeDisplayConverter.cs +++ b/DotNetRu.Clients.UI/Converters/SessionTimeDisplayConverter.cs @@ -5,7 +5,7 @@ namespace DotNetRu.Clients.UI.Converters using System.Globalization; using DotNetRu.DataStore.Audit.Models; - using Xamarin.Forms; + using Microsoft.Maui; public class SessionTimeDisplayConverter : IValueConverter { diff --git a/DotNetRu.Clients.UI/Converters/SocialMediaTypeConverter.cs b/DotNetRu.Clients.UI/Converters/SocialMediaTypeConverter.cs index 5dee454f..88650ac5 100644 --- a/DotNetRu.Clients.UI/Converters/SocialMediaTypeConverter.cs +++ b/DotNetRu.Clients.UI/Converters/SocialMediaTypeConverter.cs @@ -3,7 +3,7 @@ namespace DotNetRu.Clients.UI.Converters using System; using System.Globalization; using DotNetRu.Models.Social; - using Xamarin.Forms; + using Microsoft.Maui; public class SocialMediaTypeConverter : IValueConverter { diff --git a/DotNetRu.Clients.UI/Converters/TalkLogoConverter.cs b/DotNetRu.Clients.UI/Converters/TalkLogoConverter.cs index a02b544b..59aae5d6 100644 --- a/DotNetRu.Clients.UI/Converters/TalkLogoConverter.cs +++ b/DotNetRu.Clients.UI/Converters/TalkLogoConverter.cs @@ -2,7 +2,7 @@ using System.Globalization; using System.Linq; using DotNetRu.DataStore.Audit.Models; -using Xamarin.Forms; +using Microsoft.Maui; namespace DotNetRu.Clients.UI.Converters { diff --git a/DotNetRu.Clients.UI/Converters/TranslateConverter.cs b/DotNetRu.Clients.UI/Converters/TranslateConverter.cs index b81e0d07..eaf34312 100644 --- a/DotNetRu.Clients.UI/Converters/TranslateConverter.cs +++ b/DotNetRu.Clients.UI/Converters/TranslateConverter.cs @@ -3,7 +3,7 @@ namespace DotNetRu.Clients.UI.Converters using System; using System.Globalization; using DotNetRu.Clients.UI.Localization; - using Xamarin.Forms; + using Microsoft.Maui; public class TranslateConverter : IValueConverter { diff --git a/DotNetRu.Clients.UI/DotNetRu.Clients.UI.csproj b/DotNetRu.Clients.UI/DotNetRu.Clients.UI.csproj index a341955e..ca93e6aa 100644 --- a/DotNetRu.Clients.UI/DotNetRu.Clients.UI.csproj +++ b/DotNetRu.Clients.UI/DotNetRu.Clients.UI.csproj @@ -1,7 +1,10 @@ net7.0 - True + true + enable + + 11.0 @@ -20,11 +23,9 @@ - - @@ -56,6 +57,7 @@ PublicResXFileCodeGenerator AppResources.Designer.cs + AppResources.resx AppShell.xaml @@ -63,6 +65,93 @@ AppResources.ru.resx + + App.xaml + + + MeetupsPage.xaml + + + MeetupDetailsPage.xaml + + + TalkPage.xaml + + + FilterSessionsPage.xaml + + + SpeakerFacePage.xaml + + + SpeakerCell.xaml + + + SpeakerDetailsPage.xaml + + + SpeakersPage.xaml + + + AboutPage.xaml + + + TechnologiesUsedPage.xaml + + + SubscriptionsPage.xaml + + + SubscriptionCell.xaml + + + FriendsPage.xaml + + + FriendCell.xaml + + + FriendDetailsPage.xaml + + + Rating3Control.xaml + + + FeedbackPage.xaml + + + CategoryCellView.xaml + + + RatingControl.xaml + + + ConferenceFeedbackPage.xaml + + + SectionDivider.xaml + + + FooterDivider.xaml + + + LabelSection.xaml + + + HeaderDivider.xaml + + + SocialPostCell.xaml + + + SocialPostImagePage.xaml + + + NewsPage.xaml + + + EvolveGroupHeaderView.xaml + diff --git a/DotNetRu.Clients.UI/Effects/ListViewSelectionOnTopEffect.cs b/DotNetRu.Clients.UI/Effects/ListViewSelectionOnTopEffect.cs index f2c99005..44b994ca 100644 --- a/DotNetRu.Clients.UI/Effects/ListViewSelectionOnTopEffect.cs +++ b/DotNetRu.Clients.UI/Effects/ListViewSelectionOnTopEffect.cs @@ -1,4 +1,4 @@ -using Xamarin.Forms; +using Microsoft.Maui; namespace DotNetRu.Clients.UI.Effects { diff --git a/DotNetRu.Clients.UI/Effects/NonScrollableEffect.cs b/DotNetRu.Clients.UI/Effects/NonScrollableEffect.cs index dc1be66a..95936a53 100644 --- a/DotNetRu.Clients.UI/Effects/NonScrollableEffect.cs +++ b/DotNetRu.Clients.UI/Effects/NonScrollableEffect.cs @@ -1,4 +1,4 @@ -using Xamarin.Forms; +using Microsoft.Maui; namespace DotNetRu.Clients.UI.Effects { diff --git a/DotNetRu.Clients.UI/Feedback/CategoryCellView.xaml b/DotNetRu.Clients.UI/Feedback/CategoryCellView.xaml index a6e688e3..b1591c92 100644 --- a/DotNetRu.Clients.UI/Feedback/CategoryCellView.xaml +++ b/DotNetRu.Clients.UI/Feedback/CategoryCellView.xaml @@ -1,7 +1,7 @@ - diff --git a/DotNetRu.Clients.UI/Feedback/Rating3Control.xaml.cs b/DotNetRu.Clients.UI/Feedback/Rating3Control.xaml.cs index 72d44e39..f2dc9147 100644 --- a/DotNetRu.Clients.UI/Feedback/Rating3Control.xaml.cs +++ b/DotNetRu.Clients.UI/Feedback/Rating3Control.xaml.cs @@ -1,6 +1,6 @@ using System; using DotNetRu.Clients.UI.Behaviors; -using Xamarin.Forms; +using Microsoft.Maui; namespace DotNetRu.Clients.UI.Controls { diff --git a/DotNetRu.Clients.UI/Feedback/RatingControl.xaml b/DotNetRu.Clients.UI/Feedback/RatingControl.xaml index 59921a23..02099ff1 100644 --- a/DotNetRu.Clients.UI/Feedback/RatingControl.xaml +++ b/DotNetRu.Clients.UI/Feedback/RatingControl.xaml @@ -1,5 +1,5 @@ - diff --git a/DotNetRu.Clients.UI/Feedback/RatingControl.xaml.cs b/DotNetRu.Clients.UI/Feedback/RatingControl.xaml.cs index 41556e63..37060e95 100644 --- a/DotNetRu.Clients.UI/Feedback/RatingControl.xaml.cs +++ b/DotNetRu.Clients.UI/Feedback/RatingControl.xaml.cs @@ -1,6 +1,6 @@ using System; using DotNetRu.Clients.UI.Behaviors; -using Xamarin.Forms; +using Microsoft.Maui; namespace DotNetRu.Clients.UI.Controls { diff --git a/DotNetRu.Clients.UI/Feedback/RatingConverter.cs b/DotNetRu.Clients.UI/Feedback/RatingConverter.cs index 81516a1a..acc3d2bc 100644 --- a/DotNetRu.Clients.UI/Feedback/RatingConverter.cs +++ b/DotNetRu.Clients.UI/Feedback/RatingConverter.cs @@ -3,7 +3,7 @@ using System.Linq; using DotNetRu.DataStore.Audit.Models; using DotNetRu.Utils.Helpers; -using Xamarin.Forms; +using Microsoft.Maui; namespace DotNetRu.Clients.UI.Converters { diff --git a/DotNetRu.Clients.UI/Feedback/StarBehavior.cs b/DotNetRu.Clients.UI/Feedback/StarBehavior.cs index 1b3ede62..68a8907e 100644 --- a/DotNetRu.Clients.UI/Feedback/StarBehavior.cs +++ b/DotNetRu.Clients.UI/Feedback/StarBehavior.cs @@ -1,6 +1,6 @@ using System; using System.Collections.Generic; -using Xamarin.Forms; +using Microsoft.Maui; namespace DotNetRu.Clients.UI.Behaviors { diff --git a/DotNetRu.Clients.UI/Handlers/NewsSearchHandler.cs b/DotNetRu.Clients.UI/Handlers/NewsSearchHandler.cs index 6729402e..71c38208 100644 --- a/DotNetRu.Clients.UI/Handlers/NewsSearchHandler.cs +++ b/DotNetRu.Clients.UI/Handlers/NewsSearchHandler.cs @@ -3,8 +3,8 @@ using System.Linq; using DotNetRu.Clients.Portable.Model; using DotNetRu.Models.Social; -using Xamarin.Essentials; -using Xamarin.Forms; + +using Microsoft.Maui; namespace DotNetRu.Clients.UI.Handlers { diff --git a/DotNetRu.Clients.UI/Handlers/SpeakersSearchHandler.cs b/DotNetRu.Clients.UI/Handlers/SpeakersSearchHandler.cs index 0b920d2d..c2cb9706 100644 --- a/DotNetRu.Clients.UI/Handlers/SpeakersSearchHandler.cs +++ b/DotNetRu.Clients.UI/Handlers/SpeakersSearchHandler.cs @@ -6,7 +6,7 @@ using DotNetRu.Clients.UI.Speakers; using DotNetRu.DataStore.Audit.Models; using MvvmHelpers; -using Xamarin.Forms; +using Microsoft.Maui; namespace DotNetRu.Clients.UI.Handlers { diff --git a/DotNetRu.Clients.UI/Helpers/MessagingUtils.cs b/DotNetRu.Clients.UI/Helpers/MessagingUtils.cs index 0e2bdef5..fa300b00 100644 --- a/DotNetRu.Clients.UI/Helpers/MessagingUtils.cs +++ b/DotNetRu.Clients.UI/Helpers/MessagingUtils.cs @@ -1,7 +1,7 @@ using DotNetRu.AppUtils; using DotNetRu.Clients.Portable.Interfaces; using FormsToolkit; -using Xamarin.Forms; +using Microsoft.Maui; namespace DotNetRu.Clients.Portable.Helpers { diff --git a/DotNetRu.Clients.UI/Helpers/Settings.cs b/DotNetRu.Clients.UI/Helpers/Settings.cs index 0e106f33..7ba6fe0f 100644 --- a/DotNetRu.Clients.UI/Helpers/Settings.cs +++ b/DotNetRu.Clients.UI/Helpers/Settings.cs @@ -8,7 +8,7 @@ namespace DotNetRu.Clients.Portable.Helpers using System; using DotNetRu.Clients.Portable.ViewModel; - using Xamarin.Essentials; + public static class Settings { diff --git a/DotNetRu.Clients.UI/Localization/LanguageService.cs b/DotNetRu.Clients.UI/Localization/LanguageService.cs index 4e67353b..6873475b 100644 --- a/DotNetRu.Clients.UI/Localization/LanguageService.cs +++ b/DotNetRu.Clients.UI/Localization/LanguageService.cs @@ -3,7 +3,7 @@ using DotNetRu.Clients.Portable.Interfaces; using DotNetRu.Clients.Portable.ViewModel; - using Xamarin.Forms; + using Microsoft.Maui; public static class LanguageService { diff --git a/DotNetRu.Clients.UI/Localization/LocalizableTab.cs b/DotNetRu.Clients.UI/Localization/LocalizableTab.cs index e096b6fd..fd5a2e03 100644 --- a/DotNetRu.Clients.UI/Localization/LocalizableTab.cs +++ b/DotNetRu.Clients.UI/Localization/LocalizableTab.cs @@ -1,5 +1,5 @@ using System.Threading.Tasks; -using Xamarin.Forms; +using Microsoft.Maui; namespace DotNetRu.Clients.UI.Localization { diff --git a/DotNetRu.Clients.UI/Localization/LocalizedResources.cs b/DotNetRu.Clients.UI/Localization/LocalizedResources.cs index 7b028d62..21e8355b 100644 --- a/DotNetRu.Clients.UI/Localization/LocalizedResources.cs +++ b/DotNetRu.Clients.UI/Localization/LocalizedResources.cs @@ -5,7 +5,7 @@ namespace DotNetRu.Clients.Portable.Helpers using DotNetRu.Clients.Portable.Interfaces; using DotNetRu.Clients.UI.Localization; - using Xamarin.Forms; + using Microsoft.Maui; public class LocalizedResources : INotifyPropertyChanged { diff --git a/DotNetRu.Clients.UI/MauiProgram.cs b/DotNetRu.Clients.UI/MauiProgram.cs new file mode 100644 index 00000000..b938f746 --- /dev/null +++ b/DotNetRu.Clients.UI/MauiProgram.cs @@ -0,0 +1,14 @@ +namespace DotNetRu.Clients.UI; + +public static class MauiProgram +{ + public static MauiApp CreateMauiApp() + { + var builder = MauiApp.CreateBuilder(); + builder + .UseMauiApp(); + // .UseMauiCommunityToolkit(); + + return builder.Build(); + } +} \ No newline at end of file diff --git a/DotNetRu.Clients.UI/Meetups/FilterSessionsPage.xaml b/DotNetRu.Clients.UI/Meetups/FilterSessionsPage.xaml index d89d6817..a6cd88ad 100644 --- a/DotNetRu.Clients.UI/Meetups/FilterSessionsPage.xaml +++ b/DotNetRu.Clients.UI/Meetups/FilterSessionsPage.xaml @@ -1,6 +1,6 @@  diff --git a/DotNetRu.Clients.UI/News/SocialPostImagePage.xaml.cs b/DotNetRu.Clients.UI/News/SocialPostImagePage.xaml.cs index 5194daa7..637cda10 100644 --- a/DotNetRu.Clients.UI/News/SocialPostImagePage.xaml.cs +++ b/DotNetRu.Clients.UI/News/SocialPostImagePage.xaml.cs @@ -2,7 +2,7 @@ using System.Diagnostics; using DotNetRu.Clients.Portable.Interfaces; using DotNetRu.Clients.Portable.Model; -using Xamarin.Forms; +using Microsoft.Maui; namespace DotNetRu.Clients.UI.Pages.Home { diff --git a/DotNetRu.Clients.UI/Speakers/SpeakerCell.xaml b/DotNetRu.Clients.UI/Speakers/SpeakerCell.xaml index 0e3093b7..f8f47f3b 100644 --- a/DotNetRu.Clients.UI/Speakers/SpeakerCell.xaml +++ b/DotNetRu.Clients.UI/Speakers/SpeakerCell.xaml @@ -1,6 +1,6 @@ diff --git a/DotNetRu.Clients.UI/Speakers/SpeakerCell.xaml.cs b/DotNetRu.Clients.UI/Speakers/SpeakerCell.xaml.cs index a6383469..d30a582c 100644 --- a/DotNetRu.Clients.UI/Speakers/SpeakerCell.xaml.cs +++ b/DotNetRu.Clients.UI/Speakers/SpeakerCell.xaml.cs @@ -1,7 +1,7 @@ using DotNetRu.Clients.Portable.Model; using DotNetRu.Clients.UI.Speakers; using DotNetRu.DataStore.Audit.Models; -using Xamarin.Forms; +using Microsoft.Maui; namespace DotNetRu.Clients.UI.Cells { diff --git a/DotNetRu.Clients.UI/Speakers/SpeakerDetailsPage.xaml b/DotNetRu.Clients.UI/Speakers/SpeakerDetailsPage.xaml index 4d8b99c9..8aaa0ada 100644 --- a/DotNetRu.Clients.UI/Speakers/SpeakerDetailsPage.xaml +++ b/DotNetRu.Clients.UI/Speakers/SpeakerDetailsPage.xaml @@ -1,6 +1,6 @@ Date: Sat, 11 Mar 2023 18:00:30 +0400 Subject: [PATCH 05/11] Update DotNetRu.Clients.UI csproj; temporarily disable XAML compilation --- DotNetRu.Clients.UI/App.xaml.cs | 13 ----- DotNetRu.Clients.UI/AppShell.xaml.cs | 4 -- DotNetRu.Clients.UI/BasePages/BasePage.cs | 7 +-- .../DotNetRu.Clients.UI.csproj | 5 +- .../Localization/AppResources.Designer.cs | 2 +- DotNetRu.Clients.UI/MauiProgram.cs | 4 +- .../Speakers/SpeakerDetailsPage.xaml.cs | 5 -- DotNetRuApp.sln | 48 +++---------------- 8 files changed, 14 insertions(+), 74 deletions(-) diff --git a/DotNetRu.Clients.UI/App.xaml.cs b/DotNetRu.Clients.UI/App.xaml.cs index a05f9493..479e0fb3 100644 --- a/DotNetRu.Clients.UI/App.xaml.cs +++ b/DotNetRu.Clients.UI/App.xaml.cs @@ -1,19 +1,6 @@ -using System.Globalization; - using DotNetRu.Clients.Portable.Services; using DotNetRu.Clients.Portable.ViewModel; using DotNetRu.Clients.UI.Localization; -using DotNetRu.DataStore.Audit.Services; - -using Microsoft.AppCenter; -using Microsoft.AppCenter.Analytics; -using Microsoft.AppCenter.Crashes; -using Microsoft.AppCenter.Push; -using Realms.Sync; -using DotNetRu.AppUtils.Logging; -using DotNetRu.AppUtils.Config; - -[assembly: XamlCompilation(XamlCompilationOptions.Compile)] namespace DotNetRu.Clients.UI { diff --git a/DotNetRu.Clients.UI/AppShell.xaml.cs b/DotNetRu.Clients.UI/AppShell.xaml.cs index b31b787e..5b5dd116 100644 --- a/DotNetRu.Clients.UI/AppShell.xaml.cs +++ b/DotNetRu.Clients.UI/AppShell.xaml.cs @@ -1,9 +1,5 @@ -using System.Linq; -using DotNetRu.AppUtils; using DotNetRu.Clients.Portable.Helpers; using DotNetRu.Clients.UI.Localization; -using Microsoft.Maui; -using Xamarin.Forms.Internals; namespace DotNetRu.Clients.UI { diff --git a/DotNetRu.Clients.UI/BasePages/BasePage.cs b/DotNetRu.Clients.UI/BasePages/BasePage.cs index b9e63cb5..c28a241f 100644 --- a/DotNetRu.Clients.UI/BasePages/BasePage.cs +++ b/DotNetRu.Clients.UI/BasePages/BasePage.cs @@ -1,14 +1,9 @@ -using System.Diagnostics; - namespace DotNetRu.Clients.UI.Pages { - using System; - + using System.Diagnostics; using DotNetRu.Clients.Portable.Interfaces; using DotNetRu.Clients.Portable.Model; - using Microsoft.Maui; - public abstract class BasePage : ContentPage, IProvidePageInfo { private Stopwatch appeared; diff --git a/DotNetRu.Clients.UI/DotNetRu.Clients.UI.csproj b/DotNetRu.Clients.UI/DotNetRu.Clients.UI.csproj index ca93e6aa..af6a74a0 100644 --- a/DotNetRu.Clients.UI/DotNetRu.Clients.UI.csproj +++ b/DotNetRu.Clients.UI/DotNetRu.Clients.UI.csproj @@ -1,9 +1,10 @@ - net7.0 + net7.0;net7.0-ios; true + Exe enable - + true 11.0 diff --git a/DotNetRu.Clients.UI/Localization/AppResources.Designer.cs b/DotNetRu.Clients.UI/Localization/AppResources.Designer.cs index eb18022c..a9a3e6c5 100644 --- a/DotNetRu.Clients.UI/Localization/AppResources.Designer.cs +++ b/DotNetRu.Clients.UI/Localization/AppResources.Designer.cs @@ -19,7 +19,7 @@ namespace DotNetRu.Clients.UI.Localization { // class via a tool like ResGen or Visual Studio. // To add or remove a member, edit your .ResX file then rerun ResGen // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] public class AppResources { diff --git a/DotNetRu.Clients.UI/MauiProgram.cs b/DotNetRu.Clients.UI/MauiProgram.cs index b938f746..0ed29303 100644 --- a/DotNetRu.Clients.UI/MauiProgram.cs +++ b/DotNetRu.Clients.UI/MauiProgram.cs @@ -1,3 +1,5 @@ +// [assembly: XamlCompilation(XamlCompilationOptions.Compile)] + namespace DotNetRu.Clients.UI; public static class MauiProgram @@ -11,4 +13,4 @@ public static MauiApp CreateMauiApp() return builder.Build(); } -} \ No newline at end of file +} diff --git a/DotNetRu.Clients.UI/Speakers/SpeakerDetailsPage.xaml.cs b/DotNetRu.Clients.UI/Speakers/SpeakerDetailsPage.xaml.cs index 93ae3353..e3ade866 100644 --- a/DotNetRu.Clients.UI/Speakers/SpeakerDetailsPage.xaml.cs +++ b/DotNetRu.Clients.UI/Speakers/SpeakerDetailsPage.xaml.cs @@ -1,16 +1,11 @@ -using System; using DotNetRu.Clients.Portable.Model; using DotNetRu.Clients.Portable.ViewModel; using DotNetRu.Clients.UI.Helpers; using DotNetRu.Clients.UI.Pages.Sessions; using DotNetRu.Clients.UI.Pages.Speakers; -using DotNetRu.DataStore.Audit.Models; -using Microsoft.Maui; -using Microsoft.Maui.Controls.Xaml; namespace DotNetRu.Clients.UI.Speakers { - [XamlCompilation(XamlCompilationOptions.Compile)] public partial class SpeakerDetailsPage { public SpeakerDetailsPage() diff --git a/DotNetRuApp.sln b/DotNetRuApp.sln index 0a4ee429..401b5311 100644 --- a/DotNetRuApp.sln +++ b/DotNetRuApp.sln @@ -1,15 +1,13 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.28407.52 +# Visual Studio Version 17 +VisualStudioVersion = 17.6.33417.168 MinimumVisualStudioVersion = 10.0.40219.1 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Targets", "Targets", "{B3B306B8-9A3D-4CD6-81FD-9C9EAB3C5788}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DotNetRu.Android", "DotNetRu.Android\DotNetRu.Android.csproj", "{C4B4592F-6AC4-4FE6-B63E-5D2DE47FD340}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DotNetRu.Clients.UI", "DotNetRu.Clients.UI\DotNetRu.Clients.UI.csproj", "{CD2623BD-3609-4BE9-80EF-0974F3A1A27D}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DotNetRu.Utils", "DotNetRu.Utils\DotNetRu.Utils.csproj", "{DFA0F0F6-C396-412E-86A9-E9095F71CC36}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DotNetRu.Utils", "DotNetRu.Utils\DotNetRu.Utils.csproj", "{DFA0F0F6-C396-412E-86A9-E9095F71CC36}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DotNetRu.DataStore.Audit", "DotNetRu.DataStore.Audit\DotNetRu.DataStore.Audit.csproj", "{7B4C73DF-8A4A-4AD1-92D9-A064065CDD71}" EndProject @@ -25,11 +23,11 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DotNetRu.Models", "DotNetRu EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DotNetRu.RealmUpdateLibrary", "RealmUpdateLibrary\DotNetRu.RealmUpdateLibrary.csproj", "{8B68192C-72D3-4F84-93CB-DF0C1984B536}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DotNetRu.AppUtils", "DotNetRu.AppUtils\DotNetRu.AppUtils.csproj", "{F0BED97F-DF76-4126-A069-C01C635ED728}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DotNetRu.AppUtils", "DotNetRu.AppUtils\DotNetRu.AppUtils.csproj", "{F0BED97F-DF76-4126-A069-C01C635ED728}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DotNetRu.RealmTests", "DotNetRu.RealmTests\DotNetRu.RealmTests.csproj", "{B2777691-1F4C-4496-A2F5-E146F5B7B174}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DotNetRu.RealmTests", "DotNetRu.RealmTests\DotNetRu.RealmTests.csproj", "{B2777691-1F4C-4496-A2F5-E146F5B7B174}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DotNetRu.iOS", "DotNetRu.iOS\DotNetRu.iOS.csproj", "{2EA1730A-67B2-4DC4-8031-6F697F9C70CA}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DotNetRu.iOS", "DotNetRu.iOS\DotNetRu.iOS.csproj", "{2EA1730A-67B2-4DC4-8031-6F697F9C70CA}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -47,39 +45,6 @@ Global Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {C4B4592F-6AC4-4FE6-B63E-5D2DE47FD340}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C4B4592F-6AC4-4FE6-B63E-5D2DE47FD340}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C4B4592F-6AC4-4FE6-B63E-5D2DE47FD340}.Debug|Any CPU.Deploy.0 = Debug|Any CPU - {C4B4592F-6AC4-4FE6-B63E-5D2DE47FD340}.Debug|ARM.ActiveCfg = Debug|Any CPU - {C4B4592F-6AC4-4FE6-B63E-5D2DE47FD340}.Debug|ARM.Build.0 = Debug|Any CPU - {C4B4592F-6AC4-4FE6-B63E-5D2DE47FD340}.Debug|ARM.Deploy.0 = Debug|Any CPU - {C4B4592F-6AC4-4FE6-B63E-5D2DE47FD340}.Debug|iPhone.ActiveCfg = Debug|Any CPU - {C4B4592F-6AC4-4FE6-B63E-5D2DE47FD340}.Debug|iPhone.Build.0 = Debug|Any CPU - {C4B4592F-6AC4-4FE6-B63E-5D2DE47FD340}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU - {C4B4592F-6AC4-4FE6-B63E-5D2DE47FD340}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU - {C4B4592F-6AC4-4FE6-B63E-5D2DE47FD340}.Debug|iPhoneSimulator.Deploy.0 = Debug|Any CPU - {C4B4592F-6AC4-4FE6-B63E-5D2DE47FD340}.Debug|x64.ActiveCfg = Debug|Any CPU - {C4B4592F-6AC4-4FE6-B63E-5D2DE47FD340}.Debug|x64.Build.0 = Debug|Any CPU - {C4B4592F-6AC4-4FE6-B63E-5D2DE47FD340}.Debug|x64.Deploy.0 = Debug|Any CPU - {C4B4592F-6AC4-4FE6-B63E-5D2DE47FD340}.Debug|x86.ActiveCfg = Debug|Any CPU - {C4B4592F-6AC4-4FE6-B63E-5D2DE47FD340}.Debug|x86.Build.0 = Debug|Any CPU - {C4B4592F-6AC4-4FE6-B63E-5D2DE47FD340}.Debug|x86.Deploy.0 = Debug|Any CPU - {C4B4592F-6AC4-4FE6-B63E-5D2DE47FD340}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C4B4592F-6AC4-4FE6-B63E-5D2DE47FD340}.Release|Any CPU.Build.0 = Release|Any CPU - {C4B4592F-6AC4-4FE6-B63E-5D2DE47FD340}.Release|Any CPU.Deploy.0 = Release|Any CPU - {C4B4592F-6AC4-4FE6-B63E-5D2DE47FD340}.Release|ARM.ActiveCfg = Release|Any CPU - {C4B4592F-6AC4-4FE6-B63E-5D2DE47FD340}.Release|ARM.Build.0 = Release|Any CPU - {C4B4592F-6AC4-4FE6-B63E-5D2DE47FD340}.Release|ARM.Deploy.0 = Release|Any CPU - {C4B4592F-6AC4-4FE6-B63E-5D2DE47FD340}.Release|iPhone.ActiveCfg = Release|Any CPU - {C4B4592F-6AC4-4FE6-B63E-5D2DE47FD340}.Release|iPhone.Build.0 = Release|Any CPU - {C4B4592F-6AC4-4FE6-B63E-5D2DE47FD340}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU - {C4B4592F-6AC4-4FE6-B63E-5D2DE47FD340}.Release|iPhoneSimulator.Build.0 = Release|Any CPU - {C4B4592F-6AC4-4FE6-B63E-5D2DE47FD340}.Release|x64.ActiveCfg = Release|Any CPU - {C4B4592F-6AC4-4FE6-B63E-5D2DE47FD340}.Release|x64.Build.0 = Release|Any CPU - {C4B4592F-6AC4-4FE6-B63E-5D2DE47FD340}.Release|x64.Deploy.0 = Release|Any CPU - {C4B4592F-6AC4-4FE6-B63E-5D2DE47FD340}.Release|x86.ActiveCfg = Release|Any CPU - {C4B4592F-6AC4-4FE6-B63E-5D2DE47FD340}.Release|x86.Build.0 = Release|Any CPU - {C4B4592F-6AC4-4FE6-B63E-5D2DE47FD340}.Release|x86.Deploy.0 = Release|Any CPU {CD2623BD-3609-4BE9-80EF-0974F3A1A27D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {CD2623BD-3609-4BE9-80EF-0974F3A1A27D}.Debug|Any CPU.Build.0 = Debug|Any CPU {CD2623BD-3609-4BE9-80EF-0974F3A1A27D}.Debug|ARM.ActiveCfg = Debug|Any CPU @@ -277,7 +242,6 @@ Global HideSolutionNode = FALSE EndGlobalSection GlobalSection(NestedProjects) = preSolution - {C4B4592F-6AC4-4FE6-B63E-5D2DE47FD340} = {B3B306B8-9A3D-4CD6-81FD-9C9EAB3C5788} {2EA1730A-67B2-4DC4-8031-6F697F9C70CA} = {B3B306B8-9A3D-4CD6-81FD-9C9EAB3C5788} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution From 4e7b15c80395fdfc66ddfedb774e70d445ea8380 Mon Sep 17 00:00:00 2001 From: pfedotovsky Date: Sat, 11 Mar 2023 18:17:18 +0400 Subject: [PATCH 06/11] WIP: add new cross-platform MAUI project --- DotNetRu.App/App.xaml | 14 + DotNetRu.App/App.xaml.cs | 12 + DotNetRu.App/AppShell.xaml | 14 + DotNetRu.App/AppShell.xaml.cs | 10 + DotNetRu.App/BasePages/AppPage.cs | 52 +++ DotNetRu.App/BasePages/BasePage.cs | 29 ++ DotNetRu.App/BasePages/IProvidePageInfo.cs | 10 + DotNetRu.App/BasePages/NavigationService.cs | 45 ++ DotNetRu.App/DotNetRu.App.csproj | 49 +++ DotNetRu.App/MainPage.xaml | 41 ++ DotNetRu.App/MainPage.xaml.cs | 24 ++ DotNetRu.App/MauiProgram.cs | 25 ++ .../Platforms/Android/AndroidManifest.xml | 6 + .../Platforms/Android/MainActivity.cs | 11 + .../Platforms/Android/MainApplication.cs | 16 + .../Android/Resources/values/colors.xml | 6 + .../Platforms/MacCatalyst/AppDelegate.cs | 10 + DotNetRu.App/Platforms/MacCatalyst/Info.plist | 30 ++ DotNetRu.App/Platforms/MacCatalyst/Program.cs | 16 + DotNetRu.App/Platforms/iOS/AppDelegate.cs | 10 + DotNetRu.App/Platforms/iOS/Info.plist | 32 ++ DotNetRu.App/Platforms/iOS/Program.cs | 16 + DotNetRu.App/Resources/AppIcon/appicon.svg | 4 + DotNetRu.App/Resources/AppIcon/appiconfg.svg | 8 + .../Resources/Fonts/OpenSans-Regular.ttf | Bin 0 -> 107140 bytes .../Resources/Fonts/OpenSans-Semibold.ttf | Bin 0 -> 111068 bytes DotNetRu.App/Resources/Images/dotnet_bot.svg | 93 ++++ DotNetRu.App/Resources/Raw/AboutAssets.txt | 15 + DotNetRu.App/Resources/Splash/splash.svg | 8 + DotNetRu.App/Resources/Styles/Colors.xaml | 44 ++ DotNetRu.App/Resources/Styles/Styles.xaml | 405 ++++++++++++++++++ DotNetRu.Clients.UI/App.xaml.cs | 2 +- DotNetRuApp.sln | 40 +- 33 files changed, 1094 insertions(+), 3 deletions(-) create mode 100644 DotNetRu.App/App.xaml create mode 100644 DotNetRu.App/App.xaml.cs create mode 100644 DotNetRu.App/AppShell.xaml create mode 100644 DotNetRu.App/AppShell.xaml.cs create mode 100644 DotNetRu.App/BasePages/AppPage.cs create mode 100644 DotNetRu.App/BasePages/BasePage.cs create mode 100644 DotNetRu.App/BasePages/IProvidePageInfo.cs create mode 100644 DotNetRu.App/BasePages/NavigationService.cs create mode 100644 DotNetRu.App/DotNetRu.App.csproj create mode 100644 DotNetRu.App/MainPage.xaml create mode 100644 DotNetRu.App/MainPage.xaml.cs create mode 100644 DotNetRu.App/MauiProgram.cs create mode 100644 DotNetRu.App/Platforms/Android/AndroidManifest.xml create mode 100644 DotNetRu.App/Platforms/Android/MainActivity.cs create mode 100644 DotNetRu.App/Platforms/Android/MainApplication.cs create mode 100644 DotNetRu.App/Platforms/Android/Resources/values/colors.xml create mode 100644 DotNetRu.App/Platforms/MacCatalyst/AppDelegate.cs create mode 100644 DotNetRu.App/Platforms/MacCatalyst/Info.plist create mode 100644 DotNetRu.App/Platforms/MacCatalyst/Program.cs create mode 100644 DotNetRu.App/Platforms/iOS/AppDelegate.cs create mode 100644 DotNetRu.App/Platforms/iOS/Info.plist create mode 100644 DotNetRu.App/Platforms/iOS/Program.cs create mode 100644 DotNetRu.App/Resources/AppIcon/appicon.svg create mode 100644 DotNetRu.App/Resources/AppIcon/appiconfg.svg create mode 100644 DotNetRu.App/Resources/Fonts/OpenSans-Regular.ttf create mode 100644 DotNetRu.App/Resources/Fonts/OpenSans-Semibold.ttf create mode 100644 DotNetRu.App/Resources/Images/dotnet_bot.svg create mode 100644 DotNetRu.App/Resources/Raw/AboutAssets.txt create mode 100644 DotNetRu.App/Resources/Splash/splash.svg create mode 100644 DotNetRu.App/Resources/Styles/Colors.xaml create mode 100644 DotNetRu.App/Resources/Styles/Styles.xaml diff --git a/DotNetRu.App/App.xaml b/DotNetRu.App/App.xaml new file mode 100644 index 00000000..6856002b --- /dev/null +++ b/DotNetRu.App/App.xaml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/DotNetRu.App/App.xaml.cs b/DotNetRu.App/App.xaml.cs new file mode 100644 index 00000000..b45232dd --- /dev/null +++ b/DotNetRu.App/App.xaml.cs @@ -0,0 +1,12 @@ +namespace DotNetRu.App +{ + public partial class App : Application + { + public App() + { + InitializeComponent(); + + MainPage = new AppShell(); + } + } +} \ No newline at end of file diff --git a/DotNetRu.App/AppShell.xaml b/DotNetRu.App/AppShell.xaml new file mode 100644 index 00000000..625eeaf9 --- /dev/null +++ b/DotNetRu.App/AppShell.xaml @@ -0,0 +1,14 @@ + + + + + + diff --git a/DotNetRu.App/AppShell.xaml.cs b/DotNetRu.App/AppShell.xaml.cs new file mode 100644 index 00000000..066ca02a --- /dev/null +++ b/DotNetRu.App/AppShell.xaml.cs @@ -0,0 +1,10 @@ +namespace DotNetRu.App +{ + public partial class AppShell : Shell + { + public AppShell() + { + InitializeComponent(); + } + } +} \ No newline at end of file diff --git a/DotNetRu.App/BasePages/AppPage.cs b/DotNetRu.App/BasePages/AppPage.cs new file mode 100644 index 00000000..178febb6 --- /dev/null +++ b/DotNetRu.App/BasePages/AppPage.cs @@ -0,0 +1,52 @@ +namespace DotNetRu.Clients.Portable.Model +{ + public class DeepLinkPage + { + public AppPage Page { get; set; } + + public string Id { get; set; } + } + + public enum AppPage + { + News, + + Meetup, + + Speakers, + + Meetups, + + Friends, + + Settings, + + Talk, + + Speaker, + + Friend, + + Event, + + Notification, + + SocialPostImage, + + Filter, + + Information, + + SocialPost, + + Feedback, + + ConferenceFeedback, + + SpeakerFace, + + Subscriptions + } +} + + diff --git a/DotNetRu.App/BasePages/BasePage.cs b/DotNetRu.App/BasePages/BasePage.cs new file mode 100644 index 00000000..14ff180d --- /dev/null +++ b/DotNetRu.App/BasePages/BasePage.cs @@ -0,0 +1,29 @@ +namespace DotNetRu.Clients.UI.Pages +{ + using System.Diagnostics; + using DotNetRu.Clients.Portable.Interfaces; + using DotNetRu.Clients.Portable.Model; + + public abstract class BasePage : ContentPage, IProvidePageInfo + { + private Stopwatch appeared; + + public abstract AppPage PageType { get; } + + protected string ItemId { get; set; } + + protected override void OnAppearing() + { + this.appeared = Stopwatch.StartNew(); + // App.Logger.TrackPage(this.PageType.ToString(), this.ItemId); + + base.OnAppearing(); + } + + protected override void OnDisappearing() + { + // App.Logger.TrackTimeSpent(this.PageType.ToString(), this.ItemId, TimeSpan.FromTicks(DateTime.UtcNow.Ticks).Subtract(this.appeared.Elapsed)); + base.OnDisappearing(); + } + } +} diff --git a/DotNetRu.App/BasePages/IProvidePageInfo.cs b/DotNetRu.App/BasePages/IProvidePageInfo.cs new file mode 100644 index 00000000..58cff567 --- /dev/null +++ b/DotNetRu.App/BasePages/IProvidePageInfo.cs @@ -0,0 +1,10 @@ +using DotNetRu.Clients.Portable.Model; + +namespace DotNetRu.Clients.Portable.Interfaces +{ + public interface IProvidePageInfo + { + AppPage PageType { get; } + } +} + diff --git a/DotNetRu.App/BasePages/NavigationService.cs b/DotNetRu.App/BasePages/NavigationService.cs new file mode 100644 index 00000000..e3646b35 --- /dev/null +++ b/DotNetRu.App/BasePages/NavigationService.cs @@ -0,0 +1,45 @@ +namespace DotNetRu.Clients.UI.Helpers +{ + /// + /// Helper navigation service to use so we don't push multiple pages at the same time. + /// + public static class NavigationService + { + static bool navigating; + + /// + /// PUsh a page async + /// + /// awaitable task. + /// Navigation. + /// Page. + /// If set to true animate. + public static async Task PushAsync(INavigation navigation, Page page, bool animate = true) + { + if (navigating) + return; + + navigating = true; + await navigation.PushAsync(page, animate); + navigating = false; + } + + /// + /// Push a page modal async + /// + /// awaitable task. + /// Navigation. + /// Page. + /// If set to true animate. + public static async Task PushModalAsync(INavigation navigation, Page page, bool animate = true) + { + if (navigating) + return; + + navigating = true; + await navigation.PushModalAsync(page, animate); + navigating = false; + } + } +} + diff --git a/DotNetRu.App/DotNetRu.App.csproj b/DotNetRu.App/DotNetRu.App.csproj new file mode 100644 index 00000000..cad6b328 --- /dev/null +++ b/DotNetRu.App/DotNetRu.App.csproj @@ -0,0 +1,49 @@ + + + + net7.0-android;net7.0-ios;net7.0-maccatalyst + Exe + DotNetRu.App + true + true + enable + + + DotNetRu.App + + + com.pfedotovsky.dotnetru + c5ee66b3-443f-4a42-b8cb-934376c46de4 + + + 1.0 + 1 + + 11.0 + 13.1 + 21.0 + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/DotNetRu.App/MainPage.xaml b/DotNetRu.App/MainPage.xaml new file mode 100644 index 00000000..ece9dc74 --- /dev/null +++ b/DotNetRu.App/MainPage.xaml @@ -0,0 +1,41 @@ + + + + + + + + +