From 13c2236933febd04259f7fe2200febcf8056b62a Mon Sep 17 00:00:00 2001 From: Andrew Hoefling Date: Fri, 4 Dec 2020 11:40:44 -0500 Subject: [PATCH 01/46] Ported Popup Control from Xamarin/Xamarin.Forms#9616 to Xamarin Community Toolkit --- samples/XCT.Sample.Android/MainActivity.cs | 6 +- ...rin.CommunityToolkit.Sample.Android.csproj | 2 +- .../ViewModels/Views/ViewsGalleryViewModel.cs | 5 +- .../Xamarin.CommunityToolkit.Sample.csproj | 1 + .../Pages/Views/PopupGalleryPage.xaml | 66 ++++ .../Pages/Views/PopupGalleryPage.xaml.cs | 7 + .../Pages/Views/Popups/ButtonPopup.xaml | 48 +++ .../Pages/Views/Popups/ButtonPopup.xaml.cs | 9 + .../Views/Popups/MultipleButtonPopup.xaml | 62 ++++ .../Views/Popups/MultipleButtonPopup.xaml.cs | 11 + .../Views/Popups/NoLightDismissPopup.xaml | 52 +++ .../Views/Popups/NoLightDismissPopup.xaml.cs | 9 + .../Views/Popups/OpenedEventSimplePopup.xaml | 42 +++ .../Popups/OpenedEventSimplePopup.xaml.cs | 21 ++ .../Pages/Views/Popups/PopupAnchorPage.xaml | 53 +++ .../Views/Popups/PopupAnchorPage.xaml.cs | 35 ++ .../Pages/Views/Popups/PopupPositionPage.xaml | 117 ++++++ .../Views/Popups/PopupPositionPage.xaml.cs | 7 + .../Pages/Views/Popups/SimplePopup.xaml | 42 +++ .../Pages/Views/Popups/SimplePopup.xaml.cs | 7 + .../Pages/Views/Popups/ToggleSizePopup.xaml | 48 +++ .../Views/Popups/ToggleSizePopup.xaml.cs | 27 ++ .../Pages/Views/Popups/TransparentPopup.xaml | 17 + .../Views/Popups/TransparentPopup.xaml.cs | 7 + .../ViewModels/Views/PopupControlViewModel.cs | 43 +++ .../Views/Popups/PopupAnchorViewModel.cs | 21 ++ .../Views/Popups/PopupPositionViewModel.cs | 74 ++++ .../NavigationExtensions.android.cs | 13 + .../Navigation/NavigationExtensions.ios.cs | 13 + .../Navigation/NavigationExtensions.shared.cs | 34 ++ .../Navigation/NavigationExtensions.uwp.cs | 33 ++ .../VisualElementExtension.shared.cs | 5 +- .../VisualElementExtensions.uwp.cs | 51 +++ .../Helpers/FormsToolkit.ios.cs | 20 + .../Startup/ToolkitPlatform.android.cs | 26 ++ .../Views/Popup/BasePopup.shared.cs | 175 +++++++++ .../Views/Popup/Popup.shared.cs | 27 ++ .../Popup/PopupDismissedEventArgs.shared.cs | 15 + .../Views/Popup/PopupOfT.shared.cs | 70 ++++ .../Popup/PopupOpenedEventArgs.shared.cs | 11 + .../Views/Popup/PopupRenderer.android.cs | 350 ++++++++++++++++++ .../Views/Popup/PopupRenderer.ios.cs | 288 ++++++++++++++ .../Views/Popup/PopupRenderer.uwp.cs | 277 ++++++++++++++ .../Views/ViewToRendererConverter.uwp.cs | 104 ++++++ .../Xamarin.CommunityToolkit.csproj | 14 +- 45 files changed, 2358 insertions(+), 7 deletions(-) create mode 100644 src/CommunityToolkit/Xamarin.CommunityToolkit.Sample/Pages/Views/PopupGalleryPage.xaml create mode 100644 src/CommunityToolkit/Xamarin.CommunityToolkit.Sample/Pages/Views/PopupGalleryPage.xaml.cs create mode 100644 src/CommunityToolkit/Xamarin.CommunityToolkit.Sample/Pages/Views/Popups/ButtonPopup.xaml create mode 100644 src/CommunityToolkit/Xamarin.CommunityToolkit.Sample/Pages/Views/Popups/ButtonPopup.xaml.cs create mode 100644 src/CommunityToolkit/Xamarin.CommunityToolkit.Sample/Pages/Views/Popups/MultipleButtonPopup.xaml create mode 100644 src/CommunityToolkit/Xamarin.CommunityToolkit.Sample/Pages/Views/Popups/MultipleButtonPopup.xaml.cs create mode 100644 src/CommunityToolkit/Xamarin.CommunityToolkit.Sample/Pages/Views/Popups/NoLightDismissPopup.xaml create mode 100644 src/CommunityToolkit/Xamarin.CommunityToolkit.Sample/Pages/Views/Popups/NoLightDismissPopup.xaml.cs create mode 100644 src/CommunityToolkit/Xamarin.CommunityToolkit.Sample/Pages/Views/Popups/OpenedEventSimplePopup.xaml create mode 100644 src/CommunityToolkit/Xamarin.CommunityToolkit.Sample/Pages/Views/Popups/OpenedEventSimplePopup.xaml.cs create mode 100644 src/CommunityToolkit/Xamarin.CommunityToolkit.Sample/Pages/Views/Popups/PopupAnchorPage.xaml create mode 100644 src/CommunityToolkit/Xamarin.CommunityToolkit.Sample/Pages/Views/Popups/PopupAnchorPage.xaml.cs create mode 100644 src/CommunityToolkit/Xamarin.CommunityToolkit.Sample/Pages/Views/Popups/PopupPositionPage.xaml create mode 100644 src/CommunityToolkit/Xamarin.CommunityToolkit.Sample/Pages/Views/Popups/PopupPositionPage.xaml.cs create mode 100644 src/CommunityToolkit/Xamarin.CommunityToolkit.Sample/Pages/Views/Popups/SimplePopup.xaml create mode 100644 src/CommunityToolkit/Xamarin.CommunityToolkit.Sample/Pages/Views/Popups/SimplePopup.xaml.cs create mode 100644 src/CommunityToolkit/Xamarin.CommunityToolkit.Sample/Pages/Views/Popups/ToggleSizePopup.xaml create mode 100644 src/CommunityToolkit/Xamarin.CommunityToolkit.Sample/Pages/Views/Popups/ToggleSizePopup.xaml.cs create mode 100644 src/CommunityToolkit/Xamarin.CommunityToolkit.Sample/Pages/Views/Popups/TransparentPopup.xaml create mode 100644 src/CommunityToolkit/Xamarin.CommunityToolkit.Sample/Pages/Views/Popups/TransparentPopup.xaml.cs create mode 100644 src/CommunityToolkit/Xamarin.CommunityToolkit.Sample/ViewModels/Views/PopupControlViewModel.cs create mode 100644 src/CommunityToolkit/Xamarin.CommunityToolkit.Sample/ViewModels/Views/Popups/PopupAnchorViewModel.cs create mode 100644 src/CommunityToolkit/Xamarin.CommunityToolkit.Sample/ViewModels/Views/Popups/PopupPositionViewModel.cs create mode 100644 src/CommunityToolkit/Xamarin.CommunityToolkit/Extensions/Navigation/NavigationExtensions.android.cs create mode 100644 src/CommunityToolkit/Xamarin.CommunityToolkit/Extensions/Navigation/NavigationExtensions.ios.cs create mode 100644 src/CommunityToolkit/Xamarin.CommunityToolkit/Extensions/Navigation/NavigationExtensions.shared.cs create mode 100644 src/CommunityToolkit/Xamarin.CommunityToolkit/Extensions/Navigation/NavigationExtensions.uwp.cs rename src/CommunityToolkit/Xamarin.CommunityToolkit/Extensions/{ => VisualElement}/VisualElementExtension.shared.cs (91%) create mode 100644 src/CommunityToolkit/Xamarin.CommunityToolkit/Extensions/VisualElement/VisualElementExtensions.uwp.cs create mode 100644 src/CommunityToolkit/Xamarin.CommunityToolkit/Helpers/FormsToolkit.ios.cs create mode 100644 src/CommunityToolkit/Xamarin.CommunityToolkit/Startup/ToolkitPlatform.android.cs create mode 100644 src/CommunityToolkit/Xamarin.CommunityToolkit/Views/Popup/BasePopup.shared.cs create mode 100644 src/CommunityToolkit/Xamarin.CommunityToolkit/Views/Popup/Popup.shared.cs create mode 100644 src/CommunityToolkit/Xamarin.CommunityToolkit/Views/Popup/PopupDismissedEventArgs.shared.cs create mode 100644 src/CommunityToolkit/Xamarin.CommunityToolkit/Views/Popup/PopupOfT.shared.cs create mode 100644 src/CommunityToolkit/Xamarin.CommunityToolkit/Views/Popup/PopupOpenedEventArgs.shared.cs create mode 100644 src/CommunityToolkit/Xamarin.CommunityToolkit/Views/Popup/PopupRenderer.android.cs create mode 100644 src/CommunityToolkit/Xamarin.CommunityToolkit/Views/Popup/PopupRenderer.ios.cs create mode 100644 src/CommunityToolkit/Xamarin.CommunityToolkit/Views/Popup/PopupRenderer.uwp.cs create mode 100644 src/CommunityToolkit/Xamarin.CommunityToolkit/Views/ViewToRendererConverter.uwp.cs diff --git a/samples/XCT.Sample.Android/MainActivity.cs b/samples/XCT.Sample.Android/MainActivity.cs index 9a00b8c73..0c945823c 100644 --- a/samples/XCT.Sample.Android/MainActivity.cs +++ b/samples/XCT.Sample.Android/MainActivity.cs @@ -2,7 +2,6 @@ using Android.Content.PM; using Android.OS; using Android.Runtime; -using Xamarin.Essentials; namespace Xamarin.CommunityToolkit.Sample.Droid { @@ -17,14 +16,15 @@ protected override void OnCreate(Bundle savedInstanceState) base.OnCreate(savedInstanceState); global::Xamarin.Forms.Forms.SetFlags("CollectionView_Experimental"); - Platform.Init(this, savedInstanceState); + Essentials.Platform.Init(this, savedInstanceState); + ToolkitPlatform.Init(this); global::Xamarin.Forms.Forms.Init(this, savedInstanceState); LoadApplication(new App()); } public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Permission[] grantResults) { - Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults); + Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults); base.OnRequestPermissionsResult(requestCode, permissions, grantResults); } diff --git a/samples/XCT.Sample.Android/Xamarin.CommunityToolkit.Sample.Android.csproj b/samples/XCT.Sample.Android/Xamarin.CommunityToolkit.Sample.Android.csproj index 8fe84cb44..26f3cbeac 100644 --- a/samples/XCT.Sample.Android/Xamarin.CommunityToolkit.Sample.Android.csproj +++ b/samples/XCT.Sample.Android/Xamarin.CommunityToolkit.Sample.Android.csproj @@ -127,7 +127,7 @@ - + \ No newline at end of file diff --git a/samples/XCT.Sample/ViewModels/Views/ViewsGalleryViewModel.cs b/samples/XCT.Sample/ViewModels/Views/ViewsGalleryViewModel.cs index 26dd7d0dc..1a1bc370d 100644 --- a/samples/XCT.Sample/ViewModels/Views/ViewsGalleryViewModel.cs +++ b/samples/XCT.Sample/ViewModels/Views/ViewsGalleryViewModel.cs @@ -48,7 +48,10 @@ public class ViewsGalleryViewModel : BaseGalleryViewModel "A control to display a set of tabs and their respective content."), new SectionModel(typeof(UniformGridPage), "UniformGrid", - "The UniformGrid is just like the Grid, with all rows and columns will have the same size.") + "The UniformGrid is just like the Grid, with all rows and columns will have the same size."), + + new SectionModel(typeof(PopupGalleryPage), "Popup", + "The popup control renders native popups from the shared code. This page demonstrates a variety of different techniques for displaying native popups.") }; } } \ No newline at end of file diff --git a/samples/XCT.Sample/Xamarin.CommunityToolkit.Sample.csproj b/samples/XCT.Sample/Xamarin.CommunityToolkit.Sample.csproj index af5548634..132d64517 100644 --- a/samples/XCT.Sample/Xamarin.CommunityToolkit.Sample.csproj +++ b/samples/XCT.Sample/Xamarin.CommunityToolkit.Sample.csproj @@ -12,6 +12,7 @@ + diff --git a/src/CommunityToolkit/Xamarin.CommunityToolkit.Sample/Pages/Views/PopupGalleryPage.xaml b/src/CommunityToolkit/Xamarin.CommunityToolkit.Sample/Pages/Views/PopupGalleryPage.xaml new file mode 100644 index 000000000..0229b4d1e --- /dev/null +++ b/src/CommunityToolkit/Xamarin.CommunityToolkit.Sample/Pages/Views/PopupGalleryPage.xaml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/CommunityToolkit/Xamarin.CommunityToolkit.Sample/Pages/Views/PopupGalleryPage.xaml.cs b/src/CommunityToolkit/Xamarin.CommunityToolkit.Sample/Pages/Views/PopupGalleryPage.xaml.cs new file mode 100644 index 000000000..63fa5ecaf --- /dev/null +++ b/src/CommunityToolkit/Xamarin.CommunityToolkit.Sample/Pages/Views/PopupGalleryPage.xaml.cs @@ -0,0 +1,7 @@ +namespace Xamarin.CommunityToolkit.Sample.Pages.Views +{ + public partial class PopupGalleryPage + { + public PopupGalleryPage() => InitializeComponent(); + } +} \ No newline at end of file diff --git a/src/CommunityToolkit/Xamarin.CommunityToolkit.Sample/Pages/Views/Popups/ButtonPopup.xaml b/src/CommunityToolkit/Xamarin.CommunityToolkit.Sample/Pages/Views/Popups/ButtonPopup.xaml new file mode 100644 index 000000000..c70ccdf88 --- /dev/null +++ b/src/CommunityToolkit/Xamarin.CommunityToolkit.Sample/Pages/Views/Popups/ButtonPopup.xaml @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + +