Files
MeowOS-SDK/tuku/tuku_internal.h
T
AskaEth 3cbcaaaac1 图库: 修系统返回语义与打开册资源路径(M15)
- 返回手势:书库列表排除左缘 24px 系统返回带并清空残留拖拽态;library_go_up
  到 TF 根返回 0(app.c 退出 App),不再上溯系统目录;顶栏返回改为显式
  library_go_parent(访问放开,可越过 TF 根到 /)。lock 页继续自行消费返回。
- 打开册:缩略图源图改用预算解码(meow_img_load_file_dim,峰值数十 MB→~1MB);
  离开书库页停止后台探测/缩略图线程,避免与 open_book 争内存/FD;打开失败按
  errno 记日志,ENOMEM/EMFILE/ENFILE/EAGAIN/EINTR 自动重试一次;修 open_book
  自拷贝 snprintf 的未定义行为。
- 测试:test_browse_ui_host 增加 TF 根退出/顶栏上级/左缘不拖拽断言;新增
  test_open_book_host(封面图+含图子目录的父目录 → reader 打开的完整 UI 链路)。
2026-11-05 13:03:20 +08:00

66 lines
2.9 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* tuku_internal.h — 图库应用内部共享头(只 extern 声明,不定义)。
*
* 分层(照 examples/hello):
* - logic/ 纯 C(library 扫描/自然排序、reader 方向状态),不依赖 meow_ui.h,宿主可裸测;
* - ui/ 每页一个 view 文件(library/reader/settings/lock),只碰 SDK;
* - app.c main + 装配 + meow_ui_run 回调路由 + 主题监听。
*
* 页面:ACT_LIBRARY(0) 根页(保留状态栏)、ACT_READER(1) 全屏、ACT_SETTINGS(2)、ACT_LOCK(3)。
* 并行开发接缝(后续任务只填自己的文件,不改 app.c/internal.h):
* - M4 阅读器:ui/reader/reader.c 实现,方向状态用 logic/reader 的 mr_reader_get/set_direction;
* 书库点入含图目录经 mr_reader_open_dir(path) 进入本页。
* - M5 锁屏/PIN:ui/lock/lock.c 实现 lock_view_should_show();本批桩返回 0(不锁)。
*/
#ifndef TUKU_INTERNAL_H
#define TUKU_INTERNAL_H
#include <stdint.h>
#include "meow_ui.h"
#include "meow_ui_view.h"
#include "logic/library.h"
#include "logic/reader.h"
/* ---- Activity 归属(稳定 id,< MEOW_VIEW_BY_ID_MAX) ---- */
#define ACT_LIBRARY 0
#define ACT_READER 1
#define ACT_SETTINGS 2
#define ACT_LOCK 3
#define MR_ROOT_DIR "/usr/data/mnt/sd_0" /* 书库根 = TF 卡根 */
/* ---- 视图控制器(biz-UI 绑定点) ---- */
typedef struct mr_page_ctrl {
meow_view *view;
int active;
} mr_page_ctrl;
/* ---- 书库页(ui/library/library.c) ---- */
meow_view *library_view_create(void);
int library_at_root(void); /* 1=当前在书库根(生产=MR_ROOT_DIR,宿主测试可改根) */
int library_go_up(void); /* 系统返回语义:逐级上移;TF 根/"/" 返回 0(app.c 据此退出) */
int library_go_parent(void); /* 顶栏显式「上级」:访问放开,可越过 TF 根到 '/' */
void library_on_tap(int x, int y);
void library_on_swipe(int dir, int dist); /* dist=SDK on_swipe 的位移量(UP/DOWN 用) */
void library_on_touch_down(int x, int y);
void library_on_touch_move(int x, int y);
void library_on_tick(void); /* 收下后台缩略图结果并局部补位 */
/* ---- 阅读器页(ui/reader/reader.c,M4 填充) ---- */
meow_view *reader_view_create(void);
void reader_on_tap(int x, int y);
void mr_reader_open_dir(const char *path); /* 书库→阅读器的桩导航接口 */
const char *mr_reader_dir(void); /* 当前待打开目录(骨架显示用) */
/* ---- 设置页(ui/settings/settings.c) ---- */
meow_view *settings_view_create(void);
/* ---- 锁屏页(ui/lock/lock.c,M5 填充) ---- */
meow_view *lock_view_create(void);
int lock_view_should_show(void); /* 1=启动先显示锁屏;本批桩返回 0 */
/* ---- App 级(app.c) ---- */
void mr_nav_report(void); /* 向 launcher 上报当前页栈深/顶层 */
#endif /* TUKU_INTERNAL_H */