using CommunityToolkit.Mvvm.Input; using SpaceEngineersBlueprintEditor.Implements.Services; using SpaceEngineersBlueprintEditor.Interface.Services; using SpaceEngineersBlueprintEditor.Views; using Windows.Storage; using Windows.Storage.Pickers; using WinRT.Interop; using XFEExtension.NetCore.WinUIHelper.Interface.Services; using XFEExtension.NetCore.WinUIHelper.Utilities; namespace SpaceEngineersBlueprintEditor.ViewModels; public partial class MainPageViewModel : ViewModelBase { private readonly INavigationViewService? navigationViewService = ServiceManager.GetGlobalService(); public IFileDropService FileDropService { get; set; } = new BlueprintDropService(); public MainPageViewModel() { FileDropService.Drop += FileDropService_Drop; } private void FileDropService_Drop(object? sender, (string, DragEventArgs) e) { if (File.Exists(e.Item1)) navigationViewService?.NavigateTo(SpaceEngineersHelper.LoadBlueprintInfo(e.Item1)?.ToBlueprintInfoViewData()); } [RelayCommand] void ViewBlueprintsList() => navigationViewService?.NavigateTo("Local"); [RelayCommand] async Task OpenBlueprintInFolder() { var openPicker = new FileOpenPicker(); InitializeWithWindow.Initialize(openPicker, WindowNative.GetWindowHandle(App.MainWindow)); openPicker.ViewMode = PickerViewMode.List; openPicker.FileTypeFilter.Add(".sbc"); if (await openPicker.PickSingleFileAsync() is StorageFile file) navigationViewService?.NavigateTo(SpaceEngineersHelper.LoadBlueprintInfo(file.Path)?.ToBlueprintInfoViewData()); } }