This commit is contained in:
TheXamlGuy
2024-02-04 18:24:20 +00:00
parent e53e6eb69b
commit 110ac407f5
39 changed files with 166 additions and 110 deletions
@@ -3,11 +3,12 @@ using Hyperbar.UI.Windows;
namespace Hyperbar.Widget.MediaController.Windows;
public sealed partial class MediaButtonView :
public partial class MediaButtonView :
UserControl
{
public MediaButtonView() =>
this.InitializeComponent(ref _contentLoaded);
private IMediaButtonViewModel ViewModel => (IMediaButtonViewModel)DataContext;
protected IMediaButtonViewModel ViewModel =>
(IMediaButtonViewModel)DataContext;
}
@@ -5,10 +5,10 @@ namespace Hyperbar.Widget.MediaController.Windows;
public class MediaControllerHandler(IMediator mediator,
IServiceScopeProvider<MediaController> scopeProvider,
ICache<MediaController, MediaControllerViewModel> cache) :
INotificationHandler<Created<MediaController>>,
INotificationHandler<Removed<MediaController>>
INotificationHandler<Create<MediaController>>,
INotificationHandler<Remove<MediaController>>
{
public async Task Handle(Created<MediaController> notification,
public async Task Handle(Create<MediaController> notification,
CancellationToken cancellationToken)
{
if (notification.Value is MediaController mediaController &&
@@ -18,17 +18,17 @@ public class MediaControllerHandler(IMediator mediator,
factory.Create(mediaController) is MediaControllerViewModel viewModel)
{
cache.Add(mediaController, viewModel);
await mediator.PublishAsync(new Created<MediaControllerViewModel>(viewModel), cancellationToken);
await mediator.PublishAsync(new Create<MediaControllerViewModel>(viewModel), cancellationToken);
}
}
public async Task Handle(Removed<MediaController> notification, CancellationToken cancellationToken)
public async Task Handle(Remove<MediaController> notification, CancellationToken cancellationToken)
{
if (notification.Value is MediaController mediaController &&
cache.TryGetValue(mediaController, out MediaControllerViewModel? viewModel) &&
viewModel is not null)
{
await mediator.PublishAsync(new Removed<MediaControllerViewModel>(viewModel), cancellationToken);
await mediator.PublishAsync(new Remove<MediaControllerViewModel>(viewModel), cancellationToken);
cache.Remove(mediaController);
}
}
@@ -34,7 +34,7 @@ public class MediaControllerService(IMediator mediator,
{
if (factory.Create(session) is MediaController mediaController)
{
await mediator.PublishAsync(new Created<MediaController>(mediaController));
await mediator.PublishAsync(new Create<MediaController>(mediaController));
cache.Add(new KeyValuePair<GlobalSystemMediaTransportControlsSession, MediaController>(session,
mediaController));
}
@@ -53,7 +53,7 @@ public class MediaControllerService(IMediator mediator,
{
if (!sessions.Any(x => x.SourceAppUserModelId == session.Key.SourceAppUserModelId))
{
await mediator.PublishAsync(new Removed<MediaController>(session.Value));
await mediator.PublishAsync(new Remove<MediaController>(session.Value));
cache.Remove(session);
}
}
@@ -9,7 +9,7 @@
HorizontalAlignment="Right"
HorizontalContentAlignment="Right"
ItemTemplateSelector="{Binding Converter={windows:DataTemplateConverter}}"
ItemsSource="{Binding}">
ItemsSource="{x:Bind ViewModel}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" Spacing="8" />
@@ -3,9 +3,12 @@ using Hyperbar.UI.Windows;
namespace Hyperbar.Widget.MediaController.Windows;
public sealed partial class MediaControllerView :
public partial class MediaControllerView :
UserControl
{
public MediaControllerView() =>
this.InitializeComponent(ref _contentLoaded);
protected MediaControllerViewModel ViewModel =>
(MediaControllerViewModel)DataContext;
}
@@ -3,9 +3,12 @@ using Hyperbar.UI.Windows;
namespace Hyperbar.Widget.MediaController.Windows;
public sealed partial class MediaControllerWidgetView :
public partial class MediaControllerWidgetView :
UserControl
{
public MediaControllerWidgetView() =>
this.InitializeComponent(ref _contentLoaded);
protected MediaControllerWidgetViewModel ViewModel =>
(MediaControllerWidgetViewModel)DataContext;
}
@@ -3,11 +3,12 @@ using Hyperbar.UI.Windows;
namespace Hyperbar.Widget.MediaController.Windows;
public sealed partial class MediaInformationView :
public partial class MediaInformationView :
UserControl
{
public MediaInformationView() =>
this.InitializeComponent(ref _contentLoaded);
private MediaInformationViewModel ViewModel => (MediaInformationViewModel)DataContext;
protected MediaInformationViewModel ViewModel =>
(MediaInformationViewModel)DataContext;
}