78 #region Reset Commands
80 private ICommand _resetCompetitionsCommand;
86 _workspaceService.ResetCompetitionsToLoadedState();
92 private ICommand _resetPersonsCommand;
96 public ICommand
ResetPersonsCommand => _resetPersonsCommand ?? (_resetPersonsCommand =
new RelayCommand(() =>
98 _workspaceService.ResetPersonsToLoadedState();
104 private ICommand _resetRacesCommand;
108 public ICommand
ResetRacesCommand => _resetRacesCommand ?? (_resetRacesCommand =
new RelayCommand(() =>
110 _workspaceService.ResetRacesToLoadedState();
116 private ICommand _resetSettingsCommand;
120 public ICommand
ResetSettingsCommand => _resetSettingsCommand ?? (_resetSettingsCommand =
new RelayCommand(() =>
122 _workspaceService.ResetSettingsToLoadedState();
124 initSettingsGroups(_workspaceService.Settings);
131 #region Settings Groups Handling
133 private ObservableCollection<WorkspaceSettingsGroupViewModel> _settingsGroups;
139 get => _settingsGroups;
140 private set => SetProperty(ref _settingsGroups, value);
145 if(model ==
null) {
return; }
146 SettingsGroups =
new ObservableCollection<WorkspaceSettingsGroupViewModel>();
148 ResourceDictionary settingEditorTemplatesResourceDictionary =
new ResourceDictionary();
149 settingEditorTemplatesResourceDictionary.Source =
new Uri(
"pack://application:,,,/Views/WorkspaceSettingEditorTemplates.xaml", UriKind.RelativeOrAbsolute);
151 foreach (KeyValuePair<string, string> groupViewConfig
in WorkspaceSettingViewConfigs.GroupKeyLabelsDict)
155 if (groupModel ==
null) {
continue; }
157 List<IWorkspaceSettingViewModel> settingsVms =
new List<IWorkspaceSettingViewModel>();
160 foreach (KeyValuePair<(
string,
string), WorkspaceSettingViewConfig> settingViewConfig in WorkspaceSettingViewConfigs.SettingKeyConfigDict)
162 (
string groupKey,
string settingKey) = settingViewConfig.Key;
165 if (groupKey != groupViewConfig.Key) {
continue; }
168 IWorkspaceSetting settingModel = groupModel?.
Settings?.FirstOrDefault(s => s.Key == settingKey);
169 if (settingModel ==
null) {
continue; }
172 DataTemplate editorTemplate = settingEditorTemplatesResourceDictionary[editorType.ToString() +
"EditorTemplate"] as DataTemplate;
175 Type genericType = typeof(WorkspaceSettingViewModel<>).MakeGenericType(settingModel.
ValueType);
176 IWorkspaceSettingViewModel settingVm = (IWorkspaceSettingViewModel)Activator.CreateInstance(genericType,
178 settingViewConfig.Value.Label,
179 settingViewConfig.Value.Tooltip,
180 settingViewConfig.Value.Icon,
181 settingViewConfig.Value.IconGeometry,
183 settingViewConfig.Value.SupportResetToDefault)!;
184 settingsVms.Add(settingVm);
187 WorkspaceSettingsGroupViewModel groupVm =
new WorkspaceSettingsGroupViewModel(groupModel, groupViewConfig.Value, settingsVms);
196 private IWorkspaceService _workspaceService;
197 private IWorkspaceManagerViewModel _workspaceManagerViewModel;
206 _workspaceService = workspaceService;
207 _workspaceService.PropertyChanged += _workspaceService_PropertyChanged;
209 _workspaceManagerViewModel = workspaceManagerViewModel;
210 _workspaceManagerViewModel.OnWorkspaceLoaded += (sender, path) => initSettingsGroups(_workspaceService.Settings);
216 private void _workspaceService_PropertyChanged(
object sender,
System.ComponentModel.PropertyChangedEventArgs e)
218 switch (e.PropertyName)
235 OnPropertyChanged(nameof(
Settings));
248 OnPropertyChanged(nameof(
Settings));
255 initSettingsGroups(_workspaceService.Settings);