private void OnMessageReceived(AsynchronousMessageQueue queue, SystemMessage message)
 {
     if (message.ChannelName == PlayerContextManagerMessaging.CHANNEL)
     {
         PlayerContextManagerMessaging.MessageType messageType = (PlayerContextManagerMessaging.MessageType)message.MessageType;
         switch (messageType)
         {
         case PlayerContextManagerMessaging.MessageType.CurrentPlayerChanged:
             Update();
             break;
         }
     }
     else if (message.ChannelName == PlayerManagerMessaging.CHANNEL)
     {
         PlayerManagerMessaging.MessageType messageType = (PlayerManagerMessaging.MessageType)message.MessageType;
         switch (messageType)
         {
         case PlayerManagerMessaging.MessageType.PlayerSlotStarted:
         case PlayerManagerMessaging.MessageType.PlayerSlotClosed:
             Update();
             break;
         }
     }
     else if (message.ChannelName == WorkflowManagerMessaging.CHANNEL)
     {
         WorkflowManagerMessaging.MessageType messageType = (WorkflowManagerMessaging.MessageType)message.MessageType;
         switch (messageType)
         {
         case WorkflowManagerMessaging.MessageType.NavigationComplete:
             Update();
             break;
         }
     }
 }
Example #2
0
        private void OnMessageReceived(AsynchronousMessageQueue queue, SystemMessage message)
        {
            if (message.ChannelName == PlayerManagerMessaging.CHANNEL)
            {
                PlayerManagerMessaging.MessageType messageType = (PlayerManagerMessaging.MessageType)message.MessageType;
                switch (messageType)
                {
                case PlayerManagerMessaging.MessageType.PlayerStarted:
                case PlayerManagerMessaging.MessageType.PlayerStopped:
                case PlayerManagerMessaging.MessageType.PlayerEnded:
                    HandlePlayerChange();
                    break;

                case PlayerManagerMessaging.MessageType.PlaybackStateChanged:
                    HandlePlaybackStateChanged();
                    break;
                }
            }
            else if (message.ChannelName == PlayerContextManagerMessaging.CHANNEL)
            {
                PlayerContextManagerMessaging.MessageType messageType = (PlayerContextManagerMessaging.MessageType)message.MessageType;
                switch (messageType)
                {
                case PlayerContextManagerMessaging.MessageType.PlayerSlotsChanged:
                    HandlePlayerChange();
                    break;
                }
            }
        }
 void OnMessageReceived(AsynchronousMessageQueue queue, SystemMessage message)
 {
     if (message.ChannelName == PlayerManagerMessaging.CHANNEL)
     {
         PlayerManagerMessaging.MessageType messageType =
             (PlayerManagerMessaging.MessageType)message.MessageType;
         switch (messageType)
         {
         case PlayerManagerMessaging.MessageType.PlayerSlotStarted:
         case PlayerManagerMessaging.MessageType.PlayerSlotClosed:
         case PlayerManagerMessaging.MessageType.PlayerStarted:
         case PlayerManagerMessaging.MessageType.PlayerStopped:
         case PlayerManagerMessaging.MessageType.PlayerEnded:
         case PlayerManagerMessaging.MessageType.PlayersMuted:
         case PlayerManagerMessaging.MessageType.PlayersResetMute:
             CheckUpdatePlayerConfigurationData();
             break;
         }
     }
     else if (message.ChannelName == PlayerContextManagerMessaging.CHANNEL)
     {
         PlayerContextManagerMessaging.MessageType messageType =
             (PlayerContextManagerMessaging.MessageType)message.MessageType;
         switch (messageType)
         {
         case PlayerContextManagerMessaging.MessageType.CurrentPlayerChanged:
         case PlayerContextManagerMessaging.MessageType.PlayerSlotsChanged:
             CheckUpdatePlayerConfigurationData();
             break;
         }
     }
 }
