/// <summary> /// Create a subdirectory /// </summary> /// <param name="path"> directory name.</param> public DirectoryInfoEx CreateDirectory(string path) { checkExists(); return(DirectoryEx.CreateDirectory(PathEx.Combine(FullName, path))); }
protected virtual void refresh(IShellFolder2 parentShellFolder, PIDL relPIDL, PIDL fullPIDL, RefreshModeEnum mode) { if (parentShellFolder != null && fullPIDL != null && relPIDL != null) { Attributes = loadAttributes(parentShellFolder, fullPIDL, relPIDL); string parseName = loadName(parentShellFolder, relPIDL, ShellAPI.SHGNO.FORPARSING); FullName = ""; //Console.WriteLine("relPIDL.size = {0}", relPIDL.Size); //Console.WriteLine("PIDL.size = {0}", _pidl.Size); if (relPIDL.Size == 0) { FullName = IOTools.IID_Desktop; } else //0.12: Fixed Fullname of User/Shared directory under desktop is now it's GUID instead of it's file path. //0.13: Fixed All subdirectory under User/Shared directory uses GUID now. { if (DirectoryInfoEx.CurrentUserDirectory != null) { if (parseName == DirectoryInfoEx.CurrentUserDirectory.FullName && loadName(parentShellFolder, ShellAPI.SHGNO.FORPARSING) == Environment.GetFolderPath(Environment.SpecialFolder.Desktop)) { FullName = IOTools.IID_UserFiles; } //else if ( // (parseName.StartsWith(DirectoryInfoEx.CurrentUserDirectory.FullName) && // _parent != null && _parent.FullName.StartsWith(IOTools.IID_UserFiles)) // || // (OriginalPath != null && OriginalPath.StartsWith(IOTools.IID_UserFiles)) // ) //{ // FullName = parseName.Replace(DirectoryInfoEx.CurrentUserDirectory.FullName, IOTools.IID_UserFiles); //} } if (DirectoryInfoEx.SharedDirectory != null) { if (parseName == DirectoryInfoEx.SharedDirectory.FullName && loadName(parentShellFolder, ShellAPI.SHGNO.FORPARSING) == Environment.GetFolderPath(Environment.SpecialFolder.Desktop)) { FullName = IOTools.IID_Public; } //else if ( // (parseName.StartsWith(DirectoryInfoEx.SharedDirectory.FullName) && // _parent != null && _parent.FullName.StartsWith(IOTools.IID_Public)) // || // (OriginalPath != null && OriginalPath.StartsWith(IOTools.IID_Public)) // ) // FullName = parseName.Replace(DirectoryInfoEx.SharedDirectory.FullName, IOTools.IID_Public); } //if (_parent != null && _parent.FullName.StartsWith(IOTools.IID_Library) // && !parseName.StartsWith(IOTools.IID_Library)) // FullName = PathEx.Combine(_parent.FullName, PathEx.GetFileName(parseName)); if (FullName == "") { FullName = parseName; } } //if (DirectoryInfoEx.CurrentUserDirectory != null && parseName == DirectoryInfoEx.CurrentUserDirectory.FullName && //loadName(parentShellFolder, ShellAPI.SHGNO.FORPARSING) == Environment.GetFolderPath(Environment.SpecialFolder.Desktop)) // FullName = IOTools.IID_UserFiles; //else //if (DirectoryInfoEx.SharedDirectory != null && parseName == DirectoryInfoEx.SharedDirectory.FullName && // loadName(parentShellFolder, ShellAPI.SHGNO.FORPARSING) == Environment.GetFolderPath(Environment.SpecialFolder.Desktop)) // FullName = IOTools.IID_Public; //else if (OriginalPath == null) { OriginalPath = FullName; } if (parseName.StartsWith("::")) //Guid { parseName = loadName(parentShellFolder, relPIDL, ShellAPI.SHGNO.NORMAL); } _name = FullName.EndsWith("\\") ? FullName : PathEx.GetFileName(FullName); Label = loadName(parentShellFolder, relPIDL, ShellAPI.SHGNO.NORMAL); } else { if (OriginalPath != null) { string origPath = Helper.RemoveSlash(OriginalPath); _name = Path.GetFileName(origPath); Label = _name; FullName = origPath; } } }