public virtual void SelectedSourceChanged(object sender, global::System.ComponentModel.PropertyChangedEventArgs e)
 {
     if (e.PropertyName == "SelectedSource")
     {
         _actualSource = _sources[_sourceSelector.SelectedSource];
     }
 }
 public virtual void OnLoaded(object sender, RoutedEventArgs e)
 {
     _notification                  = ControlsHelper.FindResource <NotificationViewModel>("Notification");
     _sourceSelector                = ControlsHelper.FindResource <HqSourceLibrarySelectorViewModel>("SourceSelector");
     _detailsViewModel              = ControlsHelper.FindResource <DetailsViewModel>("DetailsView");
     _hqStatusView                  = ControlsHelper.FindResource <HqStatusViewModel>("HqStatus");
     _hqStatusView.PropertyChanged += HqStatusChanged;
     _sources      = _sourceManager.GetSources();
     _actualSource = _sources[_sourceSelector.SelectedSource];
     _sourceSelector.PropertyChanged += SelectedSourceChanged;
 }
예제 #3
0
        private void SaveChapter(IHqSourceManager source, DownloadItem downloadItem, Chapter chapter, int chpaterIndex, int totalChapters, string directory)
        {
            lock (_lock5) {
                var startChapterDownload = DateTime.Now;
                var chapterDirectory     = _directoryHelper.CreateHqDirectory(directory, chapter.Title);
                if (chapter.Pages == null || chapter.Pages.Count == 0)
                {
                    var chapterInfo = new Chapter();
                    source.GetInfo(chapter.Link, out chapterInfo);
                    chapter.Pages = chapterInfo.Pages;
                }
                DownloadEventHub.OnDownloadChapterStart(this, new ProgressEventArgs(DateTime.Now, downloadItem, chpaterIndex, totalChapters));

                var pageAtual  = 1;
                var totalPages = chapter.Pages.Count();
                downloadItem.NumPages = totalPages;
                foreach (var page in chapter.Pages)
                {
                    downloadItem.ActualPageIndex = pageAtual;
                    if (_stop)
                    {
                        break;
                    }
                    if (_paused)
                    {
                        DownloadEventHub.OnDownloadPause(this, new ProgressEventArgs(DateTime.Now, downloadItem, pageAtual, totalPages));
                        while (_paused)
                        {
                            ;
                        }
                        DownloadEventHub.OnDownloadResume(this, new ProgressEventArgs(DateTime.Now, downloadItem, pageAtual, totalPages));
                    }

                    DownloadEventHub.OnDownloadProgress(this, new ProgressEventArgs(DateTime.Now, downloadItem, pageAtual, totalPages));

                    try {
                        var pageSource = $"{chapterDirectory}\\{page.Number.ToString().PadLeft(3, '0')}{FormatPage(page.Source)}";
                        if (!File.Exists(pageSource))
                        {
                            ServicePointManager.DefaultConnectionLimit = 1000;
                            using (var webClient = new HttpClient()) {
                                //webClient.Proxy = null;
                                //webClient.DownloadFile(page.Source, pageSource);
                                using (var response = webClient.GetAsync(page.Source).Result) {
                                    var imageByte = response.Content.ReadAsByteArrayAsync().Result;
                                    using (var binaryWriter = new BinaryWriter(new FileStream(pageSource,
                                                                                              FileMode.Append, FileAccess.Write))) {
                                        binaryWriter.Write(imageByte);
                                    }
                                }
                            }
                        }

                        page.Source = pageSource;
                    } catch (Exception e) {
                        DownloadEventHub.OnDownloadError(this, new DownloadErrorEventArgs(null, e, DateTime.Now));
                    }

                    pageAtual++;
                }

                DownloadEventHub.OnDownloadChapterEnd(this, new DownloadEventArgs(downloadItem));
                GC.Collect();
                GC.WaitForPendingFinalizers();
            }
        }