Exemple #1
0
        private void currentFilesWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            List <FileInfo> toSearch = new List <FileInfo>(OutputPath.GetFiles());

            foreach (string dir in otherDirs)
            {
                DirectoryInfo di = new DirectoryInfo(dir);
                foreach (FileInfo fi in di.GetFiles())
                {
                    toSearch.Add(fi);
                }
            }
            foreach (FileInfo fi in toSearch)
            {
                try
                {
                    if (currentFilesWorker.CancellationPending == false)
                    {
                        if (fi.Extension.Contains("ini") == false && fi.Extension.ToLower().Contains("tmp") == false)
                        {
                            if (viewType != "LargeIcon")
                            {
                                currentFilesWorker.ReportProgress(0, null);
                                break;
                            }
                            if (VALID_EXTENSIONS.Contains(fi.Extension.ToLower()))
                            {
                                Image img = Image.FromFile(fi.FullName);

                                int    thumbWidth  = THUMB_SIZE;
                                int    thumbHeight = THUMB_SIZE;
                                double aspectRatio = (double)img.Width / (double)img.Height;

                                if (img.Height > img.Width)
                                {
                                    thumbWidth = (int)((double)thumbHeight * aspectRatio);
                                }
                                else
                                {
                                    thumbHeight = (int)((double)thumbWidth / aspectRatio);
                                }
                                Image    thumb = new Bitmap(THUMB_SIZE, THUMB_SIZE); //img.GetThumbnailImage(thumbWidth, thumbHeight, ThumbnailCallback, System.IntPtr.Zero);
                                Graphics g     = Graphics.FromImage(thumb);
                                g.DrawImage(img, (THUMB_SIZE - thumbWidth) / 2, THUMB_SIZE - thumbHeight, thumbWidth, thumbHeight);
                                g.Dispose();
                                img.Dispose();
                                GC.Collect();
                                thumb.Tag = fi.Name;
                                currentFilesWorker.ReportProgress(0, thumb);
                            }
                            else
                            {
                                FileInfo fi2 = new FileInfo("temp" + fi.Extension);
                                if (fi2.Exists == false)
                                {
                                    fi2.Create();
                                }
                                Image img   = System.Drawing.Icon.ExtractAssociatedIcon(fi2.FullName).ToBitmap();
                                Image thumb = img.GetThumbnailImage(THUMB_SIZE, THUMB_SIZE, ThumbnailCallback, System.IntPtr.Zero);
                                img.Dispose();

                                try
                                {
                                    fi2.Delete();
                                }
                                catch { }
                                GC.Collect();

                                thumb.Tag = fi.Name;
                                currentFilesWorker.ReportProgress(0, thumb);
                            }
                        }
                    }
                    else
                    {
                        return;
                    }
                }
                catch { }
            }
        }
Exemple #2
0
        private void InitListBox()
        {
            if (currentFilesWorker.IsBusy == false)
            {
                //    listView1.Items.Clear();
                //    foreach (Image i in currentPhotoImageList.Images)
                //    {

                //        i.Dispose();
                //    }

                //    listView1.LargeImageList = null;
                //    currentPhotoImageList.Images.Clear();
                //    currentPhotoImageList = null;
                //    GC.Collect();

                foreach (FileInfo fi in OutputPath.GetFiles())
                {
                    try
                    {
                        if (fi.Extension.Contains("ini") == false && fi.Extension.ToLower().Contains("tmp") == false)
                        {
                            ListViewItem lvi = new ListViewItem();
                            lvi.Text = fi.Name;
                            lvi.Tag  = fi;
                            lvi.SubItems.Add(fi.Length.ToString());
                            lvi.SubItems.Add(fi.LastWriteTime.ToString());
                            listView1.Items.Add(lvi);
                        }
                    }
                    catch (Exception e)
                    {
                        Logger.Instance.WriteToLog(e.ToString());
                    }
                }
                foreach (string dir in otherDirs)
                {
                    DirectoryInfo di = new DirectoryInfo(dir);
                    foreach (FileInfo fi in di.GetFiles())
                    {
                        try
                        {
                            if (fi.Extension.Contains("ini") == false && fi.Extension.ToLower().Contains("tmp") == false)
                            {
                                ListViewItem lvi = new ListViewItem();
                                lvi.Text = fi.Name;
                                lvi.Tag  = fi;
                                lvi.SubItems.Add(fi.Length.ToString());
                                lvi.SubItems.Add(fi.LastWriteTime.ToString());
                                listView1.Items.Add(lvi);
                            }
                        }

                        catch (Exception e)
                        {
                            Logger.Instance.WriteToLog(e.ToString());
                        }
                    }
                }

                currentFilesWorker.RunWorkerAsync();
            }
        }