Skip to content

Commit

Permalink
Remove dependency on WinUI and allow brand brush override
Browse files Browse the repository at this point in the history
  • Loading branch information
dotMorten committed Nov 18, 2024
1 parent 8f8451a commit 718c9ce
Show file tree
Hide file tree
Showing 7 changed files with 115 additions and 58 deletions.
6 changes: 3 additions & 3 deletions GeneratedResources/Maui/Colors/Brushes.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Colors.xaml" />
</ResourceDictionary.MergedDictionaries>
<SolidColorBrush x:Key="CalciteUIBrandBrush" Color="{AppThemeBinding Dark={StaticResource CalciteUIBrandDarkColor}, Light={StaticResource CalciteUIBrandLightColor}}" />
<SolidColorBrush x:Key="CalciteUIBrandHoverBrush" Color="{AppThemeBinding Dark={StaticResource CalciteUIBrandHoverDarkColor}, Light={StaticResource CalciteUIBrandHoverLightColor}}" />
<SolidColorBrush x:Key="CalciteUIBrandPressBrush" Color="{AppThemeBinding Dark={StaticResource CalciteUIBrandPressDarkColor}, Light={StaticResource CalciteUIBrandPressLightColor}}" />
<SolidColorBrush x:Key="CalciteUIBrandBrush" Color="{AppThemeBinding Dark={x:DynamicResource CalciteUIBrandDarkColor}, Light={x:DynamicResource CalciteUIBrandLightColor}}" />
<SolidColorBrush x:Key="CalciteUIBrandHoverBrush" Color="{AppThemeBinding Dark={x:DynamicResource CalciteUIBrandHoverDarkColor}, Light={x:DynamicResource CalciteUIBrandHoverLightColor}}" />
<SolidColorBrush x:Key="CalciteUIBrandPressBrush" Color="{AppThemeBinding Dark={x:DynamicResource CalciteUIBrandPressDarkColor}, Light={x:DynamicResource CalciteUIBrandPressLightColor}}" />
<SolidColorBrush x:Key="CalciteUIBackgroundBrush" Color="{AppThemeBinding Dark={StaticResource CalciteUIBackgroundDarkColor}, Light={StaticResource CalciteUIBackgroundLightColor}}" />
<SolidColorBrush x:Key="CalciteUIBackground1Brush" Color="{AppThemeBinding Dark={StaticResource CalciteUIBackground1DarkColor}, Light={StaticResource CalciteUIBackground1LightColor}}" />
<SolidColorBrush x:Key="CalciteUIBackground2Brush" Color="{AppThemeBinding Dark={StaticResource CalciteUIBackground2DarkColor}, Light={StaticResource CalciteUIBackground2LightColor}}" />
Expand Down
52 changes: 22 additions & 30 deletions src/Esri.Calcite.Maui/AppHostBuilderExtensions.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using Microsoft.Maui.LifecycleEvents;
using Microsoft.Maui.Handlers;
using Microsoft.Maui.Platform;

[assembly: Microsoft.Maui.Controls.XmlnsPrefix("http://schemas.esri.com/calcite/2024", "calcite")]
[assembly: XmlnsDefinition("http://schemas.esri.com/calcite/2024", "Esri.Calcite.Maui")]
Expand Down Expand Up @@ -28,40 +29,31 @@ public static MauiAppBuilder UseCalcite(this MauiAppBuilder builder)
fonts.AddEmbeddedResourceFont(typeof(AppHostBuilderExtensions).Assembly, "calcite-ui-icons-16.ttf", CalciteUIIconsSmallFontFamily)
.AddEmbeddedResourceFont(typeof(AppHostBuilderExtensions).Assembly, "calcite-ui-icons-24.ttf", CalciteUIIconsMediumFontFamily)
.AddEmbeddedResourceFont(typeof(AppHostBuilderExtensions).Assembly, "calcite-ui-icons-32.ttf", CalciteUIIconsLargeFontFamily));
#if WINDOWS
builder = builder.ConfigureLifecycleEvents(events =>
{
events.AddWindows(w =>
{
w.OnLaunching((app, e) =>
{
var xamlresources = app.Resources.MergedDictionaries.OfType<Microsoft.UI.Xaml.Controls.XamlControlsResources>().FirstOrDefault();
if(xamlresources is not null)
{
xamlresources.MergedDictionaries.Add(new Esri.Calcite.WinUI.CalciteResources());
}

});
});
});
#endif

