From e3b01acfc5699c6f6bf7ae7088996e159a307fd5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Su=C3=A1rez=20Ruiz?= Date: Thu, 7 Apr 2022 17:57:19 +0200 Subject: [PATCH 01/16] Implement iOS Entry CursorColor Platform Specific --- .../Core/src/iOS/Renderers/EntryRenderer.cs | 1 + .../src/Core/HandlerImpl/Entry/Entry.cs | 13 +++++++----- .../src/Core/HandlerImpl/Entry/Entry.iOS.cs | 5 +++++ .../Platform/iOS/Extensions/TextExtensions.cs | 21 +++++++++++++------ 4 files changed, 29 insertions(+), 11 deletions(-) diff --git a/src/Compatibility/Core/src/iOS/Renderers/EntryRenderer.cs b/src/Compatibility/Core/src/iOS/Renderers/EntryRenderer.cs index 3f97690fafc6..7b52d6dedcf4 100644 --- a/src/Compatibility/Core/src/iOS/Renderers/EntryRenderer.cs +++ b/src/Compatibility/Core/src/iOS/Renderers/EntryRenderer.cs @@ -509,6 +509,7 @@ UITextPosition GetSelectionStart(int cursorPosition, out int startOffset) return start; } + [PortHandler] void UpdateCursorColor() { var control = Control; diff --git a/src/Controls/src/Core/HandlerImpl/Entry/Entry.cs b/src/Controls/src/Core/HandlerImpl/Entry/Entry.cs index bac8743f5d8f..3ae56dd35f1e 100644 --- a/src/Controls/src/Core/HandlerImpl/Entry/Entry.cs +++ b/src/Controls/src/Core/HandlerImpl/Entry/Entry.cs @@ -2,12 +2,15 @@ { public partial class Entry { - public static IPropertyMapper ControlsEntryMapper = + public static IPropertyMapper ControlsEntryMapper = new PropertyMapper(EntryHandler.Mapper) - { - [nameof(Text)] = MapText, - [nameof(TextTransform)] = MapText, - }; + { +#if IOS + [PlatformConfiguration.iOSSpecific.Entry.CursorColorProperty.PropertyName] = MapCursorColor, +#endif + [nameof(Text)] = MapText, + [nameof(TextTransform)] = MapText, + }; internal static new void RemapForControls() { diff --git a/src/Controls/src/Core/HandlerImpl/Entry/Entry.iOS.cs b/src/Controls/src/Core/HandlerImpl/Entry/Entry.iOS.cs index 7b1ed441788b..2561fc59dc0a 100644 --- a/src/Controls/src/Core/HandlerImpl/Entry/Entry.iOS.cs +++ b/src/Controls/src/Core/HandlerImpl/Entry/Entry.iOS.cs @@ -2,6 +2,11 @@ { public partial class Entry { + public static void MapCursorColor(EntryHandler handler, Entry entry) + { + Platform.TextExtensions.UpdateCursorColor(handler.PlatformView, entry); + } + public static void MapText(EntryHandler handler, Entry entry) { Platform.TextExtensions.UpdateText(handler.PlatformView, entry); diff --git a/src/Controls/src/Core/Platform/iOS/Extensions/TextExtensions.cs b/src/Controls/src/Core/Platform/iOS/Extensions/TextExtensions.cs index a04051fde43f..83c48fbcf3d3 100644 --- a/src/Controls/src/Core/Platform/iOS/Extensions/TextExtensions.cs +++ b/src/Controls/src/Core/Platform/iOS/Extensions/TextExtensions.cs @@ -1,14 +1,23 @@ -using System; -using System.Collections.Generic; -using System.Text; -using Microsoft.Maui.Platform; -using Microsoft.Maui.Controls.Internals; +using Microsoft.Maui.Controls.Internals; using UIKit; +using Microsoft.Maui.Controls.PlatformConfiguration.iOSSpecific; +using Specifics = Microsoft.Maui.Controls.PlatformConfiguration.iOSSpecific.Entry; namespace Microsoft.Maui.Controls.Platform { public static class TextExtensions { + public static void UpdateCursorColor(this UITextView textView, Entry entry) + { + if (entry.IsSet(Specifics.CursorColorProperty)) + { + var color = entry.OnThisPlatform().GetCursorColor(); + + if (color != null) + textView.TintColor = color.ToPlatform(); + } + } + public static void UpdateText(this UITextView textView, InputView inputView) { textView.Text = TextTransformUtilites.GetTransformedText(inputView.Text, inputView.TextTransform); @@ -19,4 +28,4 @@ public static void UpdateText(this UITextField textField, InputView inputView) textField.Text = TextTransformUtilites.GetTransformedText(inputView.Text, inputView.TextTransform); } } -} +} \ No newline at end of file From 22d7c4ea1af1fb04eb9f95c20c2a8bf0ec8dcddf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Su=C3=A1rez=20Ruiz?= Date: Thu, 7 Apr 2022 17:57:53 +0200 Subject: [PATCH 02/16] Implement iOS SearchBar SearchBarStyle Platform Specific --- .../Core/src/iOS/Renderers/SearchBarRenderer.cs | 1 + .../src/Core/HandlerImpl/SearchBar/SearchBar.cs | 13 ++++++++----- .../src/Core/HandlerImpl/SearchBar/SearchBar.iOS.cs | 5 +++++ .../Platform/iOS/Extensions/SearchBarExtensions.cs | 11 +++++++---- 4 files changed, 21 insertions(+), 9 deletions(-) diff --git a/src/Compatibility/Core/src/iOS/Renderers/SearchBarRenderer.cs b/src/Compatibility/Core/src/iOS/Renderers/SearchBarRenderer.cs index 192f4d5330a3..40375844f82d 100644 --- a/src/Compatibility/Core/src/iOS/Renderers/SearchBarRenderer.cs +++ b/src/Compatibility/Core/src/iOS/Renderers/SearchBarRenderer.cs @@ -440,6 +440,7 @@ UIToolbar CreateNumericKeyboardAccessoryView() return accessoryView; } + [PortHandler] void UpdateSearchBarStyle() { Control.SearchBarStyle = Element.OnThisPlatform().GetSearchBarStyle().ToPlatformSearchBarStyle(); diff --git a/src/Controls/src/Core/HandlerImpl/SearchBar/SearchBar.cs b/src/Controls/src/Core/HandlerImpl/SearchBar/SearchBar.cs index 645a5d05e20e..2801a20d6c6b 100644 --- a/src/Controls/src/Core/HandlerImpl/SearchBar/SearchBar.cs +++ b/src/Controls/src/Core/HandlerImpl/SearchBar/SearchBar.cs @@ -2,12 +2,15 @@ { public partial class SearchBar { - public static IPropertyMapper ControlsSearchBarMapper = + public static IPropertyMapper ControlsSearchBarMapper = new PropertyMapper(SearchBarHandler.Mapper) - { - [nameof(Text)] = MapText, - [nameof(TextTransform)] = MapText, - }; + { +#if IOS + [PlatformConfiguration.iOSSpecific.SearchBar.SearchBarStyleProperty.PropertyName] = MapSearchBarStyle, +#endif + [nameof(Text)] = MapText, + [nameof(TextTransform)] = MapText, + }; internal static new void RemapForControls() { diff --git a/src/Controls/src/Core/HandlerImpl/SearchBar/SearchBar.iOS.cs b/src/Controls/src/Core/HandlerImpl/SearchBar/SearchBar.iOS.cs index 82563bf86abf..2b96524dc05f 100644 --- a/src/Controls/src/Core/HandlerImpl/SearchBar/SearchBar.iOS.cs +++ b/src/Controls/src/Core/HandlerImpl/SearchBar/SearchBar.iOS.cs @@ -2,6 +2,11 @@ { public partial class SearchBar { + public static void MapSearchBarStyle(SearchBarHandler handler, SearchBar searchBar) + { + Platform.SearchBarExtensions.UpdateSearchBarStyle(handler.PlatformView, searchBar); + } + public static void MapText(SearchBarHandler handler, SearchBar searchBar) { Platform.SearchBarExtensions.UpdateText(handler.PlatformView, searchBar); diff --git a/src/Controls/src/Core/Platform/iOS/Extensions/SearchBarExtensions.cs b/src/Controls/src/Core/Platform/iOS/Extensions/SearchBarExtensions.cs index de883cf0b3f4..3061042c848b 100644 --- a/src/Controls/src/Core/Platform/iOS/Extensions/SearchBarExtensions.cs +++ b/src/Controls/src/Core/Platform/iOS/Extensions/SearchBarExtensions.cs @@ -1,13 +1,16 @@ -using System; -using System.Collections.Generic; -using System.Text; -using UIKit; +using UIKit; using Microsoft.Maui.Controls.Internals; +using Microsoft.Maui.Controls.PlatformConfiguration.iOSSpecific; namespace Microsoft.Maui.Controls.Platform { public static class SearchBarExtensions { + public static void UpdateSearchBarStyle(this UISearchBar uiSearchBar, SearchBar searchBar) + { + uiSearchBar.SearchBarStyle = searchBar.OnThisPlatform().GetSearchBarStyle().ToPlatformSearchBarStyle(); + } + public static void UpdateText(this UISearchBar uiSearchBar, SearchBar searchBar) { uiSearchBar.Text = TextTransformUtilites.GetTransformedText(searchBar.Text, searchBar.TextTransform); From 8e408d6e4666d5c5aa1af4b49dadeb7029f7d99e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Su=C3=A1rez=20Ruiz?= Date: Thu, 7 Apr 2022 18:14:04 +0200 Subject: [PATCH 03/16] Added Platform Specifics sample --- .../Controls.Sample/Controls/EnumPicker.cs | 34 ++++ .../Controls.Sample/Models/ContextMenuItem.cs | 10 ++ .../Models/ContextMenuItemType.cs | 8 + .../Controls.Sample/Models/Grouping.cs | 19 +++ .../samples/Controls.Sample/Models/Person.cs | 18 +++ .../Android/AndroidButtonPage.xaml | 31 ++++ .../Android/AndroidButtonPage.xaml.cs | 12 ++ .../Android/AndroidEntryPage.xaml | 30 ++++ .../Android/AndroidEntryPage.xaml.cs | 22 +++ .../AndroidListViewFastScrollPage.xaml | 26 ++++ .../AndroidListViewFastScrollPage.xaml.cs | 22 +++ .../Android/AndroidNavigationPage.xaml | 8 + .../Android/AndroidNavigationPage.xaml.cs | 13 ++ .../AndroidSoftInputModeAdjustPage.xaml | 15 ++ .../AndroidSoftInputModeAdjustPage.xaml.cs | 25 +++ .../AndroidSwipeViewTransitionModePage.xaml | 39 +++++ ...AndroidSwipeViewTransitionModePage.xaml.cs | 28 ++++ .../Android/AndroidTabbedPageSwipePage.xaml | 43 ++++++ .../AndroidTabbedPageSwipePage.xaml.cs | 34 ++++ .../Android/AndroidTitleViewPage.xaml | 16 ++ .../Android/AndroidTitleViewPage.xaml.cs | 30 ++++ .../Android/AndroidWebViewPage.xaml | 10 ++ .../Android/AndroidWebViewPage.xaml.cs | 12 ++ .../Android/AndroidWebViewZoomPage.xaml | 11 ++ .../Android/AndroidWebViewZoomPage.xaml.cs | 12 ++ .../AddRemoveToolbarItemsContentView.xaml | 11 ++ .../AddRemoveToolbarItemsContentView.xaml.cs | 49 ++++++ .../CollapseStyleChangerContentView.xaml | 10 ++ .../CollapseStyleChangerContentView.xaml.cs | 48 ++++++ .../CollapseWidthAdjusterContentView.xaml | 11 ++ .../CollapseWidthAdjusterContentView.xaml.cs | 40 +++++ .../Windows/ContentPageTwo.xaml | 11 ++ .../Windows/ContentPageTwo.xaml.cs | 22 +++ .../ToolbarPlacementChangerContentView.xaml | 10 ++ ...ToolbarPlacementChangerContentView.xaml.cs | 49 ++++++ .../Windows/WindowsListViewPage.xaml | 37 +++++ .../Windows/WindowsListViewPage.xaml.cs | 46 ++++++ .../WindowsPlatformSpecificsHelpers.cs | 100 ++++++++++++ .../Windows/WindowsReadingOrderPage.xaml | 15 ++ .../Windows/WindowsReadingOrderPage.xaml.cs | 26 ++++ .../Windows/WindowsRefreshViewPage.xaml | 51 ++++++ .../Windows/WindowsRefreshViewPage.xaml.cs | 22 +++ .../Windows/WindowsSearchBarPage.xaml | 12 ++ .../Windows/WindowsSearchBarPage.xaml.cs | 19 +++ .../WindowsVisualElementAccessKeysPage.xaml | 61 ++++++++ ...WindowsVisualElementAccessKeysPage.xaml.cs | 28 ++++ .../Windows/WindowsWebViewPage.xaml | 16 ++ .../Windows/WindowsWebViewPage.xaml.cs | 24 +++ .../iOS/iOSBlurEffectPage.xaml | 21 +++ .../iOS/iOSBlurEffectPage.xaml.cs | 35 +++++ .../iOS/iOSDatePickerPage.xaml | 16 ++ .../iOS/iOSDatePickerPage.xaml.cs | 29 ++++ .../PlatformSpecifics/iOS/iOSEntryPage.xaml | 12 ++ .../iOS/iOSEntryPage.xaml.cs | 20 +++ .../iOS/iOSFirstResponderPage.xaml | 17 ++ .../iOS/iOSFirstResponderPage.xaml.cs | 12 ++ .../PlatformSpecifics/iOS/iOSFlyoutPage.xaml | 34 ++++ .../iOS/iOSFlyoutPage.xaml.cs | 28 ++++ .../iOS/iOSHideHomeIndicatorPage.xaml | 14 ++ .../iOS/iOSHideHomeIndicatorPage.xaml.cs | 20 +++ .../iOS/iOSLargeTitlePage.xaml | 12 ++ .../iOS/iOSLargeTitlePage.xaml.cs | 40 +++++ .../iOS/iOSListViewPage.xaml | 32 ++++ .../iOS/iOSListViewPage.xaml.cs | 14 ++ .../iOS/iOSListViewWithCellPage.xaml | 41 +++++ .../iOS/iOSListViewWithCellPage.xaml.cs | 14 ++ .../iOS/iOSModalPagePresentationStyle.xaml | 13 ++ .../iOS/iOSModalPagePresentationStyle.xaml.cs | 18 +++ .../iOS/iOSNavigationPage.xaml | 10 ++ .../iOS/iOSNavigationPage.xaml.cs | 13 ++ .../iOS/iOSPanGestureRecognizerPage.xaml | 31 ++++ .../iOS/iOSPanGestureRecognizerPage.xaml.cs | 28 ++++ .../PlatformSpecifics/iOS/iOSPickerPage.xaml | 24 +++ .../iOS/iOSPickerPage.xaml.cs | 28 ++++ .../iOS/iOSSafeAreaPage.xaml | 14 ++ .../iOS/iOSSafeAreaPage.xaml.cs | 21 +++ .../iOS/iOSScrollViewPage.xaml | 20 +++ .../iOS/iOSScrollViewPage.xaml.cs | 28 ++++ .../iOS/iOSSearchBarPage.xaml | 17 ++ .../iOS/iOSSearchBarPage.xaml.cs | 37 +++++ .../iOS/iOSSliderUpdateOnTapPage.xaml | 13 ++ .../iOS/iOSSliderUpdateOnTapPage.xaml.cs | 20 +++ .../iOS/iOSStatusBarPage.xaml | 12 ++ .../iOS/iOSStatusBarPage.xaml.cs | 47 ++++++ .../iOS/iOSSwipeViewTransitionModePage.xaml | 38 +++++ .../iOSSwipeViewTransitionModePage.xaml.cs | 28 ++++ .../iOS/iOSTimePickerPage.xaml | 15 ++ .../iOS/iOSTimePickerPage.xaml.cs | 28 ++++ .../iOS/iOSTitleViewNavigationPage.xaml | 10 ++ .../iOS/iOSTitleViewNavigationPage.xaml.cs | 13 ++ .../iOS/iOSTitleViewPage.xaml | 16 ++ .../iOS/iOSTitleViewPage.xaml.cs | 24 +++ .../iOS/iOSTranslucentNavigationBarPage.xaml | 12 ++ .../iOSTranslucentNavigationBarPage.xaml.cs | 29 ++++ .../iOS/iOSTranslucentTabbedPage.xaml | 35 +++++ .../iOS/iOSTranslucentTabbedPage.xaml.cs | 39 +++++ .../Pages/PlatformSpecificsPage.xaml | 81 ++++++++++ .../Pages/PlatformSpecificsPage.xaml.cs | 10 ++ .../AndroidViewCellPageViewModel.cs | 71 +++++++++ .../ViewModels/ListViewViewModel.cs | 26 ++++ .../ViewModels/PlatformSpecificsViewModel.cs | 146 ++++++++++++++++++ .../WindowsRefreshViewPageViewModel.cs | 73 +++++++++ .../Platform/iOS/Extensions/TextExtensions.cs | 4 +- 103 files changed, 2747 insertions(+), 2 deletions(-) create mode 100644 src/Controls/samples/Controls.Sample/Controls/EnumPicker.cs create mode 100644 src/Controls/samples/Controls.Sample/Models/ContextMenuItem.cs create mode 100644 src/Controls/samples/Controls.Sample/Models/ContextMenuItemType.cs create mode 100644 src/Controls/samples/Controls.Sample/Models/Grouping.cs create mode 100644 src/Controls/samples/Controls.Sample/Models/Person.cs create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/Android/AndroidButtonPage.xaml create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/Android/AndroidButtonPage.xaml.cs create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/Android/AndroidEntryPage.xaml create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/Android/AndroidEntryPage.xaml.cs create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/Android/AndroidListViewFastScrollPage.xaml create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/Android/AndroidListViewFastScrollPage.xaml.cs create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/Android/AndroidNavigationPage.xaml create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/Android/AndroidNavigationPage.xaml.cs create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/Android/AndroidSoftInputModeAdjustPage.xaml create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/Android/AndroidSoftInputModeAdjustPage.xaml.cs create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/Android/AndroidSwipeViewTransitionModePage.xaml create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/Android/AndroidSwipeViewTransitionModePage.xaml.cs create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/Android/AndroidTabbedPageSwipePage.xaml create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/Android/AndroidTabbedPageSwipePage.xaml.cs create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/Android/AndroidTitleViewPage.xaml create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/Android/AndroidTitleViewPage.xaml.cs create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/Android/AndroidWebViewPage.xaml create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/Android/AndroidWebViewPage.xaml.cs create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/Android/AndroidWebViewZoomPage.xaml create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/Android/AndroidWebViewZoomPage.xaml.cs create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/Windows/AddRemoveToolbarItemsContentView.xaml create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/Windows/AddRemoveToolbarItemsContentView.xaml.cs create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/Windows/CollapseStyleChangerContentView.xaml create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/Windows/CollapseStyleChangerContentView.xaml.cs create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/Windows/CollapseWidthAdjusterContentView.xaml create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/Windows/CollapseWidthAdjusterContentView.xaml.cs create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/Windows/ContentPageTwo.xaml create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/Windows/ContentPageTwo.xaml.cs create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/Windows/ToolbarPlacementChangerContentView.xaml create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/Windows/ToolbarPlacementChangerContentView.xaml.cs create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/Windows/WindowsListViewPage.xaml create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/Windows/WindowsListViewPage.xaml.cs create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/Windows/WindowsPlatformSpecificsHelpers.cs create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/Windows/WindowsReadingOrderPage.xaml create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/Windows/WindowsReadingOrderPage.xaml.cs create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/Windows/WindowsRefreshViewPage.xaml create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/Windows/WindowsRefreshViewPage.xaml.cs create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/Windows/WindowsSearchBarPage.xaml create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/Windows/WindowsSearchBarPage.xaml.cs create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/Windows/WindowsVisualElementAccessKeysPage.xaml create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/Windows/WindowsVisualElementAccessKeysPage.xaml.cs create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/Windows/WindowsWebViewPage.xaml create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/Windows/WindowsWebViewPage.xaml.cs create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/iOS/iOSBlurEffectPage.xaml create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/iOS/iOSBlurEffectPage.xaml.cs create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/iOS/iOSDatePickerPage.xaml create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/iOS/iOSDatePickerPage.xaml.cs create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/iOS/iOSEntryPage.xaml create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/iOS/iOSEntryPage.xaml.cs create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/iOS/iOSFirstResponderPage.xaml create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/iOS/iOSFirstResponderPage.xaml.cs create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/iOS/iOSFlyoutPage.xaml create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/iOS/iOSFlyoutPage.xaml.cs create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/iOS/iOSHideHomeIndicatorPage.xaml create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/iOS/iOSHideHomeIndicatorPage.xaml.cs create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/iOS/iOSLargeTitlePage.xaml create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/iOS/iOSLargeTitlePage.xaml.cs create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/iOS/iOSListViewPage.xaml create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/iOS/iOSListViewPage.xaml.cs create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/iOS/iOSListViewWithCellPage.xaml create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/iOS/iOSListViewWithCellPage.xaml.cs create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/iOS/iOSModalPagePresentationStyle.xaml create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/iOS/iOSModalPagePresentationStyle.xaml.cs create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/iOS/iOSNavigationPage.xaml create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/iOS/iOSNavigationPage.xaml.cs create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/iOS/iOSPanGestureRecognizerPage.xaml create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/iOS/iOSPanGestureRecognizerPage.xaml.cs create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/iOS/iOSPickerPage.xaml create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/iOS/iOSPickerPage.xaml.cs create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/iOS/iOSSafeAreaPage.xaml create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/iOS/iOSSafeAreaPage.xaml.cs create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/iOS/iOSScrollViewPage.xaml create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/iOS/iOSScrollViewPage.xaml.cs create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/iOS/iOSSearchBarPage.xaml create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/iOS/iOSSearchBarPage.xaml.cs create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/iOS/iOSSliderUpdateOnTapPage.xaml create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/iOS/iOSSliderUpdateOnTapPage.xaml.cs create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/iOS/iOSStatusBarPage.xaml create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/iOS/iOSStatusBarPage.xaml.cs create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/iOS/iOSSwipeViewTransitionModePage.xaml create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/iOS/iOSSwipeViewTransitionModePage.xaml.cs create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/iOS/iOSTimePickerPage.xaml create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/iOS/iOSTimePickerPage.xaml.cs create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/iOS/iOSTitleViewNavigationPage.xaml create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/iOS/iOSTitleViewNavigationPage.xaml.cs create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/iOS/iOSTitleViewPage.xaml create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/iOS/iOSTitleViewPage.xaml.cs create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/iOS/iOSTranslucentNavigationBarPage.xaml create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/iOS/iOSTranslucentNavigationBarPage.xaml.cs create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/iOS/iOSTranslucentTabbedPage.xaml create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/iOS/iOSTranslucentTabbedPage.xaml.cs create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecificsPage.xaml create mode 100644 src/Controls/samples/Controls.Sample/Pages/PlatformSpecificsPage.xaml.cs create mode 100644 src/Controls/samples/Controls.Sample/ViewModels/AndroidViewCellPageViewModel.cs create mode 100644 src/Controls/samples/Controls.Sample/ViewModels/ListViewViewModel.cs create mode 100644 src/Controls/samples/Controls.Sample/ViewModels/PlatformSpecificsViewModel.cs create mode 100644 src/Controls/samples/Controls.Sample/ViewModels/WindowsRefreshViewPageViewModel.cs diff --git a/src/Controls/samples/Controls.Sample/Controls/EnumPicker.cs b/src/Controls/samples/Controls.Sample/Controls/EnumPicker.cs new file mode 100644 index 000000000000..e030ad9341a3 --- /dev/null +++ b/src/Controls/samples/Controls.Sample/Controls/EnumPicker.cs @@ -0,0 +1,34 @@ +using System; +using System.Reflection; +using Microsoft.Maui.Controls; + +namespace Maui.Controls.Sample.Controls +{ + class EnumPicker : Picker + { + public static readonly BindableProperty EnumTypeProperty = + BindableProperty.Create(nameof(EnumType), typeof(Type), typeof(EnumPicker), + propertyChanged: (bindable, oldValue, newValue) => + { + EnumPicker picker = (EnumPicker)bindable; + + if (oldValue != null) + { + picker.ItemsSource = null; + } + if (newValue != null) + { + if (!((Type)newValue).GetTypeInfo().IsEnum) + throw new ArgumentException("EnumPicker: EnumType property must be enumeration type"); + + picker.ItemsSource = Enum.GetValues((Type)newValue); + } + }); + + public Type EnumType + { + set => SetValue(EnumTypeProperty, value); + get => (Type)GetValue(EnumTypeProperty); + } + } +} diff --git a/src/Controls/samples/Controls.Sample/Models/ContextMenuItem.cs b/src/Controls/samples/Controls.Sample/Models/ContextMenuItem.cs new file mode 100644 index 000000000000..6aba2e5d06d3 --- /dev/null +++ b/src/Controls/samples/Controls.Sample/Models/ContextMenuItem.cs @@ -0,0 +1,10 @@ +namespace Maui.Controls.Sample.Models +{ + public class ContextMenuItem + { + public ContextMenuItemType Type { get; set; } + public string Item1Text { get; set; } = "Item 1"; + public string Item2Text { get; set; } = "Item 2"; + public string Text { get; set; } + } +} diff --git a/src/Controls/samples/Controls.Sample/Models/ContextMenuItemType.cs b/src/Controls/samples/Controls.Sample/Models/ContextMenuItemType.cs new file mode 100644 index 000000000000..cc4366e66e62 --- /dev/null +++ b/src/Controls/samples/Controls.Sample/Models/ContextMenuItemType.cs @@ -0,0 +1,8 @@ +namespace Maui.Controls.Sample.Models +{ + public enum ContextMenuItemType + { + OneItem, + TwoItems + } +} \ No newline at end of file diff --git a/src/Controls/samples/Controls.Sample/Models/Grouping.cs b/src/Controls/samples/Controls.Sample/Models/Grouping.cs new file mode 100644 index 000000000000..66a0ddfce345 --- /dev/null +++ b/src/Controls/samples/Controls.Sample/Models/Grouping.cs @@ -0,0 +1,19 @@ +using System.Collections.Generic; +using System.Collections.ObjectModel; + +namespace Maui.Controls.Sample.Models +{ + public class Grouping : ObservableCollection + { + public K Key { get; private set; } + + public Grouping(K key, IEnumerable items) + { + Key = key; + foreach (T item in items) + { + Items.Add(item); + } + } + } +} \ No newline at end of file diff --git a/src/Controls/samples/Controls.Sample/Models/Person.cs b/src/Controls/samples/Controls.Sample/Models/Person.cs new file mode 100644 index 000000000000..cf5891f87f7a --- /dev/null +++ b/src/Controls/samples/Controls.Sample/Models/Person.cs @@ -0,0 +1,18 @@ +namespace Maui.Controls.Sample.Models +{ + public class Person + { + public string Name { get; private set; } + + public int Age { get; private set; } + + public string Location { get; private set; } + + public Person(string name, int age, string location) + { + Name = name; + Age = age; + Location = location; + } + } +} \ No newline at end of file diff --git a/src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/Android/AndroidButtonPage.xaml b/src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/Android/AndroidButtonPage.xaml new file mode 100644 index 000000000000..23b3f7da505a --- /dev/null +++ b/src/Controls/samples/Controls.Sample/Pages/PlatformSpecifics/Android/AndroidButtonPage.xaml @@ -0,0 +1,31 @@ + + + +