Ejemplo n.º 1
0
 /// <summary>
 /// Конструктор класса
 /// </summary>
 public DownloadProgressInfo()
 {
     //Проставляем дефолтные значения
     finalFlag           = false;
     countPages          = currentCurr = currentFull = maxCurr = maxFull = 0;
     approximateLoadTime = -1;
     step = DownloadStep.Steps.Сбор_ссылок;
 }
Ejemplo n.º 2
0
        /// <summary>
        /// Конструктор класса
        /// </summary>
        /// <param name="pl">Класс загрузки попапов</param>
        public mainWorker(PopupLoader pl)
        {
            //Записываем ссылку на класс загрузки попапов
            this.pl = pl;
            //Инициализируем сканер буфера обмена
            cs = new ClipboardScanner();
            //ИНициализируем класс сохранения/загрузки
            xw = new XmlWorker();
            //Инициализиурем список манги для загрузки
            dList = new DownloadList();
            //Ставим шаг в режим сбора ссылок
            workStep = DownloadStep.Steps.Сбор_ссылок;
            //Ставим время загрузки страницы в дефолтное
            averageLoadTime     = defaultAverageLoadTime;
            averageLoadInfoTime = defaultAverageLoadInfoTime;
            //Добавляем обработчик события нахождения ссылки в буфере обмена
            cs.findUrl += Cs_findUrl;

            //Запускаем загрузку манги
            loadManga();
            //Запускаем поиск ссылок
            cs.start();
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Загружаем информацию о манге
        /// </summary>
        private void downloadManga()
        {
            //Сбрасываем счётчик повторных попыток загрузки
            twinWork = -1;

            do
            {
                //Если нужно проводить автосохранение перед проверкой статусов
                if (Program.settingsStorage.settings.checkStatusesAutosave)
                {
                    //Сохраняем изменения
                    saveManga();
                }
                //Переходим к первому шагу загрузки
                workStep = DownloadStep.Steps.Проверка_статусов_загрузки;
                //Обновляем инфу на форме
                updateDownloadExec(-2);
                //Проверяем все статусы загрузки
                checkDownloadStatuses();


                //Если нужно проводить автосохранение перед загрузкой информации
                if (Program.settingsStorage.settings.loadInfoAutosave)
                {
                    //Сохраняем изменения
                    saveManga();
                }
                //Переходим к первому шагу загрузки
                workStep = DownloadStep.Steps.Загрузка_информации_о_манге;
                //Обновляем инфу на форме
                updateDownloadExec(-2);
                //Загружаем информацию о манге
                loadMangaInfo();

                //Если нужно проводить автосохранение перед загрузкой страниц
                if (Program.settingsStorage.settings.loadPagesAutosave)
                {
                    //Сохраняем изменения
                    saveManga();
                }
                //Переходим ко второму шагу загрузки
                workStep = DownloadStep.Steps.Загрузка_страниц_манги;
                //Обновляем инфу на форме
                updateDownloadExec(-2);
                //Загружаем страницы манги
                downloadPages();

                //Сохраняем изменения
                saveManga();

                //Если загрузка была успешно завершена
                //И лимиты в порядке
                if (!limites || dList.checkComplete())
                {
                    //Выходим из цикла
                    break;
                }

                //Переходим к следующей попытке
                twinWork++;
                //Спим 10 секунд, между попытками загрузки
                Thread.Sleep(1000 * 10);
                //Идём, пока у нас есть попытки
            } while (twinWork < Program.settingsStorage.settings.twinLoadCount);

            //Если с лимитами всё ок
            if (limites)
            {
                //Возвращаемся к сбору ссылок
                workStep = DownloadStep.Steps.Сбор_ссылок;
                //Обновляем инфу на форме, указав что работа была завершена
                updateDownloadExec(-1, true);
                //Если стоит флаг открытия папки загрузки
                if (Program.settingsStorage.settings.openDownloadFolder)
                {
                    //Открываем папку, куда всё это грузили
                    openDownloadDirectory();
                }
            }
            //Если ошибка по лимитам
            else
            {
                //Обновляем форму
                updateDownloadExec(-1);
                //Вызываем ивент ошибки
                onLimiteError?.Invoke(null, null);
            }
        }