fix(reader): M27 r2 — 扫描深度提到 6 + 按 Books 第一级目录分组
真机真实布局暴露两处问题(评审 P1):
- Books/400+本高质量完本合集/<分类>/<作品>/<书名>.txt 在 depth 3-4,旧 depth≤2 让 413 本 3.8GB 不可见
→ SHELF_SCAN_MAX_DEPTH=2→6;report 新增 depth_skipped,超深书籍文件计数并在 g_notice 可见提示
(有 N 个文件因目录层数超过 6 层未显示),不再静默
- 按完整相对路径分组会把 413 本书炸成 410 个每条 1 书的段头
→ 分组键改为 Books/ 第一级目录(shelf_book.top);完整相对路径仍在 group[],
第一级之后的子路径(分类/作品)放进副题 sub(如 01、玄幻/01、斗破 · TXT · 2.1MB)
→ 真机书库只剩 3 组:400+本高质量完本合集 / kh / 轻小说
- 单测 50 断言:depth3/4 收录、depth7 计入 depth_skipped、四种真实路径的组名、
a/b 与 a/c 同组 a、副题含子路径、format 回归、根组未分类、path/进度不变
This commit is contained in:
1 parent
409fd1edf7
commit
63ead3ec1e
5 files changed
+211
-82
No files matched your search
@@ -9,7 +9,8 @@
|
||||
* - 封面:MVP 无封面提取(engine F1);无则圆角占位(surfaceContainerHigh + 格式徽标)。
|
||||
*
|
||||
* M27 分组(`ui.shelf_group`,默认 format 保持旧行为):
|
||||
* format = 按格式分段(TXT/FB2/EPUB/MOBI/CBZ),folder = 按 Books/ 下的目录分段(根下=未分类)。
|
||||
* format = 按格式分段(TXT/FB2/EPUB/MOBI/CBZ);
|
||||
* folder = 按 Books/ 下的「第一级目录」分段(根下=未分类),更深子路径(分类/作品)进副题。
|
||||
* 扫描/行序列在 app/shelf_model.c(纯 C,宿主可测);本文件只做控件装配与绘制。
|
||||
*/
|
||||
#include "../reader_internal.h"
|
||||
@@ -60,10 +61,19 @@ static void scan_books(void)
|
||||
if (rep.root_missing) {
|
||||
snprintf(g_notice, sizeof g_notice, "未找到 %s 目录,请放入书籍(TXT)", dir);
|
||||
g_notice_ms = 4000;
|
||||
} else if (rep.truncated && rep.depth_skipped > 0) {
|
||||
snprintf(g_notice, sizeof g_notice,
|
||||
"书籍超过 %d 本(只显示前 %d 本);另有 %d 个文件目录超过 %d 层未显示",
|
||||
SHELF_MAX_BOOKS, SHELF_MAX_BOOKS, rep.depth_skipped, SHELF_SCAN_MAX_DEPTH);
|
||||
g_notice_ms = 4000;
|
||||
} else if (rep.truncated) {
|
||||
snprintf(g_notice, sizeof g_notice, "书籍超过 %d 本,已只显示前 %d 本",
|
||||
SHELF_MAX_BOOKS, SHELF_MAX_BOOKS);
|
||||
g_notice_ms = 4000;
|
||||
} else if (rep.depth_skipped > 0) {
|
||||
snprintf(g_notice, sizeof g_notice, "有 %d 个文件因目录层数超过 %d 层未显示",
|
||||
rep.depth_skipped, SHELF_SCAN_MAX_DEPTH);
|
||||
g_notice_ms = 4000;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user