Vereinsmeisterschaften  22aa7800eae54b428d40e835886cefe1fdefdfdf
This is a software that can be used to manage the internal competition of the swimming club Illertissen called "Vereinsmeisterschaften".
Loading...
Searching...
No Matches
WorkspaceSettingsGroupViewModel.cs
1using System.Collections.ObjectModel;
2using System.Windows.Input;
3using CommunityToolkit.Mvvm.ComponentModel;
4using CommunityToolkit.Mvvm.Input;
7
9{
13 public class WorkspaceSettingsGroupViewModel : ObservableObject
14 {
19
23 public string GroupName { get; }
24
28 public ICommand ResetCommand { get; }
29
33 public ICommand SetToDefaultCommand { get; }
34
38 public bool HasChanged => Settings?.Any(s => s.HasChanged) ?? false;
39
43 public bool HasDefaultValue => !Settings?.Any(s => s.SupportResetToDefault && !s.HasDefaultValue) ?? true;
44
48 public ObservableCollection<IWorkspaceSettingViewModel> Settings { get; }
49
56 public WorkspaceSettingsGroupViewModel(WorkspaceSettingsGroup settingsGroup, string groupName, IEnumerable<IWorkspaceSettingViewModel> settings)
57 {
58 SettingsGroup = settingsGroup;
59 GroupName = groupName;
60 Settings = new ObservableCollection<IWorkspaceSettingViewModel>(settings);
61 ResetCommand = new RelayCommand(() =>
62 {
63 foreach (IWorkspaceSettingViewModel setting in Settings)
64 {
65 setting.ResetCommand.Execute(null);
66 }
67 OnPropertyChanged(nameof(HasChanged));
68 OnPropertyChanged(nameof(HasDefaultValue));
69 });
70 SetToDefaultCommand = new RelayCommand(() =>
71 {
72 foreach (IWorkspaceSettingViewModel setting in Settings)
73 {
74 setting.SetToDefaultCommand.Execute(null);
75 }
76 OnPropertyChanged(nameof(HasChanged));
77 OnPropertyChanged(nameof(HasDefaultValue));
78 });
79
80 foreach (var setting in Settings)
81 {
82 setting.PropertyChanged += (s, e) =>
83 {
84 switch (e.PropertyName)
85 {
86 case nameof(IWorkspaceSettingViewModel.HasChanged): OnPropertyChanged(nameof(HasChanged)); break;
87 case nameof(IWorkspaceSettingViewModel.HasDefaultValue): OnPropertyChanged(nameof(HasDefaultValue)); break;
88 default: break;
89 }
90 };
91 }
92 }
93 }
94}
bool HasDefaultValue
True if all setting values in this group are the default value.
WorkspaceSettingsGroupViewModel(WorkspaceSettingsGroup settingsGroup, string groupName, IEnumerable< IWorkspaceSettingViewModel > settings)
Constructor for the WorkspaceSettingsGroupViewModel
WorkspaceSettingsGroup SettingsGroup
WorkspaceSettingsGroup that is managed by this view model
ObservableCollection< IWorkspaceSettingViewModel > Settings
List with all IWorkspaceSettingViewModel instances belonging to this group.
ICommand ResetCommand
Command to set all setting values in this group back to the snapshot value.
ICommand SetToDefaultCommand
Command to set all setting values in this group back to the default value.
bool HasChanged
True, if any setting value in this group is not the snapshot value.
bool HasChanged
True, if the setting value is not the snapshot value.
ICommand SetToDefaultCommand
Command to set the setting value back to the default value.
ICommand ResetCommand
Command to set the setting value back to the snapshot value.