Showing with 218 additions and 100 deletions.
  1. +4 −0 MediaPortal/Source/UI/TV/SlimTvClient/MediaLists/SlimTvContinueWatchRecordingsMediaListProvider.cs
  2. +4 −0 MediaPortal/Source/UI/TV/SlimTvClient/MediaLists/SlimTvFavoriteRecordingsMediaListProvider.cs
  3. +4 −0 MediaPortal/Source/UI/TV/SlimTvClient/MediaLists/SlimTvLastWatchedRecordingsMediaListProvider.cs
  4. +4 −0 MediaPortal/Source/UI/TV/SlimTvClient/MediaLists/SlimTvLatestRecordingsMediaListProvider.cs
  5. +15 −2 MediaPortal/Source/UI/TV/SlimTvClient/MediaLists/SlimTvMediaListProviderBase.cs
  6. +2 −2 MediaPortal/Source/UI/TV/SlimTvClient/MediaLists/SlimTvProgramsMediaListProvider.cs
  7. +4 −0 MediaPortal/Source/UI/TV/SlimTvClient/MediaLists/SlimTvUnwatchedRecordingsMediaListProvider.cs
  8. +0 −3 MediaPortal/Source/UI/TV/SlimTvClient/Models/SlimTvClientModel.cs
  9. +92 −85 MediaPortal/Source/UI/TV/SlimTvProxy3/SlimTvProxy3.cs
  10. +2 −2 MediaPortal/Source/UI/UiComponents/Media/MediaLists/BaseContinueWatchMediaListProvider.cs
  11. +1 −1 MediaPortal/Source/UI/UiComponents/Media/MediaLists/BaseFavoriteMediaListProvider.cs
  12. +2 −2 MediaPortal/Source/UI/UiComponents/Media/MediaLists/BaseLastWatchedMediaListProvider.cs
  13. +1 −1 MediaPortal/Source/UI/UiComponents/Media/MediaLists/BaseLatestMediaListProvider.cs
  14. +1 −0 MediaPortal/Source/UI/UiComponents/Media/MediaLists/BaseMediaListProvider.cs
  15. +1 −1 MediaPortal/Source/UI/UiComponents/Media/MediaLists/BaseUnwatchedMediaListProvider.cs
  16. +5 −1 MediaPortal/Source/UI/UiComponents/Media/MediaLists/ContinueWatchEpisodeMediaListProvider.cs
  17. +4 −0 MediaPortal/Source/UI/UiComponents/Media/MediaLists/ContinueWatchMovieMediaListProvider.cs
  18. +4 −0 MediaPortal/Source/UI/UiComponents/Media/MediaLists/ContinueWatchRecordingMediaListProvider.cs
  19. +4 −0 MediaPortal/Source/UI/UiComponents/Media/MediaLists/ContinueWatchVideoMediaListProvider.cs
  20. +4 −0 MediaPortal/Source/UI/UiComponents/Media/MediaLists/FavoriteEpisodeMediaListProvider.cs
  21. +4 −0 MediaPortal/Source/UI/UiComponents/Media/MediaLists/FavoriteMovieMediaListProvider.cs
  22. +4 −0 MediaPortal/Source/UI/UiComponents/Media/MediaLists/FavoriteRecordingMediaListProvider.cs
  23. +4 −0 MediaPortal/Source/UI/UiComponents/Media/MediaLists/FavoriteVideoMediaListProvider.cs
  24. +4 −0 MediaPortal/Source/UI/UiComponents/Media/MediaLists/LastWatchedEpisodeMediaListProvider.cs
  25. +4 −0 MediaPortal/Source/UI/UiComponents/Media/MediaLists/LastWatchedMovieMediaListProvider.cs
  26. +4 −0 MediaPortal/Source/UI/UiComponents/Media/MediaLists/LastWatchedRecordingMediaListProvider.cs
  27. +4 −0 MediaPortal/Source/UI/UiComponents/Media/MediaLists/LastWatchedVideoMediaListProvider.cs
  28. +4 −0 MediaPortal/Source/UI/UiComponents/Media/MediaLists/LatestEpisodeMediaListProvider.cs
  29. +4 −0 MediaPortal/Source/UI/UiComponents/Media/MediaLists/LatestMovieMediaListProvider.cs
  30. +4 −0 MediaPortal/Source/UI/UiComponents/Media/MediaLists/LatestRecordingMediaListProvider.cs
  31. +4 −0 MediaPortal/Source/UI/UiComponents/Media/MediaLists/LatestVideoMediaListProvider.cs
  32. +4 −0 MediaPortal/Source/UI/UiComponents/Media/MediaLists/UnwatchedEpisodeMediaListProvider.cs
  33. +4 −0 MediaPortal/Source/UI/UiComponents/Media/MediaLists/UnwatchedMovieMediaListProvider.cs
  34. +4 −0 MediaPortal/Source/UI/UiComponents/Media/MediaLists/UnwatchedRecordingMediaListProvider.cs
  35. +4 −0 MediaPortal/Source/UI/UiComponents/Media/MediaLists/UnwatchedVideoMediaListProvider.cs
