Update main UI a bit

This commit is contained in:
2026-02-16 14:00:16 +09:00
parent 7218eee197
commit 9bae4b49eb
3 changed files with 63 additions and 41 deletions
+31
View File
@@ -0,0 +1,31 @@
#nullable enable
using System;
using System.Collections.ObjectModel;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Avalonia.Platform.Storage;
using Avalonia.Themes.Fluent;
using DialogHostAvalonia;
using ImageMagick;
using MigraDoc.DocumentObjectModel;
using MigraDoc.Rendering;
using PdfSharp.Fonts;
using PdfSharp.Pdf.IO;
using PdfSharp.Snippets.Font;
using ReceiptPDFBuilder.Interfaces;
using ReceiptPDFBuilder.Models;
namespace ReceiptPDFBuilder.ViewModels;
class EditFileViewModel : BaseViewModel
{
ReportFile _file;
public EditFileViewModel(ReportFile file, IChangeViewModel viewModelChanger) : base(viewModelChanger)
{
_file = file;
}
}
+5 -24
View File
@@ -103,30 +103,6 @@ class MainViewModel : BaseViewModel, IFontResolver
}
}
public void MoveItemUp(ReportFile file)
{
var idx = ReportFiles.IndexOf(file);
if (idx != 0)
{
// .Move() is not observed -_-
// https://github.com/AvaloniaUI/Avalonia.Controls.DataGrid/issues/74
// ReportFiles.Move(idx, idx - 1);
// So, remove and insert.
ReportFiles.RemoveAt(idx);
ReportFiles.Insert(idx - 1, file);
}
}
public void MoveItemDown(ReportFile file)
{
var idx = ReportFiles.IndexOf(file);
if (idx != ReportFiles.Count - 1)
{
ReportFiles.RemoveAt(idx);
ReportFiles.Insert(idx + 1, file);
}
}
public async void RemoveFile(ReportFile file)
{
var result = await DialogHost.Show(new WarningDeleteItemModel(file));
@@ -140,6 +116,11 @@ class MainViewModel : BaseViewModel, IFontResolver
}
}
public async void EditFileProperties(ReportFile file)
{
var result = await DialogHost.Show(new EditFileViewModel(file, ViewModelChanger));
}
private async void BuildPDF()
{
try
+24 -14
View File
@@ -9,22 +9,23 @@
xmlns:vm="clr-namespace:ReceiptPDFBuilder.ViewModels"
xmlns:progRing="clr-namespace:AvaloniaProgressRing;assembly=AvaloniaProgressRing"
x:DataType="vm:MainViewModel">
<Grid ColumnDefinitions="Auto, *"
RowDefinitions="Auto, Auto, *, *">
<Grid ColumnDefinitions="*"
RowDefinitions="Auto, 2*, Auto, *">
<StackPanel Orientation="Vertical"
Spacing="4">
<Label Content="Easy Receipt Folder -> PDF Builder"
FontSize="16"
Grid.Row="0"
Grid.ColumnSpan="2"
FontSize="20"
FontWeight="Bold"
HorizontalAlignment="Center"/>
<Button Content="Choose Receipt Folder"
Command="{Binding ChooseFolder}"
IsEnabled="{Binding !IsCreatingPDF}" />
</StackPanel>
<StackPanel Orientation="Vertical"
Spacing="2"
Grid.Column="0"
Grid.Row="1"
Margin="2">
<Button Content="Choose Receipt Folder"
Command="{Binding ChooseFolder}"
IsEnabled="{Binding !IsCreatingPDF}" />
<Label Content="Creating PDF..."
IsVisible="{Binding IsCreatingPDF}"/>
<progRing:ProgressRing Width="80"
@@ -37,7 +38,7 @@
</StackPanel>
<DataGrid x:Name="FilesGrid"
Classes="DragAndDrop ItemsDragAndDrop"
Grid.Row="2"
Grid.Row="1"
Grid.Column="0"
Grid.ColumnSpan="2"
Margin="2"
@@ -66,7 +67,7 @@
<DataGrid.Columns>
<DataGridTextColumn Header="Title"
Binding="{Binding Title}"
IsReadOnly="True"
IsReadOnly="False"
Width="*"/>
<DataGridTextColumn Header="Receipt Date"
Binding="{Binding Date}"
@@ -83,13 +84,22 @@
<DataTemplate>
<StackPanel Orientation="Horizontal"
Spacing="4">
<Button Command="{Binding $parent[DataGrid].((vm:MainViewModel)DataContext).EditFileProperties}"
CommandParameter="{Binding}"
Classes="accent"
Margin="2"
IsEnabled="True">
<Button.Content>
<TextBlock><Run Text="&#xf1f8;" FontFamily="{StaticResource FontAwesomeSolid}"/> Edit</TextBlock>
</Button.Content>
</Button>
<Button Command="{Binding $parent[DataGrid].((vm:MainViewModel)DataContext).RemoveFile}"
CommandParameter="{Binding}"
Classes="Danger"
Margin="2"
IsEnabled="True">
<Button.Content>
<TextBlock><Run Text="&#xf1f8;" FontFamily="{StaticResource FontAwesomeSolid}"/> Remove Item</TextBlock>
<TextBlock><Run Text="&#xf1f8;" FontFamily="{StaticResource FontAwesomeSolid}"/> Remove</TextBlock>
</Button.Content>
</Button>
</StackPanel>
@@ -98,9 +108,9 @@
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
<ScrollViewer Grid.Column="0"
Grid.ColumnSpan="2"
Margin="2"
<GridSplitter Grid.Row="2"
Background="LightGray"/>
<ScrollViewer Margin="2"
Grid.Row="3"
x:Name="LogScrollView">
<SelectableTextBlock Text="{Binding CreatePDFLog}"