Пример #1
0
        public PriceViewModel(
            ILogger logger,
            IDebouncer debouncer,
            ITradeSearchService tradeSearchService,
            IPoeNinjaCache poeNinjaCache,
            IStaticDataService staticDataService,
            ILanguageProvider languageProvider,
            IPoePriceInfoClient poePriceInfoClient,
            INativeClipboard nativeClipboard,
            IParserService parserService,
            SidekickSettings settings,
            IStatDataService statDataService,
            IItemCategoryService itemCategoryService)
        {
            this.logger              = logger;
            this.debouncer           = debouncer;
            this.tradeSearchService  = tradeSearchService;
            this.poeNinjaCache       = poeNinjaCache;
            this.staticDataService   = staticDataService;
            this.languageProvider    = languageProvider;
            this.poePriceInfoClient  = poePriceInfoClient;
            this.nativeClipboard     = nativeClipboard;
            this.parserService       = parserService;
            this.settings            = settings;
            this.statDataService     = statDataService;
            this.itemCategoryService = itemCategoryService;
            Task.Run(Initialize);

            PropertyChanged += PriceViewModel_PropertyChanged;
        }
Пример #2
0
        public BaseView(string id, IServiceProvider serviceProvider, bool closeOnBlur = false, bool closeOnKey = false)
        {
            keybindEvents = serviceProvider.GetService <IKeybindEvents>();
            settings      = serviceProvider.GetService <SidekickSettings>();
            windowService = serviceProvider.GetService <IWindowService>();
            logger        = serviceProvider.GetService <ILogger>();
            debouncer     = serviceProvider.GetService <IDebouncer>();

            IsVisibleChanged += EnsureBounds;
            Loaded           += EnsureBounds;
            Loaded           += BaseWindow_Loaded;
            SizeChanged      += EnsureBounds;

            if (closeOnBlur && settings.CloseOverlayWithMouse)
            {
                Deactivated += BaseBorderlessWindow_Deactivated;
            }

            if (closeOnKey)
            {
                keybindEvents.OnCloseWindow += KeybindEvents_OnCloseWindow;
            }

            this.closeOnBlur = closeOnBlur;
            this.closeOnKey  = closeOnKey;
            this.id          = id;
        }
Пример #3
0
        public ViewLocator(IViewPreferenceRepository viewPreferenceRepository,
                           IDebouncer debouncer,
                           ILogger <ViewLocator> logger,
                           ISidekickSettings settings,
                           ElectronCookieProtection electronCookieProtection,
                           IHostEnvironment hostEnvironment)
        {
            this.viewPreferenceRepository = viewPreferenceRepository;
            this.debouncer = debouncer;
            this.logger    = logger;
            this.settings  = settings;
            this.electronCookieProtection = electronCookieProtection;
            this.hostEnvironment          = hostEnvironment;

            ElectronNET.API.Electron.IpcMain.OnSync("close", (viewName) =>
            {
                logger.LogError("Force closing the Blazor view {viewName}", viewName);
                if (Enum.TryParse(viewName as string, true, out View view))
                {
                    Close(view);
                }
                else
                {
                    CloseAll();
                }

                return(null);
            });
        }
        public async Task given_data_is_non_debouncable_then_Handle_relays_directly(
            Message message,
            [Frozen] IDebouncer debouncer,
            [Frozen] IMessageHandler handler,
            DebouncingMessageHandler sut)
        {
            // Act
            await sut.Handle(message);

            // Assert
            Mock.Get(handler).Verify(x => x.Handle(message), Times.Once());

            Expression <Func <IDebouncer, Task <bool> > > callTryConsume = x => x.TryConsume(
                It.IsAny <IDebouncable>(),
                It.IsAny <Func <IDebouncable, Task> >());

            Mock.Get(debouncer).Verify(callTryConsume, Times.Never());
        }