@@ -23,10 +23,12 @@
#endregion

using MediaPortal.Common.Commands;
using MediaPortal.Common.MediaManagement.DefaultItemAspects;
using MediaPortal.Plugins.SlimTv.Client.Models.Navigation;
using MediaPortal.Plugins.SlimTv.Client.TvHandler;
using MediaPortal.UiComponents.Media.MediaLists;
using MediaPortal.UiComponents.Media.Models;
using System;

namespace MediaPortal.Plugins.SlimTv.Client.MediaLists
{
@@ -35,6 +37,8 @@ public class SlimTvContinueWatchRecordingsMediaListProvider : BaseContinueWatchM
public SlimTvContinueWatchRecordingsMediaListProvider()
{
_necessaryMias = SlimTvConsts.NECESSARY_RECORDING_MIAS;
//Needed for calculating play percentage
_optionalMias = new Guid[] { VideoStreamAspect.ASPECT_ID };
_playableConverterAction = mi => new RecordingItem(mi) { Command = new MethodDelegateCommand(() => PlayItemsModel.CheckQueryPlayAction(mi)) };
}
}
@@ -23,10 +23,12 @@
#endregion

using MediaPortal.Common.Commands;
using MediaPortal.Common.MediaManagement.DefaultItemAspects;
using MediaPortal.Plugins.SlimTv.Client.Models.Navigation;
using MediaPortal.Plugins.SlimTv.Client.TvHandler;
using MediaPortal.UiComponents.Media.MediaLists;
using MediaPortal.UiComponents.Media.Models;
using System;

namespace MediaPortal.Plugins.SlimTv.Client.MediaLists
{
@@ -35,6 +37,8 @@ public class SlimTvFavoriteRecordingsMediaListProvider : BaseFavoriteMediaListPr
public SlimTvFavoriteRecordingsMediaListProvider()
{
_necessaryMias = SlimTvConsts.NECESSARY_RECORDING_MIAS;
//Needed for calculating play percentage
_optionalMias = new Guid[] { VideoStreamAspect.ASPECT_ID };
_playableConverterAction = mi => new RecordingItem(mi) { Command = new MethodDelegateCommand(() => PlayItemsModel.CheckQueryPlayAction(mi)) };
}
}
@@ -23,10 +23,12 @@
#endregion

using MediaPortal.Common.Commands;
using MediaPortal.Common.MediaManagement.DefaultItemAspects;
using MediaPortal.Plugins.SlimTv.Client.Models.Navigation;
using MediaPortal.Plugins.SlimTv.Client.TvHandler;
using MediaPortal.UiComponents.Media.MediaLists;
using MediaPortal.UiComponents.Media.Models;
using System;

namespace MediaPortal.Plugins.SlimTv.Client.MediaLists
{
@@ -35,6 +37,8 @@ public class SlimTvLastWatchedRecordingsMediaListProvider : BaseLastWatchedMedia
public SlimTvLastWatchedRecordingsMediaListProvider()
{
_necessaryMias = SlimTvConsts.NECESSARY_RECORDING_MIAS;
//Needed for calculating play percentage
_optionalMias = new Guid[] { VideoStreamAspect.ASPECT_ID };
_playableConverterAction = mi => new RecordingItem(mi) { Command = new MethodDelegateCommand(() => PlayItemsModel.CheckQueryPlayAction(mi)) };
}
}
@@ -23,10 +23,12 @@
#endregion

using MediaPortal.Common.Commands;
using MediaPortal.Common.MediaManagement.DefaultItemAspects;
using MediaPortal.Plugins.SlimTv.Client.Models.Navigation;
using MediaPortal.Plugins.SlimTv.Client.TvHandler;
using MediaPortal.UiComponents.Media.MediaLists;
using MediaPortal.UiComponents.Media.Models;
using System;

namespace MediaPortal.Plugins.SlimTv.Client.MediaLists
{
@@ -35,6 +37,8 @@ public class SlimTvLatestRecordingsMediaListProvider : BaseLatestMediaListProvid
public SlimTvLatestRecordingsMediaListProvider()
{
_necessaryMias = SlimTvConsts.NECESSARY_RECORDING_MIAS;
//Needed for calculating play percentage
_optionalMias = new Guid[] { VideoStreamAspect.ASPECT_ID };
_playableConverterAction = mi => new RecordingItem(mi) { Command = new MethodDelegateCommand(() => PlayItemsModel.CheckQueryPlayAction(mi)) };
}
}
@@ -30,7 +30,6 @@
using MediaPortal.Plugins.SlimTv.Interfaces;
using MediaPortal.Plugins.SlimTv.Interfaces.Items;
using MediaPortal.UI.Presentation.DataObjects;
using MediaPortal.UI.Services.UserManagement;
using MediaPortal.UiComponents.Media.MediaLists;
using System;
using System.Collections.Generic;
@@ -83,7 +82,7 @@ protected bool TryInitTvHandler()
return true;
}

