public RootViewModel(ModificationImportController modificationImportController, MainWindow window, ObservableCollection<ModificationViewModel> modifications) { this.modificationImportController = modificationImportController; this.window = window; this.Modifications = modifications; collectionViewSource.Source = Modifications; collectionViewSource.Filter += (s, e) => { if (modificationTypeFilter == LeagueModificationCategory.All) { e.Accepted = true; } else { e.Accepted = (modificationTypeFilter.Value & ((ModificationViewModel)e.Item).Category.Value) != 0; } }; FilteredModifications = collectionViewSource.View; }
private void UserInterfaceThreadStart() { var clientConfiguration = ryu.Get<IClientConfiguration>(); var fileSystemProxy = ryu.Get<IFileSystemProxy>(); var driveNodeFactory = new DriveNodeFactory(ryu.Get<IStreamFactory>()); var pofContext = ryu.Get<IPofContext>(); var pofSerializer = ryu.Get<IPofSerializer>(); var temporaryFileService = ryu.Get<ServiceClient>().GetService<TemporaryFileService>(); var exeggutorService = ryu.Get<ServiceClient>().GetService<ExeggutorService>(); var riotSolutionLoader = ryu.Get<RiotSolutionLoader>(); var modificationLoader = ryu.Get<ModificationLoader>(); var leagueBuildUtilities = ryu.Get<LeagueBuildUtilities>(); application = Application.Current ?? new Application(); var dispatcher = application.Dispatcher; var window = new MainWindow(); var repositoriesDirectory = Path.Combine(clientConfiguration.UserDataDirectoryPath, kRepositoryDirectoryName); var modificationImportViewModelFactory = new ModificationImportViewModelFactory(fileSystemProxy, driveNodeFactory); ModificationComponentFactory modificationComponentFactory = new ModificationComponentFactory(fileSystemProxy, pofContext, new SlotSourceFactoryImpl(), pofSerializer); ObservableCollection<ModificationViewModel> modificationViewModels = new ObservableCollection<ModificationViewModel>(); var rootViewModelCommandFactory = new ModificationImportController(pofSerializer, repositoriesDirectory, temporaryFileService, exeggutorService, modificationComponentFactory, fileSystemProxy, riotSolutionLoader, modificationImportViewModelFactory, modificationViewModels, modificationLoader, leagueBuildUtilities); var modificationListingSynchronizer = new ModificationListingSynchronizer(pofSerializer, fileSystemProxy, clientConfiguration, temporaryFileService, exeggutorService, modificationLoader, modificationViewModels, leagueBuildUtilities); modificationListingSynchronizer.Initialize(); var rootViewModel = new RootViewModel(rootViewModelCommandFactory, window, modificationViewModels); window.DataContext = rootViewModel; application.Run(window); host?.Shutdown(ShutdownReason.None); }