[FancyZones] Use accent color and theme (#14158)

* use accent color and theme

* typo

* Updated FZ color UX (#14171)

Co-authored-by: Laute <Niels.Laute@philips.com>

* fix resources

* rebase fix

* label updated

Co-authored-by: Niels Laute <niels.laute@live.nl>
Co-authored-by: Laute <Niels.Laute@philips.com>
This commit is contained in:
Davide Giacometti 2021-11-04 15:30:06 +01:00 committed by GitHub
parent 3ead98a770
commit e19ecd2ba1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
12 changed files with 172 additions and 57 deletions

View file

@ -28,6 +28,7 @@
#include "CallTracer.h"
#include <FancyZonesLib/SecondaryMouseButtonsHook.h>
#include <winrt/Windows.UI.ViewManagement.h>
enum class DisplayChangeType
{
@ -81,6 +82,13 @@ public:
{
monitor = NULL;
}
// If accent color or theme is changed need to update colors for zones
if (m_settings->GetSettings()->systemTheme && GetSystemTheme())
{
m_workAreaHandler.UpdateZoneColors(GetZoneColors());
}
m_windowMoveHandler.MoveSizeStart(window, monitor, ptScreen, m_workAreaHandler.GetWorkAreasByDesktopId(m_currentDesktopId));
}
@ -173,6 +181,7 @@ private:
std::vector<HMONITOR> GetMonitorsSorted() noexcept;
HMONITOR WorkAreaKeyFromWindow(HWND window) noexcept;
bool GetSystemTheme() const noexcept;
ZoneColors GetZoneColors() const noexcept;
const HINSTANCE m_hinstance{};
@ -214,6 +223,8 @@ private:
};
std::function<void()> FancyZones::disableModuleCallback = {};
COLORREF currentAccentColor;
COLORREF currentBackgroundColor;
// IFancyZones
IFACEMETHODIMP_(void)
@ -1332,14 +1343,50 @@ HMONITOR FancyZones::WorkAreaKeyFromWindow(HWND window) noexcept
}
}
bool FancyZones::GetSystemTheme() const noexcept
{
winrt::Windows::UI::ViewManagement::UISettings settings;
auto accentValue = settings.GetColorValue(winrt::Windows::UI::ViewManagement::UIColorType::Accent);
auto accentColor = RGB(accentValue.R, accentValue.G, accentValue.B);
auto backgroundValue = settings.GetColorValue(winrt::Windows::UI::ViewManagement::UIColorType::Background);
auto backgroundColor = RGB(backgroundValue.R, backgroundValue.G, backgroundValue.B);
if (currentAccentColor != accentColor || currentBackgroundColor != backgroundColor)
{
currentAccentColor = accentColor;
currentBackgroundColor = backgroundColor;
return true;
}
return false;
}
ZoneColors FancyZones::GetZoneColors() const noexcept
{
return ZoneColors {
.primaryColor = FancyZonesUtils::HexToRGB(m_settings->GetSettings()->zoneColor),
.borderColor = FancyZonesUtils::HexToRGB(m_settings->GetSettings()->zoneBorderColor),
.highlightColor = FancyZonesUtils::HexToRGB(m_settings->GetSettings()->zoneHighlightColor),
.highlightOpacity = m_settings->GetSettings()->zoneHighlightOpacity
};
if (m_settings->GetSettings()->systemTheme)
{
GetSystemTheme();
auto textColor = currentBackgroundColor == RGB(0, 0, 0) ? RGB(255, 255, 255) : RGB(0, 0, 0);
return ZoneColors{
.primaryColor = currentBackgroundColor,
.borderColor = currentAccentColor,
.highlightColor = currentAccentColor,
.textColor = textColor,
.highlightOpacity = m_settings->GetSettings()->zoneHighlightOpacity
};
}
else
{
return ZoneColors{
.primaryColor = FancyZonesUtils::HexToRGB(m_settings->GetSettings()->zoneColor),
.borderColor = FancyZonesUtils::HexToRGB(m_settings->GetSettings()->zoneBorderColor),
.highlightColor = FancyZonesUtils::HexToRGB(m_settings->GetSettings()->zoneHighlightColor),
.textColor = RGB(0, 0, 0),
.highlightOpacity = m_settings->GetSettings()->zoneHighlightOpacity
};
}
}
winrt::com_ptr<IFancyZones> MakeFancyZones(HINSTANCE hinstance,

View file

@ -219,7 +219,7 @@
</data>
<data name="Cant_Drag_Elevated" xml:space="preserve">
<value>We've detected an application running with administrator privileges. This will prevent certain interactions with these applications.</value>
<comment>administrator is context of user account.</comment>
<comment>administrator is context of user account.</comment>
</data>
<data name="Cant_Drag_Elevated_Learn_More" xml:space="preserve">
<value>Learn more</value>
@ -263,4 +263,7 @@
<data name="Setting_Description_FlashZonesOnQuickSwitch" xml:space="preserve">
<value>Flash zones when switching layout</value>
</data>
<data name="Setting_Description_System_Theme" xml:space="preserve">
<value>Use system theme</value>
</data>
</root>

View file

@ -28,6 +28,7 @@ namespace NonLocalizable
const wchar_t SpanZonesAcrossMonitorsID[] = L"fancyzones_span_zones_across_monitors";
const wchar_t MakeDraggedWindowTransparentID[] = L"fancyzones_makeDraggedWindowTransparent";
const wchar_t SystemTheme[] = L"fancyzones_systemTheme";
const wchar_t ZoneColorID[] = L"fancyzones_zoneColor";
const wchar_t ZoneBorderColorID[] = L"fancyzones_zoneBorderColor";
const wchar_t ZoneHighlightColorID[] = L"fancyzones_zoneHighlightColor";
@ -80,7 +81,7 @@ private:
PCWSTR name;
bool* value;
int resourceId;
} m_configBools[17] = {
} m_configBools[18] = {
{ NonLocalizable::ShiftDragID, &m_settings.shiftDrag, IDS_SETTING_DESCRIPTION_SHIFTDRAG },
{ NonLocalizable::MouseSwitchID, &m_settings.mouseSwitch, IDS_SETTING_DESCRIPTION_MOUSESWITCH },
{ NonLocalizable::OverrideSnapHotKeysID, &m_settings.overrideSnapHotkeys, IDS_SETTING_DESCRIPTION_OVERRIDE_SNAP_HOTKEYS },
@ -98,6 +99,7 @@ private:
{ NonLocalizable::SpanZonesAcrossMonitorsID, &m_settings.spanZonesAcrossMonitors, IDS_SETTING_DESCRIPTION_SPAN_ZONES_ACROSS_MONITORS },
{ NonLocalizable::MakeDraggedWindowTransparentID, &m_settings.makeDraggedWindowTransparent, IDS_SETTING_DESCRIPTION_MAKE_DRAGGED_WINDOW_TRANSPARENT },
{ NonLocalizable::WindowSwitchingToggleID, &m_settings.windowSwitching, IDS_SETTING_WINDOW_SWITCHING_TOGGLE_LABEL },
{ NonLocalizable::SystemTheme, &m_settings.systemTheme, IDS_SETTING_DESCRIPTION_SYSTEM_THEME },
};
};

