Esempio n. 1
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);;
        }
Esempio n. 2
0
        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);
        }