Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,9 @@
</ItemGroup>

<ItemGroup>
<None Update="Kalimba.mp3">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="Sample_Cuesheet.cue">
<ExcludeFromSingleFile>true</ExcludeFromSingleFile>
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
Expand Down
Binary file added AudioCuesheetEditor.End2EndTests/Kalimba.mp3
Binary file not shown.
17 changes: 17 additions & 0 deletions AudioCuesheetEditor.End2EndTests/Pages/IndexTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -132,5 +132,22 @@ public async Task OpenProjectFileAsync()
await Expect(Page.GetByRole(AriaRole.Cell, new() { Name = ":09:23" }).Nth(1)).ToBeVisibleAsync();
await Expect(Page.GetByRole(AriaRole.Cell, new() { Name = ":45:54" }).First).ToBeVisibleAsync();
}

[TestMethod]
public async Task RenameAudiofileTestAsync()
{
await Page.GotoAsync("http://localhost:5132/");
await Page.GetByRole(AriaRole.Group).Filter(new() { HasText = "AudiofileAudiofile Search" }).GetByRole(AriaRole.Button).Nth(3).ClickAsync();
await Expect(Page.GetByText("Download file Rename file")).ToMatchAriaSnapshotAsync("- paragraph: Download file\n- paragraph: Rename file");
await Page.Locator("[id^='overlay']").ClickAsync();
await Page.GetByRole(AriaRole.Group).Filter(new() { HasText = "AudiofileAudiofile Search" }).Locator("input[type=\"file\"]").ClickAsync();
await Page.GetByRole(AriaRole.Group).Filter(new() { HasText = "AudiofileAudiofile Search" }).Locator("input[type=\"file\"]").SetInputFilesAsync(new[] { "Kalimba.mp3" });
await Page.GetByRole(AriaRole.Group).Filter(new() { HasText = "AudiofileAudiofile Search" }).GetByRole(AriaRole.Button).Nth(3).ClickAsync();
await Expect(Page.GetByText("Download file Rename file")).ToMatchAriaSnapshotAsync("- paragraph: Download file\n- paragraph: Rename file");
await Page.GetByText("Rename file").ClickAsync();
await Page.GetByRole(AriaRole.Textbox, new() { Name = "New file name" }).FillAsync("Kalimba test 123.mp3");
await Page.GetByRole(AriaRole.Button, new() { Name = "Ok" }).ClickAsync();
await Expect(Page.Locator("#app")).ToMatchAriaSnapshotAsync("- textbox \"Cuesheet artist\"\n- group \"Cuesheet artist\"\n- text: Cuesheet artist\n- textbox \"Cuesheet title\"\n- group \"Cuesheet title\"\n- text: Cuesheet title\n- group:\n - button \"Choose File\"\n - textbox \"Audiofile\": /Kalimba test \\d+\\.mp3/\n - group \"Audiofile\"\n - text: Audiofile\n - button \"Search\"\n - button\n - button\n- group:\n - button \"Choose File\"\n - textbox \"CD Textfile\": No file selected\n - group \"CD Textfile\"\n - text: CD Textfile\n - button \"Search\"\n - button [disabled]\n - button\n- textbox \"Cataloguenumber\"\n- group \"Cataloguenumber\"\n- text: Cataloguenumber");
}
}
}
12 changes: 7 additions & 5 deletions AudioCuesheetEditor/Shared/Cuesheet/CuesheetData.razor
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,9 @@ along with Foobar. If not, see
{
case ViewMode.ImportView:
case ViewMode.DetailView:
<FileInput Id="@fileInputAudiofileId" Label="@_localizer["Audiofile"]" FileName="@Cuesheet.Audiofile?.Name" OnFileSelected="OnAudiofileSelected" Error="@fileInputAudiofileErrorText" Filter="@String.Join(",", Audiofile.AudioCodecs.Select(x => x.MimeType))" DisplayDownloadFile OnDownloadFileClicked="DownloadAudio" OnFileRenameClicked="AudioFileRename" />
<FileInput Label="@_localizer["CD Textfile"]" FileName="@Cuesheet.CDTextfile?.Name" OnFileSelected="OnCDTextfileSelected" Filter="@FileExtensions.CDTextfile" Error="@fileInputCDTextfileErrorText" OnFileRenameClicked="CDTextFileRename" />
<FileInput Id="@fileInputAudiofileId" Label="@_localizer["Audiofile"]" FileName="@Cuesheet.Audiofile?.Name" OnFileSelected="OnAudiofileSelected" Error="@fileInputAudiofileErrorText" Filter="@String.Join(",", Audiofile.AudioCodecs.Select(x => x.MimeType))" DisplayDownloadFile
OnDownloadFileClicked="DownloadAudio" OnFileRenameClicked="AudioFileRename" FileRenameDisabled="Cuesheet.Audiofile == null" FileDownloadDisabled="Cuesheet.Audiofile != null ? Cuesheet.Audiofile.IsContentStreamLoaded == false : true" />
<FileInput Label="@_localizer["CD Textfile"]" FileName="@Cuesheet.CDTextfile?.Name" OnFileSelected="OnCDTextfileSelected" Filter="@FileExtensions.CDTextfile" Error="@fileInputCDTextfileErrorText" OnFileRenameClicked="CDTextFileRename" FileRenameDisabled="Cuesheet.CDTextfile == null" />
<MudTextField @bind-Value="Cuesheet.Cataloguenumber" For="(() => Cuesheet.Cataloguenumber)" Validation="_validationService.ValidateProperty" Label="@_localizer["Cataloguenumber"]" Placeholder="@_localizer["Enter the cuesheet catalogue number here"]" Variant="Variant.Outlined" />
break;
}
Expand Down Expand Up @@ -86,6 +87,7 @@ along with Foobar. If not, see
{
TraceChangeManager.MergeLastEditWithEdit(x => x.Changes.All(y => y.TraceableObject == Cuesheet && y.TraceableChange.PropertyName == nameof(Audiofile)));
}
StateHasChanged();
});
}
catch(ArgumentException ae)
Expand Down Expand Up @@ -135,10 +137,10 @@ along with Foobar. If not, see

