SettingsSystemView.axaml.cs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. using Avalonia.Controls;
  2. using Avalonia.Data;
  3. using Avalonia.Data.Converters;
  4. using Ryujinx.Ava.UI.ViewModels;
  5. using System;
  6. using System.Linq;
  7. using TimeZone = Ryujinx.Ava.UI.Models.TimeZone;
  8. namespace Ryujinx.Ava.UI.Views.Settings
  9. {
  10. public partial class SettingsSystemView : UserControl
  11. {
  12. public SettingsViewModel ViewModel;
  13. public SettingsSystemView()
  14. {
  15. InitializeComponent();
  16. FuncMultiValueConverter<string, string> converter = new(parts => string.Format("{0} {1} {2}", parts.ToArray()).Trim());
  17. MultiBinding tzMultiBinding = new() { Converter = converter };
  18. tzMultiBinding.Bindings.Add(new Binding("UtcDifference"));
  19. tzMultiBinding.Bindings.Add(new Binding("Location"));
  20. tzMultiBinding.Bindings.Add(new Binding("Abbreviation"));
  21. TimeZoneBox.ValueMemberBinding = tzMultiBinding;
  22. }
  23. private void TimeZoneBox_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
  24. {
  25. if (e.AddedItems != null && e.AddedItems.Count > 0)
  26. {
  27. if (e.AddedItems[0] is TimeZone timeZone)
  28. {
  29. e.Handled = true;
  30. ViewModel.ValidateAndSetTimeZone(timeZone.Location);
  31. }
  32. }
  33. }
  34. private void TimeZoneBox_OnTextChanged(object sender, EventArgs e)
  35. {
  36. if (sender is AutoCompleteBox box && box.SelectedItem is TimeZone timeZone)
  37. {
  38. {
  39. ViewModel.ValidateAndSetTimeZone(timeZone.Location);
  40. }
  41. }
  42. }
  43. }
  44. }