Example #4
0
        private void OnMessageReceived(AsynchronousMessageQueue queue, SystemMessage message)
        {
            if (message.ChannelName == PlaylistMessaging.CHANNEL)
            {
                PlaylistMessaging.MessageType messageType = (PlaylistMessaging.MessageType)message.MessageType;
                switch (messageType)
                {
                case PlaylistMessaging.MessageType.PlaylistUpdate:
                    UpdatePlaylist();
                    break;

                case PlaylistMessaging.MessageType.CurrentItemChange:
                    UpdateCurrentItem();
                    break;

                case PlaylistMessaging.MessageType.PropertiesChange:
                    UpdateProperties();
                    break;
                }
            }
            else if (message.ChannelName == PlayerManagerMessaging.CHANNEL)
            {
                PlayerManagerMessaging.MessageType messageType = (PlayerManagerMessaging.MessageType)message.MessageType;
                switch (messageType)
                {
                case PlayerManagerMessaging.MessageType.PlayerSlotClosed:
                    IPlayerContextManager playerContextManager = ServiceRegistration.Get <IPlayerContextManager>();
                    ISystemStateService   sss = ServiceRegistration.Get <ISystemStateService>();
                    IPlayerContext        pc  = playerContextManager.GetPlayerContext(PlayerChoice.CurrentPlayer);
                    if (pc == null && sss.CurrentState == SystemState.Running)
                    {
                        IWorkflowManager workflowManager = ServiceRegistration.Get <IWorkflowManager>();
                        workflowManager.NavigatePopToState(Consts.WF_STATE_ID_SHOW_PLAYLIST, true);
                    }
                    break;
                    // We don't need to track the PlayerSlotActivated or PlayerSlotsChanged messages, because all information
                    // we need is contained in the CurrentPlayer information
                }
            }
            else if (message.ChannelName == PlayerContextManagerMessaging.CHANNEL)
            {
                PlayerContextManagerMessaging.MessageType messageType = (PlayerContextManagerMessaging.MessageType)message.MessageType;
                switch (messageType)
                {
                case PlayerContextManagerMessaging.MessageType.CurrentPlayerChanged:
                    UpdatePlaylist();
                    break;
                }
            }
        }
