Beispiel #1
0
        protected virtual void InitModel()
        {
            if (_tvHandler == null)
            {
                ITvHandler tvHandler = ServiceRegistration.Get <ITvHandler>();
                tvHandler.Initialize();
                if (tvHandler.ChannelAndGroupInfo == null)
                {
                    return;
                }
                _tvHandler = tvHandler;
            }
            IList <IChannelGroup> channelGroups;

            if (_tvHandler.ChannelAndGroupInfo.GetChannelGroups(out channelGroups))
            {
                ChannelContext.ChannelGroups.Clear();
                ChannelContext.ChannelGroups.AddRange(channelGroups);
            }

            _dialogHeaderProperty = new WProperty(typeof(string), string.Empty);

            GetCurrentChannelGroup();
            FillChannelGroupList();
            GetCurrentChannel();
            UpdateChannels();
            UpdatePrograms();
        }
Beispiel #2
0
        // TODO: reimplement
        /// <summary>
        /// Constructor
        /// </summary>
        public TvInfo(MediaItem mediaItem)
        {
            try
            {
                if (mediaItem is LiveTvMediaItem tvItem && tvItem.TimeshiftContexes.FirstOrDefault()?.Channel is IChannel channel)
                {
                    ITvHandler tvHandler = ServiceRegistration.Get <ITvHandler>();
                    var        result    = tvHandler.ProgramInfo.GetNowNextProgramAsync(channel).Result;

                    ChannelId   = channel.ChannelId;
                    ChannelName = channel.Name;

                    if (result.Success)
                    {
                        CurrentProgramId          = result.Result[0].ProgramId;
                        CurrentProgramName        = result.Result[0].Title;
                        CurrentProgramDescription = result.Result[0].Description;
                        CurrentProgramBegin       = result.Result[0].StartTime;
                        CurrentProgramEnd         = result.Result[0].EndTime;

                        NextProgramId          = result.Result[1].ProgramId;
                        NextProgramName        = result.Result[1].Title;
                        NextProgramDescription = result.Result[1].Description;
                        NextProgramBegin       = result.Result[1].StartTime;
                        NextProgramEnd         = result.Result[1].EndTime;
                    }
                }
            }
            catch (Exception e)
            {
                ServiceRegistration.Get <ILogger>().Error("WifiRemote: Error getting tv info", e);
            }
        }
Beispiel #3
0
        protected static async Task <bool> RemoveSchedulesAsync(int scheduleId)
        {
            if (!ServiceRegistration.IsRegistered <ITvHandler>())
            {
                Logger.Error($"WifiRemote: Remove Schedule: No tv handler");
                return(false);
            }

            ITvHandler tvHandler = ServiceRegistration.Get <ITvHandler>();
            var        schedules = await tvHandler.ScheduleControl.GetSchedulesAsync();

            if (!schedules.Success)
            {
                Logger.Error($"WifiRemote: Remove Schedule: Error getting schedules");
                return(false);
            }

            var schedule = schedules.Result.FirstOrDefault(s => s.ScheduleId == scheduleId);

            if (schedule == null)
            {
                Logger.Error($"WifiRemote: Remove Schedule: Schedule with id '{0}' not found", scheduleId);
                return(false);
            }

            return(await tvHandler.ScheduleControl.RemoveScheduleAsync(schedule));
        }
