private void MenuItem_NewSpeaker(object sender, RoutedEventArgs e) { Speaker sp; if (_speakerProvider.IsOnline) { sp = new ApiSynchronizedSpeaker("-----", "-----", Speaker.Sexes.X) { IsSaved = false, DataBaseType = DBType.Api, } } ; else { sp = new Speaker("-----", "-----", Speaker.Sexes.X, null) { DataBaseType = DBType.User } };; NewSpeaker = sp; SpeakerProvider.AddTempSpeaker(sp); var ss = SpeakerProvider.GetContainerForSpeaker(sp); SpeakersBox.SelectedValue = ss; ss.New = true; ss.Changed = true; SpeakersBox.ScrollIntoView(SpeakersBox.SelectedItem); }
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);; }