/// <summary> /// 创建视图模型项 /// </summary> /// <param name="item"></param> /// <returns></returns> private DeviceSyncItem CreateSyncItemViewModel(DeviceSyncItem item) { var viewItem = new DeviceSyncItem { NameView = item.NameView, FolderView = item.FolderView, SourceView = item.SourceView }; if (null != item.ImgByte) { try { //有真实预览图则显示预览图 viewItem.BitImg = ImageUtil.GetBitmapImage(item.ImgByte); item.ImgByte = null; return(viewItem); } catch (Exception) { } } //没有预览图/获取失败则根据文件类型显示默认图标 switch (item.ContentType) { case SyncContentType.AUDIO: viewItem.BitImg = ApplicationConstant.GetDefaultAudioIcon(); break; case SyncContentType.IMAGE: viewItem.BitImg = ApplicationConstant.GetDefaultImageIcon(); break; case SyncContentType.VIDEO: viewItem.BitImg = ApplicationConstant.GetDefaultVideoIcon(); break; case SyncContentType.OTHER: viewItem.BitImg = ApplicationConstant.GetDefaultFileIcon(); break; } return(viewItem); }
/// <summary> /// 创建同步项 /// </summary> /// <param name="fileName">文件名称</param> /// <param name="folderPath">文件路径</param> /// <param name="source">源 1 PC, 2 移动设备</param> /// <param name="device">设备</param> /// <param name="driverName">设备驱动</param> /// <returns></returns> private DeviceSyncItem CreateSyncItem(string fileName, string folderPath, SyncDeviceType source, MediaDevice device, string driverName) { //判断文件是否存在于设备 var item = new DeviceSyncItem() { NameView = fileName, SourceView = source, FolderView = folderPath, }; var mediaType = FileUtil.GetMediaTypeByName(fileName); item.ContentType = mediaType; if (mediaType == SyncContentType.IMAGE || mediaType == SyncContentType.VIDEO) { if (source == SyncDeviceType.PHONE) { var fileInfo = device.GetFileInfo(Path.Combine(driverName, folderPath, fileName)); var imgByte = GetMediaFileThumbnail(fileInfo); if (null != imgByte) { item.ImgByte = imgByte; } } else { var imgByte = ImageUtil.CreateThumbnail(Path.Combine(folderPath, fileName), 100, 100); item.ImgByte = ImageUtil.ImageToByteArray(imgByte); } } if (mediaType == SyncContentType.AUDIO) { //PC文件直接读取 if (source == SyncDeviceType.PC) { item.ImgByte = FileUtil.GetAudioFileAlbum(Path.Combine(folderPath, fileName)); } else { //手机文件, 先复制到临时文件夹, 再读取 var winTempFolder = Path.GetTempPath(); if (!string.IsNullOrEmpty(winTempFolder)) { var tempFullPath = Path.Combine(winTempFolder, fileName); if (System.IO.File.Exists(tempFullPath)) { //已存在则直接读取 item.ImgByte = FileUtil.GetAudioFileAlbum(tempFullPath); } else { //不存在则复制 var fileInfo = device.GetFileInfo(Path.Combine(driverName, folderPath, fileName)); fileInfo.CopyTo(tempFullPath); item.ImgByte = FileUtil.GetAudioFileAlbum(tempFullPath); } } } } return(item); }