Files
PowerToys/src/modules/peek/Peek.FilePreviewer/Controls/AudioControl.xaml.cs
Davide Giacometti 42fb394bf3 [Peek] Add Audio Previewer (#31619)
* add audio previewer

* fix button on activation

* revert change
2024-03-20 15:50:48 +01:00

74 lines
2.3 KiB
C#

// Copyright (c) Microsoft Corporation
// The Microsoft Corporation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using Microsoft.UI.Xaml;
using Microsoft.UI.Xaml.Controls;
using Peek.FilePreviewer.Previewers.MediaPreviewer.Models;
namespace Peek.FilePreviewer.Controls
{
public sealed partial class AudioControl : UserControl
{
public static readonly DependencyProperty SourceProperty = DependencyProperty.Register(
nameof(Source),
typeof(AudioPreviewData),
typeof(AudioControl),
new PropertyMetadata(null, new PropertyChangedCallback((d, e) => ((AudioControl)d).SourcePropertyChanged())));
public static readonly DependencyProperty ToolTipTextProperty = DependencyProperty.Register(
nameof(ToolTipText),
typeof(string),
typeof(AudioControl),
new PropertyMetadata(null));
public AudioPreviewData? Source
{
get { return (AudioPreviewData)GetValue(SourceProperty); }
set { SetValue(SourceProperty, value); }
}
public string ToolTipText
{
get { return (string)GetValue(ToolTipTextProperty); }
set { SetValue(ToolTipTextProperty, value); }
}
public AudioControl()
{
this.InitializeComponent();
}
private void SourcePropertyChanged()
{
if (Source == null)
{
PlayerElement.MediaPlayer.Pause();
PlayerElement.MediaPlayer.Source = null;
}
}
private void KeyboardAccelerator_Space_Invoked(Microsoft.UI.Xaml.Input.KeyboardAccelerator sender, Microsoft.UI.Xaml.Input.KeyboardAcceleratorInvokedEventArgs args)
{
var mediaPlayer = PlayerElement.MediaPlayer;
if (mediaPlayer.Source == null || !mediaPlayer.CanPause)
{
return;
}
if (mediaPlayer.CurrentState == Windows.Media.Playback.MediaPlayerState.Playing)
{
mediaPlayer.Pause();
}
else
{
mediaPlayer.Play();
}
// Prevent the keyboard accelerator to be called twice
args.Handled = true;
}
}
}