async Task DownloadAudio()
{
var audioFile = Cuesheet?.Audiofile;
if (audioFile != null)
var contentStream = Cuesheet?.Audiofile?.ContentStream;
if (contentStream != null)
{
await _blazorDownloadFileService.DownloadFile(audioFile.Name, audioFile.ContentStream, audioFile.AudioCodec?.MimeType);
await _blazorDownloadFileService.DownloadFile(Cuesheet?.Audiofile?.Name, contentStream, Cuesheet?.Audiofile?.AudioCodec?.MimeType);
}
}

Expand Down
10 changes: 8 additions & 2 deletions AudioCuesheetEditor/Shared/Inputs/FileInput.razor
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,9 @@ along with Foobar. If not, see
<MudMenu Icon="@Icons.Material.Outlined.MoreVert" Color="Color.Inherit" Class="mt-1" Style="height: 56px;" AnchorOrigin="Origin.BottomRight" TransformOrigin="Origin.TopRight" Variant="Variant.Filled">
@if (DisplayDownloadFile)
{
<MudMenuItem Icon="@Icons.Material.Outlined.FileDownload" Disabled="selectedFile == null" OnClick="() => OnDownloadFileClicked.InvokeAsync(selectedFile)">@_localizer["Download file"]</MudMenuItem>
<MudMenuItem Icon="@Icons.Material.Outlined.FileDownload" Disabled="FileDownloadDisabled" OnClick="() => OnDownloadFileClicked.InvokeAsync(selectedFile)">@_localizer["Download file"]</MudMenuItem>
}
<MudMenuItem Icon="@Icons.Material.Outlined.EditAttributes" Disabled="selectedFile == null" OnClick="() => OnFileRenameClicked.InvokeAsync(selectedFile)">@_localizer["Rename file"]</MudMenuItem>
<MudMenuItem Icon="@Icons.Material.Outlined.EditAttributes" Disabled="FileRenameDisabled" OnClick="() => OnFileRenameClicked.InvokeAsync(selectedFile)">@_localizer["Rename file"]</MudMenuItem>
</MudMenu>
}
</MudStack>
Expand All @@ -61,6 +61,12 @@ along with Foobar. If not, see
[Parameter]
public EventCallback<IBrowserFile?> OnFileRenameClicked { get; set; }

[Parameter]
public Boolean FileRenameDisabled { get; set; }

[Parameter]
public Boolean FileDownloadDisabled { get; set; }

[Parameter]
public String Id { get; set; } = $"FileInput_{Guid.NewGuid()}";

Expand Down