/// <summary> /// Adds new media watch entry to history. /// </summary> /// <param name="entry"> /// Entry to add. Id is ignored and gets overwritten if operation is successful. /// </param> /// <param name="thumbnailImage"> /// Thumbnail image for entry. Format needs to be TextureFormat.RGB24. /// </param> /// <returns> /// MLResult.Result will be MLResult.Code.Ok if successful. /// /// MLResult.Result will be MLResult.Code.InvalidParam if failed due to invalid input parameter. /// /// MLResult.Result will be MLResult.Code.UnspecifiedFailure if failed due to internal error. /// /// MLResult.Result will be MLResult.Code.ScreensServiceNotAvailable if failed due to the unavailability of the screens service. /// </returns> public static MLResult Add(ref MLScreensWatchHistoryEntry entry, Texture2D thumbnailImage) { if (thumbnailImage == null) { return(MLResult.Create(MLResult.Code.InvalidParam, "Invalid null thumbnail parameter")); } return(Instance.InternalAdd(ref entry, thumbnailImage)); }
private MLResult InternalGetEntry(long id, ref MLScreensWatchHistoryEntry entry) { if (!_watchHistory.ContainsKey(id)) { return(MLResult.Create(MLResult.Code.InvalidParam, "Unknown entry Id")); } entry = _watchHistory[id]; return(MLResult.Create(MLResult.Code.Ok)); }
private void PopulateWatchHistory() { long screensArrayAddress = _watchHistoryList.Entries.ToInt64(); for (var i = 0; i < _watchHistoryList.Count; ++i) { long entryAddress = screensArrayAddress + i * Marshal.SizeOf(typeof(MLScreensNativeBindings.MLScreensWatchHistoryEntryNative)); var entryPtr = new IntPtr(entryAddress); var nativeEntry = (MLScreensNativeBindings.MLScreensWatchHistoryEntryNative)Marshal.PtrToStructure(entryPtr, typeof(MLScreensNativeBindings.MLScreensWatchHistoryEntryNative)); MLScreensWatchHistoryEntry entry = nativeEntry.Data; _watchHistory.Add(entry.Id, entry); } }
private MLResult InternalUpdateWatchHistory(MLScreensWatchHistoryEntry entry, Texture2D thumbnailImage) { if (!entry.IsValid) { return(MLResult.Create(MLResult.Code.InvalidParam, "Invalid entry parameter")); } if (!_watchHistory.ContainsKey(entry.Id)) { return(MLResult.Create(MLResult.Code.InvalidParam, "Unknown entry Id")); } if (thumbnailImage != null && thumbnailImage.format != TextureFormat.RGB24) { return(MLResult.Create(MLResult.Code.InvalidParam, "Invalid thumbnail parameter format")); } MLScreensNativeBindings.MLScreensWatchHistoryEntryNative nativeEntry = MLScreensNativeBindings.MLScreensWatchHistoryEntryNative.Create(); nativeEntry.Data = entry; MLImageNativeBindings.MLImageNative thumbnail = thumbnailImage == null ? _defaultGrayThumbnailImage : CreateThumbnailImage(thumbnailImage); MLResult.Code resultCode = MLScreensNativeBindings.MLScreensUpdateWatchHistoryEntry(ref nativeEntry, ref thumbnail); if (thumbnail.Image != IntPtr.Zero && thumbnail.Image != _defaultGrayThumbnailImage.Image) { Marshal.FreeHGlobal(thumbnail.Image); } Marshal.FreeHGlobal(nativeEntry.Title); Marshal.FreeHGlobal(nativeEntry.Subtitle); Marshal.FreeHGlobal(nativeEntry.CustomData); var result = MLResult.Create(resultCode); if (result.IsOk) { _watchHistory[entry.Id] = entry; } return(result); }
/// <summary> /// Gets entry from media watch history. /// </summary> /// <param name="id">Id of existing media watch entry.</param> /// <param name="entry">Output entry if successful, unmodified otherwise.</param> /// <returns> /// MLResult.Result will be MLResult.Code.Ok if successful. /// /// MLResult.Result will be MLResult.Code.InvalidParam if failed due to invalid input parameter. /// </returns> public static MLResult GetEntry(long id, ref MLScreensWatchHistoryEntry entry) { return(Instance.InternalGetEntry(id, ref entry)); }
/// <summary> /// Updates media watch entry. /// </summary> /// <param name="entry">Id of existing media watch entry.</param> /// <param name="thumbnailImage"> /// Optional thumbnail image for entry. Format needs to be TextureFormat.RGB24. If left out, default thumbnail will be used. /// </param> /// <returns> /// MLResult.Result will be MLResult.Code.Ok if successful. /// /// MLResult.Result will be MLResult.Code.InvalidParam if failed due to invalid input parameter. /// /// MLResult.Result will be MLResult.Code.UnspecifiedFailure if failed due to internal error. /// /// MLResult.Result will be MLResult.Code.ScreensServiceNotAvailable if failed due to the unavailability of the screens service. /// </returns> public static MLResult UpdateWatchHistory(MLScreensWatchHistoryEntry entry, Texture2D thumbnailImage = null) { return(Instance.InternalUpdateWatchHistory(entry, thumbnailImage)); }
/// <summary> /// Adds new media watch entry to history with default thumbnail. /// </summary> /// <param name="entry"> /// Entry to add. Id is ignored and gets overwritten if operation is successful. /// </param> /// <returns> /// MLResult.Result will be MLResult.Code.Ok if successful. /// /// MLResult.Result will be MLResult.Code.InvalidParam if failed due to invalid input parameter. /// /// MLResult.Result will be MLResult.Code.UnspecifiedFailure if failed due to internal error. /// /// MLResult.Result will be MLResult.Code.ScreensServiceNotAvailable if failed due to the unavailability of the screens service. /// </returns> public static MLResult Add(ref MLScreensWatchHistoryEntry entry) { return(Instance.InternalAdd(ref entry, null)); }