private async Task <bool> TrySaveSpeaker(SpeakerContainer spk) { if (NewSpeaker == spk.Speaker) { if (await TestName(spk)) { bool reselect = spk == SpeakersBox.SelectedItem; using (SpeakerProvider.DeferRefresh()) { spk.ApplyChanges(); SpeakerProvider.DeleteSpeaker(spk.Speaker); if (spk.IsOnline) { SpeakerProvider.AddOnlineSpeaker((ApiSynchronizedSpeaker)spk.Speaker); } else { SpeakerProvider.AddLocalSpeaker(spk.Speaker); } NewSpeaker = null; } if (reselect) { var ss = SpeakerProvider.GetContainerForSpeaker(spk.Speaker); SpeakersBox.SelectedValue = ss; } } else { return(false); //do not apply or save - name is invalid } } spk.ApplyChanges(); if (spk.IsOnline) { using (var wc = new WaitCursor()) { ApiSynchronizedSpeaker ss = spk.Speaker as ApiSynchronizedSpeaker; if (ss == null) { return(false); } if (ss.IsSaved) { return(await _transcription.Api.UpdateSpeaker(ss)); } else { return(await _transcription.Api.AddSpeaker(ss)); } } } return(true);; }
private MessageBoxResult CheckChanges(SpeakerContainer sc) { if (!sc.Changed) { return(MessageBoxResult.OK); } var result = MessageBox.Show(string.Format(Properties.Strings.SpeakersManagerSpeakerApplyChangesDialogFormat, sc.FullName), Properties.Strings.SpeakersManagerSpeakerApplyChangesDialogQuestion, MessageBoxButton.YesNoCancel, MessageBoxImage.Question); var ss = sc.Speaker; if (result == MessageBoxResult.Yes) { bool saved = AsyncHelpers.RunSync(() => TrySaveSpeaker(sc)); if (!saved) { result = MessageBoxResult.No; } else { return(MessageBoxResult.Yes); } } if (result == MessageBoxResult.No) { if (NewSpeaker == sc.Speaker) { NewSpeaker = null; SpeakerProvider.DeleteSpeaker(ss); } sc.ReloadSpeaker(); return(MessageBoxResult.No); } return(MessageBoxResult.Cancel); }