Beispiel #4
0
        protected static async Task <IList <IProgram> > GetEpgAsync(int channelGroupId, int hours, bool isTv)
        {
            if (!ServiceRegistration.IsRegistered <ITvHandler>())
            {
                Logger.Error($"WifiRemote: List EPG: No tv handler");
                return(new List <IProgram>());
            }

            ITvHandler tvHandler     = ServiceRegistration.Get <ITvHandler>();
            var        channelGroups = await tvHandler.ChannelAndGroupInfo.GetChannelGroupsAsync();

            if (!channelGroups.Success)
            {
                Logger.Error($"WifiRemote: List EPG: Error getting groups");
                return(new List <IProgram>());
            }

            var channelGroup = channelGroups.Result.FirstOrDefault(g => g.ChannelGroupId == channelGroupId && g.MediaType == (isTv ? MediaType.TV : MediaType.Radio));

            if (channelGroup == null)
            {
                Logger.Info($"WifiRemote: List EPG: Channel group with id '{0}' not found", channelGroupId);
                return(new List <IProgram>());
            }

            var programs = await tvHandler.ProgramInfo.GetProgramsGroupAsync(channelGroup, DateTime.Now, DateTime.Now.AddHours(hours));

            if (!programs.Success)
            {
                Logger.Error($"WifiRemote: List EPG: Error getting programs");
                return(new List <IProgram>());
            }

            return(programs.Result);
        }
Beispiel #5
0
        protected static async Task <bool> PlayChannelAsync(int channelId)
        {
            if (!ServiceRegistration.IsRegistered <ITvHandler>())
            {
                Logger.Error($"WifiRemote: Play Channel: No tv handler");
                return(false);
            }

            ITvHandler tvHandler = ServiceRegistration.Get <ITvHandler>();
            var        channel   = await tvHandler.ChannelAndGroupInfo.GetChannelAsync(channelId);

            if (!channel.Success)
            {
                Logger.Info($"WifiRemote: Play Channel: Channel with id '{0}' not found", channelId);
                return(false);
            }

            IWorkflowManager  workflowManager = ServiceRegistration.Get <IWorkflowManager>();
            SlimTvClientModel model           = workflowManager.GetModel(SlimTvClientModel.MODEL_ID) as SlimTvClientModel;

            if (model != null)
            {
                await model.Tune(channel.Result);
            }

            return(true);
        }
Beispiel #6
0
        protected static async Task <IList <IProgram> > GetChannelEpgAsync(int channelId, int hours, bool isTv)
        {
            if (!ServiceRegistration.IsRegistered <ITvHandler>())
            {
                Logger.Error($"WifiRemote: List Channel EPG: No tv handler");
                return(new List <IProgram>());
            }

            ITvHandler tvHandler = ServiceRegistration.Get <ITvHandler>();
            var        channel   = await tvHandler.ChannelAndGroupInfo.GetChannelAsync(channelId);

            if (!channel.Success)
            {
                Logger.Info($"WifiRemote: List Channel EPG: Channel with id '{0}' not found", channelId);
                return(new List <IProgram>());
            }

            var programs = await tvHandler.ProgramInfo.GetProgramsAsync(channel.Result, DateTime.Now, DateTime.Now.AddHours(hours));

            if (!programs.Success)
            {
                Logger.Error($"WifiRemote: List Channel EPG: Error getting programs");
                return(new List <IProgram>());
            }

            return(programs.Result);
        }
Beispiel #7
0
        protected static async Task <IList <IChannel> > GetChannelsAsync(int channelGroupId, bool isTv)
        {
            if (!ServiceRegistration.IsRegistered <ITvHandler>())
            {
                Logger.Error($"WifiRemote: List Channels: No tv handler");
                return(new List <IChannel>());
            }

            ITvHandler tvHandler     = ServiceRegistration.Get <ITvHandler>();
            var        channelGroups = await tvHandler.ChannelAndGroupInfo.GetChannelGroupsAsync();

            if (!channelGroups.Success)
            {
                Logger.Error($"WifiRemote: List Channels: Error getting groups");
                return(new List <IChannel>());
            }

            var channelGroup = channelGroups.Result.FirstOrDefault(g => g.ChannelGroupId == channelGroupId && g.MediaType == (isTv ? MediaType.TV : MediaType.Radio));

            if (channelGroup == null)
            {
                Logger.Info($"WifiRemote: List Channels: Channel group with id '{0}' not found", channelGroupId);
                return(new List <IChannel>());
            }

            var channels = await tvHandler.ChannelAndGroupInfo.GetChannelsAsync(channelGroup);

            if (!channels.Success)
            {
                Logger.Error($"WifiRemote: List Channels: Error getting channels");
                return(new List <IChannel>());
            }

            return(channels.Result);
        }
