Aggiunti limiti configurabili per i log

- Introdotta una nuova sezione "Limiti Log" nell'interfaccia utente per configurare:
  - Numero massimo di righe di log per asta (default: 500).
  - Numero massimo di righe di log globale (default: 1000).
- Aggiunte proprietà in `SettingsManager` per salvare/caricare i limiti.
- Applicati i limiti al log globale e ai log delle aste:
  - Log globale: rimozione automatica dei paragrafi più vecchi.
  - Log per asta: ottimizzato `AddLog` con `RemoveRange` per migliorare le performance.
- Documentazione dettagliata in `FEATURE_CONFIGURABLE_LOG_LIMITS.md` e `FEATURE_LOG_MAX_LINES.md`.
- Migliorata la gestione della memoria, riducendo il rischio di rallentamenti o crash.
- Test e checklist definiti per verificare il corretto funzionamento.
This commit is contained in:
2025-11-21 09:41:08 +01:00
parent 4bfcf147b4
commit 570c2e53d6
8 changed files with 926 additions and 20 deletions
+77 -6
View File
@@ -211,7 +211,8 @@
BorderBrush="#3E3E42"
BorderThickness="1"
CornerRadius="4"
Padding="20">
Padding="20"
Margin="0,0,0,20">
<StackPanel>
<TextBlock Text="Impostazioni Predefinite Aste"
Style="{StaticResource SectionHeader}"/>
@@ -236,22 +237,92 @@
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Text="Anticipo Puntata (millisecondi)" Foreground="#CCCCCC" Margin="0,10" VerticalAlignment="Center" ToolTip="Millisecondi prima della scadenza per puntare"/>
<TextBox Grid.Row="0" Grid.Column="1" x:Name="DefaultBidBeforeDeadlineMs" Text="200" Margin="10,10"/>
<TextBox Grid.Row="0" Grid.Column="1" x:Name="DefaultBidBeforeDeadlineMsTextBox" Text="200" Margin="10,10"/>
<TextBlock Grid.Row="1" Grid.Column="0" Text="Verifica Stato Prima di Puntare" Foreground="#CCCCCC" Margin="0,10" VerticalAlignment="Center" ToolTip="Controlla che l'asta sia ancora aperta prima di puntare"/>
<CheckBox Grid.Row="1" Grid.Column="1" x:Name="DefaultCheckAuctionOpen" Margin="10,10" VerticalAlignment="Center"/>
<CheckBox Grid.Row="1" Grid.Column="1" x:Name="DefaultCheckAuctionOpenCheckBox" Margin="10,10" VerticalAlignment="Center"/>
<TextBlock Grid.Row="2" Grid.Column="0" Text="Prezzo Minimo (€)" Foreground="#CCCCCC" Margin="0,10" VerticalAlignment="Center"/>
<TextBox Grid.Row="2" Grid.Column="1" x:Name="DefaultMinPrice" Text="0" Margin="10,10"/>
<TextBox Grid.Row="2" Grid.Column="1" x:Name="DefaultMinPriceTextBox" Text="0" Margin="10,10"/>
<TextBlock Grid.Row="3" Grid.Column="0" Text="Prezzo Massimo (€)" Foreground="#CCCCCC" Margin="0,10" VerticalAlignment="Center"/>
<TextBox Grid.Row="3" Grid.Column="1" x:Name="DefaultMaxPrice" Text="0" Margin="10,10"/>
<TextBox Grid.Row="3" Grid.Column="1" x:Name="DefaultMaxPriceTextBox" Text="0" Margin="10,10"/>
<TextBlock Grid.Row="4" Grid.Column="0" Text="Max Click" Foreground="#CCCCCC" Margin="0,10" VerticalAlignment="Center"/>
<TextBox Grid.Row="4" Grid.Column="1" x:Name="DefaultMaxClicks" Text="0" Margin="10,10"/>
<TextBox Grid.Row="4" Grid.Column="1" x:Name="DefaultMaxClicksTextBox" Text="0" Margin="10,10"/>
</Grid>
</StackPanel>
</Border>
<!-- SEZIONE 4: Limiti Log -->
<Border Background="#252526"
BorderBrush="#3E3E42"
BorderThickness="1"
CornerRadius="4"
Padding="20">
<StackPanel>
<TextBlock Text="Limiti Log"
Style="{StaticResource SectionHeader}"/>
<TextBlock Text="Configura il numero massimo di righe di log da mantenere in memoria per ottimizzare le performance."
Foreground="#999999"
FontSize="12"
TextWrapping="Wrap"
Margin="0,0,0,20"/>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="250"/>
<ColumnDefinition Width="150"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0"
Text="Max Righe Log per Asta"
Foreground="#CCCCCC"
Margin="0,10"
VerticalAlignment="Center"
ToolTip="Numero massimo di righe di log da mantenere per ogni singola asta (raccomandato: 500-1000)"/>
<TextBox Grid.Row="0" Grid.Column="1"
x:Name="MaxLogLinesPerAuctionTextBox"
Text="500"
Margin="10,10"/>
<TextBlock Grid.Row="1" Grid.Column="0"
Text="Max Righe Log Globale"
Foreground="#CCCCCC"
Margin="0,10"
VerticalAlignment="Center"
ToolTip="Numero massimo di righe di log da mantenere nel log globale dell'applicazione (raccomandato: 1000-2000)"/>
<TextBox Grid.Row="1" Grid.Column="1"
x:Name="MaxGlobalLogLinesTextBox"
Text="1000"
Margin="10,10"/>
</Grid>
<!-- Info Box -->
<Border Style="{StaticResource InfoBox}" Margin="0,15,0,0">
<StackPanel>
<TextBlock Text="️ Informazioni"
FontWeight="Bold"
Foreground="#007ACC"
Margin="0,0,0,10"/>
<TextBlock TextWrapping="Wrap"
Foreground="#CCCCCC"
FontSize="12"
LineHeight="18">
• I log più vecchi verranno automaticamente rimossi quando si raggiunge il limite.<LineBreak/>
• Valori più bassi = meno memoria utilizzata, ma meno storico disponibile.<LineBreak/>
• Valori più alti = più storico disponibile, ma maggiore uso di memoria.<LineBreak/>
• Valori consigliati: 500-1000 per asta, 1000-2000 per log globale.
</TextBlock>
</StackPanel>
</Border>
</StackPanel>
</Border>
</StackPanel>
</ScrollViewer>