Exemple #1
0
        public ColorbarViewModel(IRegionManager regionManager,
                                 IRecordDirectoryObserver recordDirectoryObserver,
                                 IEventAggregator eventAggregator,
                                 IAppConfiguration appConfiguration,
                                 IShell shell)
        {
            _regionManager           = regionManager;
            _recordDirectoryObserver = recordDirectoryObserver;
            _eventAggregator         = eventAggregator;
            _appConfiguration        = appConfiguration;
            _shell = shell;

            StutteringFactor              = _appConfiguration.StutteringFactor;
            SelectWindowSize              = _appConfiguration.MovingAverageWindowSize;
            FpsValuesRoundingDigits       = _appConfiguration.FpsValuesRoundingDigits;
            ObservedDirectory             = _appConfiguration.ObservedDirectory;
            ScreenshotDirectory           = _appConfiguration.ScreenshotDirectory;
            WindowSizes                   = new List <int>(Enumerable.Range(4, 100 - 4));
            RoundingDigits                = new List <int>(Enumerable.Range(0, 8));
            SelectObservedFolderCommand   = new DelegateCommand(OnSelectObeservedFolder);
            SelectScreenshotFolderCommand = new DelegateCommand(OnSelectScreenshotFolder);
            OpenObservedFolderCommand     = new DelegateCommand(OnOpenObservedFolder);
            OpenScreenshotFolderCommand   = new DelegateCommand(OnOpenScreenshotFolder);

            HasCustomInfo = SelectedHardwareInfoSource == EHardwareInfoSource.Custom;

            SetHardwareInfoDefaultsFromDatabase();

            SetAggregatorEvents();

            SubscribeToOverlayActivate();
            SubscribeToOverlayDeactivate();
        }
Exemple #2
0
        public StateViewModel(IRecordDirectoryObserver recordObserver,
                              IEventAggregator eventAggregator,
                              IAppConfiguration appConfiguration,
                              ICaptureService captureService,
                              IOverlayService overlayService,
                              IUpdateCheck updateCheck,
                              IAppVersionProvider appVersionProvider,
                              IWebVersionProvider webVersionProvider,
                              LoginManager loginManager,
                              IRTSSService rTSSService,
                              ILogger <StateViewModel> logger)
        {
            Stopwatch stopwatch = new Stopwatch();

            stopwatch.Start();

            _recordObserver     = recordObserver;
            _eventAggregator    = eventAggregator;
            _appConfiguration   = appConfiguration;
            _captureService     = captureService;
            _overlayService     = overlayService;
            _updateCheck        = updateCheck;
            _appVersionProvider = appVersionProvider;
            _logger             = logger;

            IsCaptureModeActive = false;
            IsOverlayActive     = _appConfiguration.IsOverlayActive && rTSSService.IsRTSSInstalled();

            _captureService.IsCaptureModeActiveStream
            .Subscribe(state => IsCaptureModeActive = state);

            _captureService.IsLoggingActiveStream
            .Subscribe(state => IsLoggingActive = state);

            _overlayService.IsOverlayActiveStream
            .Subscribe(state => IsOverlayActive = state);

            IsLoggedIn = loginManager.State.Token != null;

            _eventAggregator.GetEvent <PubSubEvent <AppMessages.LoginState> >().Subscribe(state =>
            {
                IsLoggedIn = state.IsLoggedIn;
                RaisePropertyChanged(nameof(IsLoggedIn));
            });


            Task.Run(async() =>
            {
                var(updateAvailable, updateVersion) = await _updateCheck.IsUpdateAvailable();
                Dispatcher.CurrentDispatcher.Invoke(() =>
                {
                    IsUpdateAvailable   = updateAvailable;
                    UpdateHyperlinkText = $"New version available on GitHub: v{updateVersion}";
                    RaisePropertyChanged(nameof(IsUpdateAvailable));
                });
            });

            stopwatch.Stop();
            _logger.LogInformation(this.GetType().Name + " {initializationTime}s initialization time", Math.Round(stopwatch.ElapsedMilliseconds * 1E-03, 1));
        }
Exemple #3
0
        public StateViewModel(IRecordDirectoryObserver recordObserver,
                              IEventAggregator eventAggregator,
                              IAppConfiguration appConfiguration,
                              ICaptureService captureService,
                              IOverlayService overlayService,
                              IUpdateCheck updateCheck,
                              IAppVersionProvider appVersionProvider,
                              IWebVersionProvider webVersionProvider)
        {
            _recordObserver      = recordObserver;
            _eventAggregator     = eventAggregator;
            _appConfiguration    = appConfiguration;
            _captureService      = captureService;
            _overlayService      = overlayService;
            _updateCheck         = updateCheck;
            _appVersionProvider  = appVersionProvider;
            IsDirectoryObserving = true;
            IsCaptureModeActive  = false;
            IsOverlayActive      = _appConfiguration.IsOverlayActive && !string.IsNullOrEmpty(RTSSUtils.GetRTSSFullPath());

            UpdateHyperlinkText = $"New version available on GitHub: v{webVersionProvider.GetWebVersion()}";

            _recordObserver.HasValidSourceStream
            .Subscribe(state => IsDirectoryObserving = state);

            _captureService.IsCaptureModeActiveStream
            .Subscribe(state => IsCaptureModeActive = state);

            _overlayService.IsOverlayActiveStream
            .Subscribe(state => IsOverlayActive = state);
        }
        public AggregationViewModel(IRecordDirectoryObserver recordObserver,
                                    IEventAggregator eventAggregator, IAppConfiguration appConfiguration)
        {
            _recordObserver   = recordObserver;
            _eventAggregator  = eventAggregator;
            _appConfiguration = appConfiguration;

            SubscribeToUpdateSession();
        }
        public StateViewModel(IRecordDirectoryObserver recordObserver,
                              IEventAggregator eventAggregator,
                              IAppConfiguration appConfiguration,
                              ICaptureService captureService,
                              IOverlayService overlayService,
                              IUpdateCheck updateCheck,
                              IAppVersionProvider appVersionProvider,
                              IWebVersionProvider webVersionProvider,
                              LoginManager loginManager,
                              IRTSSService rTSSService)
        {
            _recordObserver     = recordObserver;
            _eventAggregator    = eventAggregator;
            _appConfiguration   = appConfiguration;
            _captureService     = captureService;
            _overlayService     = overlayService;
            _updateCheck        = updateCheck;
            _appVersionProvider = appVersionProvider;
            IsCaptureModeActive = false;
            IsOverlayActive     = _appConfiguration.IsOverlayActive && rTSSService.IsRTSSInstalled();

            _captureService.IsCaptureModeActiveStream
            .Subscribe(state => IsCaptureModeActive = state);

            _captureService.IsLoggingActiveStream
            .Subscribe(state => IsLoggingActive = state);

            _overlayService.IsOverlayActiveStream
            .Subscribe(state => IsOverlayActive = state);

            IsLoggedIn = loginManager.State.Token != null;

            _eventAggregator.GetEvent <PubSubEvent <AppMessages.LoginState> >().Subscribe(state => {
                IsLoggedIn = state.IsLoggedIn;
                RaisePropertyChanged(nameof(IsLoggedIn));
            });


            Task.Run(async() =>
            {
                var(updateAvailable, updateVersion) = await _updateCheck.IsUpdateAvailable();
                Dispatcher.CurrentDispatcher.Invoke(() =>
                {
                    IsUpdateAvailable   = updateAvailable;
                    UpdateHyperlinkText = $"New version available on GitHub: v{updateVersion}";
                    RaisePropertyChanged(nameof(IsUpdateAvailable));
                });
            });
        }
        public ControlViewModel(IRecordDirectoryObserver recordObserver,
                                IEventAggregator eventAggregator,
                                IAppConfiguration appConfiguration, RecordManager recordManager,
                                ISystemInfo systemInfo,
                                ProcessList processList,
                                ILogger <ControlViewModel> logger,
                                ApplicationState applicationState)
        {
            Stopwatch stopwatch = new Stopwatch();

            stopwatch.Start();

            _recordObserver   = recordObserver;
            _eventAggregator  = eventAggregator;
            _appConfiguration = appConfiguration;
            _recordManager    = recordManager;
            _systemInfo       = systemInfo;
            _processList      = processList;
            _logger           = logger;
            _applicationState = applicationState;

            //Commands
            DeleteRecordFileCommand          = new DelegateCommand(OnDeleteRecordFile);
            MoveRecordFileCommand            = new DelegateCommand(OnMoveRecordFile);
            DuplicateRecordFileCommand       = new DelegateCommand(OnDuplicateRecordFile);
            AcceptEditingDialogCommand       = new DelegateCommand(OnAcceptEditingDialog);
            CancelEditingDialogCommand       = new DelegateCommand(OnCancelEditingDialog);
            AddCpuInfoCommand                = new DelegateCommand(OnAddCpuInfo);
            AddGpuInfoCommand                = new DelegateCommand(OnAddGpuInfo);
            AddRamInfoCommand                = new DelegateCommand(OnAddRamInfo);
            DeleteRecordCommand              = new DelegateCommand(OnPressDeleteKey);
            OpenObservedFolderCommand        = new DelegateCommand(OnOpenObservedFolder);
            DeleteFolderCommand              = new DelegateCommand(OnDeleteFolder);
            OpenCreateSubFolderDialogCommand = new DelegateCommand(() =>
            {
                CreateFolderDialogIsOpen = true;
                TreeViewSubFolderName    = string.Empty;
                CreateFolderdialogIsOpenStream.OnNext(true);
            });
            SelectedRecordingsCommand      = new DelegateCommand <object>(OnSelectedRecordings);
            CreateFolderCommand            = new DelegateCommand(OnCreateSubFolder);
            CloseCreateFolderDialogCommand = new DelegateCommand(() =>
            {
                CreateFolderDialogIsOpen = false;
                CreateFolderdialogIsOpenStream.OnNext(false);
            }
                                                                 );
            ReloadRootFolderCommand = new DelegateCommand(() => TreeViewUpdateStream.OnNext(default));
Exemple #7
0
        public RecordDataProvider(IRecordDirectoryObserver recordObserver, IAppConfiguration appConfiguration)
        {
            _recordObserver   = recordObserver;
            _appConfiguration = appConfiguration;

            try
            {
                if (!File.Exists(_matchingNameLiveFilename))
                {
                    Directory.CreateDirectory(
                        Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments),
                                     @"CapFrameX\Resources"));
                    File.Copy(_matchingNameInitialFilename, _matchingNameLiveFilename);
                }
            }
            catch { }
        }
Exemple #8
0
 public RecordManager(ILogger <RecordManager> logger,
                      IAppConfiguration appConfiguration,
                      IRecordDirectoryObserver recordObserver,
                      IAppVersionProvider appVersionProvider,
                      ISensorService sensorService,
                      ISystemInfo systemInfo,
                      ProcessList processList,
                      IRTSSService rTSSService)
 {
     _logger             = logger;
     _appConfiguration   = appConfiguration;
     _recordObserver     = recordObserver;
     _appVersionProvider = appVersionProvider;
     _sensorService      = sensorService;
     _systemInfo         = systemInfo;
     _processList        = processList;
     _rTSSService        = rTSSService;
 }
        public StateViewModel(IRecordDirectoryObserver recordObserver,
                              IEventAggregator eventAggregator,
                              IAppConfiguration appConfiguration,
                              ICaptureService captureService)
        {
            _recordObserver   = recordObserver;
            _eventAggregator  = eventAggregator;
            _appConfiguration = appConfiguration;
            _captureService   = captureService;

            IsDirectoryObserving = true;
            IsCaptureModeActive  = false;

            UpdateHpyerlinkText = $"New version available on GitHub: v{WebCheck.GetWebVersion(WebCheck.VersionSourceFileUrl)}";

            _recordObserver.HasValidSourceStream
            .Subscribe(state => IsDirectoryObserving = state);

            _captureService.IsCaptureModeActiveStream
            .Subscribe(state => IsCaptureModeActive = state);
        }
