[TOC]
随着时代不断进步,我们的生活节奏也越来越快,每个人都在努力用更短的时间做更多的工作,在这种模式下,合理高效的时间管理显得极为重要,比如对于广大的学生群体,尤其是对于我们这些已经开始自由支配时间的大学生,将自己的时间分配的是否合理,将影响到我们的学业成绩的好坏、课余生活的丰富程度、将来独自生活的能力等等;又比如对于一个项目团队,将完成项目所需的工作罗列出来并制定时间计划,然后分配给每个团队成员,可以有效地提高整个团队的工作效率。
而清单类软件和桌面日历类软件则是进行有效时间管理的强力工具,经过合理设计的此类软件还能实现番茄工作法,四象限法,GTD
等著名的时间管理方法。桌面日历软件和清单类软件相比,其能在日历中一目了然地呈现你需要完成的工作,以及配合颜色编码、形状编码等技巧来快速的呈现诸如任务的重要程度,任务所需的时间、任务种类等信息,给我们更加清晰和直接的反馈。
选择这样一个题目,除了出于其实用性的考虑,还考虑到这样一个软件涉及到很多“组件”,比如月视图中的每个日期块,周视图中的每个时间段块,负责数据库存储数据的组件,负责处理事件的组件,负责文件读写的组件等一系列组件,这些组件正好可以使用C++
的类设计来实现,并且由于一些组件之间也存在着相似性和同源性,更能体现面向对象的编程**。
通过上网调研以及结合自己使用时间管理软件的经验,市场上清单类软件较多(例如滴答清单,奇妙清单,TODO
等),而比较完善好用的桌面日历类软件较少,经过对比发现,滴答清单在众多时间管理类软件中功能较为强大,使用方便,在作为清单类软件的同时,也提供了桌面日历小插件,网页版也提供了日历视图,兼具清单类软件和桌面日历软件的优点。因此,下面将滴答清单的日历视图作为同类软件进行分析。
该日历视图支持日视图(只显示某一天的任务安排,细化到每15分钟一个时间格子),周视图(显示某一周的任务安排,细化到每15分钟一个时间格子),月视图(显示某个月的任务安排,细化到每天为一个格子),其中,日视图和周视图支持从一个时间格子开始按住鼠标右键,并拖动到同一天另一个格子并松开鼠标时创建从第一个格子时间点开始,截止到松开鼠标时格子时间点的任务。另外支持事件显示的筛选,即只显示满足筛选条件的事件。日历视图还支持按照清单(事件所在的文件夹)的颜色、事件标签(事件的种类属性)的颜色以及事件的优先级颜色来在显示事件,如下图所示即为来自两个清单的事件在日历视图中的显示效果。
上述日历视图功能已经很成熟,既能清晰的显示事件,又能方便地添加事件。但是,有一种应用场景是:我们有一堆文件需要处理,或者某项任务涉及到一个文件。如果我们只是在日历视图中添加事件“审阅xxx
电子版文档”,那么我们需要在电脑上找到这个文档,再打开处理,那么,如果我们可以通过把文件使用鼠标拖拽到对应的时间格子里,并且可以双击该事件来打开该文件,那么是不是方便了很多呢?通过问卷调查,大部分人期待有这样一个功能(如下图所示):
遗憾的是,滴答清单的日历视图并没有实现此功能,并且其它桌面日历类软件也没有实现该功能。此外,鉴于微信、QQ
等聊天软件是产生事件、任务的高频场景,尽管可以通过复制别人发过来的信息然后在桌面日历中粘贴创建提醒,但是如果能够通过直接通过将文字拖拽到桌面日历中并自动弹出为任务安排时间的窗口,也能够大大提高效率,而这个功能在我所调研到的此类软件中也没有实现。
总结起来,我会在实现桌面日历软件的基础功能的基础上,实现拖拽文件和拖拽聊天信息来创建任务的功能。
以下文本中,下划线表示操作方式,黑体表示软件内名词,标签内文本表示软件内窗口以及按键
- 实现按月显示公历日历,并显示一些常见节日
- 实现按一刻钟一个格子的方式显示周视图
- 支持日历的位置移动嵌入桌面(即鼠标穿透和不响应任何输入),隐藏与显示的操作
- 支持在事件开始时间前通过弹出窗口并播放音效来进行提醒,提醒时间可自由设置
事件有名称,开始截止时间,提醒时间,颜色,优先级等属性
- 在月视图中,通过在某个日历格子上单击鼠标左键来打开
事件添加窗口
,可添加当天的事件 - 在月视图中,支持通过将文件拖拽到对应日期格子上来添加文件类事件,并弹出
事件添加窗口
- 在周视图中,支持通过在某个格子上双击来添加起始时间为该格子起点时间的事件,并弹出
事件添加窗口
- 在周视图中,支持从事件开始时间所在的格子开始按住鼠标左键,并移动鼠标,直到事件截止时间所在的格子时松开鼠标左键,即可创建该时间段内的事件,并弹出
事件添加窗口
- 支持拖拽聊天信息中的文本信息到日历视图中来添加名称为该文本内容的事件,并弹出
事件添加窗口
- 在月视图中,可通过单击可见的事件来选定该事件,在有事件被选定的状态下,可通过预设的
快捷键
来实现重命名事件,完成事件,删除事件,延缓事件等操作,支持选定多个事件。选定事件后单击日历中的空白部分或通过Esc
建来退出选定状态 - 在月视图中,对于文件类事件(即通过文件拖拽创建的事件),支持通过双击该事件来使用系统默认软件打开该文件,对于非文件类事件,双击动作无效
- 在月视图与周视图中,支持在可见事件上通过点击鼠标右键来弹出该事件的编辑窗口,可以设置事件的开始截止时间,提醒时间,颜色等属性,也可以进行完成事件和删除事件,重命名事件等操作
-
在月视图中,对于同一天的事件,根据事件添加到日历中的先后顺序显示,先添加的先显示,当事件数量超过格子可显示的事件数量时,隐藏后面的添加的事件,可通过双击格子预留空白部分或单击格子角落的
更多
按钮来打开事件汇总窗口
来显示所有事件事件汇总窗口
相当于一个放大了的格子,可以完成格子中可对事件进行的所有操作 -
在周视图中,当几个事件的时间段有交叉时,事件会在横向平分格子来显示事件,当事件有重叠的事件的数量超过某个阈值后,后添加的事件将不在视图中可见,需要打开
事件汇总窗口
来查看 -
在周视图中,通过双击最上方时间格子上面的日期格子来打开
事件汇总窗口
-
支持筛选显示的操作,即可以设置只显示高优先级的事件或只显示某一颜色的事件