Exemplo n.º 1
0
 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;
         }
     }
 }
Exemplo n.º 2
0
        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();
        }
Exemplo n.º 3
0
        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}");
        }
Exemplo n.º 4
0
 private void AddArticle(PicElement pe)
 {
     HitomiLog.Instance.AddArticle(pe.Article);
     HitomiLog.Instance.Save();
     downloaded_check.Add(pe);
     HitomiCore.DownloadAndSetImageLink(pe, ImageLinkCallback);
 }
Exemplo n.º 5
0
 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();
     }
 }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        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();
        }
Exemplo n.º 8
0
        public frmGalleryInfo(Form closed, PicElement pic)
        {
            InitializeComponent();

            this.pic    = pic;
            closed_form = closed;
            id          = pic.Article.Magic;
        }
Exemplo n.º 9
0
        /*
         *   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));
        }
Exemplo n.º 10
0
 private void AddPe(PicElement pe)
 {
     this.Post(() => {
         try
         {
             ImagePanel.Controls.Add(pe);
             SortThumbnail();
         } catch { }
     });
 }
Exemplo n.º 11
0
 private void AddPe(PicElement pe)
 {
     try
     {
         if (ImagePanel.InvokeRequired)
         {
             Invoke(new Action <PicElement>(AddPe), new object[] { pe });
         }
         else
         {
             ImagePanel.Controls.Add(pe);
         }
     }
     catch { }
 }
Exemplo n.º 12
0
 public void RemoteDownloadArticle(PicElement pe)
 {
     AddArticle(pe);
     tabControl1.SelectedIndex = 2;
 }
Exemplo n.º 13
0
 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));
         }
     }
 }