public static IRollerShutter ConnectWith(
            this IRollerShutter rollerShutter,
            IButton upButton,
            IButton downButton,
            IMessageBrokerService messageBroker)
        {
            if (rollerShutter == null)
            {
                throw new ArgumentNullException(nameof(rollerShutter));
            }
            if (upButton == null)
            {
                throw new ArgumentNullException(nameof(upButton));
            }
            if (downButton == null)
            {
                throw new ArgumentNullException(nameof(downButton));
            }
            if (messageBroker == null)
            {
                throw new ArgumentNullException(nameof(messageBroker));
            }

            upButton.CreatePressedShortTrigger(messageBroker).Attach(() => HandleBlindButtonPressedEvent(rollerShutter, VerticalMovingStateValue.MovingUp));
            downButton.CreatePressedShortTrigger(messageBroker).Attach(() => HandleBlindButtonPressedEvent(rollerShutter, VerticalMovingStateValue.MovingDown));

            return(rollerShutter);
        }
Example #2
0
        public static IRollerShutter ConnectWith(this IRollerShutter rollerShutter, RollerShutterButtons buttons)
        {
            if (rollerShutter == null)
            {
                throw new ArgumentNullException(nameof(rollerShutter));
            }
            if (buttons == null)
            {
                throw new ArgumentNullException(nameof(buttons));
            }

            buttons.Up.GetPressedShortlyTrigger().Attach(() => HandleBlindButtonPressedEvent(rollerShutter, RollerShutterButtonDirection.Up));
            buttons.Down.GetPressedShortlyTrigger().Attach(() => HandleBlindButtonPressedEvent(rollerShutter, RollerShutterButtonDirection.Down));

            return(rollerShutter);
        }
Example #3
0
 private static void HandleBlindButtonPressedEvent(IRollerShutter rollerShutter, RollerShutterButtonDirection direction)
 {
     if (direction == RollerShutterButtonDirection.Up && rollerShutter.GetState() == RollerShutterState.MovingUp)
     {
         rollerShutter.SetState(RollerShutterState.Stopped);
     }
     else if (direction == RollerShutterButtonDirection.Down && rollerShutter.GetState() == RollerShutterState.MovingDown)
     {
         rollerShutter.SetState(RollerShutterState.Stopped);
     }
     else if (direction == RollerShutterButtonDirection.Down)
     {
         rollerShutter.SetState(RollerShutterState.MovingDown);
     }
     else if (direction == RollerShutterButtonDirection.Up)
     {
         rollerShutter.SetState(RollerShutterState.MovingUp);
     }
     else
     {
         throw new InvalidOperationException();
     }
 }
Example #4
0
        public static IRollerShutter ConnectWith(
            this IRollerShutter rollerShutter,
            IButton upButton,
            IButton downButton)
        {
            if (rollerShutter == null)
            {
                throw new ArgumentNullException(nameof(rollerShutter));
            }
            if (upButton == null)
            {
                throw new ArgumentNullException(nameof(upButton));
            }
            if (downButton == null)
            {
                throw new ArgumentNullException(nameof(downButton));
            }

            upButton.GetPressedShortlyTrigger().Attach(() => HandleBlindButtonPressedEvent(rollerShutter, RollerShutterStateId.MovingUp));
            downButton.GetPressedShortlyTrigger().Attach(() => HandleBlindButtonPressedEvent(rollerShutter, RollerShutterStateId.MovingDown));

            return(rollerShutter);
        }
Example #5
0
 private static void HandleBlindButtonPressedEvent(IRollerShutter rollerShutter, NamedComponentState direction)
 {
     if (direction == RollerShutterStateId.MovingUp && rollerShutter.GetState() == RollerShutterStateId.MovingUp)
     {
         rollerShutter.SetState(RollerShutterStateId.Off);
     }
     else if (direction == RollerShutterStateId.MovingDown && rollerShutter.GetState() == RollerShutterStateId.MovingDown)
     {
         rollerShutter.SetState(RollerShutterStateId.Off);
     }
     else if (direction == RollerShutterStateId.MovingDown)
     {
         rollerShutter.SetState(RollerShutterStateId.MovingDown);
     }
     else if (direction == RollerShutterStateId.MovingUp)
     {
         rollerShutter.SetState(RollerShutterStateId.MovingUp);
     }
     else
     {
         throw new InvalidOperationException();
     }
 }
 private static void HandleBlindButtonPressedEvent(IRollerShutter rollerShutter, VerticalMovingStateValue verticalMovingState)
 {
     if (verticalMovingState == VerticalMovingStateValue.MovingUp && rollerShutter.GetState().Has(VerticalMovingState.MovingUp))
     {
         rollerShutter.ExecuteCommand(new TurnOffCommand());
     }
     else if (verticalMovingState == VerticalMovingStateValue.MovingDown && rollerShutter.GetState().Has(VerticalMovingState.MovingDown))
     {
         rollerShutter.ExecuteCommand(new TurnOffCommand());
     }
     else if (verticalMovingState == VerticalMovingStateValue.MovingDown)
     {
         rollerShutter.ExecuteCommand(new MoveDownCommand());
     }
     else if (verticalMovingState == VerticalMovingStateValue.MovingUp)
     {
         rollerShutter.ExecuteCommand(new MoveUpCommand());
     }
     else
     {
         throw new InvalidOperationException();
     }
 }
 private static void HandleBlindButtonPressedEvent(IRollerShutter rollerShutter, ComponentState direction)
 {
     if (direction.Equals(RollerShutterStateId.MovingUp) && rollerShutter.GetState().Equals(RollerShutterStateId.MovingUp))
     {
         rollerShutter.SetState(RollerShutterStateId.Off);
     }
     else if (direction.Equals(RollerShutterStateId.MovingDown) && rollerShutter.GetState().Equals(RollerShutterStateId.MovingDown))
     {
         rollerShutter.SetState(RollerShutterStateId.Off);
     }
     else if (direction.Equals(RollerShutterStateId.MovingDown))
     {
         rollerShutter.SetState(RollerShutterStateId.MovingDown);
     }
     else if (direction.Equals(RollerShutterStateId.MovingUp))
     {
         rollerShutter.SetState(RollerShutterStateId.MovingUp);
     }
     else
     {
         throw new InvalidOperationException();
     }
 }