通知中心 ⑧⑨: 一键清除(保留活动通知) + 面板跟手下拉半程可回(agent-133)
- ⑧ 一键清除: mnp_clearable(ongoing/media/progress) 红线保留活动通知; 先 meow_notif 转储(notifications.log+10MB滚动) 再清空显示; 勿扰左半+清除右半(NCP_DND_SPLIT_X=fb_xres/2)对称, 命中互斥 - ⑨ 面板跟手下拉/半程可回: reveal 连续映射 1:1 跟手(mnp_drag_progress/reveal), 松手 mnp_drag_anchor(fix,40%)=1→补到1024/0→回0收回; 与⑦行左滑/列表滚动/meow_edge_back 互斥; 复用快照+局部刷(panel帧/新露出条) - meow_ui.a 零改动(d249c6e6); launcher=b140e9e5; 宿主189项ok; 新增0warn - NOTIFICATION_SYSTEM §9 增 ⑧⑨; MEOW_APP_SDK §5.7 收合动画落点标注
This commit is contained in:
1 parent
82b77d64b4
commit
dafe31784d
6 files changed
+406
-22
No files matched your search
@@ -244,4 +244,51 @@ static inline int mnp_swipe_step(int off, int target, unsigned long long dt_ms,
|
||||
return off + dir * (int)step;
|
||||
}
|
||||
|
||||
/* ---- ⑧ 一键清除通知判定(纯逻辑,可单测)----
|
||||
* 通知中心「一键清除」= 把可清除的非活动通知先转储留档(走既有 dump 链),再清空显示;
|
||||
* 红线(源:用户 2026-08-30):① ongoing 常驻、② 媒体通知(媒体会话单例)、③ 带进度条进行中的通知
|
||||
* (progress>=0;终态 100% 已由 meow_notif_update_progress 里程碑落盘释放,不再活跃)——一律保留。
|
||||
* 本函数只做「该不该清」的标量判定,不碰存储/fb;ongoing/media/progress 直读 meow_notif_t 字段。 */
|
||||
|
||||
/* 「可清除」判定:非 ongoing 且 非 media 且 无进行中进度(progress<0)。返回 1=应清除;0=保留(红线)。 */
|
||||
static inline int mnp_clearable(int ongoing, int media, int progress)
|
||||
{
|
||||
return !ongoing && !media && progress < 0;
|
||||
}
|
||||
|
||||
/* ---- ⑨ 面板「跟手下拉、半程可回」(纯逻辑,可单测)----
|
||||
* 把面板打开/关闭从「触发式时间轴过渡」升级为「手指拖动实时跟手」:progress∈[0,fix],
|
||||
* reveal(面板当前露出高度,∈[0,ph])随手指位移连续映射;松手按阈值锚定补到位/收回。
|
||||
* 本组函数只做标量:reveal→progress / seed+delta clamp / 松手锚定,不碰 fb/几何——
|
||||
* 供 launcher(meow_launcherd.c 内嵌面板)与宿主单测(test_notif_panel.c)共用同一份实现。 */
|
||||
|
||||
/* 跟手 reveal→progress:reveal∈[0,ph](面板露出高度)→ p∈[0,fix]。线性、方向无关。
|
||||
* 与 mnp_anim_off 互逆(off = -ph + reveal;p = fix*reveal/ph)。 */
|
||||
static inline int mnp_drag_progress(int reveal, int fix, int ph)
|
||||
{
|
||||
if (reveal <= 0) return 0;
|
||||
if (reveal >= ph) return fix;
|
||||
return (int)((long long)reveal * fix / ph);
|
||||
}
|
||||
|
||||
/* reveal 跟手 clamp:seed(进入拖动时锁定的露出高) + delta(自进入竖向位移, y 向下为正) → clamp[0,ph]。
|
||||
* 连续可反向:反向 delta 减小 reveal,未到边界不跳变(半程可回)。ph<=0 时恒 0。 */
|
||||
static inline int mnp_drag_reveal(int seed, int delta, int ph)
|
||||
{
|
||||
if (ph <= 0) return 0;
|
||||
int r = seed + delta;
|
||||
if (r < 0) r = 0;
|
||||
if (r > ph) r = ph;
|
||||
return r;
|
||||
}
|
||||
|
||||
/* 松手锚定:progress p(∈[0,fix])与阈值(fix*thr_pct/100,如 40%→410)相比。
|
||||
* 返回 1=≥阈值 → 前去 fix(打开完成 / 关闭手势未过阈值→回弹重新展开);
|
||||
* 返回 0=<阈值 或 反向拖回 → 回 0(开半程取消收回 / 关闭过阈值→收回)。 */
|
||||
static inline int mnp_drag_anchor(int p, int fix, int thr_pct)
|
||||
{
|
||||
int thr = fix * thr_pct / 100;
|
||||
return p >= thr ? 1 : 0;
|
||||
}
|
||||
|
||||
#endif /* MEOW_NOTIF_PANEL_H */
|
||||
Reference in new issue
Block a user