Exemple #1
0
        public void UpdateSources()
        {
            AudioSources.Clear();

            AudioSources.AddRange(AudioHelper.GetAudioSources(true));

            ((PropertyAudioViewModel)this.Property).SelectedSource = AudioSources.FirstOrDefault();
        }
Exemple #2
0
        private async void Ws_SourceChanged(SLOBSWebsocket sender, SLOBSSourceEvent eventdata)
        {
            if (eventdata.Type == ESLOBSEventType.SourceAdded)
            {
                var sourceItem = _translateSource(eventdata.Source, Sources.Count + 1);
                Sources.Add(sourceItem);
                if (SourceChanged != null)
                {
                    SourceChanged(this, EOBSEvent.SourceAdded, sourceItem);
                }

                //Audio item
                if (sourceItem.Audio)
                {
                    var audio = await ws.ListAudioSources();

                    AudioSources.Clear();
                    AudioSources = _translateAudioSources(audio);
                    if (AudioSourceChanged != null)
                    {
                        AudioSourceChanged(this, EOBSEvent.SourceAdded);
                    }
                }
            }
            else if (eventdata.Type == ESLOBSEventType.SourceRemoved)
            {
                var sourceItem = _translateSource(eventdata.Source, 0);
                int reindex    = 0;
                for (int i = 0; i < Sources.Count; i++)
                {
                    if (Sources[i].Id == eventdata.Source.Id)
                    {
                        Sources.RemoveAt(i);
                        sourceItem.Index = i;
                        if (SourceChanged != null)
                        {
                            SourceChanged(this, EOBSEvent.SourceRemoved, sourceItem);
                            //audio item
                            if (sourceItem.Audio)
                            {
                                for (int ia = 0; ia < AudioSources.Count; ia++)
                                {
                                    if (AudioSources[i].SourceId == sourceItem.Id)
                                    {
                                        AudioSources.RemoveAt(ia);
                                        if (AudioSourceChanged != null)
                                        {
                                            AudioSourceChanged(this, EOBSEvent.SourceUpdated);
                                        }
                                    }
                                }
                            }
                        }
                    }
                    else
                    {
                        var source = Sources[i];
                        source.Index = reindex;
                        Sources[i]   = source;
                        reindex++;
                    }
                }
            }
            else if (eventdata.Type == ESLOBSEventType.SourceUpdated)
            {
                var sourceItem = _translateSource(eventdata.Source, 0);

                for (int i = 0; i < Sources.Count; i++)
                {
                    if (Sources[i].Id == eventdata.Source.Id)
                    {
                        sourceItem.Index = i;
                        Sources[i]       = sourceItem;
                        if (SourceChanged != null)
                        {
                            SourceChanged(this, EOBSEvent.SourceUpdated, sourceItem);
                        }

                        //audio item
                        if (sourceItem.Audio)
                        {
                            var audio = await ws.ListAudioSources();

                            AudioSources.Clear();
                            AudioSources = _translateAudioSources(audio);

                            if (AudioSourceChanged != null)
                            {
                                AudioSourceChanged(this, EOBSEvent.SourceUpdated);
                            }
                        }
                    }
                }
            }
        }
Exemple #3
0
        private async void Ws_SceneChanged(SLOBSWebsocket sender, SLOBSSceneEvent eventdata)
        {
            if (eventdata.Type == ESLOBSEventType.SceneAdded)
            {
                SOBSScene item = _translateScene(eventdata.Scene);
                Scenes.Add(item);
                if (SceneChanged != null)
                {
                    SceneChanged(this, EOBSEvent.SceneAdded, item);
                }
            }
            else if (eventdata.Type == ESLOBSEventType.SceneRemoved)
            {
                int       reindex = 0;
                SOBSScene item    = _translateScene(eventdata.Scene);
                for (int i = 0; i < Scenes.Count; i++)
                {
                    if (Scenes[i].Id == eventdata.Scene.Id)
                    {
                        Scenes.RemoveAt(i);
                    }
                    else
                    {
                        var scene = Scenes[i];
                        scene.Index = reindex;
                        Scenes[i]   = scene;
                        reindex++;
                    }
                }
                if (SceneChanged != null)
                {
                    SceneChanged(this, EOBSEvent.SceneRemoved, item);
                }
            }
            else if (eventdata.Type == ESLOBSEventType.SceneSwitched)
            {
                if (!_setActiveScene(eventdata.Scene))
                {
                    var ascenes = await ws.ListScenes();

                    Scenes.Clear();
                    Scenes = _translateScenes(ascenes);
                    _setActiveScene(eventdata.Scene);
                }

                var audio = await ws.ListAudioSources();

                AudioSources.Clear();
                AudioSources = _translateAudioSources(audio);
                if (AudioSourceChanged != null)
                {
                    AudioSourceChanged(this, EOBSEvent.SourceAdded);
                }

                if (SceneChanged != null)
                {
                    SceneChanged(this, EOBSEvent.SceneSwitched, ActiveScene);
                }
            }
            else if (eventdata.Type == ESLOBSEventType.SceneCollectionChanged)
            {
                var ascenes = await ws.ListScenes();

                Scenes.Clear();
                Scenes = _translateScenes(ascenes);
                var active_scene = await ws.GetActiveScene();

                if (active_scene != null)
                {
                    for (int i = 0; i < Scenes.Count; i++)
                    {
                        if (Scenes[i].Id == ((SLOBSScene)active_scene).Id)
                        {
                            ActiveScene = Scenes[i];
                        }
                    }
                }

                if (SceneChanged != null)
                {
                    SceneChanged(this, EOBSEvent.SceneUpdated, ActiveScene);
                }
            }
        }