public void setIcon() { try { Icon icon = null; string[] fileNams = key.Split('.'); string fileType = null; if (fileNams.Length > 1) { fileType = "." + fileNams[fileNams.Length - 1]; if (iconsInfo[fileType] != null) { string fileAndParam = (iconsInfo[fileType]).ToString(); icon = RegisteredFileType.ExtractIconFromFile(fileAndParam, true); } // switch (fileType) // { // case ".rar": // IconUri = new Uri("pack://application:,,,/Images/rar.png"); // break; // case ".avi": // IconUri = new Uri("pack://application:,,,/Images/avi.png"); // break; // case ".dll": // IconUri = new Uri("pack://application:,,,/Images/dll.png"); // break; // case ".dmg": // IconUri = new Uri("pack://application:,,,/Images/dmg.png"); // break; // case ".exe": // IconUri = new Uri("pack://application:,,,/Images/exe.png"); // break; // case ".flv": // IconUri = new Uri("pack://application:,,,/Images/flv.png"); // break; // case ".gif": // IconUri = new Uri("pack://application:,,,/Images/gif.png"); // break; // case ".mov": // IconUri = new Uri("pack://application:,,,/Images/mov.png"); // break; // case ".mpg": // IconUri = new Uri("pack://application:,,,/Images/mpg.png"); // break; // case ".pdf": // IconUri = new Uri("pack://application:,,,/Images/pdf.png"); // break; // case ".png": // IconUri = new Uri("pack://application:,,,/Images/png.png"); // break; // case ".ppt": // case ".pptx": // IconUri = new Uri("pack://application:,,,/Images/powerpoint.png"); // break; // case ".doc": // case ".docx": // IconUri = new Uri("pack://application:,,,/Images/word.png"); // break; // case ".xls": // case ".xlsx": // IconUri = new Uri("pack://application:,,,/Images/excel.png"); // break; // case ".psd": // IconUri = new Uri("pack://application:,,,/Images/psd.png"); // break; // case ".scv": // IconUri = new Uri("pack://application:,,,/Images/scv.png"); // break; // case ".wma": // IconUri = new Uri("pack://application:,,,/Images/wma.png"); // break; // case ".zip": // IconUri = new Uri("pack://application:,,,/Images/zip.png"); // break; // case ".jpg": // IconUri = new Uri("pack://application:,,,/Images/jpg.png"); // break; //} } if (icon != null) { IconUri = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap( icon.ToBitmap().GetHbitmap(), IntPtr.Zero, System.Windows.Int32Rect.Empty, BitmapSizeOptions.FromWidthAndHeight(300, 300)); // IconUri = ScreenCapture.UriSource; } else //if the icon is invalid, show an error image. { IconUri = new Uri("pack://application:,,,/Images/file.png"); } //if (IconUri == null) // IconUri = new Uri("pack://application:,,,/Images/file.png"); } catch (Exception ex) { } }
private void LoadRemoteDirectory(ListCloudDirectoryResult result) { try { this.ListView_RemoteFiles .InvokeSafe((lv, state) => { lv.Items.Clear(); if (state.Directory.IsRootDirectory == false) { // parent directory var newLvi = new ListViewItem(); newLvi.Tag = state.Directory; newLvi.Text = ".."; lv.Items.Add(newLvi); } // sub directories foreach (var dir in state.Directory .Directories .ToEnumerableSafe(ofType: true) .OrderBy(d => d.Name, StringComparer.InvariantCultureIgnoreCase)) { var newLvi = new ListViewItem(); newLvi.ImageIndex = 1; newLvi.Tag = dir; newLvi.Text = dir.Name ?? string.Empty; newLvi.SubItems.Add("<DIR>"); // size if (dir.WriteTime.HasValue) { newLvi.SubItems.Add(dir.WriteTime.Value.ToLocalTime().ToString("yyyy-MM-dd HH:mm:ss")); } lv.Items.Add(newLvi); } // files var fileItems = new List <ListViewItem>(); foreach (var file in state.Directory .Files .ToEnumerableSafe(ofType: true) .OrderBy(d => d.Name, StringComparer.InvariantCultureIgnoreCase)) { var newLvi = new ListViewItem(); newLvi.ImageIndex = 0; newLvi.Tag = file; newLvi.Text = file.Name ?? string.Empty; if (file.Size.HasValue) { newLvi.SubItems.Add(MakeFileSizeHumanReadable(file.Size)); } if (file.WriteTime.HasValue) { newLvi.SubItems.Add(file.WriteTime.Value.ToLocalTime().ToString("yyyy-MM-dd HH:mm:ss")); } lv.Items.Add(newLvi); fileItems.Add(newLvi); } // collect available file extensions var extensions = fileItems.Select(i => (CloudFile)i.Tag) .Select(f => { try { return(Path.GetExtension(f.Name).ToLower().Trim()); } catch { return(null); } }).Where(e => string.IsNullOrWhiteSpace(e) == false) .Distinct(); // remove old icons const int MIN_IMAGE_COUNT = 2; while (state.ImageList.Images.Count > MIN_IMAGE_COUNT) { using (var img = state.ImageList.Images[MIN_IMAGE_COUNT]) { state.ImageList.Images.RemoveAt(MIN_IMAGE_COUNT); } } // load and set icons for entries var allIcons = RegisteredFileType.GetFileTypeAndIcon(); foreach (var ext in extensions) { try { var iconFile = (string)allIcons[ext]; if (string.IsNullOrWhiteSpace(iconFile) == false) { var icon = RegisteredFileType.ExtractIconFromFile(iconFile, false); if (icon != null) { var matchingItems = fileItems.Where(i => { var f = (CloudFile)i.Tag; return((f.Name ?? string.Empty).ToLower() .Trim() .EndsWith(ext)); }); state.ImageList.Images.Add(icon); foreach (var mi in matchingItems) { mi.ImageIndex = state.ImageList.Images.Count - 1; } } } } catch { // ignore here } } }, new { Directory = result, ImageList = this.ImageList_RemoteFiles, }); } catch (Exception ex) { this.ShowErrorMessage(ex); } }