Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);;
        }