mirror of
https://github.com/microsoft/PowerToys.git
synced 2026-04-10 05:06:36 +02: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:
@@ -1,10 +1,12 @@
|
||||
// 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.Linq;
|
||||
using CommunityToolkit.WinUI;
|
||||
using Microsoft.PowerToys.Settings.UI.Helpers;
|
||||
using Microsoft.PowerToys.Settings.UI.Library;
|
||||
using Microsoft.PowerToys.Settings.UI.ViewModels;
|
||||
using Microsoft.UI.Xaml;
|
||||
using Microsoft.UI.Xaml.Controls;
|
||||
|
||||
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);
|
||||
DataContext = ViewModel;
|
||||
this.InitializeComponent();
|
||||
this.InitializeControlsStates();
|
||||
}
|
||||
|
||||
public void 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user