Exemple #1
0
 static internal void UpdateFromCardInfo(this IDynamicActionInfo dynamicActionInfo, ICardInfo cardInfo)
 {
     dynamicActionInfo.Text             = cardInfo.Name.Replace("Right Click", "Long Press");
     dynamicActionInfo.IsToggled        = cardInfo.IsToggled;
     dynamicActionInfo.ImageId          = cardInfo.Code;
     dynamicActionInfo.IsImageAvailable = cardInfo.ImageAvailable;
     dynamicActionInfo.ButtonOptions    = cardInfo.ButtonOptions;
 }
Exemple #2
0
 static internal bool CardInfoHasChanged(this IDynamicActionInfo dynamicActionInfo, ICardInfo cardInfo)
 {
     return(dynamicActionInfo.Text != cardInfo.Name ||
            dynamicActionInfo.IsToggled != cardInfo.IsToggled ||
            dynamicActionInfo.ImageId != cardInfo.Code ||
            dynamicActionInfo.IsImageAvailable != cardInfo.ImageAvailable ||
            dynamicActionInfo.ButtonOptions.SequenceEqual(cardInfo.ButtonOptions));
 }
        /// <summary>
        /// Create a list of dynamic action options for the specificed dynamic action
        /// </summary>
        /// <param name="dynamicActionInfo">Creat options based on this information</param>
        /// <returns>A list of dynamic action options including dynamicly resolved actions and images if applicable</returns>
        private IList <DynamicActionOption> CreateDynamicActionOptions(IDynamicActionInfo dynamicActionInfo)
        {
            var options = new List <DynamicActionOption>();

            foreach (var buttonOption in dynamicActionInfo.ButtonOptions)
            {
                var option = CreateDynamicActionOption(buttonOption, dynamicActionInfo);
                if (option == null)
                {
                    continue;
                }

                options.Add(option);
            }
            options.Add(new DynamicActionOption(dynamicActionInfo, null, "Cancel"));
            return(options);
        }
        /// <summary>
        /// A pool card button has changed for a card in the pool, so update the dynamic action accordingly
        /// </summary>
        /// <param name="dynamicActionInfo">Info for the action that has changed</param>
        private void PoolDynamicActionChanged(IDynamicActionInfo dynamicActionInfo)
        {
            IList <DynamicAction> actions;

            lock (_dynamicActionsLock) {
                actions = GetActionsForCardGroup(dynamicActionInfo.CardGroupId).ToList();
            }

            var actionsPerPage = actions.Count;

            if (actionsPerPage == 0)
            {
                return;
            }

            var actionIndex    = dynamicActionInfo.Index % actionsPerPage;
            var actionToUpdate = actions[actionIndex];

            if (actionToUpdate.ButtonMode == ButtonMode.Pool)
            {
                actions[actionIndex].UpdateButtonToNewDynamicAction(dynamicActionInfo);
            }
        }
        /// <summary>
        /// Refresh what information is being displayed on the button update it
        /// </summary>
        /// <param name="dynamicActionInfo">Information to use for updating the display</param>
        public void UpdateButtonToNewDynamicAction(IDynamicActionInfo dynamicActionInfo)
        {
            if (_dynamicActionOption != null)
            {
                //we are displaying a menu option, not our normal stuff
                _lastSetTitle = _dynamicActionOption.Text;
                SetTitleAsync(TextUtils.WrapTitle(_dynamicActionOption.Text));
                SetImageAsync(_dynamicActionOption.Image);
                return;
            }

            _dynamicActionInfo = dynamicActionInfo;
            if (_dynamicActionInfo == default)
            {
                _lastSetTitle = string.Empty;
                SetTitleAsync(string.Empty);
                SetImageAsync(string.Empty);
                return;
            }

            _lastSetTitle = _dynamicActionInfo.Text;
            UpdateButtonDisplay();
        }
Exemple #6
0
 public DynamicActionInfoChangedEvent(IDynamicActionInfo dynamicActionInfo)
 {
     DynamicActionInfo = dynamicActionInfo;
 }
Exemple #7
0
 public static void PublishDynamicActionInfoChanged(this IEventBus eventBus, IDynamicActionInfo dynamicActionInfo)
 {
     eventBus.Publish(new DynamicActionInfoChangedEvent(dynamicActionInfo));
 }
        /// <summary>
        /// Get an image using the dynamic action info
        /// </summary>
        /// <param name="dynamicActionInfo">Information about a dynamic action so the proper image can be retreieved and drawn properly</param>
        /// <returns>A string formatted for sending images to the StreamDeck device</returns>
        /// <remards>Will note the 'toggled' state of the dynamic action info, and draw a gold border if it is toggled</remards>
        public string GetImage(IDynamicActionInfo dynamicAction)
        {
            var imageBytes = dynamicAction.ImageId != null && _imageCache.ContainsKey(dynamicAction.ImageId) ? _imageCache[dynamicAction.ImageId] : null;

            return(ImageUtils.CreateStreamdeckImage(imageBytes, dynamicAction.IsToggled));
        }