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);
        }
Esempio n. 2
0
        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("*.*");
        }
Esempio n. 5
0
        /// <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);
        }
Esempio n. 6
0
 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;
        }