Exemplo n.º 1
0
        [UsedImplicitly]         // by ninject
        public GuiLoader(
            Loader loader,
            CardRepository repo,
            NewsService newsService,
            DownloaderSubsystem downloaderSubsystem,
            DeckListModel deckListModel,
            DeckSearcher deckSearcher,
            DeckIndexUpdateSubsystem deckIndexUpdateSubsystem)
        {
            _loader = loader;
            _repo   = repo;

            _loader.AddAction(newsService.FetchNews);
            _loader.AddAction(downloaderSubsystem.CalculateProgress);
            _loader.AddTask(async() =>
            {
                deckListModel.Load();

                if (deckSearcher.IsIndexSaved)
                {
                    deckSearcher.LoadIndexes();
                }
                else
                {
                    while (!_repo.IsPriceLoadingComplete)
                    {
                        await TaskEx.Delay(100);
                    }

                    deckSearcher.LoadIndexes();
                }
            });
        }
Exemplo n.º 2
0
        [UsedImplicitly]         // by ninject
        public GuiLoader(
            Loader loader,
            CardRepository repo,
            PriceRepository priceRepo,
            NewsService newsService,
            DownloaderSubsystem downloaderSubsystem,
            DeckListModel deckListModel,
            DeckSearcher deckSearcher,
            DeckIndexUpdateSubsystem deckIndexUpdateSubsystem)
        {
            _loader    = loader;
            _repo      = repo;
            _priceRepo = priceRepo;

            _loader.AddTask(newsService.FetchNews);
            _loader.AddTask(token => downloaderSubsystem.CalculateProgress());
            _loader.AddTask(async token =>
            {
                deckListModel.Load();
                if (deckSearcher.IsIndexSaved)
                {
                    deckSearcher.LoadIndexes();
                    await _priceRepo.IsLoadingPriceComplete.Wait(token);
                }
                else
                {
                    await _priceRepo.IsLoadingPriceComplete.Wait(token);
                    deckSearcher.LoadIndexes();
                }

                deckIndexUpdateSubsystem.SubscribeToEvents();
                deckListModel.FillCardNames();
                deckListModel.SubscribeToEvents();
            });
        }
Exemplo n.º 3
0
        public GuiLoader(
            Loader loader,
            NewsService newsService,
            DownloaderSubsystem downloaderSubsystem,
            DeckListModel deckListModel)
        {
            _loader        = loader;
            _deckListModel = deckListModel;

            _loader.Add(newsService.FetchNews);
            _loader.Add(downloaderSubsystem.CalculateProgress);
        }
Exemplo n.º 4
0
        [UsedImplicitly]         // by ninject
        public GuiLoader(
            Loader loader,
            CardRepository repo,
            CardRepository42 repo42,
            CardRepositoryLegacy repoLegacy,
            NewsService newsService,
            DownloaderSubsystem downloaderSubsystem,
            DeckListModel deckListModel,
            DeckListLegacyConverter deckListConverter,
            HistoryLegacyConverter historyConverter,
            DeckSearcher deckSearcher)
        {
            _loader            = loader;
            _repo              = repo;
            _repo42            = repo42;
            _repoLegacy        = repoLegacy;
            _deckListConverter = deckListConverter;
            _historyConverter  = historyConverter;

            _loader.AddAction(newsService.FetchNews);
            _loader.AddAction(downloaderSubsystem.CalculateProgress);
            _loader.AddTask(async() =>
            {
                if (deckListConverter.IsLegacyConversionRequired)
                {
                    while (!deckListConverter.IsConversionCompleted)
                    {
                        await TaskEx.Delay(100);
                    }
                }

                deckListModel.Load();

                if (deckSearcher.IsIndexSaved)
                {
                    deckSearcher.LoadIndexes();
                }
                else
                {
                    while (!_repo.IsPriceLoadingComplete)
                    {
                        await TaskEx.Delay(100);
                    }

                    deckSearcher.LoadIndexes();
                }
            });
        }
