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); } } } }