diff options
| author | Tim Hobbs <jesus.tesh@gmail.com> | 2014-03-20 12:12:10 -0700 |
|---|---|---|
| committer | Tim Hobbs <jesus.tesh@gmail.com> | 2014-03-20 12:12:10 -0700 |
| commit | d5e49f590d8e027a8755ea607bf3caba3ddcc9f1 (patch) | |
| tree | 717dc53979fb4686ad499caf40bb834f41c05d09 | |
| parent | 436d10bef946299f67109daa91eff5cc1325f9ff (diff) | |
Enable remote "fullscreen" command
This is really only pseudo-fullscreen, as the js fullscreen API doesn't
allow fullscreen without user interaction.
| -rw-r--r-- | MediaBrowser.Api/SessionsService.cs | 2 | ||||
| -rw-r--r-- | MediaBrowser.Dlna/PlayTo/Device.cs | 29 | ||||
| -rw-r--r-- | MediaBrowser.Dlna/PlayTo/DlnaController.cs | 3 | ||||
| -rw-r--r-- | MediaBrowser.Model/Session/PlaystateCommand.cs | 6 |
4 files changed, 38 insertions, 2 deletions
diff --git a/MediaBrowser.Api/SessionsService.cs b/MediaBrowser.Api/SessionsService.cs index df35c93a0..62e5a252e 100644 --- a/MediaBrowser.Api/SessionsService.cs +++ b/MediaBrowser.Api/SessionsService.cs @@ -131,7 +131,7 @@ namespace MediaBrowser.Api /// Gets or sets the play command. /// </summary> /// <value>The play command.</value> - [ApiMember(Name = "Command", Description = "The command to send - stop, pause, unpause, nexttrack, previoustrack, seek.", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "POST")] + [ApiMember(Name = "Command", Description = "The command to send - stop, pause, unpause, nexttrack, previoustrack, seek, fullscreen.", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "POST")] public PlaystateCommand Command { get; set; } } diff --git a/MediaBrowser.Dlna/PlayTo/Device.cs b/MediaBrowser.Dlna/PlayTo/Device.cs index 5952a213a..b05a47491 100644 --- a/MediaBrowser.Dlna/PlayTo/Device.cs +++ b/MediaBrowser.Dlna/PlayTo/Device.cs @@ -30,6 +30,15 @@ namespace MediaBrowser.Dlna.PlayTo } } + private bool _fullscreen; + public bool IsFullscreen + { + get + { + return _fullscreen; + } + } + private string _currentId = String.Empty; public string CurrentId { @@ -207,6 +216,26 @@ namespace MediaBrowser.Dlna.PlayTo return SetVolume(tmp); } + public async Task<bool> ToggleFullscreen() + { + var command = RendererCommands.ServiceActions.FirstOrDefault(c => c.Name == "Fullscreen"); + if (command == null) + return true; + + var service = Properties.Services.FirstOrDefault(s => s.ServiceType == ServiceRenderingType); + + if (service == null) { + throw new InvalidOperationException("Unable to find service"); + } + + _fullscreen = !_fullscreen; + + var result = await new SsdpHttpClient(_httpClient, _config).SendCommandAsync(Properties.BaseUrl, service, command.Name, RendererCommands.BuildPost(command, service.ServiceType, _fullscreen)) + .ConfigureAwait(false); + + return true; + } + public async Task<bool> SetVolume(int value) { var command = RendererCommands.ServiceActions.FirstOrDefault(c => c.Name == "SetVolume"); diff --git a/MediaBrowser.Dlna/PlayTo/DlnaController.cs b/MediaBrowser.Dlna/PlayTo/DlnaController.cs index 4180154a4..dc62d6062 100644 --- a/MediaBrowser.Dlna/PlayTo/DlnaController.cs +++ b/MediaBrowser.Dlna/PlayTo/DlnaController.cs @@ -283,6 +283,9 @@ namespace MediaBrowser.Dlna.PlayTo case PlaystateCommand.PreviousTrack: _currentItem = null; return SetPrevious(); + + case PlaystateCommand.Fullscreen: + return _device.ToggleFullscreen(); } return Task.FromResult(true); diff --git a/MediaBrowser.Model/Session/PlaystateCommand.cs b/MediaBrowser.Model/Session/PlaystateCommand.cs index b0dec66d4..d83c6dae5 100644 --- a/MediaBrowser.Model/Session/PlaystateCommand.cs +++ b/MediaBrowser.Model/Session/PlaystateCommand.cs @@ -29,7 +29,11 @@ namespace MediaBrowser.Model.Session /// <summary> /// The seek /// </summary> - Seek + Seek, + /// <summary> + /// The fullscreen + /// </summary> + Fullscreen } public class PlaystateRequest |
