private void ScanThread(BLThread threadToScan, BackgroundWorker bw) { if (threadToScan.LoadedPages == null) { threadToScan.LoadedPages = new List <BLPage>(); threadToScan.OpeningPost = new BLPage(threadToScan.OpeningPostUrl); threadToScan.LoadedPages.Add(threadToScan.OpeningPost); } var lastPage = threadToScan.LoadedPages.Last(); lastPage.Load(); currentPage = lastPage.CurrentPageNumber; var nextPageUrl = lastPage.GetNextPageUrl(); bw.ReportProgress(currentPage, lastPage.Images.Count); while (!bw.CancellationPending && !string.IsNullOrEmpty(nextPageUrl)) { var nextPage = threadToScan.RemoveQuotesAndRepeats(new BLPage(nextPageUrl)); threadToScan.LoadedPages.Add(nextPage); currentPage = nextPage.CurrentPageNumber; nextPageUrl = nextPage.GetNextPageUrl(); bw.ReportProgress(currentPage, nextPage.Images.Count); } }
public ThreadScan(BLThread threadToScan) { InitializeComponent(); lblScanningThread.Text = "Scanning thread: " + threadToScan.ThreadName; var maxPage = threadToScan.OpeningPost.GetPageMax(); progressBar1.Minimum = 0; progressBar1.Maximum = maxPage; bwScanner = new BackgroundWorker { WorkerReportsProgress = true, WorkerSupportsCancellation = true }; bwScanner.DoWork += (sender, args) => ScanThread(threadToScan, bwScanner); bwScanner.ProgressChanged += (sender, args) => { if (args.ProgressPercentage != -1) { progressBar1.Value = args.ProgressPercentage > progressBar1.Maximum ? progressBar1.Maximum : args.ProgressPercentage; } lblThreadScanProgress.Text = string.Format(ScannedPagesFormat, args.ProgressPercentage, maxPage, (int)args.UserState); }; bwScanner.RunWorkerCompleted += (sender, args) => { MessageBox.Show("Scan completed."); DialogResult = bwScanner.CancellationPending ? DialogResult.Abort : DialogResult.OK; threadToScan.ImagesAmount = threadToScan.LoadedPages.Sum(lp => lp.Images.Count); button1.Enabled = true; Close(); }; }
public DownloadForm(BLThread thread) { InitializeComponent(); _myThread = thread; _postsPerPage = DefaultPostsPerPage; _pageMax = thread.OpeningPost.GetPageMax(); numFromPage.Minimum = 1; numFromPage.Maximum = _pageMax; numFromPage.Value = 1; numToPage.Minimum = 1; numToPage.Maximum = _pageMax; numToPage.Value = _pageMax; cmbPostsPerPage.SelectedIndex = 1; }
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) { if (e.RowIndex < 0) { return; } _selectedThread = _selectedForum.ForumThreads[e.RowIndex]; if (_selectedThread.OpeningPost == null) { _selectedThread.OpeningPost = new BLPage(_selectedThread.OpeningPostUrl); _selectedThread.LoadedPages.Add(_selectedThread.OpeningPost); } pictureBox1.Image = null; _currentPageIndex = 0; InitThreadDetails(); UpdateListAsync(); }