コード例 #1
0
        protected void OnMessageReceived(AsynchronousMessageQueue queue, SystemMessage message)
        {
            // Do not handle messages if control is not running. This is a workaround to avoid updating controls that are not used on screen.
            // The EpgGrid is instantiated twice: via ScreenManager.LoadScreen and Control.OnTemplateChanged as copy!?
            if (ElementState != ElementState.Running)
            {
                return;
            }

            if (message.ChannelName == SlimTvClientMessaging.CHANNEL)
            {
                SlimTvClientMessaging.MessageType messageType = (SlimTvClientMessaging.MessageType)message.MessageType;
                switch (messageType)
                {
                case SlimTvClientMessaging.MessageType.GroupChanged:
                    OnGroupChanged();
                    break;

                case SlimTvClientMessaging.MessageType.ProgramsChanged:
                    OnProgramsChanged();
                    break;

                case SlimTvClientMessaging.MessageType.ProgramStatusChanged:
                    IProgram program = (IProgram)message.MessageData[SlimTvClientMessaging.KEY_PROGRAM];
                    UpdateProgramStatus(program);
                    break;
                }
            }
        }
コード例 #2
0
 protected void OnMessageReceived(AsynchronousMessageQueue queue, SystemMessage message)
 {
     if (message.ChannelName == SlimTvClientMessaging.CHANNEL)
     {
         SlimTvClientMessaging.MessageType messageType = (SlimTvClientMessaging.MessageType)message.MessageType;
         switch (messageType)
         {
         case SlimTvClientMessaging.MessageType.ProgramStatusChanged:
             IProgram program = (IProgram)message.MessageData[SlimTvClientMessaging.KEY_PROGRAM];
             UpdateRecordingStatus(program);
             break;
         }
     }
 }
コード例 #3
0
ファイル: EpgGrid.cs プロジェクト: mrmojo666/MediaPortal-2
        protected void OnMessageReceived(AsynchronousMessageQueue queue, SystemMessage message)
        {
            // Do not handle messages if control is not running. This is a workaround to avoid updating controls that are not used on screen.
            // The EpgGrid is instantiated twice: via ScreenManager.LoadScreen and Control.OnTemplateChanged as copy!?
            if (ElementState != ElementState.Running)
            {
                return;
            }

            if (message.ChannelName == SlimTvClientMessaging.CHANNEL)
            {
                SlimTvClientMessaging.MessageType messageType = (SlimTvClientMessaging.MessageType)message.MessageType;
                switch (messageType)
                {
                case SlimTvClientMessaging.MessageType.GroupChanged:
                    OnGroupChanged();
                    break;

                case SlimTvClientMessaging.MessageType.ProgramsChanged:
                    if (message.MessageData.TryGetValue("MoveCursor", out object difference) && difference is TimeSpan)
                    {
                        SaveFocusPosition(out _);
                        if (_focusTime != DateTime.MinValue)
                        {
                            SetFocusTime(_focusTime + (TimeSpan)difference);
                        }
                    }
                    OnProgramsChanged();
                    break;

                case SlimTvClientMessaging.MessageType.ProgramStatusChanged:
                    IProgram program = (IProgram)message.MessageData[SlimTvClientMessaging.KEY_PROGRAM];
                    UpdateProgramStatus(program);
                    break;

                case SlimTvClientMessaging.MessageType.GoToChannelIndex:
                    if (message.MessageData.TryGetValue("Channel", out object channel) && channel is int)
                    {
                        SkipToChannelIndex((int)channel);
                    }
                    break;
                }
            }
        }