public SpeakersManager(Speaker originalSpeaker, WPFTranscription transcription, SpeakerCollection documentSpeakers, SpeakerCollection localSpeakers = null) { DataContext = this;//not good :) _originalSpeaker = originalSpeaker; _localSpeakers = localSpeakers; _documentSpeakers = documentSpeakers; _transcription = transcription; InitializeComponent(); SpeakerProvider = new SpeakerManagerViewModel(new SpeakerCollection(documentSpeakers.Concat(transcription.EnumerateParagraphs().Select(p => p.Speaker)).Where(s => s != Speaker.DefaultSpeaker).Distinct()), localSpeakers, transcription.Api, this); var ss = SpeakerProvider.GetContainerForSpeaker(originalSpeaker); if (ss != null) { ss.Marked = true; } SpeakersBox.SelectedValue = ss; SpeakersBox.ScrollIntoView(SpeakersBox.SelectedItem); if (_transcription.Api != null) { SpeakerProvider.ShowLocal = false; SpeakerProvider.ShowOnline = true; } //SpeakersBox.Items.SortDescriptions.Add( new SortDescription("",ListSortDirection.Ascending)); }
private void MenuItem_MergeSpeakers(object sender, RoutedEventArgs e) { var selectedSpeaker = ((SpeakerContainer)SpeakersBox.SelectedValue).Speaker; SpeakersManager sm2 = new SpeakersManager(selectedSpeaker, _transcription, _documentSpeakers, _localSpeakers) { MessageLabel = Properties.Strings.SpeakersManagerSpeakerMergeLabel, Message = selectedSpeaker.FullName, Editable = false, SelectMany = true }; if (sm2.ShowDialog() == true) { var speakers = sm2.SpeakersBox.SelectedItems.Cast <SpeakerContainer>().Select(x => x.Speaker).ToList(); speakers.Remove(selectedSpeaker); //merge selectedSpeaker.Merges.AddRange(speakers.Select(s => new DBMerge(s.DBID, s.DataBaseType))); selectedSpeaker.Merges.AddRange(speakers.SelectMany(s => s.Merges)); if (speakers.Count == 0) { return; } if (MessageBox.Show(string.Format(Properties.Strings.SpeakersManagerSpeakerMergeDialogQuestionFormat, string.Join("\", \"", speakers.Select(s => s.FullName)), selectedSpeaker.FullName), Properties.Strings.SpeakersManagerSpeakerMergeDialogCaption, MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes) { using (SpeakerProvider.DeferRefresh()) { foreach (var s in speakers) { if (_documentSpeakers != null) { _documentSpeakers.RemoveSpeaker(s); } if (_localSpeakers != null) { _localSpeakers.RemoveSpeaker(s); } SpeakerProvider.DeleteSpeaker(s); } } _transcription.BeginUpdate(); foreach (TranscriptionParagraph tp in _transcription.EnumerateParagraphs()) { if (speakers.Contains(tp.Speaker)) { tp.Speaker = selectedSpeaker; } } _transcription.EndUpdate(); SpeakerProvider.Refresh(); SpeakersBox.UnselectAll(); } } }
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 void SpeakersBox_MouseDown(object sender, MouseButtonEventArgs e) { var sp = (SpeakerContainer)SpeakersBox.GetObjectAtPoint <ListBoxItem>(e.GetPosition(SpeakersBox)); if (SpeakersBox.SelectedItem != sp) { SpeakersBox.SelectedItem = sp; } }
private void MenuItem_DeleteSpeaker(object sender, RoutedEventArgs e) { var selectedSpeaker = ((SpeakerContainer)SpeakersBox.SelectedValue).Speaker; if (MessageBox.Show(string.Format(Properties.Strings.SpeakersManagerDeleteSpeakerDialogFormat, selectedSpeaker), Properties.Strings.SpeakersManagerDeleteSpeakerDialogQuestion, MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes) { using (SpeakerProvider.DeferRefresh()) { SpeakerProvider.DeleteSpeaker(selectedSpeaker); _transcription.BeginUpdate(); foreach (TranscriptionParagraph tp in _transcription.EnumerateParagraphs()) { if (tp.Speaker == selectedSpeaker) { tp.Speaker = Speaker.DefaultSpeaker; } } _transcription.EndUpdate(); } SpeakersBox.UnselectAll(); } }