Mastimer v1.0 设计说明

Design of Mastimer v1.0

结构设计

(图丢了)

类设计

Todo 用于描述一个任务,包含名称、三参数、已用时间、预计时间。以结构体形式呈现。

任务列表直接用 QVector<Todo>,不做单独的类

Controller 提供用户行为需要的所有方法

用户行为

番茄操作

begin new pomo 检查当前 pomoFlag=0 时令 pomoFlag=1 并记录 pomoStartTime

commit pomo 检查当前 pomoFlag=1 并且 currentTime-pomoStartTime>minimalPomoLength,检查 pctlTodolist 中有合法选项,读出选项 ID 并修改 m_todolist 中状态,最后提醒成功,并设置 pomoFlag=0,并重绘 pctlTodolist

destory pomo 检查当前 pomoFlag=1 并提醒用户确认,若确认,则 pomoFlag=0

任务操作

pctlShuffle 点击时,对 m_todolist 中每个元素重新生成优先因子,并排序

每次 pctlTodolist 中选项发生修改时,要更新下方 pctlTodoName, pctlTodoUsed, pctlTodoTotal, pctlTodoWeight, pctlTodoUrgency, pctlTodoFocus, pctlDeleteTodo 状态:如果没有选中则直接禁用,否则启用,并将修改内容

pctlTodoName, pctlTodoUsed, pctlTodoTotal, pctlTodoWeight, pctlTodoUrgency, pctlTodoFocus 中任何一个内容发生修改时,要同步修改 m_todolist 中的值,并重绘 pctlTodolist

pctlAddTodo 点击时,会自动产生一个新的 Todo

pctlDeleteTodo 点击时,询问用户是否确认,若确认则从 m_todolist 中删除该项,并重绘 pctlTodolist

模块设计

pctlTodoName, pctlTodoUsed, pctlTodoTotal, pctlTodoWeight, pctlTodoUrgency 只要做一个值同步的功能即可,所以不单独设计类

pctlDeleteTodo 只需要调用一个申请删除的函数即可,这个函数放在 Controller 类中实现

pctlTodolist 只需要负责显示 m_todolist 的内容并返回当前选择什么即可,也不单独成类

pctlPomoBegin, pctlPomoCommit, pctlPommoDestroy 只需要调用 Controller 类中提供的函数即可

pctlPomoStatus 由一个定时器控制,不断从 Controller 接口提供的函数中获取当前番茄状态

接口设计

Todo 类

这是一个结构体,public 成员有 name,weight,urgency,focus,used,total,包含 private 成员 randfactor

提供成员函数 generateRandomFactor(),重新生成一个 randfactor

提供成员函数 double Evaluation(),返回根据公式计算出的优先级(Controller 会根据这个优先级对 todo 进行重排序)

Controller 类

Controller 类包含 private 成员 m_todolist, pomoFlag, pomoStartTime

提供成员 bool PomoBegin()

提供成员 bool PomoCommit(int nId)

提供成员 bool PomoDestroy()

提供成员 QString PomoStatus()

提供成员 void ShuffleTodolist()

提供成员 Todo& GetTodo(int nId)

提供成员 void AddTodo(int nId)

提供成员 void DeleteTodo(int nId)

原文地址:https://www.cnblogs.com/mollnn/p/14940958.html