/*RadioButtonHandler.Mapper.AppendToMapping("RadioButtonStyleOverride", (handler, view) =>
RadioButtonHandler.Mapper.AppendToMapping("RadioButtonStyleOverride", (handler, view) =>
{
#if WINDOWS
// Temporary workaround for radiobutton on Windows
// Note: This won't support resource overrides or theme changes
var CalciteUIBrandLightColor = Windows.UI.Color.FromArgb(255, 0, 122, 194);
var CalciteUIBrandHoverLightColor = Windows.UI.Color.FromArgb(255, 0, 97, 155);
var CalciteUIBrandPressLightColor = Windows.UI.Color.FromArgb(255, 0, 72, 116);
handler.PlatformView.Resources["RadioButtonOuterEllipseCheckedFillPressed"] = new Microsoft.UI.Xaml.Media.SolidColorBrush(CalciteUIBrandPressLightColor);
handler.PlatformView.Resources["RadioButtonOuterEllipseCheckedStrokePressed"] = new Microsoft.UI.Xaml.Media.SolidColorBrush(CalciteUIBrandPressLightColor);
handler.PlatformView.Resources["RadioButtonOuterEllipseCheckedFillPointerOver"] = new Microsoft.UI.Xaml.Media.SolidColorBrush(CalciteUIBrandHoverLightColor);
handler.PlatformView.Resources["RadioButtonOuterEllipseCheckedFill"] = new Microsoft.UI.Xaml.Media.SolidColorBrush(CalciteUIBrandLightColor);
handler.PlatformView.Resources["RadioButtonOuterEllipseCheckedStrokePointerOver"] = new Microsoft.UI.Xaml.Media.SolidColorBrush(CalciteUIBrandHoverLightColor);
handler.PlatformView.Resources["RadioButtonOuterEllipseCheckedStroke"] = new Microsoft.UI.Xaml.Media.SolidColorBrush(CalciteUIBrandHoverLightColor);
// Temporary workaround for radiobutton styling limitation on Windows
if (view is BindableObject bo)
{
if (CalciteResourceHelper.GetColor(bo) is Color c)
{
handler.PlatformView.Resources["RadioButtonOuterEllipseCheckedFill"] =
handler.PlatformView.Resources["RadioButtonOuterEllipseCheckedStroke"] = c.ToPlatform();
}
if (CalciteResourceHelper.GetHoverColor(bo) is Color pressedColor)
{
handler.PlatformView.Resources["RadioButtonOuterEllipseCheckedFillPressed"] =
handler.PlatformView.Resources["RadioButtonOuterEllipseCheckedStrokePressed"] = pressedColor.ToPlatform();
}
if (CalciteResourceHelper.GetPressedColor(bo) is Color hoverColor)
{
handler.PlatformView.Resources["RadioButtonOuterEllipseCheckedFillPointerOver"] =
handler.PlatformView.Resources["RadioButtonOuterEllipseCheckedStrokePointerOver"] = hoverColor.ToPlatform();
}
}
#endif
});*/
});
return builder;
}
}
Expand Down
50 changes: 50 additions & 0 deletions src/Esri.Calcite.Maui/CalciteResourceHelper.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
namespace Esri.Calcite.Maui
{
#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member
[System.ComponentModel.Browsable(false)]
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
public static class CalciteResourceHelper
{
public static Color GetColor(BindableObject obj)
{
return (Color)obj.GetValue(ColorProperty);
}

public static void SetColor(BindableObject obj, Color value)
{
obj.SetValue(ColorProperty, value);
}

public static readonly BindableProperty ColorProperty =
BindableProperty.CreateAttached("Color", typeof(Color), typeof(CalciteResourceHelper), null);


public static Color GetHoverColor(BindableObject obj)
{
return (Color)obj.GetValue(HoverColorProperty);
}

public static void SetHoverColor(BindableObject obj, Color value)
{
obj.SetValue(HoverColorProperty, value);
}

public static readonly BindableProperty HoverColorProperty =
BindableProperty.CreateAttached("HoverColor", typeof(Color), typeof(CalciteResourceHelper), null);


public static Color GetPressedColor(BindableObject obj)
{
return (Color)obj.GetValue(PressedColorProperty);
}

public static void SetPressedColor(BindableObject obj, Color value)
{
obj.SetValue(PressedColorProperty, value);
}

public static readonly BindableProperty PressedColorProperty =
BindableProperty.CreateAttached("PressedColor", typeof(Color), typeof(CalciteResourceHelper), null);
}
#pragma warning restore CS1591 // Missing XML comment for publicly visible type or member
}
4 changes: 0 additions & 4 deletions src/Esri.Calcite.Maui/Esri.Calcite.Maui.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,4 @@
<ItemGroup>
<PackageReference Include="Microsoft.Maui.Controls" Version="8.0.3" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Esri.Calcite.WinUI\Esri.Calcite.WinUI.csproj" Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows'" />
</ItemGroup>

</Project>
2 changes: 2 additions & 0 deletions src/Esri.Calcite.Maui/Resources/Styles/ImplicitStyles.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@

<Style TargetType="CheckBox" BasedOn="{StaticResource CalciteCheckBoxStyle}" />

<Style TargetType="RadioButton" BasedOn="{StaticResource CalciteRadioButtonStyle}" />

<Style TargetType="Label" BasedOn="{StaticResource CalciteLabelStyle}" />

<Style TargetType="ProgressBar" BasedOn="{StaticResource CalciteProgressBarStyle}" />
Expand Down
Loading

0 comments on commit 718c9ce

Please sign in to comment.