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)