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; } } }
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; } } }
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; } } }