/// <summary> /// Initializes a new instance of the <see cref="MainViewModel" /> class. /// </summary> /// <param name="screen">The screen in which the view is shown.</param> /// <param name="repositoryFactory">Factory for creating the repository details.</param> /// <param name="viewModelFactory">Factory for creating the document view models.</param> public MainViewModel( IScreen screen, IRepositoryFactory repositoryFactory, IRepositoryViewModelFactory viewModelFactory) { HostScreen = screen ?? throw new ArgumentNullException(nameof(screen)); _repositoryFactory = repositoryFactory ?? throw new ArgumentNullException(nameof(repositoryFactory)); _viewModelFactory = viewModelFactory ?? throw new ArgumentNullException(nameof(viewModelFactory)); SelectFolder = new Interaction <string, string>(); _selectRepository = ReactiveCommand.CreateFromObservable(() => SelectFolder.Handle("Select folder for GIT repository")); _selectRepository.Subscribe(OpenRepository); _newRepository = ReactiveCommand.CreateFromObservable( () => SelectFolder.Handle("Select new folder for GIT repository")); _newRepository.Subscribe( x => repositoryFactory.CreateRepositoryCreator().CreateRepository(x).Subscribe( _ => { OpenRepository(x); })); AllSupportViewModels = GetAllSupportViewModels(); VisibleSupportViewModels = new ObservableCollectionExtended <ISupportViewModel>(AllSupportViewModels); this.WhenAnyValue(x => x.SelectedRepositoryViewModel).Subscribe(UpdateRepositoryDetails); }
/// <summary> /// Конструктор. /// </summary> /// <param name="container">Используется только для того, чтобы зарегистрировать репозиторий после его инициализации </param> /// <param name="loader">Загрузчик.</param> /// <param name="applicationSettings">Настройки приложения</param> /// <param name="selectionMasksStorage"></param> /// <param name="messenger"></param> /// <param name="repositoryViewModelFactory"></param> /// <param name="sciChartViewModelFactory"> </param> /// <param name="colorsStorage"></param> public MainViewModel(IUnityContainer container, ILoader loader, IApplicationSettings applicationSettings, ISelectionMasksStorage selectionMasksStorage, IMessenger messenger, IRepositoryViewModelFactory repositoryViewModelFactory, ISciChartViewModelFactory sciChartViewModelFactory, IColorsStorage colorsStorage) { SelectionMasksStorage = selectionMasksStorage; _container = container; _loader = loader; _applicationSettings = applicationSettings; _messenger = messenger; _repositoryViewModelFactory = repositoryViewModelFactory; _colorsStorage = colorsStorage; _mainChart = sciChartViewModelFactory.Create(); IsRepositoryLoaded = false; if (File.Exists(_applicationSettings.SelectionMasksFullFilePath)) { SelectionMasksStorage.Load(_applicationSettings.SelectionMasksFullFilePath); } InitializeCommands(); _collapseTreeCmd = new RelayCommand(CollapseTree, () => true); _collapsePowerOnTreeCmd = new RelayCommand(CollapsePowerOnTree, () => true); _messenger.Register <IsTrendOnPlotChangedMessage>(this, IsTrendOnPlotChanged); }
/// <summary> /// Initializes a new instance of the <see cref="RepositoryDocumentViewModel" /> class. /// </summary> /// <param name="factory">A factory for creating the children.</param> /// <param name="repositoryDetails">The details about the repositories.</param> public RepositoryDocumentViewModel(IRepositoryViewModelFactory factory, IRepositoryDetails repositoryDetails) { this.RepositoryDetails = repositoryDetails; this.CommitHistoryViewModel = factory.CreateCommitHistoryViewModel(this.RepositoryDetails); }