public SettingsPageViewModel( ISettingsManager settingsManager, ILoggerService loggerService, AutoInstallerService autoInstallerService ) { _autoInstallerService = autoInstallerService; _main = Locator.Current.GetService <AppViewModel>(); Settings = settingsManager; _loggerService = loggerService; CheckForUpdatesCommand = ReactiveCommand.CreateFromTask(CheckForUpdates); SaveCloseCommand = ReactiveCommand.CreateFromTask(SaveClose); }
public StatusBarViewModel( ISettingsManager settingsManager, IProjectManager projectManager, ILoggerService loggerService, IProgressService <double> progressService, AutoInstallerService autoInstallerService ) { _autoInstallerService = autoInstallerService; _settingsManager = settingsManager; _projectManager = projectManager; _progressService = progressService; _loggerService = loggerService; IsLoading = false; LoadingString = ""; CheckForUpdatesCommand = ReactiveCommand.CreateFromTask(CheckForUpdates); _projectManager .WhenAnyValue( x => x.ActiveProject, project => project != null ? project.Name : s_noProjectLoaded) .ToProperty( this, x => x.CurrentProject, out _currentProject); _ = Observable.FromEventPattern <EventHandler <double>, double>( handler => _progressService.ProgressChanged += handler, handler => _progressService.ProgressChanged -= handler) .Select(_ => _.EventArgs * 100) .ToProperty(this, x => x.Progress, out _progress); _ = _progressService .WhenAnyValue(x => x.IsIndeterminate) .ToProperty(this, x => x.IsIndeterminate, out _isIndeterminate); _ = _progressService.WhenAnyValue(x => x.IsIndeterminate).Subscribe(b => { IsIndeterminate = b; }); }
/// <summary> /// Class constructor /// </summary> public AppViewModel( IProjectManager projectManager, ILoggerService loggerService, IGameControllerFactory gameControllerFactory, ISettingsManager settingsManager, INotificationService notificationService, IRecentlyUsedItemsService recentlyUsedItemsService, IProgressService <double> progressService, IWatcherService watcherService, AutoInstallerService autoInstallerService ) { _projectManager = projectManager; _loggerService = loggerService; _gameControllerFactory = gameControllerFactory; _settingsManager = settingsManager; _notificationService = notificationService; _recentlyUsedItemsService = recentlyUsedItemsService; _progressService = progressService; _watcherService = watcherService; _autoInstallerService = autoInstallerService; _homePageViewModel = Locator.Current.GetService <HomePageViewModel>(); #region commands ShowLogCommand = new RelayCommand(ExecuteShowLog, CanShowLog); ShowProjectExplorerCommand = new RelayCommand(ExecuteShowProjectExplorer, CanShowProjectExplorer); //ShowImportUtilityCommand = new RelayCommand(ExecuteShowImportUtility, CanShowImportUtility); ShowPropertiesCommand = new RelayCommand(ExecuteShowProperties, CanShowProperties); ShowAssetsCommand = new RelayCommand(ExecuteAssetBrowser, CanShowAssetBrowser); //ShowVisualEditorCommand = new RelayCommand(ExecuteVisualEditor, CanShowVisualEditor); //ShowAudioToolCommand = new RelayCommand(ExecuteAudioTool, CanShowAudioTool); //ShowVideoToolCommand = new RelayCommand(ExecuteVideoTool, CanShowVideoTool); //ShowCodeEditorCommand = new RelayCommand(ExecuteCodeEditor, CanShowCodeEditor); ShowImportExportToolCommand = new RelayCommand(ExecuteImportExportTool, CanShowImportExportTool); //ShowPackageInstallerCommand = new RelayCommand(ExecuteShowInstaller, CanShowInstaller); ShowPluginCommand = new RelayCommand(ExecuteShowPlugin, CanShowPlugin); OpenFileCommand = new DelegateCommand <FileModel>(p => ExecuteOpenFile(p), CanOpenFile); OpenFileAsyncCommand = ReactiveCommand.CreateFromTask <FileModel, Unit>(OpenFileAsync); OpenRedFileAsyncCommand = ReactiveCommand.CreateFromTask <FileEntry, Unit>(OpenRedFileAsync); var canExecute = this.WhenAny(x => x._projectManager.ActiveProject, (p) => p != null); PackModCommand = ReactiveCommand.CreateFromTask(ExecutePackMod, canExecute); PackInstallModCommand = ReactiveCommand.CreateFromTask(ExecutePackInstallMod, canExecute); //BackupModCommand = new RelayCommand(ExecuteBackupMod, CanBackupMod); //PublishModCommand = new RelayCommand(ExecutePublishMod, CanPublishMod); NewFileCommand = new DelegateCommand <string>(ExecuteNewFile, CanNewFile); SaveFileCommand = new RelayCommand(ExecuteSaveFile, CanSaveFile); SaveAsCommand = new RelayCommand(ExecuteSaveAs, CanSaveFile); SaveAllCommand = new RelayCommand(ExecuteSaveAll, CanSaveAll); FileSelectedCommand = new DelegateCommand <FileModel>(async(p) => await ExecuteSelectFile(p), CanSelectFile); OpenProjectCommand = ReactiveCommand.CreateFromTask <string, Unit>(OpenProjectAsync); DeleteProjectCommand = ReactiveCommand.Create <string>(DeleteProject); NewProjectCommand = ReactiveCommand.Create(ExecuteNewProject); ShowHomePageCommand = new RelayCommand(ExecuteShowHomePage, CanShowHomePage); ShowSettingsCommand = new RelayCommand(ExecuteShowSettings, CanShowSettings); CloseModalCommand = new RelayCommand(ExecuteCloseModal, CanCloseModal); CloseOverlayCommand = new RelayCommand(ExecuteCloseOverlay, CanCloseOverlay); CloseDialogCommand = new RelayCommand(ExecuteCloseDialog, CanCloseDialog); OpenFileAsyncCommand.ThrownExceptions.Subscribe(ex => LogExtended(ex)); OpenRedFileAsyncCommand.ThrownExceptions.Subscribe(ex => LogExtended(ex)); PackModCommand.ThrownExceptions.Subscribe(ex => LogExtended(ex)); PackInstallModCommand.ThrownExceptions.Subscribe(ex => LogExtended(ex)); OpenProjectCommand.ThrownExceptions.Subscribe(ex => LogExtended(ex)); #endregion commands UpdateTitle(); if (!TryLoadingArguments()) { SetActiveOverlay(_homePageViewModel); } OnStartup(); DockedViews = new ObservableCollection <IDockElement> { Log, ProjectExplorer, PropertiesViewModel, AssetBrowserVM, ImportExportToolVM, }; _settingsManager .WhenAnyValue(x => x.UpdateChannel) .Subscribe(async x => { _autoInstallerService.UseChannel(x.ToString()); // 1 API call if (!(await _autoInstallerService.CheckForUpdate()) .Out(out var release)) { return; } if (release.TagName.Equals(_settingsManager.GetVersionNumber())) { return; } _settingsManager.IsUpdateAvailable = true; _loggerService.Success($"Update available: {release.TagName}"); //var result = await Interactions.ShowMessageBoxAsync("An update is available for WolvenKit. Exit the app and install it?", "Update available"); //switch (result) //{ // case WMessageBoxResult.OK: // case WMessageBoxResult.Yes: // if (await _autoInstallerService.Update()) // 1 API call // { // } // break; //} }); }