diff --git a/DEIFR/Form1.Designer.cs b/DEIFR/Form1.Designer.cs index 6032b6e..627e360 100644 --- a/DEIFR/Form1.Designer.cs +++ b/DEIFR/Form1.Designer.cs @@ -37,6 +37,7 @@ this.label4 = new System.Windows.Forms.Label(); this.textBox1 = new System.Windows.Forms.TextBox(); this.progressBar1 = new System.Windows.Forms.ProgressBar(); + this.progressBar2 = new System.Windows.Forms.ProgressBar(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).BeginInit(); this.SuspendLayout(); // @@ -121,7 +122,7 @@ this.textBox1.Multiline = true; this.textBox1.Name = "textBox1"; this.textBox1.ReadOnly = true; - this.textBox1.Size = new System.Drawing.Size(402, 199); + this.textBox1.Size = new System.Drawing.Size(402, 196); this.textBox1.TabIndex = 6; this.textBox1.Text = resources.GetString("textBox1.Text"); // @@ -129,16 +130,26 @@ // this.progressBar1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - this.progressBar1.Location = new System.Drawing.Point(16, 305); + this.progressBar1.Location = new System.Drawing.Point(16, 327); this.progressBar1.Name = "progressBar1"; this.progressBar1.Size = new System.Drawing.Size(402, 23); this.progressBar1.TabIndex = 7; // + // progressBar2 + // + this.progressBar2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.progressBar2.Location = new System.Drawing.Point(16, 298); + this.progressBar2.Name = "progressBar2"; + this.progressBar2.Size = new System.Drawing.Size(402, 23); + this.progressBar2.TabIndex = 8; + // // Form1 // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(440, 340); + this.ClientSize = new System.Drawing.Size(440, 366); + this.Controls.Add(this.progressBar2); this.Controls.Add(this.progressBar1); this.Controls.Add(this.textBox1); this.Controls.Add(this.label4); @@ -165,6 +176,7 @@ private System.Windows.Forms.Label label4; private System.Windows.Forms.TextBox textBox1; private System.Windows.Forms.ProgressBar progressBar1; + private System.Windows.Forms.ProgressBar progressBar2; } } diff --git a/DEIFR/Form1.cs b/DEIFR/Form1.cs index 584b8de..ded0b55 100644 --- a/DEIFR/Form1.cs +++ b/DEIFR/Form1.cs @@ -18,6 +18,7 @@ namespace DEIFR numericUpDown1.Value = Program.MaxImages; checkBox1.Checked = Program.KeepImages; Program.Progress = progressBar1; + Program.AllProgress = progressBar2; } private void checkBox1_CheckedChanged(object sender, EventArgs e) diff --git a/DEIFR/ImageDownloader.cs b/DEIFR/ImageDownloader.cs index b56c7a5..a7ba20d 100644 --- a/DEIFR/ImageDownloader.cs +++ b/DEIFR/ImageDownloader.cs @@ -8,6 +8,7 @@ using System.Linq; using System.Net; using System.Text; using System.Threading.Tasks; +using System.Windows.Forms; using System.Xml.Linq; namespace DEIFR @@ -25,18 +26,44 @@ namespace DEIFR using (WebClient client = new WebClient()) { + client.DownloadProgressChanged += DownloadProgress; + client.DownloadStringCompleted += DownloadedLinks; client.DownloadStringAsync(new Uri("http://www.reddit.com/r/EarthPorn/.json?limit=" + Program.MaxImages)); - JObject obj = JObject.Parse(response); - data = obj["data"]["children"].Children().ToList(); - i = 0; - files = Directory.GetFiles("wallpapers").ToList(); - enumerator = data.GetEnumerator(); } - Task.Run(() => + } + + private static void DownloadedLinks(object sender, DownloadStringCompletedEventArgs e) + { + if (e.Error != null) { - while (!Next()) - ; - }); + MessageBox.Show("Error while getting list from Reddit:\n" + e.Error); + return; + } + JObject obj = JObject.Parse(e.Result); + data = obj["data"]["children"].Children().ToList(); + i = 0; + files = Directory.GetFiles("wallpapers").ToList(); + enumerator = data.GetEnumerator(); + Program.Form.Invoke(new Action(delegate + { + Program.AllProgress.Maximum = data.Count + 1; + Program.AllProgress.Value++; + })); + while (!Next()) + { + Program.Form.Invoke(new Action(delegate + { + Program.AllProgress.Value++; + })); + } + } + + private static void DownloadProgress(object sender, DownloadProgressChangedEventArgs e) + { + Program.Form.Invoke(new Action(delegate + { + Program.Progress.Value = e.ProgressPercentage; + })); } private static void Client_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e) @@ -49,8 +76,22 @@ namespace DEIFR private static void Client_DownloadFileCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e) { + if (e.Error != null) + { + if (MessageBox.Show("Error while downloading imgae:\n" + e.Error, "Error", MessageBoxButtons.RetryCancel) == DialogResult.Cancel) + return; + } + Program.Form.Invoke(new Action(delegate + { + Program.AllProgress.Value++; + })); while (!Next()) - ; + { + Program.Form.Invoke(new Action(delegate + { + Program.AllProgress.Value++; + })); + } } private static bool Next() diff --git a/DEIFR/Program.cs b/DEIFR/Program.cs index 0358bb2..be2fe6e 100644 --- a/DEIFR/Program.cs +++ b/DEIFR/Program.cs @@ -13,6 +13,7 @@ namespace DEIFR public static int MaxImages; public static ProgressBar Progress; public static Form1 Form; + public static ProgressBar AllProgress; /// /// The main entry point for the application.