public OpenedFileViewModel(NxFile nxFile, IServiceProvider serviceProvider) { serviceProvider = serviceProvider ?? throw new ArgumentNullException(nameof(serviceProvider)); _nxFile = nxFile ?? throw new ArgumentNullException(nameof(nxFile)); Content = new ContentViewModel(_nxFile.RootItem, serviceProvider); FileOverview = new FileOverviewViewModel(_nxFile.Overview, serviceProvider); OpenFileLocationCommand = serviceProvider.GetRequiredService <IOpenFileLocationCommand>(); OpenFileLocationCommand.FilePath = _nxFile.Path; }
public NxFile Load(string filePath) { _logger.LogInformation(LocalizationManager.Instance.Current.Keys.Log_OpeningFile.SafeFormat(filePath)); HashSet <MissingKey> missingKeys = new(); _fileItemLoader.MissingKey += (_, args) => { var ex = args.Exception; var missingKey = new MissingKey(ex.Name, ex.Type); missingKeys.Add(missingKey); }; IItem rootItem; FileOverview fileOverview; switch (_fileTypeAnalyzer.GetFileType(filePath)) { case FileType.UNKNOWN: throw new FileNotSupportedException(filePath); case FileType.XCI: var xciItem = _fileItemLoader.LoadXci(filePath); fileOverview = _fileOverviewLoader.Load(xciItem); rootItem = xciItem; break; case FileType.NSP: var nspItem = _fileItemLoader.LoadNsp(filePath); fileOverview = _fileOverviewLoader.Load(nspItem); rootItem = nspItem; break; default: throw new ArgumentOutOfRangeException(); } foreach (var missingKey in missingKeys) { fileOverview.MissingKeys.Add(missingKey); } var openedFile = new NxFile(filePath, rootItem, fileOverview); return(openedFile); }