解析第一个子页签的相关逻辑,对应表现 ![[Pasted image 20240321150014.png]] 对应逻辑; 其中TodoListInputView是,新增待办事项的输入框; 构造函数中,设定输入框的,设定完成回调OnTodoCreate的具体逻辑,调用数据模型类,对应方法,添加待办事项,保存; 打印对应的Json结构; ![[Pasted image 20240321150043.png]] 输入框对应的逻辑,使用PopupView控件,设定一个分类的,标签枚举; 再设置一个TextAreaView输入框; ![[Pasted image 20240321154151.png]] 添加按钮,创建一个Todo待办事项,设定对应的标签属性,调用OnTodoCreate回调,在上述的TodoListView中,会完善它的具体创建逻辑 ![[Pasted image 20240321154312.png]] 单个待办事项,对应表现,是这个 ![[Pasted image 20240321154631.png]] 这是它,对应的逻辑; 其中包含,开始和完成的按钮空间,还有CategoryComponent标签分类组件; 构造函数中,完成V1.Todo的数据类赋值,点击开始任务、完成任务 按钮的构建; 其中包含各个对应的时间戳:开始时间、结束时间; 调用数据模型的保存逻辑,刷新页面; ![[Pasted image 20240321154659.png]] CategoryComponent分类组件,对应逻辑,是一个boxView的显示控件,Data数据类,设定一下颜色就好 ![[Pasted image 20240321154828.png]] 继续构建,布局显示控件 ![[Pasted image 20240321155510.png]] 使用TreeNode树节点,串联起来,各个UI控件,然后再通过Add2FirstLine方法,加上”process“和”add“两个按钮控件,对应触发的逻辑,分别是 OpenProcessWindow 和 OpenTodoEditor ![[Pasted image 20240321155555.png]] 表现 ![[Pasted image 20240321155845.png]] 前者逻辑,是使用 问题&选择 系统,拆分逻辑,跟之前提及的,笔记转待办事项,拆分逻辑,基本一致 ![[Pasted image 20240321155909.png]] 点击后的表现 ![[Pasted image 20240321160046.png]] 除了添加,待办事项,编辑当前待办事项,也是用 OpenTodoEditor这个接口 ![[Pasted image 20240321160931.png]] 表现 ![[Pasted image 20240321161003.png]] 点击,包含Category分类,优先级选项,是否修改成 隐藏 待办事项,保存修改 ![[Pasted image 20240321161158.png]] 如果隐藏,就会加到这个子页签 ![[Pasted image 20240321161310.png]] 显隐,对应按钮的显示样式,触发函数 ![[Pasted image 20240321161400.png]] 是否可显现的参数,是hide的布尔取反 ![[Pasted image 20240321161437.png]] ![[Pasted image 20240321161458.png]] 这是整体的 待办事项 编辑器 逻辑; 使用PopupView控件,配合数据模型,整体的Model.Categories标签组,新增标签的分类枚举; ![[Pasted image 20240321161540.png]] 总的标签分类汇总,在这个子页签,后面会解析 ![[Pasted image 20240321161755.png]] 复习,优先级是Todo数据类里面,这个序列化的枚举 ![[Pasted image 20240321161830.png]] 回到Todo界面类,Todo编辑器的优先级调用,和标签分类,使用PopupView控件,同理 ![[Pasted image 20240321161932.png]] 保存修改,是根据传参todo是否为空,判断是,编辑已有待办事项,还是新增子待办事项; 如果只是编辑已有的,就修改对应的参数,save就好,如果是添加子待办事项,就需要加到Todo的Children列表; ![[Pasted image 20240321162114.png]] ![[Pasted image 20240321162241.png]] 表现: ![[Pasted image 20240321162317.png]] 子控件的逻辑,包含缩进相关,是在OnRefresh刷新函数实现 ![[Pasted image 20240321162426.png]] 刷新函数还会根据,事项状态,控制对应按钮的显隐 ![[Pasted image 20240321162501.png]] 还有优先级的文本和颜色,也是在刷新函数,有相关逻辑处理 ![[Pasted image 20240321162534.png]]