protected async Task<IList<IChannel>> GetUserChannelList(int maxItems, string userDataKey)
protected async Task<IList<IChannel>> GetUserChannelList(int maxItems, string userDataKey, bool fillList = false)
{
IList<IChannel> userChannels = new List<IChannel>();

@@ -101,6 +100,7 @@ protected async Task<IList<IChannel>> GetUserChannelList(int maxItems, string us

IEnumerable<Tuple<int, string>> channelList = userResult.Result;

//Add favorite channels first
foreach (int channelId in channelList.Select(c => c.Item1))
{
var result = await _tvHandler.ChannelAndGroupInfo.GetChannelAsync(channelId);
@@ -109,6 +109,19 @@ protected async Task<IList<IChannel>> GetUserChannelList(int maxItems, string us
if (userChannels.Count >= maxItems)
break;
}

//Add any remaining channels
if (fillList && userChannels.Count < maxItems)
{
foreach (int channelId in ChannelContext.Instance.Channels.Where(c => c.MediaType == _mediaType).Select(c => c.ChannelId).Except(channelList.Select(c => c.Item1)))
{
var result = await _tvHandler.ChannelAndGroupInfo.GetChannelAsync(channelId);
if (result.Success)
userChannels.Add(result.Result);
if (userChannels.Count >= maxItems)
break;
}
}
return userChannels;
}
}
@@ -46,7 +46,7 @@ private ListItem CreateProgramItem(IProgram program, IChannel channel)
ProgramProperties programProperties = new ProgramProperties();
programProperties.SetProgram(program, channel);

ListItem item = new ProgramListItem(programProperties)
ProgramListItem item = new ProgramListItem(programProperties)
{
Command = new AsyncMethodDelegateCommand(() => SlimTvModelBase.TuneChannel(channel)),
};
@@ -68,7 +68,7 @@ public override async Task<bool> UpdateItemsAsync(int maxItems, UpdateReason upd

ICollection<IChannel> channels;
if (_currentChannels == null || updateReason.HasFlag(UpdateReason.Forced) || updateReason.HasFlag(UpdateReason.PlaybackComplete))
channels = _currentChannels = await GetUserChannelList(maxItems, UserDataKeysKnown.KEY_CHANNEL_PLAY_COUNT);
channels = _currentChannels = await GetUserChannelList(maxItems, UserDataKeysKnown.KEY_CHANNEL_PLAY_COUNT, true);
else
channels = _currentChannels;

@@ -23,10 +23,12 @@
#endregion

using MediaPortal.Common.Commands;
using MediaPortal.Common.MediaManagement.DefaultItemAspects;
using MediaPortal.Plugins.SlimTv.Client.Models.Navigation;
using MediaPortal.Plugins.SlimTv.Client.TvHandler;
using MediaPortal.UiComponents.Media.MediaLists;
using MediaPortal.UiComponents.Media.Models;
using System;

namespace MediaPortal.Plugins.SlimTv.Client.MediaLists
{
@@ -35,6 +37,8 @@ public class SlimTvUnwatchedRecordingsMediaListProvider : BaseUnwatchedMediaList
public SlimTvUnwatchedRecordingsMediaListProvider()
{
_necessaryMias = SlimTvConsts.NECESSARY_RECORDING_MIAS;
//Needed for calculating play percentage
_optionalMias = new Guid[] { VideoStreamAspect.ASPECT_ID };
_playableConverterAction = mi => new RecordingItem(mi) { Command = new MethodDelegateCommand(() => PlayItemsModel.CheckQueryPlayAction(mi)) };
}
}
@@ -679,9 +679,6 @@ private async Task UpdateWatchDuration(IChannel channel)
if (userProfile.HasValue)
{
var userResult = await userProfileDataManagement.UserProfileDataManagement.GetUserAdditionalDataAsync(userProfile.Value, UserDataKeysKnown.KEY_CHANNEL_PLAY_COUNT, channel.ChannelId);
if (!userResult.Success)
return;

string data = userResult.Result;
double count = (data != null ? Convert.ToDouble(data, CultureInfo.InvariantCulture) : 0) + (DateTime.UtcNow - _watchStart[channel]).TotalHours;
await userProfileDataManagement.UserProfileDataManagement.SetUserAdditionalDataAsync(userProfile.Value,