public void Open(object sender, string path) { if (IsCurrentDirectory(path)) return; bool isDirectory = System.IO.Directory.Exists(path); bool isFile = System.IO.File.Exists(path); if (!isDirectory && !isFile) return; if (isDirectory) { ShowDirectory(sender, new BaseDirectoryInfo(path)); return; } if (isFile) { string ext = System.IO.Path.GetExtension(path); if (Utility.IsSupported(ext)) { _viewForm.ShowImage(new BaseFileInfo(path)); if (sender == this) ShowDirectory(this, new BaseDirectoryInfo(System.IO.Path.GetDirectoryName(path))); return; } if (Utility.IsArchive(ext)) { BaseDirectoryInfo dirInfo = new BaseDirectoryInfo(System.IO.Path.GetDirectoryName(path)); switch (ext) { //TODO Refactor combine with ShowArchive case ".zip": ZipDirectoryInfo zipDirInfo = new ZipDirectoryInfo(new BaseFileInfo(path)); ShowDirectory(sender, zipDirInfo); return; case ".rar": RarDirectoryInfo rarDirInfo = new RarDirectoryInfo(new BaseFileInfo(path)); ShowDirectory(sender, rarDirInfo); return; case ".7z": SevenZipDirectoryInfo sevenZipInfo = new SevenZipDirectoryInfo(new BaseFileInfo(path)); ShowDirectory(sender, sevenZipInfo); break; default: break; } } } }
/// <summary> /// Show images within archive file /// </summary> /// <param name="fileInfo"></param> public void ShowArchive(object sender, IFileInfo fileInfo) { if (IsCurrentDirectory(fileInfo.FullPath)) return; if (!(fileInfo is BaseFileInfo)) return; comboBox1.Text = fileInfo.FullPath; switch (fileInfo.Extension) { case ".zip": ZipDirectoryInfo zipDirInfo = new ZipDirectoryInfo((BaseFileInfo)fileInfo); ShowDirectory(sender, zipDirInfo); break; case ".rar": RarDirectoryInfo rarDirInfo = new RarDirectoryInfo((BaseFileInfo)fileInfo); ShowDirectory(sender, rarDirInfo); break; case ".7z": SevenZipDirectoryInfo sevenZipInfo = new SevenZipDirectoryInfo((BaseFileInfo)fileInfo); ShowDirectory(sender, sevenZipInfo); break; default: break; } }