Exemple #10
0
        public RecordDataProvider(IRecordDirectoryObserver recordObserver, IAppConfiguration appConfiguration,
                                  ILogger <RecordDataProvider> logger)
        {
            _recordObserver   = recordObserver;
            _appConfiguration = appConfiguration;
            _logger           = logger;

            try
            {
                if (!File.Exists(_matchingNameLiveFilename))
                {
                    Directory.CreateDirectory(
                        Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments),
                                     @"CapFrameX\Resources"));
                    File.Copy(_matchingNameInitialFilename, _matchingNameLiveFilename);
                }
            }
            catch (Exception ex)
            {
                var path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments),
                                        @"CapFrameX\Resources");
                _logger.LogError(ex, $"Error while creating {path}");
            }
        }
        public ControlViewModel(IRecordDirectoryObserver recordObserver,
                                IEventAggregator eventAggregator,
                                IAppConfiguration appConfiguration,
                                IRecordDataProvider recordDataProvider)
        {
            _recordObserver     = recordObserver;
            _eventAggregator    = eventAggregator;
            _appConfiguration   = appConfiguration;
            _recordDataProvider = recordDataProvider;

            //Commands
            OpenEditingDialogCommand   = new DelegateCommand(OnOpenEditingDialog);
            AddToIgnoreListCommand     = new DelegateCommand(OnAddToIgnoreList);
            DeleteRecordFileCommand    = new DelegateCommand(OnDeleteRecordFile);
            AcceptEditingDialogCommand = new DelegateCommand(OnAcceptEditingDialog);
            CancelEditingDialogCommand = new DelegateCommand(OnCancelEditingDialog);
            AddCpuInfoCommand          = new DelegateCommand(OnAddCpuInfo);
            AddGpuInfoCommand          = new DelegateCommand(OnAddGpuInfo);
            AddRamInfoCommand          = new DelegateCommand(OnAddRamInfo);
            DeleteRecordCommand        = new DelegateCommand(OnPressDeleteKey);
            SelectedRecordingsCommand  = new DelegateCommand <object>(OnSelectedRecordings);

            HasValidSource = recordObserver.HasValidSource;

            Task.Factory.StartNew(() =>
            {
                if (recordObserver.HasValidSource)
                {
                    var initialRecordFileInfoList = _recordDataProvider?.GetFileRecordInfoList();

                    foreach (var recordFileInfo in initialRecordFileInfoList)
                    {
                        AddToRecordInfoList(recordFileInfo);
                    }
                }
            });

            RecordDataGridSelectedIndex = -1;

            _recordDeleteSubStream = new Subject <FileInfo>();

            var context = SynchronizationContext.Current;

            _recordObserver.RecordCreatedStream
            .ObserveOn(context)
            .SubscribeOn(context)
            .Subscribe(OnRecordCreated);
            _recordObserver.RecordDeletedStream
            .Merge(_recordDeleteSubStream)
            .Where(x => _recordDeleteStreamActive)
            .ObserveOn(context)
            .SubscribeOn(context)
            .Subscribe(x => OnRecordDeleted());

            // Turn streams now on
            if (_recordObserver.HasValidSource)
            {
                _recordObserver.IsActive = true;
            }

            SetAggregatorEvents();
            SubscribeToResetRecord();
            SubscribeToObservedDiretoryUpdated();
            SubscribeToSetFileRecordInfoExternal();
        }