Доработана кнопка плеера

This commit is contained in:
FrigaT
2026-04-16 19:27:11 +03:00
parent bb50bcbf22
commit 07a52b12d6
2 changed files with 44 additions and 35 deletions

View File

@@ -25,6 +25,7 @@
<MudToggleIconButton Toggled="@AudioPlayerService.IsPlaying" <MudToggleIconButton Toggled="@AudioPlayerService.IsPlaying"
Icon="@Icons.Material.Filled.PlayArrow" Icon="@Icons.Material.Filled.PlayArrow"
Color="@Color.Primary" Color="@Color.Primary"
Size="Size.Large"
ToggledIcon="@Icons.Material.Filled.Pause" ToggledIcon="@Icons.Material.Filled.Pause"
ToggledColor="@Color.Primary" ToggledColor="@Color.Primary"
ToggledChanged="OnPlayClick" /> ToggledChanged="OnPlayClick" />
@@ -32,53 +33,59 @@
</MudItem> </MudItem>
<!-- Название и прогресс --> <!-- Название и прогресс -->
<MudStack AlignItems="AlignItems.Stretch" Class="d-flex flex-grow-1 relative overflow-hidden align-center rounded-sm" Style="height: 50px;"> @if (AudioPlayerService.CurrentTrack != null)
<MudItem Class="absolute" style="top: 0; left: 0; right: 0; bottom: 0; z-index: 1;"> {
<TrackProgress Value="@AudioPlayerService.CurrentTime" <MudStack AlignItems="AlignItems.Stretch" Class="d-flex flex-grow-1 relative overflow-hidden align-center rounded-sm" Style="height: 50px;">
Min="0" Max="@AudioPlayerService.TotalTime" <MudItem Class="absolute" style="top: 0; left: 0; right: 0; bottom: 0; z-index: 1;">
Height="50" <TrackProgress Value="@AudioPlayerService.CurrentTime"
BufferValue="@_bufferSecond" Min="0" Max="@AudioPlayerService.TotalTime"
Color="Color.Primary" Height="50"
Icon="" BufferValue="@_bufferSecond"
Step="0.1" Color="Color.Primary"
Opacity="0.3" Icon=""
Buffer Step="0.1"
ValueChanged="SeekTo" /> Opacity="0.3"
</MudItem> Buffer
ValueChanged="SeekTo" />
</MudItem>
<MudStack Row AlignItems="AlignItems.Center" Class="px-3 relative pointer-events-none" Style="z-index: 2; width: 100%; height: 100%;">
<MudStack AlignItems="AlignItems.Start" Spacing="0">
<MudText Typo="Typo.body2" Color="Color.Default" Style="font-weight: 600;">
@AudioPlayerService.CurrentTrack.Title
</MudText>
<MudStack Row AlignItems="AlignItems.Center" Class="px-3 relative pointer-events-none" Style="z-index: 2; width: 100%; height: 100%;"> <MudText Typo="Typo.body2" Style="font-weight: 600;">
<MudStack AlignItems="AlignItems.Start" Spacing="0"> @string.Join(", ", AudioPlayerService.CurrentTrack.Artists.Select(a => a.Name))
<MudText Typo="Typo.body2" Color="Color.Default" Style="font-weight: 600;"> </MudText>
@AudioPlayerService.CurrentTrack?.Title </MudStack>
</MudText>
<MudText Typo="Typo.body2" Style="font-weight: 600;"> <MudSpacer />
@if (AudioPlayerService.CurrentTrack != null) @string.Join(", ", AudioPlayerService.CurrentTrack.Artists.Select(a => a.Name))
<MudText Typo="Typo.body2" Style="font-family: monospace; font-weight: 600;">
@AudioPlayerService.CurrentTimeString / @AudioPlayerService.TotalTimeString
</MudText> </MudText>
</MudStack> </MudStack>
<MudSpacer />
<MudText Typo="Typo.body2" Style="font-family: monospace; font-weight: 600;">
@AudioPlayerService.CurrentTimeString / @AudioPlayerService.TotalTimeString
</MudText>
</MudStack> </MudStack>
</MudStack> }
else
{
<MudSpacer />
}
<!-- Громкость --> <!-- Громкость -->
<MudItem @onmouseenter="() => _volumeIsOpen = true" <MudItem @onmouseenter="() => _volumeIsOpen = true"
@onmouseleave="() => _volumeIsOpen = false" @onmouseleave="() => _volumeIsOpen = false"
@onwheel="OnVolumeHandleWheel" @onwheel="OnVolumeHandleWheel"
Style="position: relative; display: flex; align-items: center;"> Style="position: relative; display: flex; align-items: center;">
<MudIconButton Icon="@(AudioPlayerService.CurrentVolume == 0 ? Icons.Material.Filled.VolumeOff : Icons.Material.Filled.VolumeUp)" <MudIconButton Icon="@(AudioPlayerService.CurrentVolume == 0 ? Icons.Material.Filled.VolumeOff : Icons.Material.Filled.VolumeUp)"
Size="Size.Small" Size="Size.Small"
Color="Color.Default" Color="Color.Default"
OnClick="ToggleMute" /> OnClick="ToggleMute" />
<MudPopover Open="@_volumeIsOpen" <MudPopover Open="@_volumeIsOpen"
AnchorOrigin="Origin.TopCenter" AnchorOrigin="Origin.TopCenter"
TransformOrigin="Origin.BottomCenter" TransformOrigin="Origin.BottomCenter"
Fixed Fixed
Class="pa-0 mt-n5" Class="pa-0 mt-n5"
Style="height:120px; width: 10px; background-color: transparent !important; overflow: visible !important;"> Style="height:120px; width: 10px; background-color: transparent !important; overflow: visible !important;">

View File

@@ -71,6 +71,8 @@ public class AudioPlayerService : IAudioPlayerService
return; return;
} }
_currentTrackId = trackId;
// Если accessToken не передан, пытаемся получить его из хранилища // Если accessToken не передан, пытаемся получить его из хранилища
if (string.IsNullOrWhiteSpace(accessToken)) if (string.IsNullOrWhiteSpace(accessToken))
{ {