diff --git a/Mimante/Controls/SettingsControl.xaml b/Mimante/Controls/SettingsControl.xaml
index b2c8f90..92bd06b 100644
--- a/Mimante/Controls/SettingsControl.xaml
+++ b/Mimante/Controls/SettingsControl.xaml
@@ -244,6 +244,10 @@
Content="Attive"
GroupName="LoadState"
ToolTip="Le aste salvate verranno avviate automaticamente all'apertura"/>
+
@@ -280,8 +284,10 @@
• Fermata: L'asta non viene monitorata fino all'avvio manuale.
• In Pausa: L'asta è pronta ma non punta automaticamente (utile per preparare le aste).
• Attiva: L'asta viene monitorata e punta automaticamente quando necessario.
+ • Ricorda Stato: Ogni asta ripristina lo stato esatto che aveva alla chiusura (SOVRASCRIVE le altre opzioni).
- Consiglio: Usa "Fermata" per caricare le aste senza avviarle, poi avvia manualmente quelle desiderate.
+ Consiglio: Usa "Fermata" per caricare le aste senza avviarle, poi avvia manualmente quelle desiderate.
+ Usa "Ricorda Stato" per riprendere esattamente da dove avevi lasciato.
diff --git a/Mimante/Core/EventHandlers/MainWindow.EventHandlers.Settings.cs b/Mimante/Core/EventHandlers/MainWindow.EventHandlers.Settings.cs
index 02c772f..ee84b9b 100644
--- a/Mimante/Core/EventHandlers/MainWindow.EventHandlers.Settings.cs
+++ b/Mimante/Core/EventHandlers/MainWindow.EventHandlers.Settings.cs
@@ -40,18 +40,27 @@ namespace AutoBidder
UpdateMinBidsIndicator(settings.MinimumRemainingBids);
// Carica stato iniziale aste
- switch (settings.DefaultStartAuctionsOnLoad)
+ // ? NUOVO: Se RememberAuctionStates è attivo, seleziona "Ricorda Stato"
+ if (settings.RememberAuctionStates)
{
- case "Active":
- Settings.LoadAuctionsActive.IsChecked = true;
- break;
- case "Paused":
- Settings.LoadAuctionsPaused.IsChecked = true;
- break;
- case "Stopped":
- default:
- Settings.LoadAuctionsStopped.IsChecked = true;
- break;
+ Settings.LoadAuctionsRemember.IsChecked = true;
+ }
+ else
+ {
+ // Altrimenti usa DefaultStartAuctionsOnLoad
+ switch (settings.DefaultStartAuctionsOnLoad)
+ {
+ case "Active":
+ Settings.LoadAuctionsActive.IsChecked = true;
+ break;
+ case "Paused":
+ Settings.LoadAuctionsPaused.IsChecked = true;
+ break;
+ case "Stopped":
+ default:
+ Settings.LoadAuctionsStopped.IsChecked = true;
+ break;
+ }
}
switch (settings.DefaultNewAuctionState)
@@ -231,12 +240,26 @@ namespace AutoBidder
}
// === SEZIONE DEFAULTS: Stati Iniziali Aste ===
+ var loadAuctionsRemember = Settings.FindName("LoadAuctionsRemember") as System.Windows.Controls.RadioButton;
var loadAuctionsActive = Settings.FindName("LoadAuctionsActive") as System.Windows.Controls.RadioButton;
var loadAuctionsPaused = Settings.FindName("LoadAuctionsPaused") as System.Windows.Controls.RadioButton;
- settings.DefaultStartAuctionsOnLoad = loadAuctionsActive?.IsChecked == true ? "Active" :
- loadAuctionsPaused?.IsChecked == true ? "Paused" :
- "Stopped";
+ // ? NUOVO: Gestione "Ricorda Stato"
+ if (loadAuctionsRemember?.IsChecked == true)
+ {
+ // Attiva RememberAuctionStates
+ settings.RememberAuctionStates = true;
+ // DefaultStartAuctionsOnLoad diventa irrilevante, ma lo lasciamo a "Stopped" per compatibilità
+ settings.DefaultStartAuctionsOnLoad = "Stopped";
+ }
+ else
+ {
+ // Disattiva RememberAuctionStates e usa DefaultStartAuctionsOnLoad
+ settings.RememberAuctionStates = false;
+ settings.DefaultStartAuctionsOnLoad = loadAuctionsActive?.IsChecked == true ? "Active" :
+ loadAuctionsPaused?.IsChecked == true ? "Paused" :
+ "Stopped";
+ }
var newAuctionActive = Settings.FindName("NewAuctionActive") as System.Windows.Controls.RadioButton;
var newAuctionPaused = Settings.FindName("NewAuctionPaused") as System.Windows.Controls.RadioButton;
diff --git a/Mimante/Core/MainWindow.AuctionManagement.cs b/Mimante/Core/MainWindow.AuctionManagement.cs
index 7bcf868..0949c21 100644
--- a/Mimante/Core/MainWindow.AuctionManagement.cs
+++ b/Mimante/Core/MainWindow.AuctionManagement.cs
@@ -256,11 +256,10 @@ namespace AutoBidder
{
try
{
- // ? Carica impostazioni per determinare lo stato iniziale delle aste
+ // ? Carica impostazioni
var settings = Utilities.SettingsManager.Load();
- var loadState = settings.DefaultStartAuctionsOnLoad; // "Active", "Paused", "Stopped"
- // Ottieni username corrente dalla sessione per riprist inare IsMyBid
+ // Ottieni username corrente dalla sessione per ripristinare IsMyBid
var session = _auctionMonitor.GetSession();
var currentUsername = session?.Username ?? string.Empty;
@@ -273,7 +272,7 @@ namespace AutoBidder
// Decode HTML entities
try { auction.Name = System.Net.WebUtility.HtmlDecode(auction.Name ?? string.Empty); } catch { }
- // ? NUOVO: Ripristina IsMyBid per tutte le puntate in RecentBids
+ // ? Ripristina IsMyBid per tutte le puntate in RecentBids
if (auction.RecentBids != null && auction.RecentBids.Count > 0 && !string.IsNullOrEmpty(currentUsername))
{
foreach (var bid in auction.RecentBids)
@@ -282,22 +281,32 @@ namespace AutoBidder
}
}
- // ? Applica stato iniziale configurato dall'utente
- switch (loadState)
+ // ? NUOVO: Gestione stato in base a RememberAuctionStates
+ if (settings.RememberAuctionStates)
{
- case "Active":
- auction.IsActive = true;
- auction.IsPaused = false;
- break;
- case "Paused":
- auction.IsActive = true;
- auction.IsPaused = true;
- break;
- case "Stopped":
- default:
- auction.IsActive = false;
- auction.IsPaused = false;
- break;
+ // MODO 1: Ripristina lo stato salvato di ogni asta (IsActive e IsPaused vengono dal file salvato)
+ // Non serve fare nulla, lo stato è già quello salvato nel file
+ }
+ else
+ {
+ // MODO 2: Applica DefaultStartAuctionsOnLoad a tutte le aste
+ var loadState = settings.DefaultStartAuctionsOnLoad;
+ switch (loadState)
+ {
+ case "Active":
+ auction.IsActive = true;
+ auction.IsPaused = false;
+ break;
+ case "Paused":
+ auction.IsActive = true;
+ auction.IsPaused = true;
+ break;
+ case "Stopped":
+ default:
+ auction.IsActive = false;
+ auction.IsPaused = false;
+ break;
+ }
}
_auctionMonitor.AddAuction(auction);
@@ -305,8 +314,7 @@ namespace AutoBidder
_auctionViewModels.Add(vm);
}
- // ? FIX: Avvia monitoraggio se ci sono aste in stato Active O Paused
- // (Paused = IsActive=true ma IsPaused=true, quindi vanno monitorate)
+ // ? Avvia monitoraggio se ci sono aste in stato Active O Paused
bool hasActiveOrPausedAuctions = auctions.Any(a => a.IsActive);
if (hasActiveOrPausedAuctions && auctions.Count > 0)
@@ -314,13 +322,23 @@ namespace AutoBidder
_auctionMonitor.Start();
_isAutomationActive = true;
- if (loadState == "Active")
+ if (settings.RememberAuctionStates)
{
- Log($"[AUTO-START] Monitoraggio avviato automaticamente per {auctions.Count} aste caricate in stato attivo", LogLevel.Info);
+ var activeCount = auctions.Count(a => a.IsActive && !a.IsPaused);
+ var pausedCount = auctions.Count(a => a.IsActive && a.IsPaused);
+ Log($"[AUTO-START] Monitoraggio avviato: {activeCount} attive, {pausedCount} in pausa (stati ripristinati)", LogLevel.Info);
}
- else if (loadState == "Paused")
+ else
{
- Log($"[AUTO-START] Monitoraggio avviato automaticamente per {auctions.Count} aste caricate in pausa", LogLevel.Info);
+ var loadState = settings.DefaultStartAuctionsOnLoad;
+ if (loadState == "Active")
+ {
+ Log($"[AUTO-START] Monitoraggio avviato automaticamente per {auctions.Count} aste caricate in stato attivo", LogLevel.Info);
+ }
+ else if (loadState == "Paused")
+ {
+ Log($"[AUTO-START] Monitoraggio avviato automaticamente per {auctions.Count} aste caricate in pausa", LogLevel.Info);
+ }
}
}
@@ -330,7 +348,14 @@ namespace AutoBidder
// Log sempre mostrato (anche con 0 aste)
if (auctions.Count > 0)
{
- Log($"[LOAD] {auctions.Count} aste caricate con stato iniziale: {loadState}", LogLevel.Info);
+ if (settings.RememberAuctionStates)
+ {
+ Log($"[LOAD] {auctions.Count} aste caricate con stati individuali ripristinati", LogLevel.Info);
+ }
+ else
+ {
+ Log($"[LOAD] {auctions.Count} aste caricate con stato iniziale: {settings.DefaultStartAuctionsOnLoad}", LogLevel.Info);
+ }
}
else
{
diff --git a/Mimante/Core/MainWindow.ButtonHandlers.cs b/Mimante/Core/MainWindow.ButtonHandlers.cs
index 983588b..6e5f18a 100644
--- a/Mimante/Core/MainWindow.ButtonHandlers.cs
+++ b/Mimante/Core/MainWindow.ButtonHandlers.cs
@@ -41,6 +41,8 @@ namespace AutoBidder
Log("[START ALL] Tutte le aste avviate/riprese", LogLevel.Info);
}
+ // ✅ Salva gli stati aggiornati su disco
+ SaveAuctions();
UpdateGlobalControlButtons();
}
catch (Exception ex)
@@ -67,6 +69,8 @@ namespace AutoBidder
_isAutomationActive = false;
}
+ // ✅ Salva gli stati aggiornati su disco
+ SaveAuctions();
UpdateGlobalControlButtons();
if (sender != null) // Solo se chiamato dall'utente
@@ -88,6 +92,9 @@ namespace AutoBidder
{
vm.IsPaused = true;
}
+
+ // ✅ Salva gli stati aggiornati su disco
+ SaveAuctions();
UpdateGlobalControlButtons();
if (sender != null) // Solo se chiamato dall'utente
diff --git a/Mimante/Core/MainWindow.Commands.cs b/Mimante/Core/MainWindow.Commands.cs
index fcb11e1..fb0c73d 100644
--- a/Mimante/Core/MainWindow.Commands.cs
+++ b/Mimante/Core/MainWindow.Commands.cs
@@ -58,6 +58,8 @@ namespace AutoBidder
Log($"[START] Asta avviata: {vm.Name}", LogLevel.Info);
}
+ // ? Salva gli stati aggiornati su disco
+ SaveAuctions();
UpdateGlobalControlButtons();
}
@@ -66,6 +68,9 @@ namespace AutoBidder
if (vm == null) return;
vm.IsPaused = true;
Log($"[PAUSA] Asta in pausa: {vm.Name}", LogLevel.Info);
+
+ // ? Salva gli stati aggiornati su disco
+ SaveAuctions();
UpdateGlobalControlButtons();
}
@@ -87,6 +92,8 @@ namespace AutoBidder
Log($"[STOP] Asta fermata: {vm.Name}", LogLevel.Info);
}
+ // ? Salva gli stati aggiornati su disco
+ SaveAuctions();
UpdateGlobalControlButtons();
}
diff --git a/Mimante/Utilities/SettingsManager.cs b/Mimante/Utilities/SettingsManager.cs
index e200e10..f50d6ee 100644
--- a/Mimante/Utilities/SettingsManager.cs
+++ b/Mimante/Utilities/SettingsManager.cs
@@ -52,6 +52,13 @@ namespace AutoBidder.Utilities
///
public string DefaultNewAuctionState { get; set; } = "Stopped";
+ ///
+ /// Se TRUE, salva e ripristina lo stato effettivo (attiva/pausa/ferma) di ogni asta.
+ /// Se FALSE, applica DefaultStartAuctionsOnLoad a tutte le aste al caricamento.
+ /// Default: false (usa DefaultStartAuctionsOnLoad)
+ ///
+ public bool RememberAuctionStates { get; set; } = false;
+
// ? NUOVO: LIMITE MINIMO PUNTATE
///
/// Numero minimo di puntate residue da mantenere sull'account.