using System.Windows; using System.Windows.Controls; using System.Windows.Input; using XFEToolBox.Client.Utilities; using XFEToolBox.Client.ViewModel.Pages; using XFEToolBox.Client.Model; using XFEToolBox.Client.Views.Pages.Popups; using XFEToolBox.Client.Views.Windows; namespace XFEToolBox.Client.Views.Pages; /// /// MainPage.xaml 的交互逻辑 /// public partial class MainPage : Page { public static MainPage? Current { get; set; } = new(); public MainPageViewModel ViewModel { get; set; } public MainPage() { Current = this; InitializeComponent(); ViewModel = new(this); DataContext = ViewModel; } private async void MainCarousel_RetryRequested(object? sender, EventArgs e) => await ViewModel.ReloadAsync(); private async void RecentItem_Click(object sender, RoutedEventArgs e) { if (sender is Button { CommandParameter: RecentUsageCardViewModel card }) await ViewModel.OpenRecentItemAsync(card); } private void RemoveRecentItem_Click(object sender, RoutedEventArgs e) { e.Handled = true; if (sender is Button { CommandParameter: RecentUsageCardViewModel card }) ViewModel.RemoveRecentItem(card); } private void ClearRecentUsage_Click(object sender, RoutedEventArgs e) { if (ViewModel.RecentItems.Count == 0) return; if (PopupHelper.ShowConfirmDialog("确定清空全部最近使用记录吗?", true, "清空记录") == MessageBoxResult.OK) ViewModel.ClearRecentUsage(); } private void OpenToolBox_Click(object sender, RoutedEventArgs e) => ViewModel.OpenToolBox(); private void OpenCommandPalette_Click(object sender, RoutedEventArgs e) => ViewModel.OpenCommandPalette(HomeSearchBox.Text); private void HomeSearchBox_KeyDown(object sender, KeyEventArgs e) { if (e.Key != Key.Enter) return; ViewModel.OpenCommandPalette(HomeSearchBox.Text); e.Handled = true; } private async void LauncherItem_Click(object sender, RoutedEventArgs e) { if (sender is Button { CommandParameter: LauncherItemViewModel item }) await ViewModel.ExecuteLauncherItemAsync(item); } private void TogglePin_Click(object sender, RoutedEventArgs e) { e.Handled = true; if (sender is not Button { CommandParameter: LauncherItemViewModel item }) return; if (!ViewModel.TogglePinned(item)) PopupHelper.ShowConfirmDialog($"最多只能固定 {PinnedItemService.MaximumPinnedItems} 项。", confirmText: "知道了"); } private void AdminServerPanel_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) => MainWindow.Current?.ViewModel.NavigateToPageCommand.Execute("serverOverview"); private void ManagePinnedItems_Click(object sender, RoutedEventArgs e) => PopupHelper.ShowDialog(new PinnedItemsPopupPage(), new PopupWindowOptions { Title = "快速访问", Subtitle = "管理主页固定项", Width = 560, Height = 520, ContentMargin = new Thickness(0) }); }