From f894c3b2127ccfe0747319c4004d1fd4b5a0c458 Mon Sep 17 00:00:00 2001 From: Lorenz Stechauner <lorenz.stechauner@necronda.net> Date: Mon, 8 Jan 2024 14:20:20 +0100 Subject: [PATCH] PaymentVariantsWindow: Rework Buttons --- Elwig/Windows/PaymentVariantsWindow.xaml | 85 +++++++++++++++------ Elwig/Windows/PaymentVariantsWindow.xaml.cs | 62 ++++++++++++++- 2 files changed, 118 insertions(+), 29 deletions(-) diff --git a/Elwig/Windows/PaymentVariantsWindow.xaml b/Elwig/Windows/PaymentVariantsWindow.xaml index 93cda0b..cbba99d 100644 --- a/Elwig/Windows/PaymentVariantsWindow.xaml +++ b/Elwig/Windows/PaymentVariantsWindow.xaml @@ -55,15 +55,15 @@ </DataTemplate> </ListBox.ItemTemplate> </ListBox> - <Button x:Name="AddButton" Content="" FontFamily="Segoe MDL2 Assets" FontSize="11" Padding="0,1.5,0,0" - Click="AddButton_Click" - VerticalAlignment="Center" HorizontalAlignment="Right" Width="25" Height="25" Margin="5,0,5,60" Grid.RowSpan="2"/> - <Button x:Name="CopyButton" Content="" FontFamily="Segoe MDL2 Assets" FontSize="12" Padding="0,0,0,0" IsEnabled="False" - Click="CopyButton_Click" - VerticalAlignment="Center" HorizontalAlignment="Right" Width="25" Height="25" Margin="5,0,5,0" Grid.RowSpan="2"/> - <Button x:Name="DeleteButton" Content="" FontFamily="Segoe MDL2 Assets" FontSize="11" Padding="0,1.5,0,0" IsEnabled="False" - Click="DeleteButton_Click" - VerticalAlignment="Center" HorizontalAlignment="Right" Width="25" Height="25" Margin="5,60,5,0" Grid.RowSpan="2"/> + <Button x:Name="AddButton" Content="" FontFamily="Segoe MDL2 Assets" FontSize="11" Padding="0,1.5,0,0" ToolTip="Neue Auszahlungsvariante hinzufügen" + VerticalAlignment="Center" HorizontalAlignment="Right" Width="25" Height="25" Margin="5,0,5,60" Grid.RowSpan="2" + Click="AddButton_Click"/> + <Button x:Name="CopyButton" Content="" FontFamily="Segoe MDL2 Assets" FontSize="12" Padding="0,0,0,0" IsEnabled="False" ToolTip="Ausgewählte Auszahlungsvariante duplizieren" + VerticalAlignment="Center" HorizontalAlignment="Right" Width="25" Height="25" Margin="5,0,5,0" Grid.RowSpan="2" + Click="CopyButton_Click"/> + <Button x:Name="DeleteButton" Content="" FontFamily="Segoe MDL2 Assets" FontSize="11" Padding="0,1.5,0,0" IsEnabled="False" ToolTip="Ausgewählte Auszahlungsvariante löschen" + VerticalAlignment="Center" HorizontalAlignment="Right" Width="25" Height="25" Margin="5,60,5,0" Grid.RowSpan="2" + Click="DeleteButton_Click"/> <Label Content="Name:" Margin="10,10,0,0" Grid.Column="1"/> <TextBox x:Name="NameInput" Width="200" Grid.Column="2" HorizontalAlignment="Left" Margin="0,10,0,0" @@ -80,27 +80,62 @@ <TextBox x:Name="TransferDateInput" Grid.Column="2" Width="77" HorizontalAlignment="Left" Margin="0,100,10,0" TextChanged="TransferDateInput_TextChanged"/> - <TextBox x:Name="DataInput" Margin="82,70,10,42" Grid.Column="2" + <TextBox x:Name="DataInput" Margin="82,70,10,74" Grid.Column="2" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Height="auto" AcceptsReturn="True" VerticalScrollBarVisibility="Visible" HorizontalScrollBarVisibility="Auto" FontFamily="Cascadia Code Light" FontSize="13" TextChanged="DataInput_TextChanged"/> - <Button x:Name="SaveButton" Content="Speichern" Grid.Column="1" Grid.ColumnSpan="2" - Click="SaveButton_Click" - VerticalAlignment="Bottom" HorizontalAlignment="Center" Width="100" Margin="10,10,325,10"/> - <Button x:Name="CommitButton" Content="Festsetzen" Grid.Column="1" Grid.ColumnSpan="2" - Click="CommitButton_Click" - VerticalAlignment="Bottom" HorizontalAlignment="Center" Width="100" Margin="10,10,115,10"/> - <Button x:Name="RevertButton" Content="Freigeben" Grid.Column="1" Grid.ColumnSpan="2" - Click="RevertButton_Click" - VerticalAlignment="Bottom" HorizontalAlignment="Center" Width="100" Margin="10,10,115,10"/> - <Button x:Name="CalculateButton" Content="Berechnen" Grid.Column="1" Grid.ColumnSpan="2" - Click="CalculateButton_Click" - VerticalAlignment="Bottom" HorizontalAlignment="Center" Width="100" Margin="115,10,10,10"/> - <Button x:Name="EditButton" Content="Bearbeiten" Grid.Column="1" Grid.ColumnSpan="2" - Click="EditButton_Click" - VerticalAlignment="Bottom" HorizontalAlignment="Center" Width="100" Margin="325,10,10,10"/> + <Grid Grid.Column="1" Grid.ColumnSpan="2" VerticalAlignment="Bottom" HorizontalAlignment="Center" Margin="10,10,10,10"> + <Grid.ColumnDefinitions> + <ColumnDefinition Width="110"/> + <ColumnDefinition Width="27"/> + <ColumnDefinition Width="110"/> + <ColumnDefinition Width="27"/> + <ColumnDefinition Width="110"/> + </Grid.ColumnDefinitions> + <Grid.RowDefinitions> + <RowDefinition Height="27"/> + <RowDefinition Height="5"/> + <RowDefinition Height="27"/> + </Grid.RowDefinitions> + + <Grid.Resources> + <Style TargetType="Label"> + <Setter Property="HorizontalAlignment" Value="Center"/> + <Setter Property="VerticalAlignment" Value="Center"/> + <Setter Property="Padding" Value="0"/> + <Setter Property="Height" Value="auto"/> + </Style> + <Style TargetType="Button"> + <Setter Property="HorizontalAlignment" Value="Stretch"/> + <Setter Property="FontSize" Value="14"/> + </Style> + </Grid.Resources> + + <Button x:Name="ModifierButton" Content="Zu-/Abschläge" Grid.Column="0" Grid.Row="0" + Click="ModifierButton_Click"/> + <Label Content="" FontFamily="Segoe MDL2 Assets" FontSize="16" Grid.Row="0" Grid.Column="1" RenderTransformOrigin="0.5,0.5" > + <Label.RenderTransform> + <TransformGroup> + <RotateTransform Angle="45"/> + <TranslateTransform Y="5"/> + </TransformGroup> + </Label.RenderTransform> + </Label> + <Button x:Name="EditButton" Content="Bearbeiten" Grid.Column="0" Grid.Row="2" + Click="EditButton_Click"/> + <Label Content="" FontFamily="Segoe MDL2 Assets" FontSize="16" Grid.Row="2" Grid.Column="1"/> + <Button x:Name="CalculateButton" Content="Berechnen" Grid.Column="2" Grid.Row="2" + Click="CalculateButton_Click"/> + <Label Content="" FontFamily="Segoe MDL2 Assets" FontSize="16" Grid.Row="2" Grid.Column="3" x:Name="Arrow3"/> + <Button x:Name="CommitButton" Content="Festsetzen" Grid.Column="4" Grid.Row="2" + Click="CommitButton_Click"/> + <Button x:Name="RevertButton" Content="Freigeben" Grid.Column="4" Grid.Row="2" + Click="RevertButton_Click"/> + <Button x:Name="SaveButton" Content="Speichern" Grid.Column="4" Grid.Row="0" + Click="SaveButton_Click"/> + </Grid> <Grid Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="2"> <Grid.ColumnDefinitions> diff --git a/Elwig/Windows/PaymentVariantsWindow.xaml.cs b/Elwig/Windows/PaymentVariantsWindow.xaml.cs index 349a526..fd083a5 100644 --- a/Elwig/Windows/PaymentVariantsWindow.xaml.cs +++ b/Elwig/Windows/PaymentVariantsWindow.xaml.cs @@ -46,6 +46,7 @@ namespace Elwig.Windows { CommitButton.Visibility = !locked ? Visibility.Visible : Visibility.Hidden; RevertButton.IsEnabled = locked; RevertButton.Visibility = locked ? Visibility.Visible : Visibility.Hidden; + Arrow3.Content = locked ? "\xF0B0" : "\xF0AF"; CopyButton.IsEnabled = true; EditButton.Content = locked ? "Ansehen" : "Bearbeiten"; ShowButton.IsEnabled = true; @@ -72,6 +73,7 @@ namespace Elwig.Windows { CommitButton.Visibility = Visibility.Visible; RevertButton.IsEnabled = false; RevertButton.Visibility = Visibility.Hidden; + Arrow3.Content = "\xF0AF"; DeleteButton.IsEnabled = false; ShowButton.IsEnabled = false; PrintButton.IsEnabled = false; @@ -120,16 +122,64 @@ namespace Elwig.Windows { Update(); } - private void AddButton_Click(object sender, RoutedEventArgs evt) { + private async void AddButton_Click(object sender, RoutedEventArgs evt) { + try { + PaymentVar v = Context.CreateProxy<PaymentVar>(); + v.Year = Year; + v.AvNr = await Context.NextAvNr(Year); + v.Name = "Neue Auszahlungsvariante"; + v.TestVariant = true; + v.DateString = $"{DateTime.Today:yyyy-MM-dd}"; + v.Data = "{\"mode\": \"elwig\", \"version\": 1, \"payment\": 1.0, \"curves\": []}"; + + await Context.AddAsync(v); + await Context.SaveChangesAsync(); + await App.HintContextChange(); + + ControlUtils.SelectListBoxItem(PaymentVariantList, v, v => (v as PaymentVar)?.AvNr); + } catch (Exception exc) { + var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message; + if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message; + MessageBox.Show(str, "Auszahlungsvariante erstellen", MessageBoxButton.OK, MessageBoxImage.Error); + } } - private void CopyButton_Click(object sender, RoutedEventArgs evt) { + private async void CopyButton_Click(object sender, RoutedEventArgs evt) { + if (PaymentVariantList.SelectedItem is not PaymentVar orig) return; + try { + PaymentVar n = Context.CreateProxy<PaymentVar>(); + n.Year = orig.Year; + n.AvNr = await Context.NextAvNr(Year); + n.Name = $"{orig.Name} (Kopie)"; + n.TestVariant = true; + n.DateString = $"{DateTime.Today:yyyy-MM-dd}"; + n.Data = orig.Data; + + await Context.AddAsync(n); + await Context.SaveChangesAsync(); + await App.HintContextChange(); + + ControlUtils.SelectListBoxItem(PaymentVariantList, n, v => (v as PaymentVar)?.AvNr); + } catch (Exception exc) { + var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message; + if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message; + MessageBox.Show(str, "Auszahlungsvariante kopieren", MessageBoxButton.OK, MessageBoxImage.Error); + } } - private void DeleteButton_Click(object sender, RoutedEventArgs evt) { - + private async void DeleteButton_Click(object sender, RoutedEventArgs evt) { + if (PaymentVariantList.SelectedItem is not PaymentVar v || !v.TestVariant) return; + try { + Context.Remove(v); + await Context.SaveChangesAsync(); + await HintContextChange(); + } catch (Exception exc) { + var str = "Der Eintrag konnte nicht in der Datenbank aktualisiert werden!\n\n" + exc.Message; + if (exc.InnerException != null) str += "\n\n" + exc.InnerException.Message; + MessageBox.Show(str, "Auszahlungsvariante löschen", MessageBoxButton.OK, MessageBoxImage.Error); + } } private async void CalculateButton_Click(object sender, RoutedEventArgs evt) { @@ -233,6 +283,10 @@ namespace Elwig.Windows { } } + private void ModifierButton_Click(object sender, RoutedEventArgs evt) { + App.FocusBaseDataSeason(Year); + } + private void NameInput_TextChanged(object sender, TextChangedEventArgs evt) { if (PaymentVariantList.SelectedItem is not PaymentVar v) { ControlUtils.ClearInputState(NameInput);