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