Пример #1
0
 private void getAnnoncesButton_Click(object sender, EventArgs e)
 {
     _nakabaParser = new NakabaParser();
     SetEvents();
     flowLayoutPanel1.Controls.Clear();
     messageStatusLabel.Text = "Загрузка страницы...";
     _pageLoader.LoadPage(_nakabaParser, urlTextBox.Text);
     AnnonceLoadState = AnnonceLoadStateEnum.Loading;
 }
Пример #2
0
        private void SetEvents()
        {
            //Добавление объявления в контейнер FlowLayoutPanel
            Action <IAnnonceContent> addAnnonce = content =>
            {
                flowLayoutPanel1.Controls.Add(new AnnoncePresenter(content));
                AnnonceLoadState = AnnonceLoadStateEnum.Loading;
            };
            //Отображение процесса загрузки в StatusBar
            Action <int, int> setProgress = (v, max) =>
            {
                ProgressBar1.Maximum    = _nakabaParser.TotalAnnonces;
                ProgressBar1.Value      = _nakabaParser.AnnoncesParced;
                messageStatusLabel.Text = $"Страница {_pageLoader.CurrentPage} из {_pageLoader.TotalPages}. Загружено объявлений {v} из {max}";
            };
            //Изменение состояния загрузки
            Action <AnnonceLoadStateEnum, PageLoadedEventArgs> setState = (s, args) =>
            {
                AnnonceLoadState = s;
            };

            //Событие обработанного объявления.
            _nakabaParser.AnnonceParsed += (s, args) =>
            {
                this.InvokeEx(addAnnonce, args.Content);
                this.InvokeEx(setProgress, args.Number, args.TotalAnnonces);
            };
            //Событие изменение прогресса парсинга
            _nakabaParser.ParcingProgressChanged += (o, args) =>
            {
            };
            //Событие окончания парсинга
            _nakabaParser.ParsingEnded += (sender, args) =>
            {
                this.InvokeEx(new Action(() =>
                {
                    AnnonceLoadState = AnnonceLoadStateEnum.Loaded;
                }), null);
            };
            //Событие окончания загрузки страницы
            _pageLoader.PageLoaded += (sender, args) =>
            {
                this.InvokeEx(setState, AnnonceLoadStateEnum.Loading, args);
            };
        }
Пример #3
0
 /// <summary>
 ///     Устанавливает состояние элементов управления
 /// </summary>
 /// <param name="state">Состояние программы.</param>
 private void SetControlsState(AnnonceLoadStateEnum state)
 {
     getAnnoncesButton.Enabled = state == AnnonceLoadStateEnum.NotLoaded || state == AnnonceLoadStateEnum.Loaded;
     exportButton.Enabled      = state == AnnonceLoadStateEnum.Loaded;
     statusStrip1.Visible      = state == AnnonceLoadStateEnum.Loading;
 }