Пример #5
0
        public PriceViewModel(
            ILogger <PriceViewModel> logger,
            IDebouncer debouncer,
            ITradeSearchService tradeSearchService,
            IItemStaticDataProvider itemStaticDataProvider,
            IGameLanguageProvider gameLanguageProvider,
            ISidekickSettings settings,
            IItemCategoryRepository itemCategoryRepository,
            IMediator mediator)
        {
            this.logger                 = logger;
            this.debouncer              = debouncer;
            this.tradeSearchService     = tradeSearchService;
            this.itemStaticDataProvider = itemStaticDataProvider;
            this.gameLanguageProvider   = gameLanguageProvider;
            this.settings               = settings;
            this.itemCategoryRepository = itemCategoryRepository;
            this.mediator               = mediator;

            PropertyChanged += PriceViewModel_PropertyChanged;
        }
Пример #6
0
 public DebouncingMessageHandler(
     IDebouncer debouncer, IMessageHandler handler)
 {
     _debouncer = debouncer;
     _handler   = handler;
 }
Пример #7
0
 public QueuedLoggerWrapper(FormattedLoggerBase logger, IDebouncer debouncer)
 {
     _logger    = logger;
     _debouncer = debouncer;
 }
    public FilterDialogViewModel(
        Func <Task <IEnumerable <IHierarchyNode> > > hierarchyFactory,
        Func <TimeSpan, IDebouncer> debouncerFactory,
        TextFilterFactory textFilterFactory,
        JoinableTaskFactory joinableTaskFactory
        )
    {
        if (debouncerFactory is null)
        {
            throw new ArgumentNullException(nameof(debouncerFactory));
        }

        _hierarchyFactory  = hierarchyFactory ?? throw new ArgumentNullException(nameof(hierarchyFactory));
        _textFilterFactory = textFilterFactory ?? throw new ArgumentNullException(nameof(textFilterFactory));

        _items             = new HierarchyTreeViewItemCollection(Enumerable.Empty <HierarchyTreeViewItem>());
        _searchText        = "";
        _loadingVisibility = Visibility.Visible;
        _loadedVisibility  = Visibility.Collapsed;

        FocusSearchBoxSource = new FocusSource();

        ToggleLoadProjectDependenciesCommand = new DelegateCommand(
            (_) => LoadProjectDependencies   = !LoadProjectDependencies,
            CanAlwaysExecute,
            joinableTaskFactory
            );

        CollapseAllCommand = new DelegateCommand <HierarchyTreeViewItem>(
            CollapseAll,
            CanAlwaysExecute,
            joinableTaskFactory
            );

        ExpandAllCommand = new DelegateCommand <HierarchyTreeViewItem>(
            ExpandAll,
            CanAlwaysExecute,
            joinableTaskFactory
            );

        CheckAllCommand = new DelegateCommand(
            (_) => SetAllChecked(true),
            CanAlwaysExecute,
            joinableTaskFactory
            );

        UncheckAllCommand = new DelegateCommand(
            (_) => SetAllChecked(false),
            CanAlwaysExecute,
            joinableTaskFactory
            );

        ToggleRegularExpressionModeCommand = new DelegateCommand(
            (_) => UseRegularExpressions   = !UseRegularExpressions,
            CanAlwaysExecute,
            joinableTaskFactory
            );

        FocusSearchBoxCommand = new DelegateCommand(
            (_) => FocusSearchBoxSource.RequestFocus(),
            CanAlwaysExecute,
            joinableTaskFactory
            );

        AcceptCommand = new DelegateCommand(
            (_) => AcceptSelection(),
            CanAlwaysExecute,
            joinableTaskFactory
            );

        // Use a `DispatcherTimer` constructor without a callback
        // so that the timer doesn't start immediately. We only
        // want to start the timer when the search text changes.
        _debouncer         = debouncerFactory.Invoke(TimeSpan.FromMilliseconds(500));
        _debouncer.Stable += OnSearchStable;
    }