Beispiel #8
0
        public void Dispose()
        {
            ITvHandler tv = ServiceRegistration.Get <ITvHandler>(false);

            if (tv != null)
            {
                tv.DisposeSlot(_slotIndex);
            }
        }
        protected IChannel GetChannel(int channelId)
        {
            ITvHandler tvHandler = ServiceRegistration.Get <ITvHandler>();

            tvHandler.Initialize();
            if (tvHandler.ChannelAndGroupInfo == null)
            {
                return(null);
            }
            var result = tvHandler.ChannelAndGroupInfo.GetChannelAsync(channelId).Result;

            return(result.Success ? result.Result : null);
        }
        protected IChannel GetChannel(int channelId)
        {
            ITvHandler tvHandler = ServiceRegistration.Get <ITvHandler>();

            tvHandler.Initialize();
            IChannel channel;

            if (tvHandler.ChannelAndGroupInfo == null || !tvHandler.ChannelAndGroupInfo.GetChannel(channelId, out channel))
            {
                channel = null;
            }
            return(channel);
        }
Beispiel #11
0
        protected virtual void InitModel()
        {
            if (_tvHandler == null)
            {
                _tvHandler = ServiceRegistration.Get <ITvHandler>();
                _tvHandler.Initialize();
            }
            _tvHandler.ChannelAndGroupInfo.GetChannelGroups(out _channelGroups);

            GetCurrentChannelGroup();
            GetCurrentChannel();
            UpdateChannels();
            UpdatePrograms();
        }
Beispiel #12
0
        protected virtual void InitModel()
        {
            if (_tvHandler == null)
            {
                ITvHandler tvHandler = ServiceRegistration.Get <ITvHandler>();
                tvHandler.Initialize();
                if (tvHandler.ChannelAndGroupInfo == null)
                {
                    return;
                }
                _tvHandler = tvHandler;
            }

            _dialogHeaderProperty = new WProperty(typeof(string), string.Empty);
        }
Beispiel #13
0
        protected static async Task <IList <IChannelGroup> > GetChannelGroupsAsync(bool isTv)
        {
            if (!ServiceRegistration.IsRegistered <ITvHandler>())
            {
                Logger.Error($"WifiRemote: List Channel Groups: No tv handler");
                return(new List <IChannelGroup>());
            }

            ITvHandler tvHandler     = ServiceRegistration.Get <ITvHandler>();
            var        channelGroups = await tvHandler.ChannelAndGroupInfo.GetChannelGroupsAsync();

            if (!channelGroups.Success)
            {
                Logger.Error($"WifiRemote: List Channel Groups: Error getting groups");
                return(new List <IChannelGroup>());
            }

            return(channelGroups.Result.Where(g => g.MediaType == (isTv ? MediaType.TV : MediaType.Radio)).ToList());
        }
