mirror of
https://github.com/microsoft/PowerToys.git
synced 2026-04-04 10:16:24 +02:00
161 lines
6.7 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|