mirror of
https://github.com/jellyfin/jellyfin.git
synced 2024-07-11 08:10:34 +02:00
Enable remote "fullscreen" command
This is really only pseudo-fullscreen, as the js fullscreen API doesn't allow fullscreen without user interaction.
This commit is contained in:
parent
436d10bef9
commit
d5e49f590d
|
@ -131,7 +131,7 @@ namespace MediaBrowser.Api
|
||||||
/// Gets or sets the play command.
|
/// Gets or sets the play command.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The play command.</value>
|
/// <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; }
|
public PlaystateCommand Command { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -30,6 +30,15 @@ namespace MediaBrowser.Dlna.PlayTo
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private bool _fullscreen;
|
||||||
|
public bool IsFullscreen
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return _fullscreen;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private string _currentId = String.Empty;
|
private string _currentId = String.Empty;
|
||||||
public string CurrentId
|
public string CurrentId
|
||||||
{
|
{
|
||||||
|
@ -207,6 +216,26 @@ namespace MediaBrowser.Dlna.PlayTo
|
||||||
return SetVolume(tmp);
|
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)
|
public async Task<bool> SetVolume(int value)
|
||||||
{
|
{
|
||||||
var command = RendererCommands.ServiceActions.FirstOrDefault(c => c.Name == "SetVolume");
|
var command = RendererCommands.ServiceActions.FirstOrDefault(c => c.Name == "SetVolume");
|
||||||
|
|
|
@ -283,6 +283,9 @@ namespace MediaBrowser.Dlna.PlayTo
|
||||||
case PlaystateCommand.PreviousTrack:
|
case PlaystateCommand.PreviousTrack:
|
||||||
_currentItem = null;
|
_currentItem = null;
|
||||||
return SetPrevious();
|
return SetPrevious();
|
||||||
|
|
||||||
|
case PlaystateCommand.Fullscreen:
|
||||||
|
return _device.ToggleFullscreen();
|
||||||
}
|
}
|
||||||
|
|
||||||
return Task.FromResult(true);
|
return Task.FromResult(true);
|
||||||
|
|
|
@ -29,7 +29,11 @@ namespace MediaBrowser.Model.Session
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The seek
|
/// The seek
|
||||||
/// </summary>
|
/// </summary>
|
||||||
Seek
|
Seek,
|
||||||
|
/// <summary>
|
||||||
|
/// The fullscreen
|
||||||
|
/// </summary>
|
||||||
|
Fullscreen
|
||||||
}
|
}
|
||||||
|
|
||||||
public class PlaystateRequest
|
public class PlaystateRequest
|
||||||
|
|
Loading…
Reference in a new issue