diff --git a/src/ui/Desktop/Apps/File Manager/FileManagerGrid.tsx b/src/ui/Desktop/Apps/File Manager/FileManagerGrid.tsx index 063cfee1..022f5c8a 100644 --- a/src/ui/Desktop/Apps/File Manager/FileManagerGrid.tsx +++ b/src/ui/Desktop/Apps/File Manager/FileManagerGrid.tsx @@ -42,15 +42,17 @@ interface FileManagerGridProps { onRefresh: () => void; onUpload?: (files: FileList) => void; onContextMenu?: (event: React.MouseEvent, file?: FileItem) => void; + viewMode?: 'grid' | 'list'; } -const getFileIcon = (fileName: string, isDirectory: boolean) => { +const getFileIcon = (fileName: string, isDirectory: boolean, viewMode: 'grid' | 'list' = 'grid') => { + const iconClass = viewMode === 'grid' ? "w-8 h-8" : "w-6 h-6"; + if (isDirectory) { - return ; + return ; } const ext = fileName.split('.').pop()?.toLowerCase(); - const iconClass = "w-8 h-8"; switch (ext) { case 'txt': @@ -126,7 +128,8 @@ export function FileManagerGrid({ onPathChange, onRefresh, onUpload, - onContextMenu + onContextMenu, + viewMode = 'grid' }: FileManagerGridProps) { const { t } = useTranslation(); const gridRef = useRef(null); @@ -437,7 +440,7 @@ export function FileManagerGrid({

{t("fileManager.emptyFolder")}

- ) : ( + ) : viewMode === 'grid' ? (
{files.map((file) => { const isSelected = selectedFiles.some(f => f.path === file.path); @@ -472,7 +475,7 @@ export function FileManagerGrid({
{/* 文件图标 */}
- {getFileIcon(file.name, file.type === 'directory')} + {getFileIcon(file.name, file.type === 'directory', viewMode)}
{/* 文件名 */} @@ -491,6 +494,65 @@ export function FileManagerGrid({ ); })}
+ ) : ( + /* 列表视图 */ +
+ {files.map((file) => { + const isSelected = selectedFiles.some(f => f.path === file.path); + + return ( +
handleFileClick(file, e)} + onContextMenu={(e) => { + e.preventDefault(); + e.stopPropagation(); + onContextMenu?.(e, file); + }} + > + {/* 文件图标 */} +
+ {getFileIcon(file.name, file.type === 'directory', viewMode)} +
+ + {/* 文件信息 */} +
+

+ {file.name} +

+ {file.modified && ( +

+ {file.modified} +

+ )} +
+ + {/* 文件大小 */} +
+ {file.type === 'file' && file.size && ( +

+ {formatFileSize(file.size)} +

+ )} +
+ + {/* 权限信息 */} +
+ {file.permissions && ( +

+ {file.permissions} +

+ )} +
+
+ ); + })} +
)}
diff --git a/src/ui/Desktop/Apps/File Manager/FileManagerModern.tsx b/src/ui/Desktop/Apps/File Manager/FileManagerModern.tsx index 233103d2..bf24a58c 100644 --- a/src/ui/Desktop/Apps/File Manager/FileManagerModern.tsx +++ b/src/ui/Desktop/Apps/File Manager/FileManagerModern.tsx @@ -504,6 +504,7 @@ export function FileManagerModern({ initialHost, onClose }: FileManagerModernPro onRefresh={() => loadDirectory(currentPath)} onUpload={handleFilesDropped} onContextMenu={handleContextMenu} + viewMode={viewMode} /> {/* 右键菜单 */}