mirror of
https://github.com/microsoft/PowerToys.git
synced 2025-12-16 11:48:06 +01:00
* [MouseJump] move Mouse Jump settings into separate control (#27511) * [MouseJump] added Mouse Jump style controls to Settings UI (#27511) * [MouseJump] added Mouse Jump style controls to Settings UI (#27511) * [MouseJump] removing unused MouseJumpUI code (#27511) * [MouseJump] whitespace (#27511) * [MouseJump] fix spellcheck (#27511) * [MouseJump] enabled "Copy to custom style" (#27511) * [MouseJump] fixing build (internal members -> public) (#27511) * [MouseJump] remove unused "using"s (#27511) * [MouseJump] use custom styles in preview image (#27511) * [MouseJump] fixing failing test (#27511) * [MouseJump] fixing failing test (#27511) * [MouseJump] fixing failing test (#27511) * [MouseJump] fixing failing test (#27511) * [MouseJump] delinting to trigger a build (#27511) * [MouseJump] updated settings preview image ("browser" header) (#27511) * [MouseJump] upgrade default "custom" style settings in config (#27511) * [MouseJump] fixed a glitch in settings upgrade (#27511) * [MouseJump] fixed spell checker (#27511) * [MouseJump] typo in resource strings (image -> images) (#27511) * Remove unused include
160 lines
8.2 KiB
C#
160 lines
8.2 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;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using CommunityToolkit.WinUI;
|
|
using CommunityToolkit.WinUI.Controls;
|
|
using Microsoft.PowerToys.Settings.UI.ViewModels;
|
|
using Microsoft.UI.Xaml;
|
|
using Microsoft.UI.Xaml.Controls;
|
|
using MouseJump.Common.Helpers;
|
|
using MouseJump.Common.Models.Settings;
|
|
|
|
namespace Microsoft.PowerToys.Settings.UI.Panels
|
|
{
|
|
public sealed partial class MouseJumpPanel : UserControl
|
|
{
|
|
internal MouseUtilsViewModel ViewModel { get; set; }
|
|
|
|
public MouseJumpPanel()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
|
|
private void PreviewImage_Loaded(object sender, RoutedEventArgs e)
|
|
{
|
|
bool TryFindFrameworkElement(SettingsCard settingsCard, string partName, out FrameworkElement result)
|
|
{
|
|
result = settingsCard.FindDescendants()
|
|
.OfType<FrameworkElement>()
|
|
.FirstOrDefault(
|
|
x => x.Name == partName);
|
|
return result is not null;
|
|
}
|
|
|
|
/*
|
|
apply a variation of the "Left" VisualState for SettingsCards
|
|
to center the preview image in the true center of the card
|
|
see https://github.com/CommunityToolkit/Windows/blob/9c7642ff35eaaa51a404f9bcd04b10c7cf851921/components/SettingsControls/src/SettingsCard/SettingsCard.xaml#L334-L347
|
|
*/
|
|
|
|
var settingsCard = (SettingsCard)sender;
|
|
|
|
var partNames = new List<string>
|
|
{
|
|
"PART_HeaderIconPresenterHolder",
|
|
"PART_DescriptionPresenter",
|
|
"PART_HeaderPresenter",
|
|
"PART_ActionIconPresenter",
|
|
};
|
|
foreach (var partName in partNames)
|
|
{
|
|
if (!TryFindFrameworkElement(settingsCard, partName, out var element))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
element.Visibility = Visibility.Collapsed;
|
|
}
|
|
|
|
if (TryFindFrameworkElement(settingsCard, "PART_ContentPresenter", out var content))
|
|
{
|
|
Grid.SetRow(content, 1);
|
|
Grid.SetColumn(content, 1);
|
|
content.HorizontalAlignment = HorizontalAlignment.Center;
|
|
}
|
|
}
|
|
|
|
private void PreviewTypeSetting_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
|
{
|
|
// hide or display controls based on whether the "Custom" preview type is selected
|
|
var selectedPreviewType = this.GetSelectedPreviewType();
|
|
var customPreviewTypeSelected = selectedPreviewType == PreviewType.Custom;
|
|
this.CopyStyleToCustom.IsEnabled = !customPreviewTypeSelected;
|
|
var customControlVisibility = customPreviewTypeSelected
|
|
? Visibility.Visible
|
|
: Visibility.Collapsed;
|
|
this.MouseUtils_MouseJump_BackgroundColor1.Visibility = customControlVisibility;
|
|
this.MouseUtils_MouseJump_BackgroundColor2.Visibility = customControlVisibility;
|
|
this.MouseUtils_MouseJump_BorderThickness.Visibility = customControlVisibility;
|
|
this.MouseUtils_MouseJump_BorderColor.Visibility = customControlVisibility;
|
|
this.MouseUtils_MouseJump_Border3dDepth.Visibility = customControlVisibility;
|
|
this.MouseUtils_MouseJump_BorderPadding.Visibility = customControlVisibility;
|
|
this.MouseUtils_MouseJump_BezelThickness.Visibility = customControlVisibility;
|
|
this.MouseUtils_MouseJump_BezelColor.Visibility = customControlVisibility;
|
|
this.MouseUtils_MouseJump_Bezel3dDepth.Visibility = customControlVisibility;
|
|
this.MouseUtils_MouseJump_ScreenMargin.Visibility = customControlVisibility;
|
|
this.MouseUtils_MouseJump_ScreenColor1.Visibility = customControlVisibility;
|
|
this.MouseUtils_MouseJump_ScreenColor2.Visibility = customControlVisibility;
|
|
}
|
|
|
|
private /* async */ void CopyStyleToCustom_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
/*
|
|
var resourceLoader = ResourceLoaderInstance.ResourceLoader;
|
|
var messageBox = this.MouseUtils_MouseJump_CopyToCustomStyle_MessageBox;
|
|
messageBox.Title = resourceLoader.GetString("MouseUtils_MouseJump_CopyToCustomStyle_MessageBox_Title");
|
|
messageBox.PrimaryButtonText = resourceLoader.GetString("MouseUtils_MouseJump_CopyToCustomStyle_MessageBox_PrimaryButtonText");
|
|
messageBox.PrimaryButtonCommand = new RelayCommand(this.MouseUtils_MouseJump_CopyToCustomStyle_MessageBox_PrimaryButtonCommand);
|
|
// await messageBox.ShowAsync();
|
|
*/
|
|
this.MouseUtils_MouseJump_CopyToCustomStyle_MessageBox_PrimaryButtonCommand();
|
|
}
|
|
|
|
private void MouseUtils_MouseJump_CopyToCustomStyle_MessageBox_PrimaryButtonCommand()
|
|
{
|
|
var selectedPreviewType = this.GetSelectedPreviewType();
|
|
var selectedPreviewStyle = selectedPreviewType switch
|
|
{
|
|
PreviewType.Compact => StyleHelper.CompactPreviewStyle,
|
|
PreviewType.Bezelled => StyleHelper.BezelledPreviewStyle,
|
|
PreviewType.Custom => StyleHelper.BezelledPreviewStyle,
|
|
_ => throw new InvalidOperationException(),
|
|
};
|
|
|
|
// convert the color into a string.
|
|
// note that we have to replace Named and System colors with their ARGB equivalents
|
|
// so that serialization returns an ARGB string rather than the Named or System color *name*.
|
|
this.ViewModel.MouseJumpPreviewType = selectedPreviewType.ToString();
|
|
this.ViewModel.MouseJumpBackgroundColor1 = ConfigHelper.SerializeToConfigColorString(
|
|
ConfigHelper.ToUnnamedColor(selectedPreviewStyle.CanvasStyle.BackgroundStyle.Color1));
|
|
this.ViewModel.MouseJumpBackgroundColor2 = ConfigHelper.SerializeToConfigColorString(
|
|
ConfigHelper.ToUnnamedColor(selectedPreviewStyle.CanvasStyle.BackgroundStyle.Color2));
|
|
this.ViewModel.MouseJumpBorderThickness = (int)selectedPreviewStyle.CanvasStyle.BorderStyle.Top;
|
|
this.ViewModel.MouseJumpBorderColor = ConfigHelper.SerializeToConfigColorString(
|
|
ConfigHelper.ToUnnamedColor(selectedPreviewStyle.CanvasStyle.BorderStyle.Color));
|
|
this.ViewModel.MouseJumpBorder3dDepth = (int)selectedPreviewStyle.CanvasStyle.BorderStyle.Depth;
|
|
this.ViewModel.MouseJumpBorderPadding = (int)selectedPreviewStyle.CanvasStyle.PaddingStyle.Top;
|
|
this.ViewModel.MouseJumpBezelThickness = (int)selectedPreviewStyle.ScreenStyle.BorderStyle.Top;
|
|
this.ViewModel.MouseJumpBezelColor = ConfigHelper.SerializeToConfigColorString(
|
|
ConfigHelper.ToUnnamedColor(selectedPreviewStyle.ScreenStyle.BorderStyle.Color));
|
|
this.ViewModel.MouseJumpBezel3dDepth = (int)selectedPreviewStyle.ScreenStyle.BorderStyle.Depth;
|
|
this.ViewModel.MouseJumpScreenMargin = (int)selectedPreviewStyle.ScreenStyle.MarginStyle.Top;
|
|
this.ViewModel.MouseJumpScreenColor1 = ConfigHelper.SerializeToConfigColorString(
|
|
ConfigHelper.ToUnnamedColor(selectedPreviewStyle.ScreenStyle.BackgroundStyle.Color1));
|
|
this.ViewModel.MouseJumpScreenColor2 = ConfigHelper.SerializeToConfigColorString(
|
|
ConfigHelper.ToUnnamedColor(selectedPreviewStyle.ScreenStyle.BackgroundStyle.Color2));
|
|
}
|
|
|
|
private PreviewType GetSelectedPreviewType()
|
|
{
|
|
// this needs to match the order of the SegmentedItems in the "Preview Type" Segmented control
|
|
var previewTypeOrder = new PreviewType[]
|
|
{
|
|
PreviewType.Compact, PreviewType.Bezelled, PreviewType.Custom,
|
|
};
|
|
|
|
var selectedIndex = this.PreviewTypeSetting.SelectedIndex;
|
|
if ((selectedIndex < 0) || (selectedIndex >= previewTypeOrder.Length))
|
|
{
|
|
throw new InvalidOperationException();
|
|
}
|
|
|
|
return previewTypeOrder[selectedIndex];
|
|
}
|
|
}
|
|
}
|