Пример #1
0
        public virtual HashSet <ActionTypeEnum> GetActionTypesInCommand(HashSet <Guid> commandIDs = null)
        {
            HashSet <ActionTypeEnum> actionTypes = new HashSet <ActionTypeEnum>();

            if (commandIDs == null)
            {
                commandIDs = new HashSet <Guid>();
            }

            if (commandIDs.Contains(this.ID))
            {
                return(actionTypes);
            }
            commandIDs.Add(this.ID);

            foreach (ActionModelBase action in this.Actions)
            {
                if (action.Type == ActionTypeEnum.Command)
                {
                    CommandActionModel commandAction = (CommandActionModel)action;
                    CommandModelBase   subCommand    = ChannelSession.Settings.GetCommand(commandAction.CommandID);
                    if (subCommand != null)
                    {
                        foreach (ActionTypeEnum subActionType in subCommand.GetActionTypesInCommand(commandIDs))
                        {
                            actionTypes.Add(subActionType);
                        }
                    }
                }
                else if (action.Type == ActionTypeEnum.Overlay)
                {
                    OverlayActionModel overlayAction = (OverlayActionModel)action;
                    if (overlayAction.OverlayItem.ItemType == Overlay.OverlayItemModelTypeEnum.Video || overlayAction.OverlayItem.ItemType == Overlay.OverlayItemModelTypeEnum.YouTube)
                    {
                        actionTypes.Add(ActionTypeEnum.Sound);
                    }
                }
                else if (action.Type == ActionTypeEnum.TextToSpeech)
                {
                    actionTypes.Add(ActionTypeEnum.Sound);
                }
                else if (action.Type == ActionTypeEnum.OvrStream)
                {
                    actionTypes.Add(ActionTypeEnum.Sound);
                    actionTypes.Add(ActionTypeEnum.Overlay);
                }
                else if (action.Type == ActionTypeEnum.StreamingSoftware)
                {
                    actionTypes.Add(ActionTypeEnum.Sound);
                    actionTypes.Add(ActionTypeEnum.Overlay);
                }
                actionTypes.Add(action.Type);
            }

            actionTypes.Remove(ActionTypeEnum.Command);
            actionTypes.Remove(ActionTypeEnum.Wait);

            return(actionTypes);
        }
        public OverlayActionEditorControlViewModel(OverlayActionModel action)
            : base(action)
        {
            if (!string.IsNullOrEmpty(action.OverlayName))
            {
                this.SelectedOverlayEndpoint = action.OverlayName;
            }
            else
            {
                this.SelectedOverlayEndpoint = ChannelSession.Services.Overlay.DefaultOverlayName;
            }

            if (action.WidgetID != Guid.Empty)
            {
                this.SelectedActionType = OverlayActionTypeEnum.ShowHideWidget;
                this.SelectedWidget     = ChannelSession.Settings.OverlayWidgets.FirstOrDefault(w => w.Item.ID.Equals(action.WidgetID));
                this.WidgetVisible      = action.ShowWidget;
            }
            else
            {
                if (action.OverlayItem != null)
                {
                    if (action.OverlayItem.Effects != null)
                    {
                        this.ItemDuration = action.OverlayItem.Effects.Duration;
                        this.SelectedEntranceAnimation = action.OverlayItem.Effects.EntranceAnimation;
                        this.SelectedVisibleAnimation  = action.OverlayItem.Effects.VisibleAnimation;
                        this.SelectedExitAnimation     = action.OverlayItem.Effects.ExitAnimation;
                    }

                    if (action.OverlayItem.Position != null)
                    {
                        this.ItemPosition.SetPosition(action.OverlayItem.Position);
                    }

                    if (action.OverlayItem is OverlayImageItemModel)
                    {
                        this.SelectedActionType = OverlayActionTypeEnum.Image;
                        this.ImageItemViewModel = new OverlayImageItemViewModel((OverlayImageItemModel)action.OverlayItem);
                    }
                    else if (action.OverlayItem is OverlayTextItemModel)
                    {
                        this.SelectedActionType = OverlayActionTypeEnum.Text;
                        this.TextItemViewModel  = new OverlayTextItemViewModel((OverlayTextItemModel)action.OverlayItem);
                    }
                    else if (action.OverlayItem is OverlayYouTubeItemModel)
                    {
                        this.SelectedActionType   = OverlayActionTypeEnum.YouTube;
                        this.YouTubeItemViewModel = new OverlayYouTubeItemViewModel((OverlayYouTubeItemModel)action.OverlayItem);
                    }
                    else if (action.OverlayItem is OverlayVideoItemModel)
                    {
                        this.SelectedActionType = OverlayActionTypeEnum.Video;
                        this.VideoItemViewModel = new OverlayVideoItemViewModel((OverlayVideoItemModel)action.OverlayItem);
                    }
                    else if (action.OverlayItem is OverlayWebPageItemModel)
                    {
                        this.SelectedActionType   = OverlayActionTypeEnum.WebPage;
                        this.WebPageItemViewModel = new OverlayWebPageItemViewModel((OverlayWebPageItemModel)action.OverlayItem);
                    }
                    else if (action.OverlayItem is OverlayHTMLItemModel)
                    {
                        this.SelectedActionType = OverlayActionTypeEnum.HTML;
                        this.HTMLItemViewModel  = new OverlayHTMLItemViewModel((OverlayHTMLItemModel)action.OverlayItem);
                    }
                }
            }
        }