private void lvMyTagRank_SelectedIndexChanged(object sender, EventArgs e) { if (lvMyTagRank.SelectedItems.Count > 0) { string[] tags = lvMyTagRank.SelectedItems.OfType <ListViewItem>().Select(x => x.SubItems[0].Text).ToArray(); ImagePanel.SuspendLayout(); for (int i = 0; i < ImagePanel.Controls.Count; i++) { PicElement pe = ImagePanel.Controls[i] as PicElement; if (tags.All(x => pe.Article.Tags != null && pe.Article.Tags.Contains(x))) { pe.Selected = true; } else { pe.Selected = false; } } ImagePanel.ResumeLayout(); } else { for (int i = 0; i < ImagePanel.Controls.Count; i++) { (ImagePanel.Controls[i] as PicElement).Selected = false; } } }
private void CallbackThumbnail(object sender, AsyncCompletedEventArgs e) { PicElement pe = new PicElement(this); Tuple <string, HitomiArticle> tuple = (Tuple <string, HitomiArticle>)e.UserState; pe.Article = tuple.Item2; pe.Label = tuple.Item2.Title; pe.Dock = DockStyle.Bottom; pe.SetImageFromAddress(tuple.Item1, 150, 200); pe.Font = this.Font; lock (stayed) { // 중복되는 항목 처리 foreach (var a in stayed) { if (a.Article.Title == pe.Article.Title) { pe.Article.Title += " " + pe.Article.Magic; break; } } stayed.Add(pe); } AddPe(pe); IncrementProgressBarValue(); Application.DoEvents(); }
private void CallbackThumbnail(object sender, AsyncCompletedEventArgs e) { PicElement pe = new PicElement(this); Tuple <string, HitomiArticle> tuple = (Tuple <string, HitomiArticle>)e.UserState; pe.Article = tuple.Item2; pe.Label = tuple.Item2.Title; pe.Dock = DockStyle.Bottom; pe.SetImageFromAddress(tuple.Item1, 150, 200); if (closed) { pe.Dispose(); LogEssential.Instance.PushLog(() => $"Unexpected Disposed! {HitomiDef.HitomiThumbnail + tuple.Item2.Thumbnail} {tuple.Item1}"); return; } pe.Font = this.Font; lock (stayed) { // 중복되는 항목 처리 foreach (var a in stayed) { if (a.Article.Title == pe.Article.Title) { pe.Article.Title += " " + pe.Article.Magic; pe.Label += " " + pe.Article.Magic; break; } } stayed.Add(pe); } AddPe(pe); IncrementProgressBarValue(); Application.DoEvents(); LogEssential.Instance.PushLog(() => $"Downloaded image! {HitomiDef.HitomiThumbnail + tuple.Item2.Thumbnail} {tuple.Item1}"); }
private void AddArticle(PicElement pe) { HitomiLog.Instance.AddArticle(pe.Article); HitomiLog.Instance.Save(); downloaded_check.Add(pe); HitomiCore.DownloadAndSetImageLink(pe, ImageLinkCallback); }
private void ImageLinkCallback(PicElement pe) { lock (lvStandBy) { Directory.CreateDirectory(MakeDownloadDirectory(pe.Article)); for (int i = 0; i < pe.Article.ImagesLink.Count; i++) { ++count; lvStandBy.Items.Add(new ListViewItem(new string[] { count.ToString(), pe.Label, HitomiDef.GetDownloadImageAddress(pe.Article.Magic, pe.Article.ImagesLink[i]) })); download_queue.Add(HitomiDef.GetDownloadImageAddress(pe.Article.Magic, pe.Article.ImagesLink[i]), Path.Combine( MakeDownloadDirectory(pe.Article), pe.Article.ImagesLink[i]), count); download_check.Add(pe.Label); IncrementProgressBarMax(); } HitomiJson hitomi_json = new HitomiJson(MakeDownloadDirectory(pe.Article)); hitomi_json.SetModelFromArticle(pe.Article); hitomi_json.Save(); } }
public void RemoteDownloadArticleFromId(string id) { tabControl1.SelectedIndex = 2; HitomiMetadata metadata = new HitomiMetadata(); foreach (var v in hitomi_data.metadata_collection) { if (v.ID.ToString() == id) { metadata = v; break; } } PicElement fake_pe = new PicElement(this); HitomiArticle article = new HitomiArticle(); article.Magic = metadata.ID.ToString(); article.Title = metadata.Name; if (metadata.Artists != null) { article.Artists = metadata.Artists[0]; } if (metadata.Tags != null) { article.Tags = metadata.Tags.ToList(); } fake_pe.Article = article; fake_pe.Label = metadata.Name; RemoteDownloadArticle(fake_pe); }
private void CallbackThumbnail(object sender, AsyncCompletedEventArgs e) { PicElement pe = new PicElement(this); Tuple <string, HitomiArticle> tuple = (Tuple <string, HitomiArticle>)e.UserState; pe.Article = tuple.Item2; pe.Label = tuple.Item2.Title; pe.Dock = DockStyle.Bottom; pe.SetImageFromAddress(tuple.Item1, 150, 200); pe.SetToolTip(tooltip); pe.SetContextMenuStrip(ctxMenu); pe.Font = this.Font; pe.MouseEnter += Thumbnail_MouseEnter; pe.MouseLeave += Thumbnail_MouseLeave; pe.MouseClick += Thunbnail_MouseClick; pe.MouseDoubleClick += Thunbnail_MouseDoubleClick; lock (stayed) { // 중복되는 항목 처리 foreach (var a in stayed) { if (a.Article.Title == pe.Article.Title) { pe.Article.Title += " " + pe.Article.Magic; break; } } stayed.Add(pe); } lock (ImagePanel) ImagePanel.Controls.Add(pe); Application.DoEvents(); }
public frmGalleryInfo(Form closed, PicElement pic) { InitializeComponent(); this.pic = pic; closed_form = closed; id = pic.Article.Magic; }
/* * 1. DownloadAndSetImageLink * 2. DownloadArticle */ static public void DownloadAndSetImageLink(PicElement pe, CallBack callback) { WebClient wc = new WebClient(); wc.Encoding = Encoding.UTF8; wc.DownloadStringCompleted += wc_dasil; wc.DownloadStringAsync(new Uri(HitomiDef.HitomiGalleryAddress + pe.Article.Magic + ".html"), new Tuple <PicElement, CallBack> (pe, callback)); }
private void AddPe(PicElement pe) { this.Post(() => { try { ImagePanel.Controls.Add(pe); SortThumbnail(); } catch { } }); }
private void AddPe(PicElement pe) { try { if (ImagePanel.InvokeRequired) { Invoke(new Action <PicElement>(AddPe), new object[] { pe }); } else { ImagePanel.Controls.Add(pe); } } catch { } }
public void RemoteDownloadArticle(PicElement pe) { AddArticle(pe); tabControl1.SelectedIndex = 2; }
static public void DownloadArticle(HitomiArticle ha, string folder, CallBack2 callback, PicElement pe, int v1, int v2) { Directory.CreateDirectory(folder); for (int i = v1; i < v2; i++) { WebClient wc = new WebClient(); wc.Headers["Accept-Encoding"] = "application/x-gzip"; wc.Encoding = Encoding.UTF8; wc.DownloadFileCompleted += wc_da; if (ha.TagsKor == false) { wc.DownloadFileAsync(new Uri(HitomiDef.GetDownloadImageAddress(ha.Magic, ha.ImagesLink[i])), Path.Combine(folder, ha.ImagesLink[i]), new Tuple <HitomiArticle, int, CallBack2, PicElement>(ha, i, callback, pe)); } } }