View file

@ -32,6 +32,7 @@ struct Settings
bool showZonesOnAllMonitors = false;
bool spanZonesAcrossMonitors = false;
bool makeDraggedWindowTransparent = true;
bool systemTheme = true;
std::wstring zoneColor = L"#AACDFF";
std::wstring zoneBorderColor = L"#FFFFFF";
std::wstring zoneHighlightColor = L"#008CFF";

View file

@ -6,5 +6,6 @@ struct ZoneColors
COLORREF primaryColor;
COLORREF borderColor;
COLORREF highlightColor;
COLORREF textColor;
int highlightOpacity;
};

View file

@ -131,10 +131,8 @@ ZoneWindowDrawing::RenderResult ZoneWindowDrawing::Render()
// Draw backdrop
m_renderTarget->Clear(D2D1::ColorF(0.f, 0.f, 0.f, 0.f));
ID2D1SolidColorBrush* textBrush = nullptr;
IDWriteTextFormat* textFormat = nullptr;
m_renderTarget->CreateSolidColorBrush(D2D1::ColorF(D2D1::ColorF::Black, animationAlpha), &textBrush);
auto writeFactory = GetWriteFactory();
if (writeFactory)
@ -144,6 +142,7 @@ ZoneWindowDrawing::RenderResult ZoneWindowDrawing::Render()
for (auto drawableRect : m_sceneRects)
{
ID2D1SolidColorBrush* textBrush = nullptr;
ID2D1SolidColorBrush* borderBrush = nullptr;
ID2D1SolidColorBrush* fillBrush = nullptr;
@ -151,6 +150,7 @@ ZoneWindowDrawing::RenderResult ZoneWindowDrawing::Render()
drawableRect.borderColor.a *= animationAlpha;
drawableRect.fillColor.a *= animationAlpha;
m_renderTarget->CreateSolidColorBrush(drawableRect.textColor, &textBrush);
m_renderTarget->CreateSolidColorBrush(drawableRect.borderColor, &borderBrush);
m_renderTarget->CreateSolidColorBrush(drawableRect.fillColor, &fillBrush);
@ -174,6 +174,11 @@ ZoneWindowDrawing::RenderResult ZoneWindowDrawing::Render()
textFormat->SetParagraphAlignment(DWRITE_PARAGRAPH_ALIGNMENT_CENTER);
m_renderTarget->DrawTextW(idStr.c_str(), (UINT32)idStr.size(), textFormat, drawableRect.rect, textBrush);
}
if (textBrush)
{
textBrush->Release();
}
}
if (textFormat)
@ -181,11 +186,6 @@ ZoneWindowDrawing::RenderResult ZoneWindowDrawing::Render()
textFormat->Release();
}
if (textBrush)
{
textBrush->Release();
}
// The lock must be released here, as EndDraw() will wait for vertical sync
lock.unlock();
@ -289,6 +289,7 @@ void ZoneWindowDrawing::DrawActiveZoneSet(const IZoneSet::ZonesMap& zones,
auto borderColor = ConvertColor(colors.borderColor);
auto inactiveColor = ConvertColor(colors.primaryColor);
auto highlightColor = ConvertColor(colors.highlightColor);
auto textColor = ConvertColor(colors.textColor);
inactiveColor.a = colors.highlightOpacity / 100.f;
highlightColor.a = colors.highlightOpacity / 100.f;
@ -313,6 +314,7 @@ void ZoneWindowDrawing::DrawActiveZoneSet(const IZoneSet::ZonesMap& zones,
.rect = ConvertRect(zone->GetZoneRect()),
.borderColor = borderColor,
.fillColor = inactiveColor,
.textColor = textColor,
.id = zone->Id()
};
@ -334,6 +336,7 @@ void ZoneWindowDrawing::DrawActiveZoneSet(const IZoneSet::ZonesMap& zones,
.rect = ConvertRect(zone->GetZoneRect()),
.borderColor = borderColor,
.fillColor = highlightColor,
.textColor = textColor,
.id = zone->Id()
};

View file

@ -20,6 +20,7 @@ class ZoneWindowDrawing
D2D1_RECT_F rect;
D2D1_COLOR_F borderColor;
D2D1_COLOR_F fillColor;
D2D1_COLOR_F textColor;
ZoneIndex id;
};

