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,10 +1,24 @@
|
||||
namespace Hyperbar.Windows.Primary;
|
||||
using Windows.Media.Control;
|
||||
|
||||
public class MediaController :
|
||||
IInitializer
|
||||
namespace Hyperbar.Windows.Primary;
|
||||
|
||||
public class MediaController :
|
||||
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();
|
||||
}
|
||||
}
|
||||
@@ -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) =>
|
||||
services.AddWidgetTemplate<MediaControllerWidgetViewModel, MediaControllerWidgetView>()
|
||||
.AddTransient<IInitializer, MediaControllerInitializer>()
|
||||
.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