Beispiel #1
0
 public void PressSecondary()
 {
     if (activeRangeItem == null)
     {
         if (levelStack.Count > 1)
         {
             levelStack.Pop();
             ActivateLevel();
         }
     }
     else
     {
         activeRangeItem.ResetValue();
         activeRangeItem = null;
         Changed?.Invoke();
     }
 }
Beispiel #2
0
    public void Press()
    {
        if (activeRangeItem != null)
        {
            activeRangeItem = null;
            Changed?.Invoke();
        }
        else
        {
            IMenuItem item = items[selectedItemIdx];
            switch (item)
            {
            case UpMenuItem upItem:
                levelStack.Pop();
                ActivateLevel();
                break;

            case SubLevelMenuItem subLevelItem:
                levelStack.Push(subLevelItem.Level);
                ActivateLevel();
                break;

            case IRangeMenuItem rangeItem:
                activeRangeItem = rangeItem;
                lastPulsedValue = rangeItem.Value;
                Changed?.Invoke();
                break;

            case IToggleMenuItem toggleItem:
                toggleItem.Toggle();
                Changed?.Invoke();
                break;

            case ActionMenuItem actionItem:
                actionItem.Action.Invoke();
                Changed?.Invoke();
                break;

            default:
                throw new InvalidOperationException();
            }
        }
    }