V6VariationSelection.xaml.cs 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. using System;
  2. using System.Linq;
  3. using System.Windows;
  4. using InABox.DynamicGrid;
  5. namespace PRSDesktop.Integrations.V6;
  6. public partial class V6VariationSelection : Window
  7. {
  8. private V6Client _client;
  9. private V6Project _project;
  10. private Func<V6Variation, bool> _callback;
  11. private Func<V6Variation, bool>? _filter;
  12. public V6VariationSelection(V6Client client, V6Project project, Func<V6Variation,bool>? filter, Func<V6Variation,bool> callback)
  13. {
  14. _client = client;
  15. _callback = callback;
  16. _project = project;
  17. _filter = filter;
  18. InitializeComponent();
  19. Variations.Refresh(true, false);
  20. }
  21. private void V6GroupSelection_OnLoaded(object sender, RoutedEventArgs e)
  22. {
  23. if (_client.IsConnected)
  24. {
  25. Variations.Items = _client.GetVariations(_project).Where(x=> _filter == null || _filter(x)).ToList();
  26. if (Variations.Items.Count == 1)
  27. DialogResult = _callback.Invoke(Variations.Items.First());
  28. Variations.Refresh(false,true);
  29. }
  30. }
  31. private void Variations_OnOnSelectItem(object sender, DynamicGridSelectionEventArgs e)
  32. {
  33. OK.IsEnabled = Variations.SelectedRows.Any();
  34. }
  35. private void OK_Click(object sender, RoutedEventArgs e)
  36. {
  37. var variation = Variations.SelectedRows?.FirstOrDefault()?.ToObject<V6Variation>();
  38. if (variation == null)
  39. return;
  40. var result = _callback.Invoke(variation);
  41. DialogResult = result;
  42. }
  43. private void Cancel_Click(object sender, RoutedEventArgs e)
  44. {
  45. DialogResult = false;
  46. }
  47. }