mirror of
https://github.com/microsoft/PowerToys.git
synced 2025-12-16 11:48:06 +01:00
[QuickAccent]Multi-language selection (#35539)
* PowerAccent with multi-language selection - Updated Language enum, method signatures, and settings to support multiple language selections. - Remove ALL language and added special characters language instead. - Modified UI to use ListView with checkboxes for language selection, including a "Select All" option. - Adjusted ViewModel and code-behind to handle multi-selection logic. - Updated Resources.resw and PowerAccentViewModel.cs to reflect these changes. * Changes Language selection UI - Groups languages into two groups - Sort them by localized language name - Remove unneeded looping when no languages selected
This commit is contained in:
@@ -10,7 +10,7 @@ namespace PowerAccent.Core
|
|||||||
{
|
{
|
||||||
public enum Language
|
public enum Language
|
||||||
{
|
{
|
||||||
ALL,
|
SPECIAL,
|
||||||
BG,
|
BG,
|
||||||
CA,
|
CA,
|
||||||
CRH,
|
CRH,
|
||||||
@@ -54,11 +54,24 @@ namespace PowerAccent.Core
|
|||||||
|
|
||||||
internal sealed class Languages
|
internal sealed class Languages
|
||||||
{
|
{
|
||||||
public static string[] GetDefaultLetterKey(LetterKey letter, Language lang)
|
public static string[] GetDefaultLetterKey(LetterKey letter, Language[] langs)
|
||||||
{
|
{
|
||||||
return lang switch
|
if (langs.Length == Enum.GetValues(typeof(Language)).Length)
|
||||||
{
|
{
|
||||||
Language.ALL => GetDefaultLetterKeyALL(letter), // All
|
return GetDefaultLetterKeyALL(letter);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (langs.Length == 0)
|
||||||
|
{
|
||||||
|
return Array.Empty<string>();
|
||||||
|
}
|
||||||
|
|
||||||
|
var characters = new List<string>();
|
||||||
|
foreach (var lang in langs)
|
||||||
|
{
|
||||||
|
characters.AddRange(lang switch
|
||||||
|
{
|
||||||
|
Language.SPECIAL => GetDefaultLetterKeySPECIAL(letter), // Special Characters
|
||||||
Language.BG => GetDefaultLetterKeyBG(letter), // Bulgarian
|
Language.BG => GetDefaultLetterKeyBG(letter), // Bulgarian
|
||||||
Language.CA => GetDefaultLetterKeyCA(letter), // Catalan
|
Language.CA => GetDefaultLetterKeyCA(letter), // Catalan
|
||||||
Language.CRH => GetDefaultLetterKeyCRH(letter), // Crimean Tatar
|
Language.CRH => GetDefaultLetterKeyCRH(letter), // Crimean Tatar
|
||||||
@@ -99,7 +112,10 @@ namespace PowerAccent.Core
|
|||||||
Language.SV => GetDefaultLetterKeySV(letter), // Swedish
|
Language.SV => GetDefaultLetterKeySV(letter), // Swedish
|
||||||
Language.TK => GetDefaultLetterKeyTK(letter), // Turkish
|
Language.TK => GetDefaultLetterKeyTK(letter), // Turkish
|
||||||
_ => throw new ArgumentException("The language {0} is not known in this context", lang.ToString()),
|
_ => throw new ArgumentException("The language {0} is not known in this context", lang.ToString()),
|
||||||
};
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return characters.Distinct().ToArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Store the computed letters for each key, so that subsequent calls don't take as long.
|
// Store the computed letters for each key, so that subsequent calls don't take as long.
|
||||||
@@ -149,7 +165,7 @@ namespace PowerAccent.Core
|
|||||||
.Union(GetDefaultLetterKeySRCyrillic(letter))
|
.Union(GetDefaultLetterKeySRCyrillic(letter))
|
||||||
.Union(GetDefaultLetterKeySV(letter))
|
.Union(GetDefaultLetterKeySV(letter))
|
||||||
.Union(GetDefaultLetterKeyTK(letter))
|
.Union(GetDefaultLetterKeyTK(letter))
|
||||||
.Union(GetDefaultLetterKeyAllLanguagesOnly(letter))
|
.Union(GetDefaultLetterKeySPECIAL(letter))
|
||||||
.ToArray();
|
.ToArray();
|
||||||
|
|
||||||
_allLanguagesCache[letter] = cachedValue;
|
_allLanguagesCache[letter] = cachedValue;
|
||||||
@@ -160,7 +176,7 @@ namespace PowerAccent.Core
|
|||||||
|
|
||||||
// Contains all characters that should be shown in all languages but currently don't belong to any of the single languages available for that letter.
|
// Contains all characters that should be shown in all languages but currently don't belong to any of the single languages available for that letter.
|
||||||
// These characters can be removed from this list after they've been added to one of the other languages for that specific letter.
|
// These characters can be removed from this list after they've been added to one of the other languages for that specific letter.
|
||||||
private static string[] GetDefaultLetterKeyAllLanguagesOnly(LetterKey letter)
|
private static string[] GetDefaultLetterKeySPECIAL(LetterKey letter)
|
||||||
{
|
{
|
||||||
return letter switch
|
return letter switch
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -66,7 +66,10 @@ public class SettingsService
|
|||||||
ExcludedApps = settings.Properties.ExcludedApps.Value;
|
ExcludedApps = settings.Properties.ExcludedApps.Value;
|
||||||
_keyboardListener.UpdateExcludedApps(ExcludedApps);
|
_keyboardListener.UpdateExcludedApps(ExcludedApps);
|
||||||
|
|
||||||
SelectedLang = Enum.TryParse(settings.Properties.SelectedLang.Value, out Language selectedLangValue) ? selectedLangValue : Language.ALL;
|
SelectedLang = settings.Properties.SelectedLang.Value
|
||||||
|
.Split(',', StringSplitOptions.RemoveEmptyEntries)
|
||||||
|
.Select(lang => Enum.TryParse(lang, out Language selectedLangValue) ? selectedLangValue : Language.SPECIAL)
|
||||||
|
.ToArray();
|
||||||
|
|
||||||
switch (settings.Properties.ToolbarPosition.Value)
|
switch (settings.Properties.ToolbarPosition.Value)
|
||||||
{
|
{
|
||||||
@@ -187,9 +190,9 @@ public class SettingsService
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private Language _selectedLang;
|
private Language[] _selectedLang;
|
||||||
|
|
||||||
public Language SelectedLang
|
public Language[] SelectedLang
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -0,0 +1,19 @@
|
|||||||
|
// 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.Collections.Generic;
|
||||||
|
|
||||||
|
namespace Microsoft.PowerToys.Settings.UI.Library
|
||||||
|
{
|
||||||
|
public class PowerAccentLanguageGroupModel : List<PowerAccentLanguageModel>
|
||||||
|
{
|
||||||
|
public PowerAccentLanguageGroupModel(List<PowerAccentLanguageModel> languages, string group)
|
||||||
|
: base(languages)
|
||||||
|
{
|
||||||
|
this.Group = group;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Group { get; init; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
// 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.
|
||||||
|
|
||||||
|
namespace Microsoft.PowerToys.Settings.UI.Library
|
||||||
|
{
|
||||||
|
public record PowerAccentLanguageModel(string LanguageCode, string LanguageResourceID, string GroupResourceID)
|
||||||
|
{
|
||||||
|
public string Language { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,7 +1,8 @@
|
|||||||
<Page
|
<Page
|
||||||
x:Class="Microsoft.PowerToys.Settings.UI.Views.PowerAccentPage"
|
x:Class="Microsoft.PowerToys.Settings.UI.Views.PowerAccentPage"
|
||||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
xmlns:Lib="using:Microsoft.PowerToys.Settings.UI.Library"
|
||||||
xmlns:controls="using:Microsoft.PowerToys.Settings.UI.Controls"
|
xmlns:controls="using:Microsoft.PowerToys.Settings.UI.Controls"
|
||||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
@@ -9,6 +10,15 @@
|
|||||||
xmlns:ui="using:CommunityToolkit.WinUI"
|
xmlns:ui="using:CommunityToolkit.WinUI"
|
||||||
AutomationProperties.LandmarkType="Main"
|
AutomationProperties.LandmarkType="Main"
|
||||||
mc:Ignorable="d">
|
mc:Ignorable="d">
|
||||||
|
<Page.Resources>
|
||||||
|
<CollectionViewSource
|
||||||
|
x:Name="LanguagesCustomViewSource"
|
||||||
|
IsSourceGrouped="True"
|
||||||
|
Source="{x:Bind ViewModel.LanguageGroups, Mode=OneWay}" />
|
||||||
|
<DataTemplate x:Key="LanguageViewTemplate" x:DataType="Lib:PowerAccentLanguageModel">
|
||||||
|
<TextBlock Text="{x:Bind Language}" />
|
||||||
|
</DataTemplate>
|
||||||
|
</Page.Resources>
|
||||||
|
|
||||||
<controls:SettingsPageControl
|
<controls:SettingsPageControl
|
||||||
x:Uid="QuickAccent"
|
x:Uid="QuickAccent"
|
||||||
@@ -48,52 +58,98 @@
|
|||||||
</tkcontrols:SettingsExpander>
|
</tkcontrols:SettingsExpander>
|
||||||
</controls:SettingsGroup>
|
</controls:SettingsGroup>
|
||||||
|
|
||||||
<controls:SettingsGroup x:Uid="QuickAccent_Language" IsEnabled="{x:Bind ViewModel.IsEnabled, Mode=OneWay}">
|
<controls:SettingsGroup
|
||||||
<tkcontrols:SettingsCard x:Uid="QuickAccent_SelectedLanguage" HeaderIcon="{ui:FontIcon Glyph=}">
|
x:Name="QuickAccent_Language"
|
||||||
<ComboBox MinWidth="{StaticResource SettingActionControlMinWidth}" SelectedIndex="{x:Bind Path=ViewModel.SelectedLangIndex, Mode=TwoWay}">
|
x:Uid="QuickAccent_Language"
|
||||||
<!-- These should be in the same order as the array items in PowerAccentViewModel.cs -->
|
IsEnabled="{x:Bind ViewModel.IsEnabled, Mode=OneWay}">
|
||||||
<ComboBoxItem x:Uid="QuickAccent_SelectedLanguage_All" />
|
<tkcontrols:SettingsExpander
|
||||||
<ComboBoxItem x:Uid="QuickAccent_SelectedLanguage_Bulgarian" />
|
x:Uid="QuickAccent_SelectedLanguage"
|
||||||
<ComboBoxItem x:Uid="QuickAccent_SelectedLanguage_Catalan" />
|
HeaderIcon="{ui:FontIcon Glyph=}"
|
||||||
<ComboBoxItem x:Uid="QuickAccent_SelectedLanguage_Crimean" />
|
IsExpanded="False">
|
||||||
<ComboBoxItem x:Uid="QuickAccent_SelectedLanguage_Currency" />
|
<CheckBox
|
||||||
<ComboBoxItem x:Uid="QuickAccent_SelectedLanguage_Croatian" />
|
x:Name="QuickAccent_SelectedLanguage_All"
|
||||||
<ComboBoxItem x:Uid="QuickAccent_SelectedLanguage_Czech" />
|
x:Uid="QuickAccent_SelectedLanguage_All"
|
||||||
<ComboBoxItem x:Uid="QuickAccent_SelectedLanguage_Danish" />
|
Checked="QuickAccent_SelectedLanguage_SelectAll"
|
||||||
<ComboBoxItem x:Uid="QuickAccent_SelectedLanguage_Gaeilge" />
|
IsThreeState="True"
|
||||||
<ComboBoxItem x:Uid="QuickAccent_SelectedLanguage_Gaidhlig" />
|
Unchecked="QuickAccent_SelectedLanguage_UnselectAll" />
|
||||||
<ComboBoxItem x:Uid="QuickAccent_SelectedLanguage_Dutch" />
|
<tkcontrols:SettingsExpander.Items>
|
||||||
<ComboBoxItem x:Uid="QuickAccent_SelectedLanguage_Greek" />
|
<tkcontrols:SettingsCard>
|
||||||
<ComboBoxItem x:Uid="QuickAccent_SelectedLanguage_Estonian" />
|
<ListView
|
||||||
<ComboBoxItem x:Uid="QuickAccent_SelectedLanguage_Esperanto" />
|
x:Name="QuickAccent_Language_Select"
|
||||||
<ComboBoxItem x:Uid="QuickAccent_SelectedLanguage_Finnish" />
|
MinWidth="{StaticResource SettingActionControlMinWidth}"
|
||||||
<ComboBoxItem x:Uid="QuickAccent_SelectedLanguage_French" />
|
MinHeight="{StaticResource SettingActionControlMinWidth}"
|
||||||
<ComboBoxItem x:Uid="QuickAccent_SelectedLanguage_German" />
|
HorizontalContentAlignment="Stretch"
|
||||||
<ComboBoxItem x:Uid="QuickAccent_SelectedLanguage_Hebrew" />
|
VerticalContentAlignment="Stretch"
|
||||||
<ComboBoxItem x:Uid="QuickAccent_SelectedLanguage_Hungarian" />
|
ItemTemplate="{StaticResource LanguageViewTemplate}"
|
||||||
<ComboBoxItem x:Uid="QuickAccent_SelectedLanguage_Icelandic" />
|
ItemsSource="{x:Bind LanguagesCustomViewSource.View, Mode=OneWay}"
|
||||||
<ComboBoxItem x:Uid="QuickAccent_SelectedLanguage_IPA" />
|
Loaded="QuickAccent_Language_Select_Loaded"
|
||||||
<ComboBoxItem x:Uid="QuickAccent_SelectedLanguage_Italian" />
|
ScrollViewer.HorizontalScrollBarVisibility="Visible"
|
||||||
<ComboBoxItem x:Uid="QuickAccent_SelectedLanguage_Kurdish" />
|
ScrollViewer.HorizontalScrollMode="Enabled"
|
||||||
<ComboBoxItem x:Uid="QuickAccent_SelectedLanguage_Lithuanian" />
|
ScrollViewer.VerticalScrollBarVisibility="Visible"
|
||||||
<ComboBoxItem x:Uid="QuickAccent_SelectedLanguage_Macedonian" />
|
ScrollViewer.VerticalScrollMode="Enabled"
|
||||||
<ComboBoxItem x:Uid="QuickAccent_SelectedLanguage_Maori" />
|
SelectionChanged="QuickAccent_SelectedLanguage_SelectionChanged"
|
||||||
<ComboBoxItem x:Uid="QuickAccent_SelectedLanguage_Norwegian" />
|
SelectionMode="Multiple">
|
||||||
<ComboBoxItem x:Uid="QuickAccent_SelectedLanguage_Pinyin" />
|
<ListView.ItemsPanel>
|
||||||
<ComboBoxItem x:Uid="QuickAccent_SelectedLanguage_Polish" />
|
<ItemsPanelTemplate>
|
||||||
<ComboBoxItem x:Uid="QuickAccent_SelectedLanguage_Portuguese" />
|
<ItemsWrapGrid
|
||||||
<ComboBoxItem x:Uid="QuickAccent_SelectedLanguage_Romanian" />
|
MaxWidth="{Binding ElementName=QuickAccent_Language, Path=ActualWidth}"
|
||||||
<ComboBoxItem x:Uid="QuickAccent_SelectedLanguage_Romanization" />
|
ItemWidth="280"
|
||||||
<ComboBoxItem x:Uid="QuickAccent_SelectedLanguage_Slovak" />
|
Orientation="Horizontal" />
|
||||||
<ComboBoxItem x:Uid="QuickAccent_SelectedLanguage_Slovenian" />
|
</ItemsPanelTemplate>
|
||||||
<ComboBoxItem x:Uid="QuickAccent_SelectedLanguage_Spanish" />
|
</ListView.ItemsPanel>
|
||||||
<ComboBoxItem x:Uid="QuickAccent_SelectedLanguage_Serbian" />
|
<ListView.ItemContainerStyle>
|
||||||
<ComboBoxItem x:Uid="QuickAccent_SelectedLanguage_Serbian_Cyrillic" />
|
<Style TargetType="ListViewItem">
|
||||||
<ComboBoxItem x:Uid="QuickAccent_SelectedLanguage_Swedish" />
|
<Setter Property="Template">
|
||||||
<ComboBoxItem x:Uid="QuickAccent_SelectedLanguage_Turkish" />
|
<Setter.Value>
|
||||||
<ComboBoxItem x:Uid="QuickAccent_SelectedLanguage_Welsh" />
|
<ControlTemplate TargetType="ListViewItem">
|
||||||
</ComboBox>
|
<ListViewItemPresenter
|
||||||
|
HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
|
||||||
|
VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"
|
||||||
|
CheckBoxBorderBrush="{ThemeResource CheckBoxBorderThemeBrush}"
|
||||||
|
CheckBoxBrush="{ThemeResource CheckBoxCheckBackgroundFillUnchecked}"
|
||||||
|
CheckBoxCornerRadius="{ThemeResource ControlCornerRadius}"
|
||||||
|
CheckBoxDisabledBorderBrush="{ThemeResource CheckBoxDisabledBorderThemeBrush}"
|
||||||
|
CheckBoxDisabledBrush="{ThemeResource CheckBoxCheckBackgroundFillUncheckedDisabled}"
|
||||||
|
CheckBoxPointerOverBorderBrush="{ThemeResource CheckBoxPointerOverBorderThemeBrush}"
|
||||||
|
CheckBoxPointerOverBrush="{ThemeResource CheckBoxCheckBackgroundFillUncheckedPointerOver}"
|
||||||
|
CheckBoxPressedBorderBrush="{ThemeResource CheckBoxPressedBorderThemeBrush}"
|
||||||
|
CheckBoxPressedBrush="{ThemeResource CheckBoxCheckBackgroundFillUncheckedPressed}"
|
||||||
|
CheckBoxSelectedBrush="{ThemeResource CheckBoxCheckBackgroundFillChecked}"
|
||||||
|
CheckBoxSelectedDisabledBrush="{ThemeResource CheckBoxCheckBackgroundFillCheckedDisabled}"
|
||||||
|
CheckBoxSelectedPointerOverBrush="{ThemeResource CheckBoxCheckBackgroundFillCheckedPointerOver}"
|
||||||
|
CheckBoxSelectedPressedBrush="{ThemeResource CheckBoxCheckBackgroundFillCheckedPressed}"
|
||||||
|
CheckBrush="{ThemeResource CheckBoxCheckGlyphForegroundChecked}"
|
||||||
|
CheckDisabledBrush="{ThemeResource CheckBoxCheckGlyphForegroundCheckedDisabled}"
|
||||||
|
CheckMode="Inline"
|
||||||
|
CheckPressedBrush="{ThemeResource CheckBoxCheckGlyphForegroundUncheckedPressed}"
|
||||||
|
ContentMargin="{TemplateBinding Padding}"
|
||||||
|
ContentTransitions="{TemplateBinding ContentTransitions}"
|
||||||
|
DisabledOpacity="{ThemeResource ListViewItemDisabledThemeOpacity}"
|
||||||
|
ReorderHintOffset="{ThemeResource ListViewItemReorderHintThemeOffset}"
|
||||||
|
SelectionCheckMarkVisualEnabled="True" />
|
||||||
|
</ControlTemplate>
|
||||||
|
</Setter.Value>
|
||||||
|
</Setter>
|
||||||
|
</Style>
|
||||||
|
</ListView.ItemContainerStyle>
|
||||||
|
<ListView.GroupStyle>
|
||||||
|
<GroupStyle>
|
||||||
|
<GroupStyle.HeaderTemplate>
|
||||||
|
<DataTemplate x:DataType="Lib:PowerAccentLanguageGroupModel">
|
||||||
|
<Border AutomationProperties.AccessibilityView="Raw">
|
||||||
|
<TextBlock
|
||||||
|
AutomationProperties.AccessibilityView="Raw"
|
||||||
|
Style="{ThemeResource SubtitleTextBlockStyle}"
|
||||||
|
Text="{x:Bind Group}" />
|
||||||
|
</Border>
|
||||||
|
</DataTemplate>
|
||||||
|
</GroupStyle.HeaderTemplate>
|
||||||
|
</GroupStyle>
|
||||||
|
</ListView.GroupStyle>
|
||||||
|
</ListView>
|
||||||
</tkcontrols:SettingsCard>
|
</tkcontrols:SettingsCard>
|
||||||
|
</tkcontrols:SettingsExpander.Items>
|
||||||
|
</tkcontrols:SettingsExpander>
|
||||||
</controls:SettingsGroup>
|
</controls:SettingsGroup>
|
||||||
|
|
||||||
<controls:SettingsGroup x:Uid="QuickAccent_Toolbar" IsEnabled="{x:Bind ViewModel.IsEnabled, Mode=OneWay}">
|
<controls:SettingsGroup x:Uid="QuickAccent_Toolbar" IsEnabled="{x:Bind ViewModel.IsEnabled, Mode=OneWay}">
|
||||||
|
|||||||
@@ -1,10 +1,12 @@
|
|||||||
// Copyright (c) Microsoft Corporation
|
// Copyright (c) Microsoft Corporation
|
||||||
// The Microsoft Corporation licenses this file to you under the MIT license.
|
// The Microsoft Corporation licenses this file to you under the MIT license.
|
||||||
// See the LICENSE file in the project root for more information.
|
// See the LICENSE file in the project root for more information.
|
||||||
|
using System.Linq;
|
||||||
|
using CommunityToolkit.WinUI;
|
||||||
using Microsoft.PowerToys.Settings.UI.Helpers;
|
using Microsoft.PowerToys.Settings.UI.Helpers;
|
||||||
using Microsoft.PowerToys.Settings.UI.Library;
|
using Microsoft.PowerToys.Settings.UI.Library;
|
||||||
using Microsoft.PowerToys.Settings.UI.ViewModels;
|
using Microsoft.PowerToys.Settings.UI.ViewModels;
|
||||||
|
using Microsoft.UI.Xaml;
|
||||||
using Microsoft.UI.Xaml.Controls;
|
using Microsoft.UI.Xaml.Controls;
|
||||||
|
|
||||||
namespace Microsoft.PowerToys.Settings.UI.Views
|
namespace Microsoft.PowerToys.Settings.UI.Views
|
||||||
@@ -19,11 +21,65 @@ namespace Microsoft.PowerToys.Settings.UI.Views
|
|||||||
ViewModel = new PowerAccentViewModel(settingsUtils, SettingsRepository<GeneralSettings>.GetInstance(settingsUtils), ShellPage.SendDefaultIPCMessage);
|
ViewModel = new PowerAccentViewModel(settingsUtils, SettingsRepository<GeneralSettings>.GetInstance(settingsUtils), ShellPage.SendDefaultIPCMessage);
|
||||||
DataContext = ViewModel;
|
DataContext = ViewModel;
|
||||||
this.InitializeComponent();
|
this.InitializeComponent();
|
||||||
|
this.InitializeControlsStates();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RefreshEnabledState()
|
public void RefreshEnabledState()
|
||||||
{
|
{
|
||||||
ViewModel.RefreshEnabledState();
|
ViewModel.RefreshEnabledState();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void InitializeControlsStates()
|
||||||
|
{
|
||||||
|
SetCheckBoxStatus();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SetCheckBoxStatus()
|
||||||
|
{
|
||||||
|
if (ViewModel.SelectedLanguageOptions.Length == 0)
|
||||||
|
{
|
||||||
|
this.QuickAccent_SelectedLanguage_All.IsChecked = false;
|
||||||
|
this.QuickAccent_SelectedLanguage_All.IsThreeState = false;
|
||||||
|
}
|
||||||
|
else if (ViewModel.AllSelected)
|
||||||
|
{
|
||||||
|
this.QuickAccent_SelectedLanguage_All.IsChecked = true;
|
||||||
|
this.QuickAccent_SelectedLanguage_All.IsThreeState = false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this.QuickAccent_SelectedLanguage_All.IsThreeState = true;
|
||||||
|
this.QuickAccent_SelectedLanguage_All.IsChecked = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void QuickAccent_SelectedLanguage_SelectAll(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
this.QuickAccent_Language_Select.SelectAllSafe();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void QuickAccent_SelectedLanguage_UnselectAll(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
this.QuickAccent_Language_Select.DeselectAll();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void QuickAccent_SelectedLanguage_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
||||||
|
{
|
||||||
|
var listView = sender as ListView;
|
||||||
|
|
||||||
|
ViewModel.SelectedLanguageOptions = listView.SelectedItems
|
||||||
|
.Select(item => item as PowerAccentLanguageModel)
|
||||||
|
.ToArray();
|
||||||
|
|
||||||
|
SetCheckBoxStatus();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void QuickAccent_Language_Select_Loaded(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
foreach (var languageOption in ViewModel.SelectedLanguageOptions)
|
||||||
|
{
|
||||||
|
this.QuickAccent_Language_Select.SelectedItems.Add(languageOption);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<root>
|
<root>
|
||||||
<!--
|
<!--
|
||||||
Microsoft ResX Schema
|
Microsoft ResX Schema
|
||||||
@@ -3585,124 +3585,133 @@ Activate by holding the key for the character you want to add an accent to, then
|
|||||||
<data name="QuickAccent_SelectedLanguage_All.Content" xml:space="preserve">
|
<data name="QuickAccent_SelectedLanguage_All.Content" xml:space="preserve">
|
||||||
<value>All available</value>
|
<value>All available</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="QuickAccent_SelectedLanguage_Bulgarian.Content" xml:space="preserve">
|
<data name="QuickAccent_Group_Special" xml:space="preserve">
|
||||||
|
<value>Special sets</value>
|
||||||
|
</data>
|
||||||
|
<data name="QuickAccent_Group_Language" xml:space="preserve">
|
||||||
|
<value>Language sets</value>
|
||||||
|
</data>
|
||||||
|
<data name="QuickAccent_SelectedLanguage_Special" xml:space="preserve">
|
||||||
|
<value>Special Characters</value>
|
||||||
|
</data>
|
||||||
|
<data name="QuickAccent_SelectedLanguage_Bulgarian" xml:space="preserve">
|
||||||
<value>Bulgarian</value>
|
<value>Bulgarian</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="QuickAccent_SelectedLanguage_Catalan.Content" xml:space="preserve">
|
<data name="QuickAccent_SelectedLanguage_Catalan" xml:space="preserve">
|
||||||
<value>Catalan</value>
|
<value>Catalan</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="QuickAccent_SelectedLanguage_Crimean.Content" xml:space="preserve">
|
<data name="QuickAccent_SelectedLanguage_Crimean" xml:space="preserve">
|
||||||
<value>Crimean Tatar</value>
|
<value>Crimean Tatar</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="QuickAccent_SelectedLanguage_Currency.Content" xml:space="preserve">
|
<data name="QuickAccent_SelectedLanguage_Currency" xml:space="preserve">
|
||||||
<value>Currency</value>
|
<value>Currency</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="QuickAccent_SelectedLanguage_Croatian.Content" xml:space="preserve">
|
<data name="QuickAccent_SelectedLanguage_Croatian" xml:space="preserve">
|
||||||
<value>Croatian</value>
|
<value>Croatian</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="QuickAccent_SelectedLanguage_Czech.Content" xml:space="preserve">
|
<data name="QuickAccent_SelectedLanguage_Czech" xml:space="preserve">
|
||||||
<value>Czech</value>
|
<value>Czech</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="QuickAccent_SelectedLanguage_Danish.Content" xml:space="preserve">
|
<data name="QuickAccent_SelectedLanguage_Danish" xml:space="preserve">
|
||||||
<value>Danish</value>
|
<value>Danish</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="QuickAccent_SelectedLanguage_Gaeilge.Content" xml:space="preserve">
|
<data name="QuickAccent_SelectedLanguage_Gaeilge" xml:space="preserve">
|
||||||
<value>Gaeilge</value>
|
<value>Gaeilge</value>
|
||||||
<comment>Gaelic language spoken in Ireland</comment>
|
<comment>Gaelic language spoken in Ireland</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="QuickAccent_SelectedLanguage_Gaidhlig.Content" xml:space="preserve">
|
<data name="QuickAccent_SelectedLanguage_Gaidhlig" xml:space="preserve">
|
||||||
<value>Gàidhlig</value>
|
<value>Gàidhlig</value>
|
||||||
<comment>Scottish Gaelic</comment>
|
<comment>Scottish Gaelic</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="QuickAccent_SelectedLanguage_German.Content" xml:space="preserve">
|
<data name="QuickAccent_SelectedLanguage_German" xml:space="preserve">
|
||||||
<value>German</value>
|
<value>German</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="QuickAccent_SelectedLanguage_Greek.Content" xml:space="preserve">
|
<data name="QuickAccent_SelectedLanguage_Greek" xml:space="preserve">
|
||||||
<value>Greek</value>
|
<value>Greek</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="QuickAccent_SelectedLanguage_Hebrew.Content" xml:space="preserve">
|
<data name="QuickAccent_SelectedLanguage_Hebrew" xml:space="preserve">
|
||||||
<value>Hebrew</value>
|
<value>Hebrew</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="QuickAccent_SelectedLanguage_French.Content" xml:space="preserve">
|
<data name="QuickAccent_SelectedLanguage_French" xml:space="preserve">
|
||||||
<value>French</value>
|
<value>French</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="QuickAccent_SelectedLanguage_Finnish.Content" xml:space="preserve">
|
<data name="QuickAccent_SelectedLanguage_Finnish" xml:space="preserve">
|
||||||
<value>Finnish</value>
|
<value>Finnish</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="QuickAccent_SelectedLanguage_Estonian.Content" xml:space="preserve">
|
<data name="QuickAccent_SelectedLanguage_Estonian" xml:space="preserve">
|
||||||
<value>Estonian</value>
|
<value>Estonian</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="QuickAccent_SelectedLanguage_Esperanto.Content" xml:space="preserve">
|
<data name="QuickAccent_SelectedLanguage_Esperanto" xml:space="preserve">
|
||||||
<value>Esperanto</value>
|
<value>Esperanto</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="QuickAccent_SelectedLanguage_IPA.Content" xml:space="preserve">
|
<data name="QuickAccent_SelectedLanguage_IPA" xml:space="preserve">
|
||||||
<value>IPA</value>
|
<value>IPA</value>
|
||||||
<comment>International Phonetic Alphabet</comment>
|
<comment>International Phonetic Alphabet</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="QuickAccent_SelectedLanguage_Lithuanian.Content" xml:space="preserve">
|
<data name="QuickAccent_SelectedLanguage_Lithuanian" xml:space="preserve">
|
||||||
<value>Lithuanian</value>
|
<value>Lithuanian</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="QuickAccent_SelectedLanguage_Macedonian.Content" xml:space="preserve">
|
<data name="QuickAccent_SelectedLanguage_Macedonian" xml:space="preserve">
|
||||||
<value>Macedonian</value>
|
<value>Macedonian</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="QuickAccent_SelectedLanguage_Maori.Content" xml:space="preserve">
|
<data name="QuickAccent_SelectedLanguage_Maori" xml:space="preserve">
|
||||||
<value>Maori</value>
|
<value>Maori</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="QuickAccent_SelectedLanguage_Romanization.Content" xml:space="preserve">
|
<data name="QuickAccent_SelectedLanguage_Romanization" xml:space="preserve">
|
||||||
<value>Middle Eastern Romanization</value>
|
<value>Middle Eastern Romanization</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="QuickAccent_SelectedLanguage_Dutch.Content" xml:space="preserve">
|
<data name="QuickAccent_SelectedLanguage_Dutch" xml:space="preserve">
|
||||||
<value>Dutch</value>
|
<value>Dutch</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="QuickAccent_SelectedLanguage_Norwegian.Content" xml:space="preserve">
|
<data name="QuickAccent_SelectedLanguage_Norwegian" xml:space="preserve">
|
||||||
<value>Norwegian</value>
|
<value>Norwegian</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="QuickAccent_SelectedLanguage_Pinyin.Content" xml:space="preserve">
|
<data name="QuickAccent_SelectedLanguage_Pinyin" xml:space="preserve">
|
||||||
<value>Pinyin</value>
|
<value>Pinyin</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="QuickAccent_SelectedLanguage_Polish.Content" xml:space="preserve">
|
<data name="QuickAccent_SelectedLanguage_Polish" xml:space="preserve">
|
||||||
<value>Polish</value>
|
<value>Polish</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="QuickAccent_SelectedLanguage_Portuguese.Content" xml:space="preserve">
|
<data name="QuickAccent_SelectedLanguage_Portuguese" xml:space="preserve">
|
||||||
<value>Portuguese</value>
|
<value>Portuguese</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="QuickAccent_SelectedLanguage_Slovak.Content" xml:space="preserve">
|
<data name="QuickAccent_SelectedLanguage_Slovak" xml:space="preserve">
|
||||||
<value>Slovak</value>
|
<value>Slovak</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="QuickAccent_SelectedLanguage_Slovenian.Content" xml:space="preserve">
|
<data name="QuickAccent_SelectedLanguage_Slovenian" xml:space="preserve">
|
||||||
<value>Slovenian</value>
|
<value>Slovenian</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="QuickAccent_SelectedLanguage_Spanish.Content" xml:space="preserve">
|
<data name="QuickAccent_SelectedLanguage_Spanish" xml:space="preserve">
|
||||||
<value>Spanish</value>
|
<value>Spanish</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="QuickAccent_SelectedLanguage_Swedish.Content" xml:space="preserve">
|
<data name="QuickAccent_SelectedLanguage_Swedish" xml:space="preserve">
|
||||||
<value>Swedish</value>
|
<value>Swedish</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="QuickAccent_SelectedLanguage_Turkish.Content" xml:space="preserve">
|
<data name="QuickAccent_SelectedLanguage_Turkish" xml:space="preserve">
|
||||||
<value>Turkish</value>
|
<value>Turkish</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="QuickAccent_SelectedLanguage_Icelandic.Content" xml:space="preserve">
|
<data name="QuickAccent_SelectedLanguage_Icelandic" xml:space="preserve">
|
||||||
<value>Icelandic</value>
|
<value>Icelandic</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="QuickAccent_SelectedLanguage_Romanian.Content" xml:space="preserve">
|
<data name="QuickAccent_SelectedLanguage_Romanian" xml:space="preserve">
|
||||||
<value>Romanian</value>
|
<value>Romanian</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="QuickAccent_SelectedLanguage_Serbian.Content" xml:space="preserve">
|
<data name="QuickAccent_SelectedLanguage_Serbian" xml:space="preserve">
|
||||||
<value>Serbian</value>
|
<value>Serbian</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="QuickAccent_SelectedLanguage_Serbian_Cyrillic.Content" xml:space="preserve">
|
<data name="QuickAccent_SelectedLanguage_Serbian_Cyrillic" xml:space="preserve">
|
||||||
<value>Serbian Cyrillic</value>
|
<value>Serbian Cyrillic</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="QuickAccent_SelectedLanguage_Hungarian.Content" xml:space="preserve">
|
<data name="QuickAccent_SelectedLanguage_Hungarian" xml:space="preserve">
|
||||||
<value>Hungarian</value>
|
<value>Hungarian</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="QuickAccent_SelectedLanguage_Italian.Content" xml:space="preserve">
|
<data name="QuickAccent_SelectedLanguage_Italian" xml:space="preserve">
|
||||||
<value>Italian</value>
|
<value>Italian</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="QuickAccent_SelectedLanguage_Kurdish.Content" xml:space="preserve">
|
<data name="QuickAccent_SelectedLanguage_Kurdish" xml:space="preserve">
|
||||||
<value>Kurdish</value>
|
<value>Kurdish</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="QuickAccent_SelectedLanguage_Welsh.Content" xml:space="preserve">
|
<data name="QuickAccent_SelectedLanguage_Welsh" xml:space="preserve">
|
||||||
<value>Welsh</value>
|
<value>Welsh</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Hosts.ModuleDescription" xml:space="preserve">
|
<data name="Hosts.ModuleDescription" xml:space="preserve">
|
||||||
|
|||||||
@@ -3,9 +3,11 @@
|
|||||||
// See the LICENSE file in the project root for more information.
|
// See the LICENSE file in the project root for more information.
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
using System.Runtime.CompilerServices;
|
using System.Runtime.CompilerServices;
|
||||||
|
|
||||||
using global::PowerToys.GPOWrapper;
|
using global::PowerToys.GPOWrapper;
|
||||||
|
using Microsoft.PowerToys.Settings.UI.Helpers;
|
||||||
using Microsoft.PowerToys.Settings.UI.Library;
|
using Microsoft.PowerToys.Settings.UI.Library;
|
||||||
using Microsoft.PowerToys.Settings.UI.Library.Enumerations;
|
using Microsoft.PowerToys.Settings.UI.Library.Enumerations;
|
||||||
using Microsoft.PowerToys.Settings.UI.Library.Helpers;
|
using Microsoft.PowerToys.Settings.UI.Library.Helpers;
|
||||||
@@ -21,50 +23,53 @@ namespace Microsoft.PowerToys.Settings.UI.ViewModels
|
|||||||
|
|
||||||
private readonly ISettingsUtils _settingsUtils;
|
private readonly ISettingsUtils _settingsUtils;
|
||||||
|
|
||||||
// These should be in the same order as the ComboBoxItems in PowerAccentPage.xaml
|
private const string SpecialGroup = "QuickAccent_Group_Special";
|
||||||
private readonly string[] _languageOptions =
|
private const string LanguageGroup = "QuickAccent_Group_Language";
|
||||||
{
|
|
||||||
"ALL",
|
public List<PowerAccentLanguageModel> Languages { get; } = [
|
||||||
"BG",
|
new PowerAccentLanguageModel("SPECIAL", "QuickAccent_SelectedLanguage_Special", SpecialGroup),
|
||||||
"CA",
|
new PowerAccentLanguageModel("BG", "QuickAccent_SelectedLanguage_Bulgarian", LanguageGroup),
|
||||||
"CRH",
|
new PowerAccentLanguageModel("CA", "QuickAccent_SelectedLanguage_Catalan", LanguageGroup),
|
||||||
"CUR",
|
new PowerAccentLanguageModel("CRH", "QuickAccent_SelectedLanguage_Crimean", LanguageGroup),
|
||||||
"HR",
|
new PowerAccentLanguageModel("CUR", "QuickAccent_SelectedLanguage_Currency", SpecialGroup),
|
||||||
"CZ",
|
new PowerAccentLanguageModel("HR", "QuickAccent_SelectedLanguage_Croatian", LanguageGroup),
|
||||||
"DK",
|
new PowerAccentLanguageModel("CZ", "QuickAccent_SelectedLanguage_Czech", LanguageGroup),
|
||||||
"GA",
|
new PowerAccentLanguageModel("DK", "QuickAccent_SelectedLanguage_Danish", LanguageGroup),
|
||||||
"GD",
|
new PowerAccentLanguageModel("GA", "QuickAccent_SelectedLanguage_Gaeilge", LanguageGroup),
|
||||||
"NL",
|
new PowerAccentLanguageModel("GD", "QuickAccent_SelectedLanguage_Gaidhlig", LanguageGroup),
|
||||||
"EL",
|
new PowerAccentLanguageModel("NL", "QuickAccent_SelectedLanguage_Dutch", LanguageGroup),
|
||||||
"EST",
|
new PowerAccentLanguageModel("EL", "QuickAccent_SelectedLanguage_Greek", LanguageGroup),
|
||||||
"EPO",
|
new PowerAccentLanguageModel("EST", "QuickAccent_SelectedLanguage_Estonian", LanguageGroup),
|
||||||
"FI",
|
new PowerAccentLanguageModel("EPO", "QuickAccent_SelectedLanguage_Esperanto", LanguageGroup),
|
||||||
"FR",
|
new PowerAccentLanguageModel("FI", "QuickAccent_SelectedLanguage_Finnish", LanguageGroup),
|
||||||
"DE",
|
new PowerAccentLanguageModel("FR", "QuickAccent_SelectedLanguage_French", LanguageGroup),
|
||||||
"HE",
|
new PowerAccentLanguageModel("DE", "QuickAccent_SelectedLanguage_German", LanguageGroup),
|
||||||
"HU",
|
new PowerAccentLanguageModel("HE", "QuickAccent_SelectedLanguage_Hebrew", LanguageGroup),
|
||||||
"IS",
|
new PowerAccentLanguageModel("HU", "QuickAccent_SelectedLanguage_Hungarian", LanguageGroup),
|
||||||
"IPA",
|
new PowerAccentLanguageModel("IS", "QuickAccent_SelectedLanguage_Icelandic", LanguageGroup),
|
||||||
"IT",
|
new PowerAccentLanguageModel("IPA", "QuickAccent_SelectedLanguage_IPA", SpecialGroup),
|
||||||
"KU",
|
new PowerAccentLanguageModel("IT", "QuickAccent_SelectedLanguage_Italian", LanguageGroup),
|
||||||
"LT",
|
new PowerAccentLanguageModel("KU", "QuickAccent_SelectedLanguage_Kurdish", LanguageGroup),
|
||||||
"MK",
|
new PowerAccentLanguageModel("LT", "QuickAccent_SelectedLanguage_Lithuanian", LanguageGroup),
|
||||||
"MI",
|
new PowerAccentLanguageModel("MK", "QuickAccent_SelectedLanguage_Macedonian", LanguageGroup),
|
||||||
"NO",
|
new PowerAccentLanguageModel("MI", "QuickAccent_SelectedLanguage_Maori", LanguageGroup),
|
||||||
"PI",
|
new PowerAccentLanguageModel("NO", "QuickAccent_SelectedLanguage_Norwegian", LanguageGroup),
|
||||||
"PL",
|
new PowerAccentLanguageModel("PI", "QuickAccent_SelectedLanguage_Pinyin", LanguageGroup),
|
||||||
"PT",
|
new PowerAccentLanguageModel("PL", "QuickAccent_SelectedLanguage_Polish", LanguageGroup),
|
||||||
"RO",
|
new PowerAccentLanguageModel("PT", "QuickAccent_SelectedLanguage_Portuguese", LanguageGroup),
|
||||||
"ROM",
|
new PowerAccentLanguageModel("RO", "QuickAccent_SelectedLanguage_Romanian", LanguageGroup),
|
||||||
"SK",
|
new PowerAccentLanguageModel("ROM", "QuickAccent_SelectedLanguage_Romanization", SpecialGroup),
|
||||||
"SL",
|
new PowerAccentLanguageModel("SK", "QuickAccent_SelectedLanguage_Slovak", LanguageGroup),
|
||||||
"SP",
|
new PowerAccentLanguageModel("SL", "QuickAccent_SelectedLanguage_Slovenian", LanguageGroup),
|
||||||
"SR",
|
new PowerAccentLanguageModel("SP", "QuickAccent_SelectedLanguage_Spanish", LanguageGroup),
|
||||||
"SR_CYRL",
|
new PowerAccentLanguageModel("SR", "QuickAccent_SelectedLanguage_Serbian", LanguageGroup),
|
||||||
"SV",
|
new PowerAccentLanguageModel("SR_CYRL", "QuickAccent_SelectedLanguage_Serbian_Cyrillic", LanguageGroup),
|
||||||
"TK",
|
new PowerAccentLanguageModel("SV", "QuickAccent_SelectedLanguage_Swedish", LanguageGroup),
|
||||||
"CY",
|
new PowerAccentLanguageModel("TK", "QuickAccent_SelectedLanguage_Turkish", LanguageGroup),
|
||||||
};
|
new PowerAccentLanguageModel("CY", "QuickAccent_SelectedLanguage_Welsh", LanguageGroup),
|
||||||
|
];
|
||||||
|
|
||||||
|
public PowerAccentLanguageGroupModel[] LanguageGroups { get; private set; }
|
||||||
|
|
||||||
private readonly string[] _toolbarOptions =
|
private readonly string[] _toolbarOptions =
|
||||||
{
|
{
|
||||||
@@ -90,6 +95,7 @@ namespace Microsoft.PowerToys.Settings.UI.ViewModels
|
|||||||
GeneralSettingsConfig = settingsRepository.SettingsConfig;
|
GeneralSettingsConfig = settingsRepository.SettingsConfig;
|
||||||
|
|
||||||
InitializeEnabledValue();
|
InitializeEnabledValue();
|
||||||
|
InitializeLanguages();
|
||||||
|
|
||||||
if (_settingsUtils.SettingsExists(PowerAccentSettings.ModuleName))
|
if (_settingsUtils.SettingsExists(PowerAccentSettings.ModuleName))
|
||||||
{
|
{
|
||||||
@@ -104,7 +110,20 @@ namespace Microsoft.PowerToys.Settings.UI.ViewModels
|
|||||||
|
|
||||||
_excludedApps = _powerAccentSettings.Properties.ExcludedApps.Value;
|
_excludedApps = _powerAccentSettings.Properties.ExcludedApps.Value;
|
||||||
|
|
||||||
_selectedLangIndex = Array.IndexOf(_languageOptions, _powerAccentSettings.Properties.SelectedLang.Value);
|
if (!string.IsNullOrWhiteSpace(_powerAccentSettings.Properties.SelectedLang.Value) && !_powerAccentSettings.Properties.SelectedLang.Value.Contains("ALL"))
|
||||||
|
{
|
||||||
|
SelectedLanguageOptions = _powerAccentSettings.Properties.SelectedLang.Value.Split(',')
|
||||||
|
.Select(l => Languages.Find(lang => lang.LanguageCode == l))
|
||||||
|
.ToArray();
|
||||||
|
}
|
||||||
|
else if (_powerAccentSettings.Properties.SelectedLang.Value.Contains("ALL"))
|
||||||
|
{
|
||||||
|
SelectedLanguageOptions = Languages.ToArray();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SelectedLanguageOptions = Array.Empty<PowerAccentLanguageModel>();
|
||||||
|
}
|
||||||
|
|
||||||
_toolbarPositionIndex = Array.IndexOf(_toolbarOptions, _powerAccentSettings.Properties.ToolbarPosition.Value);
|
_toolbarPositionIndex = Array.IndexOf(_toolbarOptions, _powerAccentSettings.Properties.ToolbarPosition.Value);
|
||||||
|
|
||||||
@@ -127,6 +146,23 @@ namespace Microsoft.PowerToys.Settings.UI.ViewModels
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Adds Localized Language Name, sorts by it and splits languages into two groups.
|
||||||
|
/// </summary>
|
||||||
|
private void InitializeLanguages()
|
||||||
|
{
|
||||||
|
foreach (var item in Languages)
|
||||||
|
{
|
||||||
|
item.Language = ResourceLoaderInstance.ResourceLoader.GetString(item.LanguageResourceID);
|
||||||
|
}
|
||||||
|
|
||||||
|
Languages.Sort((x, y) => string.Compare(x.Language, y.Language, StringComparison.Ordinal));
|
||||||
|
LanguageGroups = Languages
|
||||||
|
.GroupBy(language => language.GroupResourceID)
|
||||||
|
.Select(grp => new PowerAccentLanguageGroupModel(grp.ToList(), ResourceLoaderInstance.ResourceLoader.GetString(grp.Key)))
|
||||||
|
.ToArray();
|
||||||
|
}
|
||||||
|
|
||||||
public bool IsEnabled
|
public bool IsEnabled
|
||||||
{
|
{
|
||||||
get => _isEnabled;
|
get => _isEnabled;
|
||||||
@@ -253,23 +289,18 @@ namespace Microsoft.PowerToys.Settings.UI.ViewModels
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private int _selectedLangIndex;
|
public bool AllSelected => _selectedLanguageOptions.Length == Languages.Count;
|
||||||
|
|
||||||
public int SelectedLangIndex
|
private PowerAccentLanguageModel[] _selectedLanguageOptions;
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
return _selectedLangIndex;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
public PowerAccentLanguageModel[] SelectedLanguageOptions
|
||||||
|
{
|
||||||
|
get => _selectedLanguageOptions;
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
if (_selectedLangIndex != value)
|
_selectedLanguageOptions = value;
|
||||||
{
|
_powerAccentSettings.Properties.SelectedLang.Value = string.Join(',', _selectedLanguageOptions.Select(l => l.LanguageCode));
|
||||||
_selectedLangIndex = value;
|
RaisePropertyChanged(nameof(SelectedLanguageOptions));
|
||||||
_powerAccentSettings.Properties.SelectedLang.Value = _languageOptions[value];
|
|
||||||
RaisePropertyChanged(nameof(SelectedLangIndex));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user