ScpSettings/Controls/ColorChooserControl.xaml.cs (54 lines of code) (raw):
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using AutoDependencyPropertyMarker;
using Ookii.Dialogs.Wpf;
using ColorPickerControls.Dialogs;
namespace ScpSettings.Controls
{
/// <summary>
/// Interaction logic for ColorChooserControl.xaml
/// </summary>
public partial class ColorChooserControl : UserControl
{
public ColorChooserControl()
{
InitializeComponent();
MainGrid.DataContext = this;
}
[AutoDependencyProperty(Options = FrameworkPropertyMetadataOptions.BindsTwoWayByDefault)]
public uint Ds4BatteryColor { get; set; }
public string ColorText
{
get
{
return lblText.Content.ToString();
}
set
{
lblText.Content = value;
}
}
private uint BrushToUInt(Brush brush)
{
Color color = ((SolidColorBrush) brush).Color;
return (uint) System.Drawing.Color.FromArgb(color.A, color.R, color.G, color.B).ToArgb();
}
private Brush UIntToBrush(uint integer)
{
System.Drawing.Color color = System.Drawing.Color.FromArgb((int)integer);
return new SolidColorBrush(Color.FromArgb(color.A, color.R, color.G, color.B));
}
private void BrowseButton_Click(object sender, RoutedEventArgs e)
{
// https://www.codeproject.com/Articles/131708/WPF-Color-Picker-Construction-Kit
ColorPickerStandardDialog colorDialog = new ColorPickerStandardDialog();
colorDialog.InitialColor = ((SolidColorBrush)this.lblColor.Background).Color;
if (colorDialog.ShowDialog().GetValueOrDefault())
{
lblColor.Background = new SolidColorBrush(colorDialog.SelectedColor);
Ds4BatteryColor = BrushToUInt(lblColor.Background);
}
}
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
lblColor.Background = UIntToBrush(Ds4BatteryColor);
}
}
}