修改远程文件无法显示的问题

This commit is contained in:
taiyi 2025-10-12 07:54:40 +08:00
parent 8231566051
commit 80d0ad288c

View File

@ -276,9 +276,12 @@ class SyncTab:
self.current_folder_var.set(folder_path)
self.remote_dir_var.set(remote_path)
# 刷新文件预览
# 刷新本地文件预览
self._refresh_local_tree(folder_path)
# 刷新远程文件预览
self._refresh_remote_tree(remote_path)
# 更新访问记录
self.folder_manager.update_folder_access(folder_path)
@ -385,6 +388,91 @@ class SyncTab:
except Exception as e:
self.logger.error(f"Error refreshing local tree: {e}")
def _refresh_remote_tree(self, remote_path=None):
"""刷新远程文件树"""
if remote_path is None:
remote_path = self.remote_dir_var.get()
if not remote_path:
return
# 清空现有项目
self.remote_tree.delete(*self.remote_tree.get_children())
# 显示加载提示
self.log_queue.put(f"🔄 正在加载远程文件: {remote_path}")
def load_worker():
try:
# 获取所有可用的云盘服务
all_files = {}
for cloud in self.clouds:
try:
self.log_queue.put(f" 正在从 {cloud.name} 获取文件列表...")
files = cloud.list_files(remote_path)
if files:
all_files[cloud.name] = files
self.log_queue.put(f"{cloud.name}: 找到 {len(files)} 个文件")
else:
self.log_queue.put(f" {cloud.name}: 目录为空或不存在")
except Exception as e:
self.logger.error(f"Failed to list files from {cloud.name}: {e}")
self.log_queue.put(f"{cloud.name}: 获取失败 - {str(e)[:50]}")
# 在UI线程中更新树形视图
def update_tree():
if not all_files:
# 显示"无文件"提示
self.remote_tree.insert("", "end", text="📭 远程目录为空或不存在")
return
# 为每个云盘创建一个分类节点
for cloud_name, files in all_files.items():
cloud_node = self.remote_tree.insert("", "end", text=f"☁️ {cloud_name}", open=True)
# 解析文件列表并添加到树中
for file_info in files:
# bypy的输出格式可能是 "D 文件夹名" 或 "F 文件名 (大小)"
file_info = file_info.strip()
if not file_info:
continue
# 尝试解析文件类型和名称
if file_info.startswith('D '):
# 目录
name = file_info[2:].strip()
self.remote_tree.insert(cloud_node, "end", text=f"📁 {name}")
elif file_info.startswith('F '):
# 文件
parts = file_info[2:].split('(')
name = parts[0].strip()
size = parts[1].rstrip(')').strip() if len(parts) > 1 else ""
display_text = f"📄 {name}" + (f" ({size})" if size else "")
self.remote_tree.insert(cloud_node, "end", text=display_text)
else:
# 未知格式,直接显示
self.remote_tree.insert(cloud_node, "end", text=f"📄 {file_info}")
self.log_queue.put("✅ 远程文件列表加载完成")
self.frame.after(0, update_tree)
except Exception as e:
self.logger.error(f"Error loading remote files: {e}")
self.log_queue.put(f"❌ 加载远程文件失败: {e}")
def show_error():
self.remote_tree.insert("", "end", text=f"❌ 加载失败: {str(e)[:50]}")
self.frame.after(0, show_error)
# 在后台线程中加载
threading.Thread(target=load_worker, daemon=True).start()
def _browse_directory(self):
"""向后兼容的方法"""
self._browse_and_add_folder()