WM有约II(三):整合Outlook Mobile的约会信息

WM有约II(三):整合Outlook Mobile的约会信息

 

Written by Allen Lee

 

如何使用Outlook Mobile创建约会?

在着手设计和实现今天的功能之前,我们得先了解一下如何在Windows Mobile上使用Outlook Mobile创建和查看约会信息。首先,打开Calendar,单击Menu菜单项:

012209_1707_WMIIOut1.png

图 1

接着,单击New Appointment菜单项创建一个新的约会:

012209_1707_WMIIOut2.png

图 2

用上述方法创建多个约会:

012209_1707_WMIIOut3.png

图 3

然后依次单击Menu\View\Day菜单项切换视图:

012209_1707_WMIIOut4.png

图 4

就上图而言,7:15 PM和10:30 PM之间的状态应该是:

  • 7:15 PM – 7:45 PM:Watch Cartoon
  • 8:00 PM – 9:00 PM:Write Article & Listen to Music
  • 9:00 PM – 9:30 PM:Write Article
  • 9:30 PM – 10:30 PM:Watch TV

然而,这里还有一个"边界问题"需要处理,试想一下,9:30 PM的状态应该是什么?换句话说,共享端点应该属于哪个时间区间?这里我们来个约定,上面列举的时间区间是右半开区间,即"[Start, End)"。于是,9:30 PM的状态应该是Watch TV,9:00 PM的状态应该是Write Article,而7:45 PM的状态就不再是Watch Cartoon了。

 

如何查询Outlook Mobile的约会信息?

约会信息存储在AppointmentFolder.Items属性里,我们可以通过OutlookSession.Appointments属性获取AppointmentFolder对象。现在,我们需要一个(些)方法,实现如下所示的"转换"效果:

  • 1/21/2009 7:30 PM -> "Watch Cartoon"
  • 1/21/2009 7:50 PM -> ""
  • 1/21/2009 8:30 PM -> "Write Article; Listen to Music"
  • 1/21/2009 9:00 PM -> "Write Article"
  • 1/21/2009 10:00 PM -> "Watch TV"

首先,我们需要根据给定的DateTime对象从AppointmentFolder.Items属性里筛选出相应的Appointment对象,你可以使用LINQ来完成这项工作,不过这里我想试一下AppointmentCollection.Restrict方法,它只要一个参数——表示筛选条件的字符串,然而,这个筛选条件该如何表达呢?假设我们找出1/21/2009 8:30 PM的约会,我们只需找出起始时间小于或等于这个时间、结束时间大于这个时间的约会就行了,即:

[Start] <= \"1/21/2009 8:30 PM \" AND [End] > \"1/21/2009 8:30 PM \"

其中,Start和End是Appointment对象的属性,要用方括号围起来。现在,我们可以着手实现筛选逻辑了:

012209_1707_WMIIOut5.png

代码 1

如果返回的集合只有一个约会,那么我们直接使用这个约会的主题作为状态就行了;如果返回的集合没有约会,则状态为空字符串;如果返回的集合包含多个约会,我们就需要把这些约会的主题"串"起来。我相信此刻的你已经想出完成这项工作的办法了,这里我将会使用String.Join方法来处理:

012209_1707_WMIIOut6.png

代码 2

String.Join方法能够很好的处理上述三种情况,并返回我们期望的结果,免去了我们自行写条件语句做判断的麻烦。

 

回复哪里的状态?

到目前为止,我们有两个地方存储状态,一个是Outlook Mobile,另一个就是应用程序本身,那么当别人发短信息过来查询状态时,应该回复哪里的状态呢?应用程序一旦运行,总会设置一个状态,但Outlook Mobile却不一定什么时候都有约会。一个可行的策略是,如果两个地方都设置了状态,优先考虑Outlook Mobile的,否则,回复应用程序的。然而,用户也可能希望由他/她来决定是否考虑Outlook Mobile的约会信息,因为他/她有可能不想公开Outlook Mobile的约会信息。于是,我们可以为用户提供一个设置窗体:

012209_1707_WMIIOut7.png

图 5

上面的CheckBox用来设置是否考虑Outlook Mobile的约会信息,下面的TextBox用来设置String.Join方法(代码2)所用的分隔符,分隔符的设置只有在使用Outlook Mobile的约会信息时(即选中上面的CheckBox时)才有意义。而相关的配置信息如下所示:

012209_1707_WMIIOut8.png

代码 3

读/写配置信息的工作可以交给OptionManager,还记得第一辑《WM有约》有个OptionManager吗(参见《WM有约(二):配置信息》),嗯,你可能已经猜到了,我要盗用它的代码~

另外,为了便于使用,我特意提供了下面两个属性:

012209_1707_WMIIOut9.png

代码 4

回到设置窗体,窗体打开时会通过OptionManager读取配置信息:

012209_1707_WMIIOut10.png

代码 5

当用户单击OK菜单项时配置信息将会通过OptionManager保存到配置文件:

012209_1707_WMIIOut11.png

代码 6

而当用户选中/取消选中上面的CheckBox时,下面的TextBox会相应地改变其Enable属性的值:

012209_1707_WMIIOut12.png

代码 7

有了这些准备,我们就可以着手修改回复状态的代码了:

012209_1707_WMIIOut13.png

代码 8

最后,在主窗体上添加用于打开选项窗体的菜单项就可以运行应用程序了:

012209_1707_WMIIOut14.png

图 6

单击Options菜单项打开选项窗体:

012209_1707_WMIIOut15.png

图 7

单击OK关闭选项窗体,然后用Cellular Emulator向模拟器发送以下短信息:

  • What are you doing now?
  • {Trombone:PingStatus}
  • Hey, boy. What are you doing there?
  • {Trombone:PingStatus}

结果都顺利截获并成功回复Outlook Mobile的约会信息:

012209_1707_WMIIOut16.png

图 8

 

你还想要什么?

可以查询当前的状态,接下来很自然就会想要查询将来的计划,嗯,人总是得一想二的吗?下一集,我们将会尝试扩展查询功能,使之支持查询Outlook Mobile的计划安排,比如说,你想知道某人明天下午3点半有没有安排~

weixin073智慧旅游平台开发微信小程序+ssm后端毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
python017基于Python贫困生资助管理系统带vue前后端分离毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
weixin102旅游社交微信小程序+ssm后端毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值