回到待办事项子页签逻辑,刷新函数,会先清空mTodosParentContainer集合,再遍历数据容器的Todos列表,根据分类和优先级排序,通过AddChild接口,重新加入到mTodosParentContainer集合 ![[Pasted image 20240321164943.png]] 以上,是第一个子页签的相关逻辑; 开始解析,第二个子页签”隐藏清单“; ![[Pasted image 20240321165218.png]] 对应的实例化,菜单按钮,点击注册 ![[Pasted image 20240321165305.png]] 这是”隐藏清单“对应的,具体逻辑,比较简单直接 ![[Pasted image 20240321165430.png]] 其中,刷新函数,也是遍历数据容器,筛选出 非完成 + Hide布尔为true 的事项,显示出来 ![[Pasted image 20240321165504.png]] 开始解析,第三个 子页签 ”分类管理“ ![[Pasted image 20240321165620.png]] 对应实例化和菜单入口 ![[Pasted image 20240321165653.png]] 这是具体的对应逻辑; 添加一个”+“按钮,添加新的分类; RegisterEvent注册自身的点击事件,显隐; ![[Pasted image 20240321170107.png]] 刷新函数,遍历数据容器的Categories集合,绘制分类标签列表; 其中,创建新标签的逻辑,和编辑当前标签的逻辑,都是调用 OpenCategoryEditor接口,只是有无传参的区别; 还有删除按钮逻辑; ![[Pasted image 20240321170224.png]] CreateSubWindow创建一个子窗口,用来编辑分类; 编辑分类的名字、颜色; 如果传参category为空,就是”添加“按钮的相关逻辑,调用数据模型管理类的Model.CreateCategory,创建新的标签分类; ![[Pasted image 20240321170400.png]] else就是不为空,也就是编辑,当前已有标签列表,就是”保存“按钮,对应的相关逻辑 ![[Pasted image 20240321170844.png]] 关闭子窗口逻辑,也加到OnHide隐藏窗体的重写函数中 ![[Pasted image 20240321170915.png]] 分类编辑子窗口,对应表现 ![[Pasted image 20240321171031.png]] 第四个子页签,”已完成“ ![[Pasted image 20240321171057.png]] 对应逻辑实例化,和菜单按钮触发 ![[Pasted image 20240321171138.png]] 已完成列表界面,对应具体逻辑 ![[Pasted image 20240321171159.png]] 刷新函数,筛选出事项状态,是TodoState.Done的,然后排序,是根据完成时间FinishedAt.Date; 时间段的实例,参考[[TimeSpan的用法]],这里totalTime初始化时间段为0,然后加上,各事项的使用时间 UsedTime 即可; 通过yyyy年MM月dd日的样式,显示出来,总共的消耗时间; 最终foreach遍历,排序后的数据组,通过CreateTodoView函数,创建一个个 已完成 事项; ![[Pasted image 20240321171257.png]] 时间的显示表现 ![[Pasted image 20240321171917.png]] 具体逻辑,实例化FinishedTodoView类,这是单个 已完成 事项 对应的界面类 ![[Pasted image 20240321171719.png]] 表现 ![[Pasted image 20240321171813.png]] 单个 已完成 事项 界面类,对应逻辑; 其中的reset重置按钮,是可以把事项,恢复成NotStart状态,这会变回Todo待办事项,换到第一个子页签列表; 完成时间,是基于 FinishedAt 字段,修改样式显示; 删除按钮,也是调用对应的数据删除接口即可; ![[Pasted image 20240321171958.png]] 开始解析,第三个总页签,”产品“ ![[Pasted image 20240321172249.png]] 对应的逻辑入口 ![[Pasted image 20240321173547.png]] 对应的具体实现逻辑,最外部的,是一个简单的”创建产品“按钮,还有全局点击事件触发,注册; 这个页签的逻辑,是逐渐嵌套展开的,所以最外层的,相对简单; ![[Pasted image 20240321173615.png]] 回顾一下,有一个产品版本相关的类; 其中有:Version版本,笔记列表容器、待办事项容器,事项获取器,添加/移除 待办事项等; ![[Pasted image 20240321173851.png]] 版本是由三个字段组成 ![[Pasted image 20240321174043.png]] 继续,回顾一下,产品类Product,还有特性类Feature; 产品是包含,不同的特性、不同的版本; 特性是有子特性容器Children,后续表现上,会是缩进嵌套的样式; ![[Pasted image 20240321174116.png]]