private async Task <FolderDesc> FolderOfType(SpriteTextureType type) { FolderDesc res; if (folders.TryGetValue(type, out res)) { return(res); } var rootThis = await GetThisRoot(); var typeFolder = await rootThis.CreateFolderAsync(type.ToString(), CreationCollisionOption.OpenIfExists); if (folders.TryGetValue(type, out res)) { return(res); } res = new FolderDesc() { folder = typeFolder, lastIndex = 0 }; folders.Add(type, res); return(res); }
public void EnumerateTopFolders(string path, Action <FolderDesc> found, bool includeRoot = false) { try { var folders = includeRoot ? new[] { path } : GetSubFolders(path).ToArray(); foreach (var folder in folders) { if (!IsSupportedFolder(folder)) { continue; } var di = new DirectoryInfo(folder); var data = new FolderDesc { HasFiles = EnumerateTopFiles(folder, AnyPattern).Any(), HasFolders = GetSubFolders(folder).Any(), FullPath = di.FullName, Name = di.Name }; found(data); } } catch (UnauthorizedAccessException) { // ignored } catch (DirectoryNotFoundException) { // ignored } }
public HomeDetailModel(PicNode node, FolderDesc desc) { if (node == null) throw new ArgumentException("文件夹节点不能为空!"); this.PicNode = node; this.FolderDesc = desc; // 核心代码如下:根据文件的路径查找文件信息 DirectoryInfo dir = new DirectoryInfo(FileConfiguration.FullPath + this.PicNode.Path.Replace("/", @"\")); if (!dir.Exists) dir.Create(); // 而后将不在文件夹和文件都剔除 this.FileInfos = dir.GetFiles("*.*"); DirectoryInfo tmp = new DirectoryInfo(FileConfiguration.FullPath); foreach (var f in this.FileInfos) { string result = f.FullName.Substring(tmp.FullName.Length, f.FullName.Length - tmp.FullName.Length); if (!string.IsNullOrEmpty(result)) result = result.Replace("\\", "/"); FileRecord record = FileRecord.Find(result); if (record != null) { this.FileInfos = this.FileInfos.ToList(); this.FileInfos.Remove(f); } } this.DictionaryInfos = dir.GetDirectories("*.*"); foreach (var d in this.DictionaryInfos) { string result = d.FullName.Substring(tmp.FullName.Length, d.FullName.Length - tmp.FullName.Length); if (!string.IsNullOrEmpty(result)) result = result.Replace("\\", "/"); PicNode folder = PicNode.Find(result, 1); if (folder != null) { this.DictionaryInfos = this.DictionaryInfos.ToList(); this.DictionaryInfos.Remove(d); } } }
public Folder(PicNode node, FolderDesc desc) { if (node == null) throw new ArgumentException("文件夹节点不能为空!"); this.PicNode = node; this.FolderDesc = desc; // 核心代码如下:根据文件的路径查找文件信息 DirectoryInfo dir = new DirectoryInfo(FileConfiguration.FullPath + this.PicNode.Path.Replace("/", @"\\")); if (!dir.Exists) dir.Create(); this.FileInfos = dir.GetFiles("*.*"); this.DictionaryInfos = dir.GetDirectories("*.*"); }
/// <summary> /// Create tree items for the given <paramref name="folder"/>. /// </summary> /// <param name="folder"></param> /// <param name="parent"></param> /// <returns></returns> private TreeItem CreateTreeItems(FolderDesc folder, TreeItem parent) { if (folder == null) { return(null); } var exists = parent.Children.FirstOrDefault(c => c.Text == folder.Name); if (exists != null) { parent.Children.Remove(exists); } var folderItem = new TreeItem { Expanded = false, Text = folder.Name, Image = AppImages.ClosedFolder, Tag = folder }; parent.Children.Add(folderItem); var files = _fileSystemTraverser.EnumerateTopFiles(folder.FullPath, SupportedFileTypes.SupportedExtensions); foreach (var file in files) { if (string.IsNullOrWhiteSpace(file?.Name)) { continue; } var img = file.Name.EndsWith(SupportedFileTypes.AssemblyExtension) ? AppImages.Dll : AppImages.File; var fileItem = new TreeItem { Text = file.Name, Image = img, Tag = file }; folderItem.Children.Add(fileItem); } // no more travering, but if the following file types exist we need to append a fake element to the tree item // so that it can be expanded. var hasEntries = folderItem.Count == 0 && (folder.HasFolders || _fileSystemTraverser.FilesExist(folder.FullPath, SupportedFileTypes.SupportedExtensions)); if (hasEntries) { var fake = new TreeItem { Text = Blank }; folderItem.Children.Add(fake); } return(folderItem); }
public ProjectFolderSelected(FolderDesc folder) { Folder = folder; }
public ActionResult Save(FolderDesc model) { if (model == null) { TempData["HintMessage"] = new PhotoGallery.Infrastructure.Helpers.HintMessage { Content = "操作失败,系统发生了一个错误" }; return RedirectToAction("Index"); } FolderDesc oringe = FolderDesc.Load(model.Id); PicNode node = PicNode.Load(model.Id); if (oringe != null) { oringe.KeyWord = model.KeyWord; oringe.Photographer = model.Photographer; oringe.StartDate = model.StartDate; oringe.EndDate = model.EndDate; //if (!string.IsNullOrEmpty(model.Leader)) // oringe.Leader = model.Leader; oringe.Leader = Request.Form["LeaderInfo"]; oringe.OtherLeader = model.OtherLeader; oringe.Guest = model.Guest; if (!string.IsNullOrEmpty(model.InnerLocation)) oringe.InnerLocation = model.InnerLocation; oringe.OuterLocation = model.OuterLocation; if (model.EventInfo != 0) { oringe.EventInfo = model.EventInfo; } oringe.EventDesc = model.EventDesc; oringe.Save(); } else { model.Save(); } TempData["HintMessage"] = new PhotoGallery.Infrastructure.Helpers.HintMessage { Content = string.Format("为文件夹({0})添加描述信息成功", node != null ? node.Name : string.Empty) }; return RedirectToAction("Index"); }
public FolderSearchModel Search(FolderSearch packet) { FolderSearchModel result = new FolderSearchModel(); SqlServerUtility sql = new SqlServerUtility(); sql.AddParameter("@id", SqlDbType.Int, GetSqlValue(packet.Id > 0 ? (object)packet.Id : null)); sql.AddParameter("@foldername", SqlDbType.NVarChar, GetSqlValue(packet.FolderName)); sql.AddParameter("@keyword", SqlDbType.NVarChar, GetSqlValue(packet.KeyWord)); sql.AddParameter("@photographer", SqlDbType.NVarChar, GetSqlValue(packet.Photographer)); sql.AddParameter("@leader", SqlDbType.NVarChar, GetSqlValue(packet.Leader)); sql.AddParameter("@otherleader", SqlDbType.NVarChar, GetSqlValue(packet.OtherLeader)); sql.AddParameter("@guest", SqlDbType.NVarChar, GetSqlValue(packet.Guest)); sql.AddParameter("@location", SqlDbType.NVarChar, GetSqlValue(packet.Location)); sql.AddParameter("@eventinfo", SqlDbType.Int, GetSqlValue(packet.EventInfo > 0 ? (object)packet.EventInfo : null)); sql.AddParameter("@eventdesc", SqlDbType.NVarChar, GetSqlValue(packet.EventInfoDesc)); sql.AddParameter("@status", SqlDbType.Int, packet.Status != null ? (object)packet.Status.Value : (object)DBNull.Value); SqlDataReader reader = sql.ExecuteSqlReader(SqlSearch); IList<Folder> folders = new List<Folder>(); if (reader != null) { while (reader.Read()) { Core.Business.PicNode picNode = new Core.Business.PicNode(); if (!reader.IsDBNull(0)) picNode.Id = reader.GetInt32(0); if (!reader.IsDBNull(1)) picNode.Status = reader.GetInt32(1); if (!reader.IsDBNull(2)) picNode.IsFile = reader.GetBoolean(2); if (!reader.IsDBNull(3)) picNode.Root = reader.GetString(3); if (!reader.IsDBNull(4)) picNode.Path = reader.GetString(4); if (!reader.IsDBNull(5)) picNode.Name = reader.GetString(5); picNode.MarkOld(); FolderDesc folderDesc = new FolderDesc(); if (!reader.IsDBNull(6)) folderDesc.Id = reader.GetInt32(6); if (!reader.IsDBNull(7)) folderDesc.EventInfo = reader.GetInt32(7); if (!reader.IsDBNull(8)) folderDesc.StartDate = reader.GetDateTime(8); if (!reader.IsDBNull(9)) folderDesc.EndDate = reader.GetDateTime(9); if (!reader.IsDBNull(10)) folderDesc.KeyWord = reader.GetString(10); if (!reader.IsDBNull(11)) folderDesc.Photographer = reader.GetString(11); if (!reader.IsDBNull(12)) folderDesc.Leader = reader.GetString(12); if (!reader.IsDBNull(13)) folderDesc.OtherLeader = reader.GetString(13); if (!reader.IsDBNull(14)) folderDesc.Guest = reader.GetString(14); if (!reader.IsDBNull(15)) folderDesc.InnerLocation = reader.GetString(15); if (!reader.IsDBNull(16)) folderDesc.OuterLocation = reader.GetString(16); if (!reader.IsDBNull(17)) folderDesc.EventDesc = reader.GetString(17); folders.Add(new Folder(picNode, folderDesc)); } reader.Close(); } result.Folders = folders; result.Search = packet; return result; }