Beispiel #14
0
        protected static async Task <IList <ISchedule> > GetSchedulesAsync()
        {
            if (!ServiceRegistration.IsRegistered <ITvHandler>())
            {
                Logger.Error($"WifiRemote: List Schedules: No tv handler");
                return(new List <ISchedule>());
            }

            ITvHandler tvHandler = ServiceRegistration.Get <ITvHandler>();
            var        schedules = await tvHandler.ScheduleControl.GetSchedulesAsync();

            if (!schedules.Success)
            {
                Logger.Error($"WifiRemote: List Schedules: Error getting schedules");
                return(new List <ISchedule>());
            }

            return(schedules.Result);
        }
        /// <summary>
        /// Creates a schedule using the configured properties.
        /// </summary>
        public void CreateSchedule()
        {
            IChannel channel   = Channel;
            DateTime startTime = StartTime;
            DateTime endTime   = EndTime;
            ScheduleRecordingType recordingType = RecordingType;

            if (!CheckScheduleValid(channel, startTime, endTime))
            {
                return;
            }

            ITvHandler tvHandler = ServiceRegistration.Get <ITvHandler>();
            ISchedule  schedule;
            bool       result = tvHandler.ScheduleControl.CreateScheduleByTime(channel, startTime, endTime, recordingType, out schedule);

            IWorkflowManager workflowManager = ServiceRegistration.Get <IWorkflowManager>();

            workflowManager.NavigatePopToState(STATE_MANUAL_SCHEDULE, true);
        }
        protected bool TryInitTvHandler()
        {
            if (_tvHandler != null)
            {
                return(true);
            }
            ITvProvider provider = ServiceRegistration.Get <ITvProvider>(false);

            if (provider == null)
            {
                return(false);
            }
            ITvHandler tvHandler = ServiceRegistration.Get <ITvHandler>();

            tvHandler.Initialize();
            if (tvHandler.ChannelAndGroupInfo == null)
            {
                return(false);
            }
            _tvHandler = tvHandler;
            return(true);
        }
        /// <summary>
        /// Creates a schedule using the configured properties.
        /// </summary>
        public async Task CreateSchedule()
        {
            IChannel channel   = Channel;
            DateTime startTime = StartTime;
            DateTime endTime   = EndTime;
            ScheduleRecordingType recordingType = RecordingType;

            if (!CheckScheduleValid(channel, startTime, endTime))
            {
                return;
            }

            ITvHandler tvHandler = ServiceRegistration.Get <ITvHandler>();
            var        result    = await tvHandler.ScheduleControl.CreateScheduleByTimeAsync(channel, startTime, endTime, recordingType);

            if (!result.Success)
            {
                ServiceRegistration.Get <ILogger>().Warn("SlimTvManualScheduleModel: Could not create schedule.");
            }

            IWorkflowManager workflowManager = ServiceRegistration.Get <IWorkflowManager>();

            workflowManager.NavigatePopToState(STATE_MANUAL_SCHEDULE, true);
        }
Beispiel #18
0
    protected virtual void InitModel()
    {
      if (_tvHandler == null)
      {
        ITvHandler tvHandler = ServiceRegistration.Get<ITvHandler>();
        tvHandler.Initialize();
        if (tvHandler.ChannelAndGroupInfo == null)
          return;
        _tvHandler = tvHandler;
      }

      _dialogHeaderProperty = new WProperty(typeof(string), string.Empty);
    }
    protected virtual void InitModel()
    {
      if (_tvHandler == null)
      {
        ITvHandler tvHandler = ServiceRegistration.Get<ITvHandler>();
        tvHandler.Initialize();
        if (tvHandler.ChannelAndGroupInfo == null)
          return;
        _tvHandler = tvHandler;
      }
      _tvHandler.ChannelAndGroupInfo.GetChannelGroups(out _channelGroups);

      GetCurrentChannelGroup();
      FillChannelGroupList();
      GetCurrentChannel();
      UpdateChannels();
      UpdatePrograms();
    }
    protected virtual void InitModel()
    {
      if (_tvHandler == null)
      {
        ITvHandler tvHandler = ServiceRegistration.Get<ITvHandler>();
        tvHandler.Initialize();
        if (tvHandler.ChannelAndGroupInfo == null)
          return;
        _tvHandler = tvHandler;
      }
      IList<IChannelGroup> channelGroups;
      if (_tvHandler.ChannelAndGroupInfo.GetChannelGroups(out channelGroups))
      {
        ChannelContext.ChannelGroups.Clear();
        ChannelContext.ChannelGroups.AddRange(channelGroups);
      }

      _dialogHeaderProperty = new WProperty(typeof(string), string.Empty);

      GetCurrentChannelGroup();
      FillChannelGroupList();
      GetCurrentChannel();
      UpdateChannels();
      UpdatePrograms();
    }