Media controller WIP
This commit is contained in:
@@ -0,0 +1,3 @@
|
|||||||
|
namespace Hyperbar.Windows.Primary;
|
||||||
|
|
||||||
|
public record BackwardRequest : INotification;
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
namespace Hyperbar.Windows.Primary;
|
||||||
|
|
||||||
|
public record FowardRequest : INotification;
|
||||||
@@ -1,9 +1,23 @@
|
|||||||
namespace Hyperbar.Windows.Primary;
|
using Windows.Media.Control;
|
||||||
|
|
||||||
|
namespace Hyperbar.Windows.Primary;
|
||||||
|
|
||||||
public class MediaController :
|
public class MediaController :
|
||||||
IInitializer
|
INotificationHandler<PlayRequest>,
|
||||||
|
IDisposable
|
||||||
{
|
{
|
||||||
public Task InitializeAsync()
|
public MediaController(GlobalSystemMediaTransportControlsSession session)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Dispose()
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public ValueTask Handle(PlayRequest notification,
|
||||||
|
CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
throw new NotImplementedException();
|
throw new NotImplementedException();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,47 @@
|
|||||||
|
using Windows.Media.Control;
|
||||||
|
|
||||||
|
namespace Hyperbar.Windows.Primary;
|
||||||
|
|
||||||
|
public class MediaControllerInitializer :
|
||||||
|
IInitializer
|
||||||
|
{
|
||||||
|
private readonly List<GlobalSystemMediaTransportControlsSession> sessions = [];
|
||||||
|
|
||||||
|
public async Task InitializeAsync()
|
||||||
|
{
|
||||||
|
GlobalSystemMediaTransportControlsSessionManager mediaTransportControlsSessionManager =
|
||||||
|
await GlobalSystemMediaTransportControlsSessionManager.RequestAsync();
|
||||||
|
|
||||||
|
mediaTransportControlsSessionManager.SessionsChanged += OnSessionsChanged;
|
||||||
|
IReadOnlyList<GlobalSystemMediaTransportControlsSession> sessions =
|
||||||
|
mediaTransportControlsSessionManager.GetSessions();
|
||||||
|
|
||||||
|
foreach (var session in sessions)
|
||||||
|
{
|
||||||
|
this.sessions.Add(session);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnSessionsChanged(GlobalSystemMediaTransportControlsSessionManager sender,
|
||||||
|
SessionsChangedEventArgs args)
|
||||||
|
{
|
||||||
|
IReadOnlyList<GlobalSystemMediaTransportControlsSession> sessions =
|
||||||
|
sender.GetSessions();
|
||||||
|
|
||||||
|
foreach (var session in this.sessions.ToList())
|
||||||
|
{
|
||||||
|
if (!sessions.Contains(session))
|
||||||
|
{
|
||||||
|
this.sessions.Remove(session);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (var session in sessions)
|
||||||
|
{
|
||||||
|
if (!this.sessions.Contains(session))
|
||||||
|
{
|
||||||
|
this.sessions.Add(session);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -9,6 +9,7 @@ public class MediaControllerWidgetProvider :
|
|||||||
{
|
{
|
||||||
public void Create(HostBuilderContext comtext, IServiceCollection services) =>
|
public void Create(HostBuilderContext comtext, IServiceCollection services) =>
|
||||||
services.AddWidgetTemplate<MediaControllerWidgetViewModel, MediaControllerWidgetView>()
|
services.AddWidgetTemplate<MediaControllerWidgetViewModel, MediaControllerWidgetView>()
|
||||||
|
.AddTransient<IInitializer, MediaControllerInitializer>()
|
||||||
.AddContentTemplate<MediaControllerViewModel, MediaControllerView>()
|
.AddContentTemplate<MediaControllerViewModel, MediaControllerView>()
|
||||||
.AddContentTemplate<MediaControllerViewModel, MediaControllerView>()
|
.AddContentTemplate<MediaControllerViewModel, MediaControllerView>()
|
||||||
.AddContentTemplate<MediaControllerViewModel, MediaControllerView>()
|
.AddContentTemplate<MediaControllerViewModel, MediaControllerView>()
|
||||||
|
|||||||
@@ -0,0 +1,3 @@
|
|||||||
|
namespace Hyperbar.Windows.Primary;
|
||||||
|
|
||||||
|
public record PauseRequest : INotification;
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
namespace Hyperbar.Windows.Primary;
|
||||||
|
|
||||||
|
public record PlayRequest : INotification;
|
||||||
Reference in New Issue
Block a user