LANCommander/LANCommander.Launcher/UI/Components/DownloadQueue.razor
Pat Hartl 5a32bbf890 Add localization support to launcher
Adds localization across the launcher and includes English, German, Spanish, French, Italian, Japanese, Korean, Dutch, Portuguese, Ukranian, and Chinese. These localizations were generated by Claude 3.5 and need to be reviewed by a human for accuracy.
2025-08-18 21:29:38 -05:00

110 lines
3.6 KiB
Text

@using LANCommander.Launcher.Models
@inject InstallService InstallService
@inject NavigationManager NavigationManager
@inject LocalizationService LocalizationService
<Drawer Placement="DrawerPlacement.Bottom" Class="download-queue" @bind-Visible="@Visible" OnClose="Hide">
@if (InstallService.Queue.Any(qi => qi.State))
{
<h2>@LocalizationService.GetString("InProgress")</h2>
@foreach (var queueItem in InstallService.Queue.Where(qi => qi.State))
{
<div class="queue-item">
<MediaImage Id="@queueItem.CoverId" Class="queue-item-cover" />
<div class="queue-item-info">
<div>
<h3>@queueItem.Title</h3>
</div>
</div>
<div class="queue-item-current-download">
<CurrentDownloadItem />
</div>
</div>
}
}
<h2>@LocalizationService.GetString("UpNext")</h2>
@foreach (var queueItem in InstallService.Queue.Where(qi => !qi.State && qi.Status == SDK.Enums.InstallStatus.Queued))
{
<div class="queue-item">
<MediaImage Id="@queueItem.CoverId" Class="queue-item-cover" />
<div class="queue-item-info">
<div>
<h3>@queueItem.Title</h3>
</div>
</div>
<div class="queue-item-actions">
<Button Icon="@IconType.Outline.Close" Size="ButtonSize.Large" Danger OnClick="() => Remove(queueItem)" />
</div>
</div>
}
@if (!InstallService.Queue.Any(qi => qi.Status == SDK.Enums.InstallStatus.Queued))
{
<Empty Simple Description="@LocalizationService.GetString("TheQueueIsEmpty")" />
}
@if (InstallService.Queue.Any(qi => !qi.State && qi.Status != SDK.Enums.InstallStatus.Queued && qi.Status != SDK.Enums.InstallStatus.Failed && qi.Status != SDK.Enums.InstallStatus.Canceled))
{
<h2>@LocalizationService.GetString("Completed")</h2>
@foreach (var queueItem in InstallService.Queue.Where(qi => !qi.State))
{
<div class="queue-item">
<MediaImage Id="@queueItem.CoverId" Class="queue-item-cover" />
<div class="queue-item-info">
<div>
<h3>@queueItem.Title</h3>
<span><ByteSize Value="queueItem.TotalBytes" /></span>
</div>
</div>
<div class="queue-item-actions">
<PlayButton LibraryItemId="@queueItem.Id">
<MenuExtra>
<MenuItem OnClick="() => ViewInLibrary(queueItem)">
@LocalizationService.GetString("ViewInLibrary")
</MenuItem>
</MenuExtra>
</PlayButton>
</div>
</div>
}
}
</Drawer>
@code {
bool Visible { get; set; } = false;
protected override async Task OnInitializedAsync()
{
InstallService.OnQueueChanged += async () =>
{
StateHasChanged();
};
}
async Task Remove(IInstallQueueItem queueItem)
{
InstallService.Remove(queueItem);
}
async Task ViewInLibrary(IInstallQueueItem queueItem)
{
Visible = false;
NavigationManager.NavigateTo("/" + queueItem.Id);
}
public async Task Show()
{
Visible = true;
await InvokeAsync(StateHasChanged);
}
public async Task Hide()
{
Visible = false;
await InvokeAsync(StateHasChanged);
}
}