View file

@ -46,6 +46,7 @@ namespace Microsoft.PowerToys.Settings.UI.Library
FancyzonesExcludedApps = new StringProperty();
FancyzonesInActiveColor = new StringProperty(ConfigDefaults.DefaultFancyZonesInActiveColor);
FancyzonesBorderColor = new StringProperty(ConfigDefaults.DefaultFancyzonesBorderColor);
FancyzonesSystemTheme = new BoolProperty(true);
}
[JsonPropertyName("fancyzones_shiftDrag")]
@ -126,6 +127,9 @@ namespace Microsoft.PowerToys.Settings.UI.Library
[JsonPropertyName("fancyzones_zoneColor")]
public StringProperty FancyzonesInActiveColor { get; set; }
[JsonPropertyName("fancyzones_systemTheme")]
public BoolProperty FancyzonesSystemTheme { get; set; }
// converts the current to a json string.
public string ToJsonString()
{

View file

@ -88,6 +88,7 @@ namespace Microsoft.PowerToys.Settings.UI.Library.ViewModels
_makeDraggedWindowTransparent = Settings.Properties.FancyzonesMakeDraggedWindowTransparent.Value;
_highlightOpacity = Settings.Properties.FancyzonesHighlightOpacity.Value;
_excludedApps = Settings.Properties.FancyzonesExcludedApps.Value;
_systemTheme = Settings.Properties.FancyzonesSystemTheme.Value;
EditorHotkey = Settings.Properties.FancyzonesEditorHotkey.Value;
_windowSwitching = Settings.Properties.FancyzonesWindowSwitching.Value;
NextTabHotkey = Settings.Properties.FancyzonesNextTabHotkey.Value;
@ -126,6 +127,7 @@ namespace Microsoft.PowerToys.Settings.UI.Library.ViewModels
private bool _useCursorPosEditorStartupScreen;
private bool _showOnAllMonitors;
private bool _makeDraggedWindowTransparent;
private bool _systemTheme;
private int _highlightOpacity;
private string _excludedApps;
@ -520,6 +522,24 @@ namespace Microsoft.PowerToys.Settings.UI.Library.ViewModels
}
}
public bool SystemTheme
{
get
{
return _systemTheme;
}
set
{
if (value != _systemTheme)
{
_systemTheme = value;
Settings.Properties.FancyzonesSystemTheme.Value = value;
NotifyPropertyChanged();
}
}
}
// For the following setters we use OrdinalIgnoreCase string comparison since
// we expect value to be a hex code.
public string ZoneHighlightColor

