Unity 编辑器扩展精粹_第九章.md 4.2 KB

回到待办事项子页签逻辑,刷新函数,会先清空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]]