using System; using System.Linq; using System.Windows; using System.Windows.Controls; using System.Windows.Input; using Microsoft.Web.WebView2.Core; namespace AutoBidder { /// /// Browser event handlers and navigation /// public partial class MainWindow { private void BrowserBackButton_Click(object sender, RoutedEventArgs e) { try { if (EmbeddedWebView?.CoreWebView2 != null && EmbeddedWebView.CoreWebView2.CanGoBack) EmbeddedWebView.CoreWebView2.GoBack(); } catch { } } private void BrowserForwardButton_Click(object sender, RoutedEventArgs e) { try { if (EmbeddedWebView?.CoreWebView2 != null && EmbeddedWebView.CoreWebView2.CanGoForward) EmbeddedWebView.CoreWebView2.GoForward(); } catch { } } private void BrowserRefreshButton_Click(object sender, RoutedEventArgs e) { try { EmbeddedWebView?.Reload(); } catch { } } private void BrowserHomeButton_Click(object sender, RoutedEventArgs e) { try { EmbeddedWebView?.CoreWebView2?.Navigate("https://it.bidoo.com/"); BrowserAddress.Text = "https://it.bidoo.com/"; } catch { } } private void BrowserGoButton_Click(object sender, RoutedEventArgs e) { try { var url = BrowserAddress.Text?.Trim(); if (string.IsNullOrEmpty(url)) return; if (!url.StartsWith("http", StringComparison.OrdinalIgnoreCase)) url = "https://" + url; EmbeddedWebView?.CoreWebView2?.Navigate(url); } catch { } } private void BrowserAddAuctionButton_Click(object sender, RoutedEventArgs e) { try { var url = BrowserAddress.Text?.Trim() ?? EmbeddedWebView?.Source?.ToString(); if (!string.IsNullOrEmpty(url)) _ = AddAuctionFromUrl(url); } catch { } } private void EmbeddedWebView_NavigationStarting(object sender, CoreWebView2NavigationStartingEventArgs e) { try { BrowserAddress.Text = e.Uri ?? string.Empty; var btn = this.FindName("BrowserAddAuctionButton") as Button; if (btn != null) btn.IsEnabled = IsValidAuctionUrl(e.Uri ?? string.Empty); } catch { } } private void EmbeddedWebView_NavigationCompleted(object sender, CoreWebView2NavigationCompletedEventArgs e) { try { var uri = EmbeddedWebView?.Source?.ToString() ?? BrowserAddress.Text; BrowserAddress.Text = uri; var btn = this.FindName("BrowserAddAuctionButton") as Button; if (btn != null) btn.IsEnabled = IsValidAuctionUrl(uri); } catch { } } private void EmbeddedWebView_PreviewMouseRightButtonUp(object sender, MouseButtonEventArgs e) { try { e.Handled = true; } catch { } } private void CoreWebView2_ContextMenuRequested(object? sender, CoreWebView2ContextMenuRequestedEventArgs e) { try { // Prevent default native menu e.Handled = true; var target = e.ContextMenuTarget; string? link = null; try { link = target?.LinkUri; if (string.IsNullOrEmpty(link)) link = target?.PageUri; } catch { } // Show WPF ContextMenu on UI thread Dispatcher.BeginInvoke(new Action(() => { try { var menu = new ContextMenu(); var canAdd = !string.IsNullOrEmpty(link) || IsValidAuctionUrl(EmbeddedWebView?.Source?.ToString() ?? BrowserAddress.Text); var addItem = new MenuItem { Header = "Aggiungi Asta", IsEnabled = canAdd }; addItem.Click += async (s, args) => { try { string? urlToAdd = link; if (string.IsNullOrEmpty(urlToAdd)) urlToAdd = EmbeddedWebView?.Source?.ToString() ?? BrowserAddress.Text; if (!string.IsNullOrEmpty(urlToAdd)) { await AddAuctionFromUrl(urlToAdd); } } catch (Exception ex) { Log($"[ERRORE] Aggiungi Asta dal menu: {ex.Message}"); } }; menu.Items.Add(addItem); var copyLink = new MenuItem { Header = "Copia link", IsEnabled = !string.IsNullOrEmpty(link) }; copyLink.Click += (s, args) => { try { if (!string.IsNullOrEmpty(link)) Clipboard.SetText(link); } catch { } }; menu.Items.Add(copyLink); menu.Placement = System.Windows.Controls.Primitives.PlacementMode.MousePoint; menu.IsOpen = true; } catch { } })); } catch { } } } }