View file

@ -408,7 +408,7 @@
<data name="PowerLauncher_UseCentralizedKeyboardHook.Header" xml:space="preserve">
<value>Use centralized keyboard hook</value>
</data>
<data name="PowerLauncher_UseCentralizedKeyboardHook.Description" xml:space="preserve">
<data name="PowerLauncher_UseCentralizedKeyboardHook.Description" xml:space="preserve">
<value>Try this if there are issues with the shortcut</value>
</data>
<data name="PowerLauncher_ClearInputOnLaunch.Content" xml:space="preserve">
@ -444,13 +444,13 @@
<value>Excludes an application from snapping to zones and will only react to Windows Snap - add one application name per line</value>
</data>
<data name="FancyZones_HighlightOpacity.Header" xml:space="preserve">
<value>Zone opacity</value>
<value>Opacity</value>
</data>
<data name="FancyZones_HotkeyEditorControl.Header" xml:space="preserve">
<value>Open layout editor</value>
<comment>Shortcut to launch the FancyZones layout editor application</comment>
</data>
<data name="FancyZones_WindowSwitching_GroupSettings.Header" xml:space="preserve">
<data name="FancyZones_WindowSwitching_GroupSettings.Header" xml:space="preserve">
<value>Window switching</value>
</data>
<data name="FancyZones_WindowSwitching_GroupSettings.Description" xml:space="preserve">
@ -520,10 +520,10 @@
<data name="FancyZones_UseCursorPosEditorStartupScreen.Description" xml:space="preserve">
<value>When using multiple displays</value>
</data>
<data name="FancyZones_LaunchPositionMouse.Content" xml:space="preserve">
<data name="FancyZones_LaunchPositionMouse.Content" xml:space="preserve">
<value>Where the mouse pointer is</value>
</data>
<data name="FancyZones_LaunchPositionScreen.Content" xml:space="preserve">
<data name="FancyZones_LaunchPositionScreen.Content" xml:space="preserve">
<value>With active focus</value>
</data>
<data name="FancyZones_ZoneBehavior_GroupSettings.Header" xml:space="preserve">
@ -536,7 +536,7 @@
<value>Zones</value>
</data>
<data name="FancyZones_ZoneHighlightColor.Header" xml:space="preserve">
<value>Zone highlight color</value>
<value>Highlight color</value>
</data>
<data name="FancyZones_ZoneSetChangeMoveWindows.Content" xml:space="preserve">
<value>During zone layout changes, windows assigned to a zone will match new size/positions</value>
@ -595,13 +595,13 @@
<data name="PowerRename_Toggle_ContextMenu.Header" xml:space="preserve">
<value>Show PowerRename in</value>
</data>
<data name="PowerRename_Toggle_ContextMenu.Description" xml:space="preserve">
<data name="PowerRename_Toggle_ContextMenu.Description" xml:space="preserve">
<value>Press shift + right-click on files to open the extended menu</value>
</data>
<data name="PowerRename_Toggle_StandardContextMenu.Content" xml:space="preserve">
<data name="PowerRename_Toggle_StandardContextMenu.Content" xml:space="preserve">
<value>Default and extended context menu</value>
</data>
<data name="PowerRename_Toggle_ExtendedContextMenu.Content" xml:space="preserve">
<data name="PowerRename_Toggle_ExtendedContextMenu.Content" xml:space="preserve">
<value>Extended context menu only</value>
</data>
<data name="PowerRename_Toggle_EnableOnExtendedContextMenu.Description" xml:space="preserve">
@ -646,10 +646,10 @@
<value>Enable auto-complete for the search and replace fields</value>
</data>
<data name="FancyZones_BorderColor.Header" xml:space="preserve">
<value>Zone border color</value>
<value>Border color</value>
</data>
<data name="FancyZones_InActiveColor.Header" xml:space="preserve">
<value>Zone inactive color</value>
<value>Inactive color</value>
</data>
<data name="ShortcutGuide.ModuleDescription" xml:space="preserve">
<value>Shows a help overlay with Windows shortcuts.</value>
@ -939,10 +939,10 @@
<data name="ImageResizer_FileModifiedDate.Description" xml:space="preserve">
<value>Used as the 'modified timestamp' in the file properties</value>
</data>
<data name="ImageResizer_UseOriginalDate.Content" xml:space="preserve">
<data name="ImageResizer_UseOriginalDate.Content" xml:space="preserve">
<value>Original file timestamp</value>
</data>
<data name="ImageResizer_UseResizeDate.Content" xml:space="preserve">
<data name="ImageResizer_UseResizeDate.Content" xml:space="preserve">
<value>Timestamp of resize action</value>
</data>
<data name="Encoding.Header" xml:space="preserve">
@ -1015,9 +1015,6 @@ Made with 💗 by Microsoft and the PowerToys community.</value>
<data name="ImageResizer_FilenameParameters.AutomationProperties.Name" xml:space="preserve">
<value>Filename parameters</value>
</data>
<data name="ColorModeHeader.Header" xml:space="preserve">
<value>App theme</value>
</data>
<data name="Radio_Theme_Dark.Content" xml:space="preserve">
<value>Dark</value>
<comment>Dark refers to color, not weight</comment>
@ -1724,4 +1721,19 @@ From there, simply click on a Markdown file, PDF file or SVG icon in the File Ex
<value>Do not activate when Game Mode is on</value>
<comment>"Game mode" is the Windows feature to prevent notification when playing a game.</comment>
</data>
<data name="FancyZones_Radio_Custom_Colors.Content" xml:space="preserve">
<value>Custom colors</value>
</data>
<data name="FancyZones_Radio_Default_Theme.Content" xml:space="preserve">
<value>Windows default</value>
</data>
<data name="ColorModeHeader.Header" xml:space="preserve">
<value>App theme</value>
</data>
<data name="FancyZones_Zone_Appearance.Description" xml:space="preserve">
<value>Customize the way zones look</value>
</data>
<data name="FancyZones_Zone_Appearance.Header" xml:space="preserve">
<value>Zone appearance</value>
</data>
</root>

