2022-10-16 18:36:16 +01:00
|
|
|
// Copyright (c) Microsoft Corporation
|
2022-08-26 18:01:50 +02:00
|
|
|
// 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;
|
2024-12-02 16:21:56 +01:00
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Linq;
|
2022-08-26 18:01:50 +02:00
|
|
|
using System.Runtime.CompilerServices;
|
2022-10-26 14:02:31 +01:00
|
|
|
using global::PowerToys.GPOWrapper;
|
2024-12-02 16:21:56 +01:00
|
|
|
using Microsoft.PowerToys.Settings.UI.Helpers;
|
2022-10-26 14:02:31 +01:00
|
|
|
using Microsoft.PowerToys.Settings.UI.Library;
|
2022-08-26 18:01:50 +02:00
|
|
|
using Microsoft.PowerToys.Settings.UI.Library.Enumerations;
|
|
|
|
|
using Microsoft.PowerToys.Settings.UI.Library.Helpers;
|
|
|
|
|
using Microsoft.PowerToys.Settings.UI.Library.Interfaces;
|
|
|
|
|
|
2022-10-26 14:02:31 +01:00
|
|
|
namespace Microsoft.PowerToys.Settings.UI.ViewModels
|
2022-08-26 18:01:50 +02:00
|
|
|
{
|
2025-02-25 02:48:54 +08:00
|
|
|
public partial class PowerAccentViewModel : Observable
|
2022-08-26 18:01:50 +02:00
|
|
|
{
|
|
|
|
|
private GeneralSettings GeneralSettingsConfig { get; set; }
|
|
|
|
|
|
|
|
|
|
private readonly PowerAccentSettings _powerAccentSettings;
|
|
|
|
|
|
2025-12-19 03:30:01 +01:00
|
|
|
private readonly SettingsUtils _settingsUtils;
|
2022-08-26 18:01:50 +02:00
|
|
|
|
2024-12-02 16:21:56 +01:00
|
|
|
private const string SpecialGroup = "QuickAccent_Group_Special";
|
|
|
|
|
private const string LanguageGroup = "QuickAccent_Group_Language";
|
|
|
|
|
|
|
|
|
|
public List<PowerAccentLanguageModel> Languages { get; } = [
|
|
|
|
|
new PowerAccentLanguageModel("SPECIAL", "QuickAccent_SelectedLanguage_Special", SpecialGroup),
|
|
|
|
|
new PowerAccentLanguageModel("BG", "QuickAccent_SelectedLanguage_Bulgarian", LanguageGroup),
|
|
|
|
|
new PowerAccentLanguageModel("CA", "QuickAccent_SelectedLanguage_Catalan", LanguageGroup),
|
|
|
|
|
new PowerAccentLanguageModel("CRH", "QuickAccent_SelectedLanguage_Crimean", LanguageGroup),
|
|
|
|
|
new PowerAccentLanguageModel("CUR", "QuickAccent_SelectedLanguage_Currency", SpecialGroup),
|
|
|
|
|
new PowerAccentLanguageModel("HR", "QuickAccent_SelectedLanguage_Croatian", LanguageGroup),
|
|
|
|
|
new PowerAccentLanguageModel("CZ", "QuickAccent_SelectedLanguage_Czech", LanguageGroup),
|
|
|
|
|
new PowerAccentLanguageModel("DK", "QuickAccent_SelectedLanguage_Danish", LanguageGroup),
|
|
|
|
|
new PowerAccentLanguageModel("GA", "QuickAccent_SelectedLanguage_Gaeilge", LanguageGroup),
|
|
|
|
|
new PowerAccentLanguageModel("GD", "QuickAccent_SelectedLanguage_Gaidhlig", LanguageGroup),
|
|
|
|
|
new PowerAccentLanguageModel("NL", "QuickAccent_SelectedLanguage_Dutch", LanguageGroup),
|
|
|
|
|
new PowerAccentLanguageModel("EL", "QuickAccent_SelectedLanguage_Greek", LanguageGroup),
|
|
|
|
|
new PowerAccentLanguageModel("EST", "QuickAccent_SelectedLanguage_Estonian", LanguageGroup),
|
|
|
|
|
new PowerAccentLanguageModel("EPO", "QuickAccent_SelectedLanguage_Esperanto", LanguageGroup),
|
|
|
|
|
new PowerAccentLanguageModel("FI", "QuickAccent_SelectedLanguage_Finnish", LanguageGroup),
|
|
|
|
|
new PowerAccentLanguageModel("FR", "QuickAccent_SelectedLanguage_French", LanguageGroup),
|
|
|
|
|
new PowerAccentLanguageModel("DE", "QuickAccent_SelectedLanguage_German", LanguageGroup),
|
|
|
|
|
new PowerAccentLanguageModel("HE", "QuickAccent_SelectedLanguage_Hebrew", LanguageGroup),
|
|
|
|
|
new PowerAccentLanguageModel("HU", "QuickAccent_SelectedLanguage_Hungarian", LanguageGroup),
|
|
|
|
|
new PowerAccentLanguageModel("IS", "QuickAccent_SelectedLanguage_Icelandic", LanguageGroup),
|
|
|
|
|
new PowerAccentLanguageModel("IPA", "QuickAccent_SelectedLanguage_IPA", SpecialGroup),
|
|
|
|
|
new PowerAccentLanguageModel("IT", "QuickAccent_SelectedLanguage_Italian", LanguageGroup),
|
|
|
|
|
new PowerAccentLanguageModel("KU", "QuickAccent_SelectedLanguage_Kurdish", LanguageGroup),
|
|
|
|
|
new PowerAccentLanguageModel("LT", "QuickAccent_SelectedLanguage_Lithuanian", LanguageGroup),
|
|
|
|
|
new PowerAccentLanguageModel("MK", "QuickAccent_SelectedLanguage_Macedonian", LanguageGroup),
|
[Quick Accent] Add Maltese language (#39473)
# **PR inspired by: #32862**
<!-- Enter a brief description/summary of your PR here. What does it
fix/what does it change/how was it tested (even manually, if necessary)?
-->
## Summary of the Pull Request
Adds [Maltese latin alphabet
symbols](https://en.wikipedia.org/wiki/Maltese_language#Alphabet) (ċ, ġ,
ħ, ż), [grave accented
vowels](https://en.wikipedia.org/wiki/Grave_accent#Stress) (à, è, ì, ò,
ù) and the Euro (€) sign [Malta's currency] as a supported language into
Quick Accent.


<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist
- [x] **Closes:** #39472
- [x] **Communication:** I've
[proposed](https://github.com/microsoft/PowerToys/issues/28769#issuecomment-2884852675)
to add this feature in the thread
- [x] **Tests:** No need
- [x] **Localization:** All end user facing strings can be localized
- [x] **Dev docs:** No need
- [x] **New binaries:** None
- [x] **Documentation updated:** No need
<!-- Describe how you validated the behavior. Add automated tests
wherever possible, but list manual validation steps taken as well -->
## Validation Steps Performed
Observing
2025-08-22 03:31:42 +02:00
|
|
|
new PowerAccentLanguageModel("MT", "QuickAccent_SelectedLanguage_Maltese", LanguageGroup),
|
2024-12-02 16:21:56 +01:00
|
|
|
new PowerAccentLanguageModel("MI", "QuickAccent_SelectedLanguage_Maori", LanguageGroup),
|
|
|
|
|
new PowerAccentLanguageModel("NO", "QuickAccent_SelectedLanguage_Norwegian", LanguageGroup),
|
|
|
|
|
new PowerAccentLanguageModel("PI", "QuickAccent_SelectedLanguage_Pinyin", LanguageGroup),
|
2025-01-06 21:38:59 +08:00
|
|
|
new PowerAccentLanguageModel("PIE", "QuickAccent_SelectedLanguage_Proto_Indo_European", LanguageGroup),
|
2024-12-02 16:21:56 +01:00
|
|
|
new PowerAccentLanguageModel("PL", "QuickAccent_SelectedLanguage_Polish", LanguageGroup),
|
|
|
|
|
new PowerAccentLanguageModel("PT", "QuickAccent_SelectedLanguage_Portuguese", LanguageGroup),
|
|
|
|
|
new PowerAccentLanguageModel("RO", "QuickAccent_SelectedLanguage_Romanian", LanguageGroup),
|
|
|
|
|
new PowerAccentLanguageModel("ROM", "QuickAccent_SelectedLanguage_Romanization", SpecialGroup),
|
|
|
|
|
new PowerAccentLanguageModel("SK", "QuickAccent_SelectedLanguage_Slovak", LanguageGroup),
|
|
|
|
|
new PowerAccentLanguageModel("SL", "QuickAccent_SelectedLanguage_Slovenian", LanguageGroup),
|
|
|
|
|
new PowerAccentLanguageModel("SP", "QuickAccent_SelectedLanguage_Spanish", LanguageGroup),
|
|
|
|
|
new PowerAccentLanguageModel("SR", "QuickAccent_SelectedLanguage_Serbian", LanguageGroup),
|
|
|
|
|
new PowerAccentLanguageModel("SR_CYRL", "QuickAccent_SelectedLanguage_Serbian_Cyrillic", LanguageGroup),
|
|
|
|
|
new PowerAccentLanguageModel("SV", "QuickAccent_SelectedLanguage_Swedish", LanguageGroup),
|
|
|
|
|
new PowerAccentLanguageModel("TK", "QuickAccent_SelectedLanguage_Turkish", LanguageGroup),
|
2025-07-11 18:08:42 +02:00
|
|
|
new PowerAccentLanguageModel("VI", "QuickAccent_SelectedLanguage_Vietnamese", LanguageGroup),
|
2024-12-02 16:21:56 +01:00
|
|
|
new PowerAccentLanguageModel("CY", "QuickAccent_SelectedLanguage_Welsh", LanguageGroup),
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
public PowerAccentLanguageGroupModel[] LanguageGroups { get; private set; }
|
2022-10-16 18:36:16 +01:00
|
|
|
|
|
|
|
|
private readonly string[] _toolbarOptions =
|
|
|
|
|
{
|
|
|
|
|
"Top center",
|
|
|
|
|
"Bottom center",
|
|
|
|
|
"Left",
|
|
|
|
|
"Right",
|
|
|
|
|
"Top right corner",
|
|
|
|
|
"Top left corner",
|
|
|
|
|
"Bottom right corner",
|
|
|
|
|
"Bottom left corner",
|
|
|
|
|
"Center",
|
|
|
|
|
};
|
|
|
|
|
|
2022-08-26 18:01:50 +02:00
|
|
|
private Func<string, int> SendConfigMSG { get; }
|
|
|
|
|
|
2025-12-19 03:30:01 +01:00
|
|
|
public PowerAccentViewModel(SettingsUtils settingsUtils, ISettingsRepository<GeneralSettings> settingsRepository, Func<string, int> ipcMSGCallBackFunc)
|
2022-08-26 18:01:50 +02:00
|
|
|
{
|
|
|
|
|
// To obtain the general settings configurations of PowerToys Settings.
|
2023-11-22 12:46:59 -05:00
|
|
|
ArgumentNullException.ThrowIfNull(settingsRepository);
|
2022-08-26 18:01:50 +02:00
|
|
|
|
|
|
|
|
_settingsUtils = settingsUtils ?? throw new ArgumentNullException(nameof(settingsUtils));
|
|
|
|
|
GeneralSettingsConfig = settingsRepository.SettingsConfig;
|
|
|
|
|
|
2023-01-31 00:00:11 +01:00
|
|
|
InitializeEnabledValue();
|
2024-12-02 16:21:56 +01:00
|
|
|
InitializeLanguages();
|
2022-10-26 14:02:31 +01:00
|
|
|
|
2022-08-26 18:01:50 +02:00
|
|
|
if (_settingsUtils.SettingsExists(PowerAccentSettings.ModuleName))
|
|
|
|
|
{
|
|
|
|
|
_powerAccentSettings = _settingsUtils.GetSettingsOrDefault<PowerAccentSettings>(PowerAccentSettings.ModuleName);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
_powerAccentSettings = new PowerAccentSettings();
|
|
|
|
|
}
|
|
|
|
|
|
2022-09-01 16:56:19 +01:00
|
|
|
_inputTimeMs = _powerAccentSettings.Properties.InputTime.Value;
|
|
|
|
|
|
2022-11-15 14:47:52 +02:00
|
|
|
_excludedApps = _powerAccentSettings.Properties.ExcludedApps.Value;
|
|
|
|
|
|
2024-12-02 16:21:56 +01:00
|
|
|
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))
|
2025-01-13 15:13:50 +00:00
|
|
|
.Where(l => l != null) // Wrongly typed languages will appear as null after find. We want to remove those to avoid crashes.
|
2024-12-02 16:21:56 +01:00
|
|
|
.ToArray();
|
|
|
|
|
}
|
|
|
|
|
else if (_powerAccentSettings.Properties.SelectedLang.Value.Contains("ALL"))
|
|
|
|
|
{
|
|
|
|
|
SelectedLanguageOptions = Languages.ToArray();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
SelectedLanguageOptions = Array.Empty<PowerAccentLanguageModel>();
|
|
|
|
|
}
|
2022-08-26 18:01:50 +02:00
|
|
|
|
2022-10-16 18:36:16 +01:00
|
|
|
_toolbarPositionIndex = Array.IndexOf(_toolbarOptions, _powerAccentSettings.Properties.ToolbarPosition.Value);
|
2022-09-29 16:28:14 +02:00
|
|
|
|
2023-10-24 11:37:22 +02:00
|
|
|
// set the callback functions value to handle outgoing IPC message.
|
2022-08-26 18:01:50 +02:00
|
|
|
SendConfigMSG = ipcMSGCallBackFunc;
|
|
|
|
|
}
|
|
|
|
|
|
2023-01-31 00:00:11 +01:00
|
|
|
private void InitializeEnabledValue()
|
|
|
|
|
{
|
|
|
|
|
_enabledGpoRuleConfiguration = GPOWrapper.GetConfiguredQuickAccentEnabledValue();
|
|
|
|
|
if (_enabledGpoRuleConfiguration == GpoRuleConfigured.Disabled || _enabledGpoRuleConfiguration == GpoRuleConfigured.Enabled)
|
|
|
|
|
{
|
|
|
|
|
// Get the enabled state from GPO.
|
|
|
|
|
_enabledStateIsGPOConfigured = true;
|
|
|
|
|
_isEnabled = _enabledGpoRuleConfiguration == GpoRuleConfigured.Enabled;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
_isEnabled = GeneralSettingsConfig.Enabled.PowerAccent;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2024-12-02 16:21:56 +01:00
|
|
|
/// <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();
|
|
|
|
|
}
|
|
|
|
|
|
2022-08-26 18:01:50 +02:00
|
|
|
public bool IsEnabled
|
|
|
|
|
{
|
|
|
|
|
get => _isEnabled;
|
|
|
|
|
set
|
|
|
|
|
{
|
2022-10-26 14:02:31 +01:00
|
|
|
if (_enabledStateIsGPOConfigured)
|
|
|
|
|
{
|
|
|
|
|
// If it's GPO configured, shouldn't be able to change this state.
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
2022-08-26 18:01:50 +02:00
|
|
|
if (_isEnabled != value)
|
|
|
|
|
{
|
|
|
|
|
_isEnabled = value;
|
|
|
|
|
|
|
|
|
|
GeneralSettingsConfig.Enabled.PowerAccent = value;
|
|
|
|
|
OnPropertyChanged(nameof(IsEnabled));
|
|
|
|
|
OutGoingGeneralSettings outgoing = new OutGoingGeneralSettings(GeneralSettingsConfig);
|
|
|
|
|
SendConfigMSG(outgoing.ToString());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2022-10-26 14:02:31 +01:00
|
|
|
public bool IsEnabledGpoConfigured
|
|
|
|
|
{
|
|
|
|
|
get => _enabledStateIsGPOConfigured;
|
|
|
|
|
}
|
|
|
|
|
|
2022-08-26 18:01:50 +02:00
|
|
|
public int ActivationKey
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return (int)_powerAccentSettings.Properties.ActivationKey;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
if (value != (int)_powerAccentSettings.Properties.ActivationKey)
|
|
|
|
|
{
|
|
|
|
|
_powerAccentSettings.Properties.ActivationKey = (PowerAccentActivationKey)value;
|
|
|
|
|
OnPropertyChanged(nameof(ActivationKey));
|
|
|
|
|
RaisePropertyChanged();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2024-01-23 01:54:35 +08:00
|
|
|
public bool DoNotActivateOnGameMode
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return _powerAccentSettings.Properties.DoNotActivateOnGameMode;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
if (value != _powerAccentSettings.Properties.DoNotActivateOnGameMode)
|
|
|
|
|
{
|
|
|
|
|
_powerAccentSettings.Properties.DoNotActivateOnGameMode = value;
|
|
|
|
|
OnPropertyChanged(nameof(DoNotActivateOnGameMode));
|
|
|
|
|
RaisePropertyChanged();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2022-12-13 19:15:56 +02:00
|
|
|
private int _inputTimeMs = PowerAccentSettings.DefaultInputTimeMs;
|
2022-09-01 16:56:19 +01:00
|
|
|
|
|
|
|
|
public int InputTimeMs
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return _inputTimeMs;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
if (value != _inputTimeMs)
|
|
|
|
|
{
|
|
|
|
|
_inputTimeMs = value;
|
|
|
|
|
_powerAccentSettings.Properties.InputTime.Value = value;
|
|
|
|
|
OnPropertyChanged(nameof(InputTimeMs));
|
|
|
|
|
RaisePropertyChanged();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2022-11-15 14:47:52 +02:00
|
|
|
private string _excludedApps;
|
|
|
|
|
|
|
|
|
|
public string ExcludedApps
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return _excludedApps;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
if (value != _excludedApps)
|
|
|
|
|
{
|
|
|
|
|
_excludedApps = value;
|
|
|
|
|
_powerAccentSettings.Properties.ExcludedApps.Value = value;
|
|
|
|
|
OnPropertyChanged(nameof(ExcludedApps));
|
|
|
|
|
RaisePropertyChanged();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2022-08-26 18:01:50 +02:00
|
|
|
private int _toolbarPositionIndex;
|
|
|
|
|
|
|
|
|
|
public int ToolbarPositionIndex
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return _toolbarPositionIndex;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
if (_toolbarPositionIndex != value)
|
|
|
|
|
{
|
|
|
|
|
_toolbarPositionIndex = value;
|
2022-10-16 18:36:16 +01:00
|
|
|
_powerAccentSettings.Properties.ToolbarPosition.Value = _toolbarOptions[value];
|
2022-08-26 18:01:50 +02:00
|
|
|
RaisePropertyChanged(nameof(ToolbarPositionIndex));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2024-12-02 16:21:56 +01:00
|
|
|
public bool AllSelected => _selectedLanguageOptions.Length == Languages.Count;
|
2022-09-29 16:28:14 +02:00
|
|
|
|
2024-12-02 16:21:56 +01:00
|
|
|
private PowerAccentLanguageModel[] _selectedLanguageOptions;
|
2022-09-29 16:28:14 +02:00
|
|
|
|
2024-12-02 16:21:56 +01:00
|
|
|
public PowerAccentLanguageModel[] SelectedLanguageOptions
|
|
|
|
|
{
|
|
|
|
|
get => _selectedLanguageOptions;
|
2022-09-29 16:28:14 +02:00
|
|
|
set
|
|
|
|
|
{
|
2024-12-02 16:21:56 +01:00
|
|
|
_selectedLanguageOptions = value;
|
|
|
|
|
_powerAccentSettings.Properties.SelectedLang.Value = string.Join(',', _selectedLanguageOptions.Select(l => l.LanguageCode));
|
|
|
|
|
RaisePropertyChanged(nameof(SelectedLanguageOptions));
|
2022-09-29 16:28:14 +02:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2022-12-02 15:45:49 +01:00
|
|
|
public bool ShowUnicodeDescription
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return _powerAccentSettings.Properties.ShowUnicodeDescription;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
if (value != _powerAccentSettings.Properties.ShowUnicodeDescription)
|
|
|
|
|
{
|
|
|
|
|
_powerAccentSettings.Properties.ShowUnicodeDescription = value;
|
|
|
|
|
OnPropertyChanged(nameof(ShowUnicodeDescription));
|
|
|
|
|
RaisePropertyChanged();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2023-01-03 14:44:57 +02:00
|
|
|
public bool SortByUsageFrequency
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return _powerAccentSettings.Properties.SortByUsageFrequency;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
if (value != _powerAccentSettings.Properties.SortByUsageFrequency)
|
|
|
|
|
{
|
|
|
|
|
_powerAccentSettings.Properties.SortByUsageFrequency = value;
|
|
|
|
|
OnPropertyChanged(nameof(SortByUsageFrequency));
|
|
|
|
|
RaisePropertyChanged();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public bool StartSelectionFromTheLeft
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
return _powerAccentSettings.Properties.StartSelectionFromTheLeft;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
if (value != _powerAccentSettings.Properties.StartSelectionFromTheLeft)
|
|
|
|
|
{
|
|
|
|
|
_powerAccentSettings.Properties.StartSelectionFromTheLeft = value;
|
|
|
|
|
OnPropertyChanged(nameof(StartSelectionFromTheLeft));
|
|
|
|
|
RaisePropertyChanged();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2022-08-26 18:01:50 +02:00
|
|
|
private void RaisePropertyChanged([CallerMemberName] string propertyName = null)
|
|
|
|
|
{
|
|
|
|
|
// Notify UI of property change
|
|
|
|
|
OnPropertyChanged(propertyName);
|
|
|
|
|
|
|
|
|
|
if (SendConfigMSG != null)
|
|
|
|
|
{
|
|
|
|
|
SndPowerAccentSettings snd = new SndPowerAccentSettings(_powerAccentSettings);
|
|
|
|
|
SndModuleSettings<SndPowerAccentSettings> ipcMessage = new SndModuleSettings<SndPowerAccentSettings>(snd);
|
|
|
|
|
SendConfigMSG(ipcMessage.ToJsonString());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2023-01-31 00:00:11 +01:00
|
|
|
public void RefreshEnabledState()
|
|
|
|
|
{
|
|
|
|
|
InitializeEnabledValue();
|
|
|
|
|
OnPropertyChanged(nameof(IsEnabled));
|
|
|
|
|
}
|
|
|
|
|
|
2022-10-26 14:02:31 +01:00
|
|
|
private GpoRuleConfigured _enabledGpoRuleConfiguration;
|
|
|
|
|
private bool _enabledStateIsGPOConfigured;
|
2022-08-26 18:01:50 +02:00
|
|
|
private bool _isEnabled;
|
|
|
|
|
}
|
|
|
|
|
}
|