Skip to content

feat(映射整理): 全局「整理方式」设置 + 映射项「放回桌面」+ 按项隐藏 - #5

Draft
GOXF wants to merge 2 commits into
customfrom
feat/organize-mode-setting
Draft

GOXF wants to merge 2 commits into
customfrom
feat/organize-mode-setting

Conversation

@GOXF

@GOXF GOXF commented Nov 8, 2026

Copy link
Copy Markdown
Owner

改动

1. 「整理方式」提升为全局设置

  • 设置 → 桌面整理(与「自动整理新文件」同一层级)新增「整理方式」:移动到格子(默认,原行为)/ 只映射,不移动文件。保存在数据根目录 fork-organize.json(fork 自有文件,不动上游设置模型/序列化)。
  • 整理预览去掉「只映射」复选框,底部改为只读显示当前方式,点击跳到设置;「开始整理」按全局设置执行。
  • 自动整理新文件遵守该设置:只映射模式下上游 DesktopAutoOrganizationWatcher 不移动文件,交给映射归类(MappedOrganizeService.TryTakeOverAutoOrganization)。
  • 主进程监视该文件:从「只映射」切回「移动到格子」时退出映射(解散映射格子、还原隐藏的桌面项)。已经有映射格子但没有该文件的旧安装,启动时自动采用「只映射」。

2. 映射项「放回桌面」+ 按项隐藏

  • 不再整体隐藏桌面 SysListView32;改为只对被映射项设置 FILE_ATTRIBUTE_HIDDEN,由 DeskBox 设置的项记录在 data/mapped-organize.hidden(先写记录再改属性)。原本就隐藏的文件不记录、不还原。
  • 还原时机:项离开映射格子、放回桌面、退出映射整理、切回移动模式、退出 DeskBox(关闭步骤 + ProcessExit)、崩溃后下次启动、卸载(installer/DeskBox.ForkMappedOrganize.iss,在结束进程后执行)。
  • FileService 通过 MappedOrganizeHiddenRegistry 让 DeskBox 隐藏的成员在映射格子里照常显示。
  • 映射格子里单项/多选右键「移回桌面」显示为「放回桌面」:解除映射、在桌面显示,并记入 data/mapped-organize.kept,之后自动归类/一键整理不再收回(跟随重命名,删除时清除;拖回映射格子或在预览里确认映射时解除)。预览里取消勾选的项同样留在桌面。
  • 资源管理器开启「显示隐藏的项目」时,设置页给出提示。
  • 旧版本留下的「整个桌面图标被隐藏」标记,启动时修复一次。

测试

tests/DeskBox.Tests/ForkOrganizeModeTests.cs:设置持久化/解析、模式分支(确认/自动整理/切换/启动迁移)、放回桌面后排除、隐藏属性记录/还原规划、记录文件序列化与重命名。

改到的上游文件(尽量少)

FileService.cs(3 处条件)、DesktopAutoOrganizationWatcher.cs(1 段)、FileSurfaceContent.SelectionAndMenus.cs(2 处)、DesktopOrganizationSettingsSection.xaml(1 个容器)、installer/DeskBox.Uninstall.iss(include + 1 次调用)。文案用 fork 自有的内联方式(简中/繁中/英),没有改 Strings/*.json;没有新增可绑定属性。

已知限制

  • 公用桌面上的项需要管理员权限才能改属性;改不了时会同时出现在桌面和格子里。
  • 被隐藏的项在资源管理器的「桌面」文件夹里也看不到(除非开启了「显示隐藏的项目」)。
  • 每次退出 DeskBox 会还原、启动时再隐藏,桌面图标位置可能被系统重新排列。
  • 还没在真实桌面上实际运行验证(CI 只做构建和单元测试)。

GOXF added 2 commits November 8, 2026 05:39
- 设置 → 桌面整理新增「整理方式」:移动到格子(默认)/ 只映射,不移动文件,
  保存在 fork-organize.json;整理预览去掉复选框,改为只读显示当前方式并可跳到设置,
  「开始整理」按全局设置执行;切回「移动到格子」时退出映射并还原桌面项。
- 自动整理新文件遵守该设置:只映射模式下上游自动整理不再移动,交给映射归类。
- 映射格子单项/多选右键「放回桌面」:解除映射、在桌面显示,并记为留在桌面,
  之后自动归类/一键整理不再收回(跟随重命名,删除时清除)。
- 不再整体隐藏桌面 ListView:只对被映射项设置隐藏属性,并记录在
  mapped-organize.hidden;解除映射/退出映射/切回移动/退出 DeskBox/崩溃后启动/卸载时还原,
  原本就隐藏的文件不动;FileService 对 DeskBox 隐藏的成员仍可显示。
- 资源管理器开启「显示隐藏的项目」时在设置页提示。
- 单元测试:设置持久化、模式分支、放回桌面排除、隐藏属性记录/还原逻辑。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant