mirror of
https://github.com/jayfunc/BetterLyrics.git
synced 2026-01-12 19:08:33 +08:00
90 lines
2.5 KiB
C#
90 lines
2.5 KiB
C#
using BetterLyrics.WinUI3.Hooks;
|
|
using BetterLyrics.WinUI3.Models;
|
|
using BetterLyrics.WinUI3.Services.MediaSessionsService;
|
|
using BetterLyrics.WinUI3.Views;
|
|
using CommunityToolkit.Mvvm.ComponentModel;
|
|
using CommunityToolkit.Mvvm.Input;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace BetterLyrics.WinUI3.ViewModels
|
|
{
|
|
public partial class NowPlayingBarViewModel : BaseViewModel
|
|
{
|
|
public IMediaSessionsService MediaSessionsService { get; private set; }
|
|
|
|
[ObservableProperty]
|
|
public partial int Volume { get; set; }
|
|
|
|
[ObservableProperty]
|
|
public partial float TimelineSliderThumbOpacity { get; set; } = 0f;
|
|
|
|
[ObservableProperty]
|
|
public partial LyricsLine? TimelineSliderThumbLyricsLine { get; set; }
|
|
|
|
[ObservableProperty]
|
|
public partial double TimelineSliderThumbSeconds { get; set; } = 0;
|
|
|
|
[ObservableProperty]
|
|
public partial double BottomCommandGridOpacity { get; set; } = 1;
|
|
|
|
[ObservableProperty]
|
|
public partial double BottomCommandFlyoutTriggerOpacity { get; set; }
|
|
|
|
public NowPlayingBarViewModel(IMediaSessionsService mediaSessionsService)
|
|
{
|
|
MediaSessionsService = mediaSessionsService;
|
|
|
|
Volume = SystemVolumeHook.MasterVolume;
|
|
SystemVolumeHook.VolumeNotification += SystemVolumeHelper_VolumeNotification;
|
|
}
|
|
|
|
private void SystemVolumeHelper_VolumeNotification(object? sender, int e)
|
|
{
|
|
Volume = e;
|
|
}
|
|
|
|
partial void OnTimelineSliderThumbSecondsChanged(double value)
|
|
{
|
|
TimelineSliderThumbLyricsLine = MediaSessionsService.CurrentLyricsData?.GetLyricsLine(value);
|
|
}
|
|
|
|
|
|
[RelayCommand]
|
|
private async Task PlaySongAsync()
|
|
{
|
|
await MediaSessionsService.PlayAsync();
|
|
}
|
|
|
|
[RelayCommand]
|
|
private async Task PauseSongAsync()
|
|
{
|
|
await MediaSessionsService.PauseAsync();
|
|
}
|
|
|
|
[RelayCommand]
|
|
private async Task PreviousSongAsync()
|
|
{
|
|
await MediaSessionsService.PreviousAsync();
|
|
}
|
|
|
|
[RelayCommand]
|
|
private async Task NextSongAsync()
|
|
{
|
|
await MediaSessionsService.NextAsync();
|
|
}
|
|
|
|
[RelayCommand]
|
|
private static void OpenSettingsWindow()
|
|
{
|
|
WindowHook.OpenOrShowWindow<SettingsWindow>();
|
|
}
|
|
|
|
[RelayCommand]
|
|
private static void OpenLyricsSearchWindow()
|
|
{
|
|
WindowHook.OpenOrShowWindow<LyricsSearchWindow>();
|
|
}
|
|
|
|
}
|
|
}
|