From 47ae524fde23836dfddc9a0b9f2efd286ac65253 Mon Sep 17 00:00:00 2001 From: michael-hawker <24302614+michael-hawker@users.noreply.github.com> Date: Wed, 30 Aug 2023 09:43:19 -0700 Subject: [PATCH 1/2] Fixes #489 and removes Segmented Control and StackedNotificationsBehavior Migrated to main Toolkit repo https://github.com/CommunityToolkit/Windows StackedNotificationsBehavior to Behaviors package and SegmentedControl to Segmented component --- components/SegmentedControl/OpenSolution.bat | 3 - .../samples/Assets/Segmented.png | Bin 2366 -> 0 bytes .../samples/Dependencies.props | 31 - .../samples/SegmentedControl.Samples.csproj | 8 - .../samples/SegmentedControl.md | 28 - .../samples/SegmentedControlBasicSample.xaml | 63 - .../SegmentedControlBasicSample.xaml.cs | 41 - .../samples/SegmentedControlStylesSample.xaml | 55 - .../SegmentedControlStylesSample.xaml.cs | 25 - ...Toolkit.Labs.WinUI.SegmentedControl.csproj | 12 - .../SegmentedControl/src/Dependencies.props | 31 - components/SegmentedControl/src/EqualPanel.cs | 101 -- .../src/Helpers/ControlHelpers.cs | 9 - .../src/Helpers/SegmentedMarginConverter.cs | 78 -- .../SegmentedControl/src/MultiTarget.props | 9 - .../src/Segmented/Segmented.cs | 145 --- .../src/Segmented/Segmented.xaml | 120 -- .../SegmentedItem/SegmentedItem.Properties.cs | 26 - .../src/SegmentedItem/SegmentedItem.cs | 60 - .../src/SegmentedItem/SegmentedItem.xaml | 1098 ----------------- .../SegmentedControl/src/Themes/Generic.xaml | 8 - .../tests/ExampleSegmentedControlTestClass.cs | 133 -- .../ExampleSegmentedControlTestPage.xaml | 14 - .../ExampleSegmentedControlTestPage.xaml.cs | 16 - .../tests/SegmentedControl.Tests.projitems | 23 - .../tests/SegmentedControl.Tests.shproj | 13 - .../OpenSolution.bat | 3 - .../Assets/StackedNotificationsBehavior.png | Bin 3920 -> 0 bytes .../samples/Dependencies.props | 31 - ...tackedNotificationsBehavior.Samples.csproj | 9 - .../samples/StackedNotificationsBehavior.md | 19 - ...ckedNotificationsBehaviorCustomSample.xaml | 28 - ...dNotificationsBehaviorCustomSample.xaml.cs | 45 - ....WinUI.StackedNotificationsBehavior.csproj | 12 - .../src/Dependencies.props | 31 - .../src/MultiTarget.props | 9 - .../src/Notification.cs | 112 -- .../src/StackedNotificationsBehavior.cs | 211 ---- ...leStackedNotificationsBehaviorTestClass.cs | 52 - ...ackedNotificationsBehavior.Tests.projitems | 14 - .../StackedNotificationsBehavior.Tests.shproj | 13 - 41 files changed, 2739 deletions(-) delete mode 100644 components/SegmentedControl/OpenSolution.bat delete mode 100644 components/SegmentedControl/samples/Assets/Segmented.png delete mode 100644 components/SegmentedControl/samples/Dependencies.props delete mode 100644 components/SegmentedControl/samples/SegmentedControl.Samples.csproj delete mode 100644 components/SegmentedControl/samples/SegmentedControl.md delete mode 100644 components/SegmentedControl/samples/SegmentedControlBasicSample.xaml delete mode 100644 components/SegmentedControl/samples/SegmentedControlBasicSample.xaml.cs delete mode 100644 components/SegmentedControl/samples/SegmentedControlStylesSample.xaml delete mode 100644 components/SegmentedControl/samples/SegmentedControlStylesSample.xaml.cs delete mode 100644 components/SegmentedControl/src/CommunityToolkit.Labs.WinUI.SegmentedControl.csproj delete mode 100644 components/SegmentedControl/src/Dependencies.props delete mode 100644 components/SegmentedControl/src/EqualPanel.cs delete mode 100644 components/SegmentedControl/src/Helpers/ControlHelpers.cs delete mode 100644 components/SegmentedControl/src/Helpers/SegmentedMarginConverter.cs delete mode 100644 components/SegmentedControl/src/MultiTarget.props delete mode 100644 components/SegmentedControl/src/Segmented/Segmented.cs delete mode 100644 components/SegmentedControl/src/Segmented/Segmented.xaml delete mode 100644 components/SegmentedControl/src/SegmentedItem/SegmentedItem.Properties.cs delete mode 100644 components/SegmentedControl/src/SegmentedItem/SegmentedItem.cs delete mode 100644 components/SegmentedControl/src/SegmentedItem/SegmentedItem.xaml delete mode 100644 components/SegmentedControl/src/Themes/Generic.xaml delete mode 100644 components/SegmentedControl/tests/ExampleSegmentedControlTestClass.cs delete mode 100644 components/SegmentedControl/tests/ExampleSegmentedControlTestPage.xaml delete mode 100644 components/SegmentedControl/tests/ExampleSegmentedControlTestPage.xaml.cs delete mode 100644 components/SegmentedControl/tests/SegmentedControl.Tests.projitems delete mode 100644 components/SegmentedControl/tests/SegmentedControl.Tests.shproj delete mode 100644 components/StackedNotificationsBehavior/OpenSolution.bat delete mode 100644 components/StackedNotificationsBehavior/samples/Assets/StackedNotificationsBehavior.png delete mode 100644 components/StackedNotificationsBehavior/samples/Dependencies.props delete mode 100644 components/StackedNotificationsBehavior/samples/StackedNotificationsBehavior.Samples.csproj delete mode 100644 components/StackedNotificationsBehavior/samples/StackedNotificationsBehavior.md delete mode 100644 components/StackedNotificationsBehavior/samples/StackedNotificationsBehaviorCustomSample.xaml delete mode 100644 components/StackedNotificationsBehavior/samples/StackedNotificationsBehaviorCustomSample.xaml.cs delete mode 100644 components/StackedNotificationsBehavior/src/CommunityToolkit.Labs.WinUI.StackedNotificationsBehavior.csproj delete mode 100644 components/StackedNotificationsBehavior/src/Dependencies.props delete mode 100644 components/StackedNotificationsBehavior/src/MultiTarget.props delete mode 100644 components/StackedNotificationsBehavior/src/Notification.cs delete mode 100644 components/StackedNotificationsBehavior/src/StackedNotificationsBehavior.cs delete mode 100644 components/StackedNotificationsBehavior/tests/ExampleStackedNotificationsBehaviorTestClass.cs delete mode 100644 components/StackedNotificationsBehavior/tests/StackedNotificationsBehavior.Tests.projitems delete mode 100644 components/StackedNotificationsBehavior/tests/StackedNotificationsBehavior.Tests.shproj diff --git a/components/SegmentedControl/OpenSolution.bat b/components/SegmentedControl/OpenSolution.bat deleted file mode 100644 index 814a56d4b..000000000 --- a/components/SegmentedControl/OpenSolution.bat +++ /dev/null @@ -1,3 +0,0 @@ -@ECHO OFF - -powershell ..\..\tooling\ProjectHeads\GenerateSingleSampleHeads.ps1 -componentPath %CD% %* \ No newline at end of file diff --git a/components/SegmentedControl/samples/Assets/Segmented.png b/components/SegmentedControl/samples/Assets/Segmented.png deleted file mode 100644 index ba9ad789deff1e197472c2d763f8128cf53a1fc3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2366 zcmV-E3BmS>P);M1&0drDELIAGL9O(c600d`2O+f$vv5yP|-DM*vCFT!-4w0 zum0?x@6L!%fbsMC2q$^SY;*F#DE~17+Xk7|?=p!D1Wc1XZ$zLgSbvetAQLl_A4Ej9 zg>_EXHJzAbe-nwaw5doD9AYTv<t z$Thd<`)^%{qq0OHzlC92qkSRyo{W+jm`3~g=uT$(k%)SK5e$A=cV^_mh%rQi7dgC$ z;6gHDZe&CV%1DB~CY+)3Cd#9Mm(dGl0|5g<%%|MX2xw;oT1%NW#I=m zE)7aZIv-S`ZiMRH&77fFA50n!;t__HQ)WoBqYQGU zq2+u;wggcyo^U9+77K9U6*~KXaX4Qjz6npZ8rFqY70T+5A00EWCMg<&8I zXHE*}qPtMn67)!g6EMsG8V-ph!=z@5Ud)?uYr17nW>h|sim5!B-owsZZlw8`9OXoj zJk)Dir)@|lF*J6FY3{V3ssRC9WTbKlB3c5yX8na1zceUwBO+&omAHqzhdw%#iij~7 zauAYrAD&m4{N(UVrb~N*``zhdLRFdn`&pVKQ2aXxU=CM<~tO z9CykPoq%J)BD6FGy)B|jEX;!KEtaSu#B*)w%>c_8ovAXH9VXd-8d1^niW2ZS|`RSeM_!1cdpF;^v`Gb?LS1o z`Hbtoo&%iDY)VpL7&MU(nspINc-uT8-+4a5tH)o0X*w|8yoBj=gD6o!ca|3~G1QZh zA(JthM03dc;7wSsu0y6fbWzIImF;|n_rCoWzOkqWn?*>CPy+JLG*Pz^XDGJ;pKBpK68dg(V>|8xyym* z0POdCcLVDe-tuA{ZSo>^h-E9#-JM1Z*0q_Zo3%FMXBk|75m~sN8noLRz}t^;UhgVN zvDb_aDXip#DJfQ2=k6oq;}y^6R{^b*5lk0MHp)z>)^puEA0koBIDyJp6hEK&zyG^| zH?QVU+6~gfM}zzsZ;XBM@hfr8E#mpab2}r}!7wCvC{YS}(oZ?Ro&d!$Ab;px1t4#V z>egZ4@-zD8Fgn?hI89!}tphP78J_;~FYx4>k3sKJ6h&NfE59e9=pKsaFK<`)-3PuO z9$W){^g_6OH8{~d1&gwWh{(rsfb-Quk$b{B3Fq;2iahiDg4Z}{G+Ll1``=LZ)Y_mt zmPK4|qLbw248Q(6!LR=Mfmn3%D(`7w1vUCWE4JBtf#e;`GtzXF5FACT1KfS_ZD555 zQFS35N@TS!Bga~=G+kmjGd3Z$BCqeMb>ANE#){SdMJ+w0<^^I8+JfaI~X<7G*N;1oXMri*ihsjOc|_55MVKTjsu(I;Zo-H}dNNtC2jl zfD4EWW^I~Nxi4a>1w=|w zG!@=+B2nIYvninL5-^jW>za_air(OQpBDx=NpTW~|1}u;G4LO~-bKF@J!>ZzzabEp zVbrQa;e0pI88`bb?l)zs8?!5$jbyb;;{w{`g|Bas9(m_+f*5+c?uda^y=RQM-UCA2 z;UIJ|>CK{%q0>@;8FEU(pkmt6H)s=vD@TxoHI06^8t58QP{J+QDWk}nh~Y-@s)O;e zCW|`o#XjP(;3oC%Z`v#uP%+m60N zd}~;oTgC@m^YU6OOi{##NKwCdVcf2{dv=H#)E%gMaB~nBLslMeL5yK@acmvB1I=eH zM1EWvmU4!Cj&;Vu!IqW^87*g)xF1n<0)8dv6ugbZXdu^}Du^IzS-&A;&G9EdlroYC zd0&DJ^l<5j&Mtl$6Sb#7js!s+h!vf|MNC2tKISf(dCb!xuMHH)I( z`IuYWRtCqE*ZUqGFRETT!T|vH$%s5PAxHf41>lF$L_D!_Y0rQ7$FB&BzAIhwBhY^Y zS+&cE9LobT=j>2`ez<;J;{dw9=HB|)GoG=L^}6#e=ctx!#w3OTK7(I8{SfxCkA3W8 kAN$zHKK8MXeSEs{e-eMuvMAKBHvj+t07*qoM6N<$f;)b2mjD0& diff --git a/components/SegmentedControl/samples/Dependencies.props b/components/SegmentedControl/samples/Dependencies.props deleted file mode 100644 index e622e1df4..000000000 --- a/components/SegmentedControl/samples/Dependencies.props +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/components/SegmentedControl/samples/SegmentedControl.Samples.csproj b/components/SegmentedControl/samples/SegmentedControl.Samples.csproj deleted file mode 100644 index ce157cc0c..000000000 --- a/components/SegmentedControl/samples/SegmentedControl.Samples.csproj +++ /dev/null @@ -1,8 +0,0 @@ - - - SegmentedControl - - - - - diff --git a/components/SegmentedControl/samples/SegmentedControl.md b/components/SegmentedControl/samples/SegmentedControl.md deleted file mode 100644 index c381cd75b..000000000 --- a/components/SegmentedControl/samples/SegmentedControl.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: SegmentedControl -author: niels9001 -description: A common UI control to configure a view or setting. -keywords: SegmentedControl, Control, Layout -dev_langs: - - csharp -category: Controls -subcategory: Input -discussion-id: 314 -issue-id: 392 -icon: Assets/Segmented.png ---- - -## The basics - -The `Segmented` control is best used with 2-5 items and does not support overflow. The `Icon` and `Content` property can be set on the `SegmentedItems`. - -> [!Sample SegmentedControlBasicSample] - -## Selection -`Segmented` supports single and multi-selection. When `SelectionMode` is set to `Single` the first item will be selected by default. This can be overriden by settings `AutoSelection` to `false`. - -## Other styles - -The `Segmented` control contains various additional styles, to match the look and feel of your application. The `PivotSegmentedStyle` matches a modern `Pivot` style while the `ButtonSegmentedStyle` represents buttons. - -> [!SAMPLE SegmentedControlStylesSample] diff --git a/components/SegmentedControl/samples/SegmentedControlBasicSample.xaml b/components/SegmentedControl/samples/SegmentedControlBasicSample.xaml deleted file mode 100644 index a12b007f7..000000000 --- a/components/SegmentedControl/samples/SegmentedControlBasicSample.xaml +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/components/SegmentedControl/samples/SegmentedControlBasicSample.xaml.cs b/components/SegmentedControl/samples/SegmentedControlBasicSample.xaml.cs deleted file mode 100644 index 9a8904f7d..000000000 --- a/components/SegmentedControl/samples/SegmentedControlBasicSample.xaml.cs +++ /dev/null @@ -1,41 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using Microsoft.UI.Xaml.Controls; -using CommunityToolkit.Labs.WinUI; - -namespace SegmentedControlExperiment.Samples; - -/// -/// An example sample page of a Segmented control. -/// -[ToolkitSampleMultiChoiceOption("SelectionMode", "Single", "Multiple", Title = "Selection mode")] -[ToolkitSampleMultiChoiceOption("Alignment", "Left", "Center", "Right", "Stretch", Title = "Horizontal alignment")] - -[ToolkitSample(id: nameof(SegmentedControlBasicSample), "Basics", description: $"A sample for showing how to create and use a {nameof(Segmented)} custom control.")] -public sealed partial class SegmentedControlBasicSample : Page -{ - public SegmentedControlBasicSample() - { - this.InitializeComponent(); - } - - // TODO: See https://github.com/CommunityToolkit/Labs-Windows/issues/149 - public static ListViewSelectionMode ConvertStringToSelectionMode(string selectionMode) => selectionMode switch - { - "Single" => ListViewSelectionMode.Single, - "Multiple" => ListViewSelectionMode.Multiple, - _ => throw new System.NotImplementedException(), - }; - - public static HorizontalAlignment ConvertStringToHorizontalAlignment(string alignment) => alignment switch - { - "Left" => HorizontalAlignment.Left, - "Center" => HorizontalAlignment.Center, - "Right" => HorizontalAlignment.Right, - "Stretch" => HorizontalAlignment.Stretch, - _ => throw new System.NotImplementedException(), - }; -} - diff --git a/components/SegmentedControl/samples/SegmentedControlStylesSample.xaml b/components/SegmentedControl/samples/SegmentedControlStylesSample.xaml deleted file mode 100644 index 320efeb66..000000000 --- a/components/SegmentedControl/samples/SegmentedControlStylesSample.xaml +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - - - - - - Item 1 - Item 2 - Item with long label - Item 4 - - - - - - - - - - - - - - - - - - - - - - diff --git a/components/SegmentedControl/samples/SegmentedControlStylesSample.xaml.cs b/components/SegmentedControl/samples/SegmentedControlStylesSample.xaml.cs deleted file mode 100644 index 46c9f542c..000000000 --- a/components/SegmentedControl/samples/SegmentedControlStylesSample.xaml.cs +++ /dev/null @@ -1,25 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -namespace SegmentedControlExperiment.Samples; - -/// -/// An sample that shows how the Segmented control has multiple built-in styles. -/// -[ToolkitSampleMultiChoiceOption("SelectionMode", "Single", "Multiple", Title = "Selection mode")] - -[ToolkitSample(id: nameof(SegmentedControlStylesSample), "Additional styles", description: "A sample on how to use different built-in styles.")] -public sealed partial class SegmentedControlStylesSample : Page -{ - public SegmentedControlStylesSample() - { - this.InitializeComponent(); - } - public static ListViewSelectionMode ConvertStringToSelectionMode(string selectionMode) => selectionMode switch - { - "Single" => ListViewSelectionMode.Single, - "Multiple" => ListViewSelectionMode.Multiple, - _ => throw new System.NotImplementedException(), - }; -} diff --git a/components/SegmentedControl/src/CommunityToolkit.Labs.WinUI.SegmentedControl.csproj b/components/SegmentedControl/src/CommunityToolkit.Labs.WinUI.SegmentedControl.csproj deleted file mode 100644 index 8c27da340..000000000 --- a/components/SegmentedControl/src/CommunityToolkit.Labs.WinUI.SegmentedControl.csproj +++ /dev/null @@ -1,12 +0,0 @@ - - - SegmentedControl - This package contains SegmentedControl. - - - CommunityToolkit.Labs.WinUI.SegmentedControlRns - - - - - diff --git a/components/SegmentedControl/src/Dependencies.props b/components/SegmentedControl/src/Dependencies.props deleted file mode 100644 index 82dae261e..000000000 --- a/components/SegmentedControl/src/Dependencies.props +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/components/SegmentedControl/src/EqualPanel.cs b/components/SegmentedControl/src/EqualPanel.cs deleted file mode 100644 index 57089992f..000000000 --- a/components/SegmentedControl/src/EqualPanel.cs +++ /dev/null @@ -1,101 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System.Data; - -namespace CommunityToolkit.Labs.WinUI; - -public partial class EqualPanel : Panel -{ - private double _maxItemWidth = 0; - private double _maxItemHeight = 0; - private int _visibleItemsCount = 0; - public double Spacing - { - get { return (double)GetValue(SpacingProperty); } - set { SetValue(SpacingProperty, value); } - } - - /// - /// Identifies the Spacing dependency property. - /// - /// The identifier for the dependency property. - public static readonly DependencyProperty SpacingProperty = DependencyProperty.Register( - nameof(Spacing), - typeof(double), - typeof(EqualPanel), - new PropertyMetadata(default(double), OnSpacingChanged)); - - public EqualPanel() - { - RegisterPropertyChangedCallback(HorizontalAlignmentProperty, OnHorizontalAlignmentChanged); - } - - protected override Size MeasureOverride(Size availableSize) - { - _maxItemWidth = 0; - _maxItemHeight = 0; - - var elements = Children.Where(static e => e.Visibility == Visibility.Visible); - _visibleItemsCount = elements.Count(); - - foreach (var child in elements) - { - child.Measure(availableSize); - _maxItemWidth = Math.Max(_maxItemWidth, child.DesiredSize.Width); - _maxItemHeight = Math.Max(_maxItemHeight, child.DesiredSize.Height); - } - - if (_visibleItemsCount > 0) - { - // Return equal widths based on the widest item - // In very specific edge cases the AvailableWidth might be infinite resulting in a crash. - if (HorizontalAlignment != HorizontalAlignment.Stretch || double.IsInfinity(availableSize.Width)) - { - return new Size((_maxItemWidth * _visibleItemsCount) + (Spacing * (_visibleItemsCount - 1)), _maxItemHeight); - } - else - { - // Equal columns based on the available width, adjust for spacing - double totalWidth = availableSize.Width - (Spacing * (_visibleItemsCount - 1)); - _maxItemWidth = totalWidth / _visibleItemsCount; - return new Size(availableSize.Width, _maxItemHeight); - } - } - else - { - return new Size(0, 0); - } - } - - protected override Size ArrangeOverride(Size finalSize) - { - double x = 0; - - // Check if there's more width available - if so, recalculate (e.g. whenever Grid.Column is set to Auto) - if (finalSize.Width > _visibleItemsCount * _maxItemWidth + (Spacing * (_visibleItemsCount - 1))) - { - MeasureOverride(finalSize); - } - - var elements = Children.Where(static e => e.Visibility == Visibility.Visible); - foreach (var child in elements) - { - child.Arrange(new Rect(x, 0, _maxItemWidth, _maxItemHeight)); - x += _maxItemWidth + Spacing; - } - return finalSize; - } - - private void OnHorizontalAlignmentChanged(DependencyObject sender, DependencyProperty dp) - { - InvalidateMeasure(); - } - - private static void OnSpacingChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) - { - var panel = (EqualPanel)d; - panel.InvalidateMeasure(); - } -} diff --git a/components/SegmentedControl/src/Helpers/ControlHelpers.cs b/components/SegmentedControl/src/Helpers/ControlHelpers.cs deleted file mode 100644 index 4bca4e707..000000000 --- a/components/SegmentedControl/src/Helpers/ControlHelpers.cs +++ /dev/null @@ -1,9 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -namespace CommunityToolkit.Labs.WinUI; -internal static partial class ControlHelpers -{ - internal static bool IsXamlRootAvailable { get; } = Windows.Foundation.Metadata.ApiInformation.IsPropertyPresent("Windows.UI.Xaml.UIElement", "XamlRoot"); -} diff --git a/components/SegmentedControl/src/Helpers/SegmentedMarginConverter.cs b/components/SegmentedControl/src/Helpers/SegmentedMarginConverter.cs deleted file mode 100644 index 06e1624b4..000000000 --- a/components/SegmentedControl/src/Helpers/SegmentedMarginConverter.cs +++ /dev/null @@ -1,78 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -namespace CommunityToolkit.Labs.WinUI; -public partial class SegmentedMarginConverter : DependencyObject, IValueConverter -{ - /// - /// Identifies the property. - /// - public static readonly DependencyProperty LeftItemMarginProperty = - DependencyProperty.Register(nameof(LeftItemMargin), typeof(Thickness), typeof(SegmentedMarginConverter), new PropertyMetadata(null)); - - /// - /// Gets or sets the margin of the first item - /// - public Thickness LeftItemMargin - { - get { return (Thickness)GetValue(LeftItemMarginProperty); } - set { SetValue(LeftItemMarginProperty, value); } - } - - /// - /// Identifies the property. - /// - public static readonly DependencyProperty MiddleItemMarginProperty = - DependencyProperty.Register(nameof(MiddleItemMargin), typeof(Thickness), typeof(SegmentedMarginConverter), new PropertyMetadata(null)); - - /// - /// Gets or sets the margin of any middle item - /// - public Thickness MiddleItemMargin - { - get { return (Thickness)GetValue(MiddleItemMarginProperty); } - set { SetValue(MiddleItemMarginProperty, value); } - } - - /// - /// Identifies the property. - /// - public static readonly DependencyProperty RightItemMarginProperty = - DependencyProperty.Register(nameof(RightItemMargin), typeof(Thickness), typeof(SegmentedMarginConverter), new PropertyMetadata(null)); - - /// - /// Gets or sets the margin of the last item - /// - public Thickness RightItemMargin - { - get { return (Thickness)GetValue(RightItemMarginProperty); } - set { SetValue(RightItemMarginProperty, value); } - } - - public object Convert(object value, Type targetType, object parameter, string language) - { - var segmentedItem = value as SegmentedItem; - var listView = ItemsControl.ItemsControlFromItemContainer(segmentedItem); - - int index = listView.IndexFromContainer(segmentedItem); - - if (index == 0) - { - return LeftItemMargin; - } - else if (index == listView.Items.Count - 1) - { - return RightItemMargin; - } - else - { - return MiddleItemMargin; - } - } - - public object ConvertBack(object value, Type targetType, object parameter, string language) - { - return value; - } -} diff --git a/components/SegmentedControl/src/MultiTarget.props b/components/SegmentedControl/src/MultiTarget.props deleted file mode 100644 index b11c19426..000000000 --- a/components/SegmentedControl/src/MultiTarget.props +++ /dev/null @@ -1,9 +0,0 @@ - - - - uwp;wasdk;wpf;wasm;linuxgtk;macos;ios;android; - - \ No newline at end of file diff --git a/components/SegmentedControl/src/Segmented/Segmented.cs b/components/SegmentedControl/src/Segmented/Segmented.cs deleted file mode 100644 index a8d72f603..000000000 --- a/components/SegmentedControl/src/Segmented/Segmented.cs +++ /dev/null @@ -1,145 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using Windows.System; - -namespace CommunityToolkit.Labs.WinUI; - -public partial class Segmented : ListViewBase -{ - private int _internalSelectedIndex = -1; - private bool _hasLoaded = false; - - public Segmented() - { - this.DefaultStyleKey = typeof(Segmented); - - RegisterPropertyChangedCallback(SelectedIndexProperty, OnSelectedIndexChanged); - } - - protected override DependencyObject GetContainerForItemOverride() => new SegmentedItem(); - - protected override bool IsItemItsOwnContainerOverride(object item) - { - return item is SegmentedItem; - } - - protected override void OnApplyTemplate() - { - base.OnApplyTemplate(); - if (!_hasLoaded) - { - SelectedIndex = _internalSelectedIndex; - _hasLoaded = true; - } - PreviewKeyDown -= Segmented_PreviewKeyDown; - PreviewKeyDown += Segmented_PreviewKeyDown; - } - - protected override void PrepareContainerForItemOverride(DependencyObject element, object item) - { - base.PrepareContainerForItemOverride(element, item); - if (element is SegmentedItem segmentedItem) - { - segmentedItem.Loaded += SegmentedItem_Loaded; - } - } - - private void Segmented_PreviewKeyDown(object sender, KeyRoutedEventArgs e) - { - switch (e.Key) - { - case VirtualKey.Left: e.Handled = MoveFocus(MoveDirection.Previous); break; - case VirtualKey.Right: e.Handled = MoveFocus(MoveDirection.Next); break; - } - } - - private void SegmentedItem_Loaded(object sender, RoutedEventArgs e) - { - if (sender is SegmentedItem segmentedItem) - { - segmentedItem.Loaded -= SegmentedItem_Loaded; - } - } - - protected override void OnItemsChanged(object e) - { - base.OnItemsChanged(e); - } - - private enum MoveDirection - { - Next, - Previous - } - - /// - /// Adjust the selected item and range based on keyboard input. - /// This is used to override the ListView behaviors for up/down arrow manipulation vs left/right for a horizontal control - /// - /// direction to move the selection - /// True if the focus was moved, false otherwise - private bool MoveFocus(MoveDirection direction) - { - bool retVal = false; - var currentContainerItem = GetCurrentContainerItem(); - - if (currentContainerItem != null) - { - var currentItem = ItemFromContainer(currentContainerItem); - var previousIndex = Items.IndexOf(currentItem); - var index = previousIndex; - - if (direction == MoveDirection.Previous) - { - if (previousIndex > 0) - { - index -= 1; - } - else - { - retVal = true; - } - } - else if (direction == MoveDirection.Next) - { - if (previousIndex < Items.Count - 1) - { - index += 1; - } - } - - // Only do stuff if the index is actually changing - if (index != previousIndex && ContainerFromIndex(index) is SegmentedItem newItem) - { - newItem.Focus(FocusState.Keyboard); - retVal = true; - } - } - - return retVal; - } - - private SegmentedItem? GetCurrentContainerItem() - { - if (ControlHelpers.IsXamlRootAvailable && XamlRoot != null) - { - return FocusManager.GetFocusedElement(XamlRoot) as SegmentedItem; - } - else - { - return FocusManager.GetFocusedElement() as SegmentedItem; - } - } - - private void OnSelectedIndexChanged(DependencyObject sender, DependencyProperty dp) - { - // This is a workaround for https://github.com/microsoft/microsoft-ui-xaml/issues/8257 - if (_internalSelectedIndex == -1 && SelectedIndex > -1) - { - // We catch the correct SelectedIndex and save it. - _internalSelectedIndex = SelectedIndex; - } - } -} diff --git a/components/SegmentedControl/src/Segmented/Segmented.xaml b/components/SegmentedControl/src/Segmented/Segmented.xaml deleted file mode 100644 index bb075fe0a..000000000 --- a/components/SegmentedControl/src/Segmented/Segmented.xaml +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - - 1 - - - - - 1 - - - - - 1 - - - - - 1 - 2 - - - - - - - diff --git a/components/SegmentedControl/src/SegmentedItem/SegmentedItem.Properties.cs b/components/SegmentedControl/src/SegmentedItem/SegmentedItem.Properties.cs deleted file mode 100644 index cb824e682..000000000 --- a/components/SegmentedControl/src/SegmentedItem/SegmentedItem.Properties.cs +++ /dev/null @@ -1,26 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -namespace CommunityToolkit.Labs.WinUI; - -public partial class SegmentedItem : ListViewItem -{ - /// - /// The backing for the property. - /// - public static readonly DependencyProperty IconProperty = DependencyProperty.Register( - nameof(Icon), - typeof(IconElement), - typeof(SegmentedItem), - new PropertyMetadata(defaultValue: null, (d, e) => ((SegmentedItem)d).OnIconPropertyChanged((IconElement)e.OldValue, (IconElement)e.NewValue))); - - /// - /// Gets or sets the icon. - /// - public IconElement Icon - { - get => (IconElement)GetValue(IconProperty); - set => SetValue(IconProperty, value); - } -} diff --git a/components/SegmentedControl/src/SegmentedItem/SegmentedItem.cs b/components/SegmentedControl/src/SegmentedItem/SegmentedItem.cs deleted file mode 100644 index 695be7916..000000000 --- a/components/SegmentedControl/src/SegmentedItem/SegmentedItem.cs +++ /dev/null @@ -1,60 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -namespace CommunityToolkit.Labs.WinUI; - -[ContentProperty(Name = nameof(Content))] -public partial class SegmentedItem : ListViewItem -{ - internal const string IconLeftState = "IconLeft"; - internal const string IconOnlyState = "IconOnly"; - internal const string ContentOnlyState = "ContentOnly"; - - public SegmentedItem() - { - this.DefaultStyleKey = typeof(SegmentedItem); - } - - protected override void OnApplyTemplate() - { - base.OnApplyTemplate(); - OnIconChanged(); - ContentChanged(); - } - - protected override void OnContentChanged(object oldContent, object newContent) - { - base.OnContentChanged(oldContent, newContent); - ContentChanged(); - } - - private void ContentChanged() - { - if (Content != null) - { - VisualStateManager.GoToState(this, IconLeftState, true); - } - else - { - VisualStateManager.GoToState(this, IconOnlyState, true); - } - } - - protected virtual void OnIconPropertyChanged(IconElement oldValue, IconElement newValue) - { - OnIconChanged(); - } - - private void OnIconChanged() - { - if (Icon != null) - { - VisualStateManager.GoToState(this, IconLeftState, true); - } - else - { - VisualStateManager.GoToState(this, ContentOnlyState, true); - } - } -} diff --git a/components/SegmentedControl/src/SegmentedItem/SegmentedItem.xaml b/components/SegmentedControl/src/SegmentedItem/SegmentedItem.xaml deleted file mode 100644 index 8963c4960..000000000 --- a/components/SegmentedControl/src/SegmentedItem/SegmentedItem.xaml +++ /dev/null @@ -1,1098 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 - 0.55 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 - 0.55 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 - 0.55 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 00:00:00.167 - - - - - - - - diff --git a/components/SegmentedControl/src/Themes/Generic.xaml b/components/SegmentedControl/src/Themes/Generic.xaml deleted file mode 100644 index c60f005ee..000000000 --- a/components/SegmentedControl/src/Themes/Generic.xaml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - diff --git a/components/SegmentedControl/tests/ExampleSegmentedControlTestClass.cs b/components/SegmentedControl/tests/ExampleSegmentedControlTestClass.cs deleted file mode 100644 index c11be1ea8..000000000 --- a/components/SegmentedControl/tests/ExampleSegmentedControlTestClass.cs +++ /dev/null @@ -1,133 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using CommunityToolkit.Labs.WinUI; -using CommunityToolkit.Tooling.TestGen; -using CommunityToolkit.Tests; - -namespace SegmentedControlExperiment.Tests; - -[TestClass] -public partial class ExampleSegmentedControlTestClass : VisualUITestBase -{ - // If you don't need access to UI objects directly or async code, use this pattern. - [TestMethod] - public void SimpleSynchronousExampleTest() - { - var assembly = typeof(Segmented).Assembly; - var type = assembly.GetType(typeof(Segmented).FullName ?? string.Empty); - - Assert.IsNotNull(type, "Could not find SegmentedControl type."); - Assert.AreEqual(typeof(Segmented), type, "Type of SegmentedControl does not match expected type."); - } - - // If you don't need access to UI objects directly, use this pattern. - [TestMethod] - public async Task SimpleAsyncExampleTest() - { - await Task.Delay(250); - - Assert.IsTrue(true); - } - - // Example that shows how to check for exception throwing. - [TestMethod] - public void SimpleExceptionCheckTest() - { - // If you need to check exceptions occur for invalid inputs, etc... - // Use Assert.ThrowsException to limit the scope to where you expect the error to occur. - // Otherwise, using the ExpectedException attribute could swallow or - // catch other issues in setup code. - Assert.ThrowsException(() => throw new NotImplementedException()); - } - - // The UIThreadTestMethod automatically dispatches to the UI for us to work with UI objects. - [UIThreadTestMethod] - public void SimpleUIAttributeExampleTest() - { - var component = new Segmented(); - Assert.IsNotNull(component); - } - - // The UIThreadTestMethod can also easily grab a XAML Page for us by passing its type as a parameter. - // This lets us actually test a control as it would behave within an actual application. - // The page will already be loaded by the time your test is called. - [UIThreadTestMethod] - public void SimpleUIExamplePageTest(ExampleSegmentedControlTestPage page) - { - // You can use the Toolkit Visual Tree helpers here to find the component by type or name: - var component = page.FindDescendant(); - - Assert.IsNotNull(component); - - var componentByName = page.FindDescendant("SegmentedControlControl"); - - Assert.IsNotNull(componentByName); - } - - // You can still do async work with a UIThreadTestMethod as well. - [UIThreadTestMethod] - public async Task SimpleAsyncUIExamplePageTest(ExampleSegmentedControlTestPage page) - { - // This helper can be used to wait for a rendering pass to complete. - await CompositionTargetHelper.ExecuteAfterCompositionRenderingAsync(() => { }); - - var component = page.FindDescendant(); - - Assert.IsNotNull(component); - } - - //// ----------------------------- ADVANCED TEST SCENARIOS ----------------------------- - - // If you need to use DataRow, you can use this pattern with the UI dispatch still. - // Otherwise, checkout the UIThreadTestMethod attribute above. - // See https://github.com/CommunityToolkit/Labs-Windows/issues/186 - [TestMethod] - public async Task ComplexAsyncUIExampleTest() - { - await EnqueueAsync(() => - { - var component = new Segmented(); - Assert.IsNotNull(component); - }); - } - - // If you want to load other content not within a XAML page using the UIThreadTestMethod above. - // Then you can do that using the Load/UnloadTestContentAsync methods. - [TestMethod] - public async Task ComplexAsyncLoadUIExampleTest() - { - await EnqueueAsync(async () => - { - var component = new Segmented(); - Assert.IsNotNull(component); - Assert.IsFalse(component.IsLoaded); - - await LoadTestContentAsync(component); - - Assert.IsTrue(component.IsLoaded); - - await UnloadTestContentAsync(component); - - Assert.IsFalse(component.IsLoaded); - }); - } - - // You can still use the UIThreadTestMethod to remove the extra layer for the dispatcher as well: - [UIThreadTestMethod] - public async Task ComplexAsyncLoadUIExampleWithoutDispatcherTest() - { - var component = new Segmented(); - Assert.IsNotNull(component); - Assert.IsFalse(component.IsLoaded); - - await LoadTestContentAsync(component); - - Assert.IsTrue(component.IsLoaded); - - await UnloadTestContentAsync(component); - - Assert.IsFalse(component.IsLoaded); - } -} diff --git a/components/SegmentedControl/tests/ExampleSegmentedControlTestPage.xaml b/components/SegmentedControl/tests/ExampleSegmentedControlTestPage.xaml deleted file mode 100644 index 5675e7d7a..000000000 --- a/components/SegmentedControl/tests/ExampleSegmentedControlTestPage.xaml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - diff --git a/components/SegmentedControl/tests/ExampleSegmentedControlTestPage.xaml.cs b/components/SegmentedControl/tests/ExampleSegmentedControlTestPage.xaml.cs deleted file mode 100644 index c90bd13c8..000000000 --- a/components/SegmentedControl/tests/ExampleSegmentedControlTestPage.xaml.cs +++ /dev/null @@ -1,16 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -namespace SegmentedControlExperiment.Tests; - -/// -/// An empty page that can be used on its own or navigated to within a Frame. -/// -public sealed partial class ExampleSegmentedControlTestPage : Page -{ - public ExampleSegmentedControlTestPage() - { - this.InitializeComponent(); - } -} diff --git a/components/SegmentedControl/tests/SegmentedControl.Tests.projitems b/components/SegmentedControl/tests/SegmentedControl.Tests.projitems deleted file mode 100644 index ad951d002..000000000 --- a/components/SegmentedControl/tests/SegmentedControl.Tests.projitems +++ /dev/null @@ -1,23 +0,0 @@ - - - - $(MSBuildAllProjects);$(MSBuildThisFileFullPath) - true - 87C6C160-4C36-4065-B8EC-21EF8E3CE9AD - - - SegmentedControlExperiment.Tests - - - - - ExampleSegmentedControlTestPage.xaml - - - - - Designer - MSBuild:Compile - - - \ No newline at end of file diff --git a/components/SegmentedControl/tests/SegmentedControl.Tests.shproj b/components/SegmentedControl/tests/SegmentedControl.Tests.shproj deleted file mode 100644 index 7a35c0a41..000000000 --- a/components/SegmentedControl/tests/SegmentedControl.Tests.shproj +++ /dev/null @@ -1,13 +0,0 @@ - - - - 87C6C160-4C36-4065-B8EC-21EF8E3CE9AD - 14.0 - - - - - - - - diff --git a/components/StackedNotificationsBehavior/OpenSolution.bat b/components/StackedNotificationsBehavior/OpenSolution.bat deleted file mode 100644 index 814a56d4b..000000000 --- a/components/StackedNotificationsBehavior/OpenSolution.bat +++ /dev/null @@ -1,3 +0,0 @@ -@ECHO OFF - -powershell ..\..\tooling\ProjectHeads\GenerateSingleSampleHeads.ps1 -componentPath %CD% %* \ No newline at end of file diff --git a/components/StackedNotificationsBehavior/samples/Assets/StackedNotificationsBehavior.png b/components/StackedNotificationsBehavior/samples/Assets/StackedNotificationsBehavior.png deleted file mode 100644 index c702cf87658b22fc4c52649606caf4857258f87a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3920 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 eeewF-z5Wj}(D6a}FC$g}0000 - - - - - - - - - - - - - - - - - - - - - diff --git a/components/StackedNotificationsBehavior/samples/StackedNotificationsBehavior.Samples.csproj b/components/StackedNotificationsBehavior/samples/StackedNotificationsBehavior.Samples.csproj deleted file mode 100644 index 702f72215..000000000 --- a/components/StackedNotificationsBehavior/samples/StackedNotificationsBehavior.Samples.csproj +++ /dev/null @@ -1,9 +0,0 @@ - - - StackedNotificationsBehavior - 10.0 - - - - - diff --git a/components/StackedNotificationsBehavior/samples/StackedNotificationsBehavior.md b/components/StackedNotificationsBehavior/samples/StackedNotificationsBehavior.md deleted file mode 100644 index 0e814be1e..000000000 --- a/components/StackedNotificationsBehavior/samples/StackedNotificationsBehavior.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -title: StackedNotificationsBehavior -author: vgromfeld -description: A behavior to add stacked notifications to a WinUI InfoBar control. -keywords: StackedNotificationsBehavior, Control, Layout, InfoBar, Behavior -dev_langs: - - csharp -category: Xaml -subcategory: Behaviors -discussion-id: 312 -issue-id: 210 -icon: Assets/StackedNotificationsBehavior.png ---- - -This initial example shows how to attach the behavior to an `InfoBar` and send it a message. - -Clicking on the button multiple times will queue up multiple messages to be displayed one after another. - -> [!Sample StackedNotificationsBehaviorCustomSample] diff --git a/components/StackedNotificationsBehavior/samples/StackedNotificationsBehaviorCustomSample.xaml b/components/StackedNotificationsBehavior/samples/StackedNotificationsBehaviorCustomSample.xaml deleted file mode 100644 index 6bf1c00b7..000000000 --- a/components/StackedNotificationsBehavior/samples/StackedNotificationsBehaviorCustomSample.xaml +++ /dev/null @@ -1,28 +0,0 @@ - - - - -