View file

@ -13,6 +13,7 @@
<Page.Resources>
<converters:BoolToObjectConverter x:Key="BoolToComboBoxIndexConverter" TrueValue="1" FalseValue="0"/>
<converters:StringFormatConverter x:Key="StringFormatConverter"/>
<converters:BoolToVisibilityConverter x:Key="FalseToVisibleConverter" TrueValue="Collapsed" FalseValue="Visible"/>
</Page.Resources>
<controls:SettingsPageControl x:Uid="FancyZones"
@ -89,6 +90,47 @@
</controls:Setting.ActionContent>
</controls:Setting>
</StackPanel>
</controls:SettingExpander.Content>
</controls:SettingExpander>
<controls:SettingExpander IsExpanded="True">
<controls:SettingExpander.Header>
<controls:Setting x:Uid="FancyZones_Zone_Appearance" Icon="&#xE790;" Style="{StaticResource ExpanderHeaderSettingStyle}" >
<controls:Setting.ActionContent>
<ComboBox SelectedIndex="{x:Bind Mode=TwoWay, Path=ViewModel.SystemTheme, Converter={StaticResource BoolToComboBoxIndexConverter}}" MinWidth="{StaticResource SettingActionControlMinWidth}">
<ComboBoxItem x:Uid="FancyZones_Radio_Custom_Colors"/>
<ComboBoxItem x:Uid="FancyZones_Radio_Default_Theme"/>
</ComboBox>
</controls:Setting.ActionContent>
</controls:Setting>
</controls:SettingExpander.Header>
<controls:SettingExpander.Content>
<StackPanel>
<StackPanel Visibility="{x:Bind Mode=OneWay, Path=ViewModel.SystemTheme, Converter={StaticResource FalseToVisibleConverter}}" >
<controls:Setting x:Uid="FancyZones_ZoneHighlightColor" Style="{StaticResource ExpanderContentSettingStyle}">
<controls:Setting.ActionContent>
<controls:ColorPickerButton SelectedColor="{x:Bind Path=ViewModel.ZoneHighlightColor, Mode=TwoWay}" />
</controls:Setting.ActionContent>
</controls:Setting>
<Rectangle Style="{StaticResource ExpanderSeparatorStyle}" />
<controls:Setting x:Uid="FancyZones_InActiveColor" Style="{StaticResource ExpanderContentSettingStyle}">
<controls:Setting.ActionContent>
<controls:ColorPickerButton SelectedColor="{x:Bind Path=ViewModel.ZoneInActiveColor, Mode=TwoWay}" />
</controls:Setting.ActionContent>
</controls:Setting>
<Rectangle Style="{StaticResource ExpanderSeparatorStyle}" />
<controls:Setting x:Uid="FancyZones_BorderColor" Style="{StaticResource ExpanderContentSettingStyle}">
<controls:Setting.ActionContent>
<controls:ColorPickerButton SelectedColor="{x:Bind Path=ViewModel.ZoneBorderColor, Mode=TwoWay}" />
</controls:Setting.ActionContent>
</controls:Setting>
<Rectangle Style="{StaticResource ExpanderSeparatorStyle}" />
</StackPanel>
<controls:Setting x:Uid="FancyZones_HighlightOpacity" Style="{StaticResource ExpanderContentSettingStyle}">
<controls:Setting.ActionContent>
<Slider Minimum="0"
@ -98,31 +140,10 @@
HorizontalAlignment="Right"/>
</controls:Setting.ActionContent>
</controls:Setting>
<controls:Setting x:Uid="FancyZones_ZoneHighlightColor" Style="{StaticResource ExpanderContentSettingStyle}">
<controls:Setting.ActionContent>
<controls:ColorPickerButton SelectedColor="{x:Bind Path=ViewModel.ZoneHighlightColor, Mode=TwoWay}" />
</controls:Setting.ActionContent>
</controls:Setting>
<controls:Setting x:Uid="FancyZones_InActiveColor" Style="{StaticResource ExpanderContentSettingStyle}">
<controls:Setting.ActionContent>
<controls:ColorPickerButton SelectedColor="{x:Bind Path=ViewModel.ZoneInActiveColor, Mode=TwoWay}" />
</controls:Setting.ActionContent>
</controls:Setting>
<controls:Setting x:Uid="FancyZones_BorderColor" Style="{StaticResource ExpanderContentSettingStyle}">
<controls:Setting.ActionContent>
<controls:ColorPickerButton SelectedColor="{x:Bind Path=ViewModel.ZoneBorderColor, Mode=TwoWay}" />
</controls:Setting.ActionContent>
</controls:Setting>
</StackPanel>
</controls:SettingExpander.Content>
</controls:SettingExpander>
</controls:SettingsGroup>
<controls:SettingsGroup x:Uid="FancyZones_Windows" IsEnabled="{x:Bind Mode=OneWay, Path=ViewModel.IsEnabled}">
@ -235,11 +256,6 @@
</controls:SettingExpander>
</controls:SettingsGroup>
<controls:SettingsGroup x:Uid="ExcludedApps" IsEnabled="{x:Bind Mode=OneWay, Path=ViewModel.IsEnabled}">
<controls:SettingExpander IsExpanded="True">
<controls:SettingExpander.Header>

View file

@ -19,5 +19,10 @@ namespace Microsoft.PowerToys.Settings.UI.Views
ViewModel = new FancyZonesViewModel(settingsUtils, SettingsRepository<GeneralSettings>.GetInstance(settingsUtils), SettingsRepository<FancyZonesSettings>.GetInstance(settingsUtils), ShellPage.SendDefaultIPCMessage);
DataContext = ViewModel;
}
private void OpenColorsSettings_Click(object sender, Windows.UI.Xaml.RoutedEventArgs e)
{
Helpers.StartProcessHelper.Start(Helpers.StartProcessHelper.ColorsSettings);
}
}
}