Files
PowerToys/src/settings-ui/Settings.UI/Controls/FancyZonesPreviewControl.xaml.cs
Niels Laute 7ac7e48e66 [Settings] Added disabled state to FZ preview control (#15166)
* Added Disabled state

* Added wallpaper image to installer file
2021-12-27 14:29:31 +01:00

161 lines
6.7 KiB
C#

// Copyright (c) Microsoft Corporation
// The Microsoft Corporation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using System.ComponentModel;
using System.IO;
using System.Text;
using Microsoft.PowerToys.Settings.UI.Helpers;
using Windows.UI;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Media;
namespace Microsoft.PowerToys.Settings.UI.Controls
{
public sealed partial class FancyZonesPreviewControl : UserControl
{
public FancyZonesPreviewControl()
{
this.InitializeComponent();
try
{
var wallpaperPathBuilder = new StringBuilder(260);
NativeMethods.SystemParametersInfo(NativeMethods.SPI_GETDESKWALLPAPER, wallpaperPathBuilder.Capacity, wallpaperPathBuilder, 0);
var wallpaperPath = wallpaperPathBuilder.ToString();
if (File.Exists(wallpaperPath))
{
WallpaperPath = wallpaperPath;
}
}
catch (Win32Exception)
{
}
}
private void FancyZonesPreviewControl_IsEnabledChanged(object sender, DependencyPropertyChangedEventArgs e)
{
SetEnabledState();
}
public bool IsSystemTheme
{
get { return (bool)GetValue(IsSystemThemeProperty); }
set { SetValue(IsSystemThemeProperty, value); }
}
public static readonly DependencyProperty IsSystemThemeProperty = DependencyProperty.Register("IsSystemTheme", typeof(bool), typeof(FancyZonesPreviewControl), new PropertyMetadata(default(bool), OnPropertyChanged));
public string WallpaperPath
{
get { return (string)GetValue(WallpaperPathProperty); }
set { SetValue(WallpaperPathProperty, value); }
}
public static readonly DependencyProperty WallpaperPathProperty = DependencyProperty.Register("WallpaperPath", typeof(string), typeof(FancyZonesPreviewControl), new PropertyMetadata("ms-appx:///Assets/Modules/Wallpaper.png"));
public Color CustomBorderColor
{
get { return (Color)GetValue(CustomBorderColorProperty); }
set { SetValue(CustomBorderColorProperty, value); }
}
public static readonly DependencyProperty CustomBorderColorProperty = DependencyProperty.Register("CustomBorderColor", typeof(Color), typeof(FancyZonesPreviewControl), new PropertyMetadata(null, OnPropertyChanged));
public Color CustomInActiveColor
{
get { return (Color)GetValue(CustomInActiveColorProperty); }
set { SetValue(CustomInActiveColorProperty, value); }
}
public static readonly DependencyProperty CustomInActiveColorProperty = DependencyProperty.Register("CustomInActiveColor", typeof(Color), typeof(FancyZonesPreviewControl), new PropertyMetadata(null, OnPropertyChanged));
public Color CustomHighlightColor
{
get { return (Color)GetValue(CustomHighlightColorProperty); }
set { SetValue(CustomHighlightColorProperty, value); }
}
public static readonly DependencyProperty CustomHighlightColorProperty = DependencyProperty.Register("CustomHighlightColor", typeof(Color), typeof(FancyZonesPreviewControl), new PropertyMetadata(null, OnPropertyChanged));
public Color CustomNumberColor
{
get { return (Color)GetValue(CustomNumberColorProperty); }
set { SetValue(CustomNumberColorProperty, value); }
}
public static readonly DependencyProperty CustomNumberColorProperty = DependencyProperty.Register("CustomNumberColor", typeof(Color), typeof(FancyZonesPreviewControl), new PropertyMetadata(null, OnPropertyChanged));
public bool ShowZoneNumber
{
get { return (bool)GetValue(ShowZoneNumberProperty); }
set { SetValue(ShowZoneNumberProperty, value); }
}
public static readonly DependencyProperty ShowZoneNumberProperty = DependencyProperty.Register("ShowZoneNumber", typeof(bool), typeof(FancyZonesPreviewControl), new PropertyMetadata(default(bool), OnPropertyChanged));
public double HighlightOpacity
{
get { return (double)GetValue(HighlightOpacityProperty); }
set { SetValue(HighlightOpacityProperty, value); }
}
public static readonly DependencyProperty HighlightOpacityProperty = DependencyProperty.Register("CustomHighlightColor", typeof(double), typeof(FancyZonesPreviewControl), new PropertyMetadata(1.0, OnPropertyChanged));
private static void OnPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
((FancyZonesPreviewControl)d).Update();
}
private SolidColorBrush highlightBrush;
private SolidColorBrush inActiveBrush;
private SolidColorBrush borderBrush;
private SolidColorBrush numberBrush;
private void Update()
{
if (!IsSystemTheme)
{
highlightBrush = new SolidColorBrush(CustomHighlightColor);
inActiveBrush = new SolidColorBrush(CustomInActiveColor);
borderBrush = new SolidColorBrush(CustomBorderColor);
numberBrush = new SolidColorBrush(CustomNumberColor);
}
else
{
highlightBrush = (SolidColorBrush)this.Resources["DefaultAccentBrush"];
inActiveBrush = (SolidColorBrush)this.Resources["SolidBackgroundBrush"];
borderBrush = (SolidColorBrush)this.Resources["DefaultBorderBrush"];
numberBrush = (SolidColorBrush)this.Resources["SolidZoneNumberBrush"];
}
highlightBrush.Opacity = HighlightOpacity / 100;
inActiveBrush.Opacity = HighlightOpacity / 100;
Zone1.Background = highlightBrush;
Zone2.Background = inActiveBrush;
Zone3.Background = inActiveBrush;
Zone1.BorderBrush = borderBrush;
Zone2.BorderBrush = borderBrush;
Zone3.BorderBrush = borderBrush;
Zone1Number.Foreground = numberBrush;
Zone2Number.Foreground = numberBrush;
Zone3Number.Foreground = numberBrush;
}
private void SetEnabledState()
{
VisualStateManager.GoToState(this, IsEnabled ? "Normal" : "Disabled", true);
}
private void FancyZonesPreviewControl_Loaded(object sender, RoutedEventArgs e)
{
IsEnabledChanged -= FancyZonesPreviewControl_IsEnabledChanged;
SetEnabledState();
IsEnabledChanged += FancyZonesPreviewControl_IsEnabledChanged;
}
}
}