示例#1
0
        /// <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);
        }
示例#2
0
        /// <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);
        }
示例#3
0
 /// <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);
 }