Exemplo n.º 5
0
        public FormRoot(Func <FormMain> formMainFactory,
                        DownloaderSubsystem downloaderSubsystem,
                        NewsService newsService,
                        CardSuggestModel cardSuggestModel,
                        DeckSuggestModel deckSuggestModel,
                        [Named(GuiModule.DefaultTooltipScope)] TooltipController tooltipController,
                        [Named(GuiModule.QuickFilterTooltipScope)] TooltipController quickFilterTooltipController,
                        CardRepository repo,
                        DeckSerializationSubsystem serialization,
                        UiModel uiModel,
                        ColorSchemeEditor colorSchemeEditor,
                        App app,
                        AppSourceConfig appSourceConfig,
                        UiConfigRepository uiConfigRepository)
            : this()
        {
            TooltipController            = tooltipController;
            QuickFilterTooltipController = quickFilterTooltipController;

            UiModel = uiModel;

            DeckSuggestModel = deckSuggestModel;

            CardSuggestModel    = cardSuggestModel;
            CardSuggestModel.Ui = UiModel;

            _app                = app;
            _appSourceConfig    = appSourceConfig;
            _uiConfigRepository = uiConfigRepository;
            _repo               = repo;
            _serialization      = serialization;
            _colorSchemeEditor  = colorSchemeEditor;

            _formMainFactory     = formMainFactory;
            _downloaderSubsystem = downloaderSubsystem;
            _newsService         = newsService;

            KeyPreview      = true;
            PreviewKeyDown += previewKeyDown;
            KeyDown        += formKeyDown;

            QueryHandleDrag += queryHandleDrag;
            Load            += load;
            Closed          += closed;

            _tabs.AllowDrop              = true;
            _tabs.TabAdded              += tabCreated;
            _tabs.TabRemoving           += tabClosing;
            _tabs.TabRemoved            += tabClosed;
            _tabs.SelectedIndexChanging += selectedTabChanging;
            _tabs.SelectedIndexChanged  += selectedTabChanged;
            _tabs.DragOver              += tabsDragOver;

            _tabs.MouseEnter += tabMouseEnter;
            _tabs.MouseEnter += tabMouseLeave;
            _tabs.MouseMove  += tabMouseMove;

            MessageFilter.Instance.GlobalMouseMove += globalMouseMove;
            FormClosing += formClosing;

            _newsService.NewsFetched   += newsFetched;
            _newsService.NewsDisplayed += newsDisplayed;
            _downloaderSubsystem.ProgressCalculated += downloaderProgressCalculated;

            setupExternalLinks();
            setupButtonClicks();
            setupLanguageMenu();

            setupTooltips();

            foreach (var button in _deckButtons)
            {
                button.Enabled = false;
            }

            Text = $"Mtgdb.Gui v{AppDir.GetVersion()}";

            scale();
            updateFormBorderColor();
            ColorSchemeController.SystemColorsChanging += updateFormBorderColor;

            _menuColors.BackColor = SystemColors.Control;
            _menuColors.ForeColor = SystemColors.ControlText;

            if (components == null)
            {
                components = new Container();
            }

            components.Add(new UiConfigMenuSubsystem(
                               _menuUiScale,
                               _menuUiSmallImageQuality,
                               _menuUiSuggestDownloadMissingImages,
                               _menuUiImagesCacheCapacity,
                               _menuUiUndoDepth,
                               _menuUiApplySearchBar,
                               _checkboxAllPanels,
                               _checkboxTopPanel, _checkboxRightPanel, _checkboxSearchBar, _repo, uiConfigRepository));

            _dropdownOpenDeck.BeforeShow    = () => setMenuMode(_dropdownOpenDeck);
            _dropdownSaveDeck.BeforeShow    = () => setMenuMode(_dropdownSaveDeck);
            _dropdownColorScheme.BeforeShow = updateMenuColors;

            _ctsLifetime = new CancellationTokenSource();
            _ctsLifetime.Token.When(_repo.IsLoadingComplete).Run(repositoryLoaded);
        }
Exemplo n.º 6
0
        public FormRoot(Func <FormMain> formMainFactory,
                        DownloaderSubsystem downloaderSubsystem,
                        NewsService newsService,
                        CardSuggestModel cardSuggestModel,
                        DeckSuggestModel deckSuggestModel,
                        TooltipController tooltipController,
                        CardRepository repo,
                        DeckSerializationSubsystem serialization,
                        UiModel uiModel,
                        Application application)
            : this()
        {
            TooltipController = tooltipController;
            UiModel           = uiModel;

            DeckSuggestModel = deckSuggestModel;

            CardSuggestModel    = cardSuggestModel;
            CardSuggestModel.Ui = UiModel;

            _application         = application;
            _repo                = repo;
            _serialization       = serialization;
            _buttonSubsystem     = new ButtonSubsystem();
            _formMainFactory     = formMainFactory;
            _downloaderSubsystem = downloaderSubsystem;
            _newsService         = newsService;

            KeyPreview      = true;
            PreviewKeyDown += previewKeyDown;
            KeyDown        += formKeyDown;

            _repo.LoadingComplete += repositoryLoaded;

            QueryHandleDrag += queryHandleDrag;
            Load            += load;
            Closed          += closed;

            _tabs.AllowDrop              = true;
            _tabs.AddNewTabsToTheLeft    = true;
            _tabs.TabAdded              += tabCreated;
            _tabs.TabRemoving           += tabClosing;
            _tabs.TabRemoved            += tabClosed;
            _tabs.SelectedIndexChanging += selectedTabChanging;
            _tabs.SelectedIndexChanged  += selectedTabChanged;
            _tabs.DragOver              += tabsDragOver;
            _tabs.MouseMove             += tabMouseMove;

            FormClosing += formClosing;

            _newsService.NewsFetched   += newsFetched;
            _newsService.NewsDisplayed += newsDisplayed;
            _downloaderSubsystem.ProgressCalculated += downloaderProgressCalculated;

            setupButtons();

            setupExternalLinks();
            setupButtonClicks();
            setupLanguageMenu();
            setupTooltips();

            if (!DesignMode)
            {
                SnapTo(Direction.North, default(Point));
            }

            foreach (var button in _deckButtons)
            {
                button.Enabled = false;
            }

            Text = $"Mtgdb.Gui v{AppDir.GetVersion()}";

            WindowState = FormWindowState.Minimized;
        }