Example #5
0
        private void OnMessageReceived(AsynchronousMessageQueue queue, SystemMessage message)
        {
            if (message.ChannelName == PlaylistMessaging.CHANNEL)
            {
                PlaylistMessaging.MessageType messageType = (PlaylistMessaging.MessageType)message.MessageType;
                switch (messageType)
                {
                case PlaylistMessaging.MessageType.PlaylistUpdate:
                    UpdatePlaylist();
                    break;

                case PlaylistMessaging.MessageType.PropertiesChange:
                    UpdateProperties();
                    break;
                }
            }
            else if (message.ChannelName == PlayerManagerMessaging.CHANNEL)
            {
                PlayerManagerMessaging.MessageType messageType = (PlayerManagerMessaging.MessageType)message.MessageType;
                switch (messageType)
                {
                case PlayerManagerMessaging.MessageType.PlayerSlotClosed:
                    IPlayerContextManager playerContextManager = ServiceRegistration.Get <IPlayerContextManager>();
                    ISystemStateService   sss = ServiceRegistration.Get <ISystemStateService>();
                    IPlayerContext        pc  = playerContextManager.GetPlayerContext(PlayerChoice.CurrentPlayer);
                    if (pc == null && sss.CurrentState == SystemState.Running)
                    {
                        IWorkflowManager workflowManager = ServiceRegistration.Get <IWorkflowManager>();
                        workflowManager.NavigatePopToState(Consts.WF_STATE_ID_EDIT_PLAYLIST, true);
                    }
                    break;
                }
            }
            else if (message.ChannelName == PlayerContextManagerMessaging.CHANNEL)
            {
                PlayerContextManagerMessaging.MessageType messageType = (PlayerContextManagerMessaging.MessageType)message.MessageType;
                switch (messageType)
                {
                case PlayerContextManagerMessaging.MessageType.CurrentPlayerChanged:
                    UpdatePlaylist();
                    break;
                }
            }
        }
        void OnMessageReceived(AsynchronousMessageQueue queue, SystemMessage message)
        {
            if (message.ChannelName == WorkflowManagerMessaging.CHANNEL)
            {
                // Adjust our knowledge about the currently opened FSC/CP state if the user switches to one of them
                WorkflowManagerMessaging.MessageType messageType = (WorkflowManagerMessaging.MessageType)message.MessageType;
                switch (messageType)
                {
                case WorkflowManagerMessaging.MessageType.StatesPopped:
                    ICollection <Guid> statesRemoved = new List <Guid>(
                        ((IDictionary <Guid, NavigationContext>)message.MessageData[WorkflowManagerMessaging.CONTEXTS]).Keys);
                    HandleStatesRemovedFromWorkflowStack(statesRemoved);
                    break;

                case WorkflowManagerMessaging.MessageType.StatePushed:
                    NavigationContext context = (NavigationContext)message.MessageData[WorkflowManagerMessaging.CONTEXT];
                    Guid stateId = context.WorkflowState.StateId;
                    HandleWorkflowStatePushed(stateId);
                    break;
                }
            }
            else if (message.ChannelName == PlayerManagerMessaging.CHANNEL)
            {
                // React to player changes
                PlayerManagerMessaging.MessageType messageType = (PlayerManagerMessaging.MessageType)message.MessageType;
                IPlayerSlotController psc;
                switch (messageType)
                {
                case PlayerManagerMessaging.MessageType.PlayerResumeState:
                    psc = (IPlayerSlotController)message.MessageData[PlayerManagerMessaging.PLAYER_SLOT_CONTROLLER];
                    IResumeState resumeState = (IResumeState)message.MessageData[PlayerManagerMessaging.KEY_RESUME_STATE];
                    Guid         mediaItemId = (Guid)message.MessageData[PlayerManagerMessaging.KEY_MEDIAITEM_ID];
                    HandleResumeInfo(psc, mediaItemId, resumeState);
                    break;

                case PlayerManagerMessaging.MessageType.PlayerError:
                case PlayerManagerMessaging.MessageType.PlayerEnded:
                    psc = (IPlayerSlotController)message.MessageData[PlayerManagerMessaging.PLAYER_SLOT_CONTROLLER];
                    HandlePlayerEnded(psc);
                    break;

                case PlayerManagerMessaging.MessageType.PlayerStopped:
                    psc = (IPlayerSlotController)message.MessageData[PlayerManagerMessaging.PLAYER_SLOT_CONTROLLER];
                    HandlePlayerStopped(psc);
                    break;

                case PlayerManagerMessaging.MessageType.RequestNextItem:
                    psc = (IPlayerSlotController)message.MessageData[PlayerManagerMessaging.PLAYER_SLOT_CONTROLLER];
                    HandleRequestNextItem(psc);
                    break;
                }
                CleanupPlayerContexts();
                CheckMediaWorkflowStates_NoLock(); // Primary player could have been changed or closed or CP player could have been closed
            }
            else if (message.ChannelName == PlayerContextManagerMessaging.CHANNEL)
            {
                // React to internal player context manager changes
                PlayerContextManagerMessaging.MessageType messageType = (PlayerContextManagerMessaging.MessageType)message.MessageType;
                switch (messageType)
                {
                case PlayerContextManagerMessaging.MessageType.UpdatePlayerRolesInternal:
                    PlayerContext newCurrentPlayer = (PlayerContext)message.MessageData[PlayerContextManagerMessaging.NEW_CURRENT_PLAYER_CONTEXT];
                    PlayerContext newAudioPlayer   = (PlayerContext)message.MessageData[PlayerContextManagerMessaging.NEW_AUDIO_PLAYER_CONTEXT];
                    HandleUpdatePlayerRoles(newCurrentPlayer, newAudioPlayer);
                    break;
                    // PlayerContextManagerMessaging.MessageType.CurrentPlayerChanged not handled here
                }
            }
        }
        void OnMessageReceived(AsynchronousMessageQueue queue, SystemMessage message)
        {
            if (message.ChannelName == WorkflowManagerMessaging.CHANNEL)
            {
                // Adjust our knowledge about the currently opened FSC/CP state if the user switches to one of them
                WorkflowManagerMessaging.MessageType messageType =
                    (WorkflowManagerMessaging.MessageType)message.MessageType;
                switch (messageType)
                {
                case WorkflowManagerMessaging.MessageType.StatesPopped:
                    ICollection <Guid> statesRemoved = new List <Guid>(
                        ((IDictionary <Guid, NavigationContext>)message.MessageData[WorkflowManagerMessaging.CONTEXTS]).Keys);
                    HandleStatesRemovedFromWorkflowStack(statesRemoved);
                    break;

                case WorkflowManagerMessaging.MessageType.StatePushed:
                    NavigationContext context = (NavigationContext)message.MessageData[WorkflowManagerMessaging.CONTEXT];
                    Guid stateId = context.WorkflowState.StateId;
                    HandleWorkflowStatePushed(stateId);
                    break;
                }
            }
            else if (message.ChannelName == PlayerManagerMessaging.CHANNEL)
            {
                // React to player changes
                PlayerManagerMessaging.MessageType messageType =
                    (PlayerManagerMessaging.MessageType)message.MessageType;
                IPlayerSlotController psc;
                uint activationSequence;
                switch (messageType)
                {
                case PlayerManagerMessaging.MessageType.PlayerError:
                case PlayerManagerMessaging.MessageType.PlayerEnded:
                    psc = (IPlayerSlotController)message.MessageData[PlayerManagerMessaging.PLAYER_SLOT_CONTROLLER];
                    activationSequence = (uint)message.MessageData[PlayerManagerMessaging.ACTIVATION_SEQUENCE];
                    HandlePlayerEnded(psc, activationSequence);
                    break;

                case PlayerManagerMessaging.MessageType.PlayerStopped:
                    psc = (IPlayerSlotController)message.MessageData[PlayerManagerMessaging.PLAYER_SLOT_CONTROLLER];
                    activationSequence = (uint)message.MessageData[PlayerManagerMessaging.ACTIVATION_SEQUENCE];
                    HandlePlayerStopped(psc, activationSequence);
                    break;

                case PlayerManagerMessaging.MessageType.RequestNextItem:
                    psc = (IPlayerSlotController)message.MessageData[PlayerManagerMessaging.PLAYER_SLOT_CONTROLLER];
                    activationSequence = (uint)message.MessageData[PlayerManagerMessaging.ACTIVATION_SEQUENCE];
                    HandleRequestNextItem(psc, activationSequence);
                    break;

                case PlayerManagerMessaging.MessageType.PlayerSlotsChanged:
                    HandlePlayerSlotsChanged();
                    break;
                }
                CheckCurrentPlayerSlot();          // Current player could have been closed
                CheckMediaWorkflowStates_NoLock(); // Primary player could have been changed or closed or CP player could have been closed
            }
            else if (message.ChannelName == PlayerContextManagerMessaging.CHANNEL)
            {
                // React to internal player context manager changes
                PlayerContextManagerMessaging.MessageType messageType =
                    (PlayerContextManagerMessaging.MessageType)message.MessageType;
                switch (messageType)
                {
                case PlayerContextManagerMessaging.MessageType.UpdatePlayerRolesInternal:
                    int newCurrentPlayerIndex = (int)message.MessageData[PlayerContextManagerMessaging.CURRENT_PLAYER_INDEX];
                    int newAudioPlayerIndex   = (int)message.MessageData[PlayerContextManagerMessaging.AUDIO_PLAYER_INDEX];
                    HandlePlayerRolesChanged(newCurrentPlayerIndex, newAudioPlayerIndex);
                    break;
                    // PlayerContextManagerMessaging.MessageType.CurrentPlayerChanged not handled here
                }
            }
        }