本周一,把玩手中的M8时看到一消息,一哥们手机坏了,求救恢复通讯录。以前用Windows Mobile时GoogleSync是支持把通讯录同步到Google Contact上去的,但这需要连接电脑,通过ActiveSync才能同步。
当我后来切换到使用linux后,手机连上电脑也只能起个充电作用了,没法来和网络同步了。其它几款号称可以同步联系人等资料,但由这种小网站保管,总是不放心。何况现在用着M8,手上连一款像样的同步软件都没了,挑的机会都没有了。
嗯,于是乎,加上本来也想维护个开源项目,于是么,M8Pim就诞生了,项目托管在Google Code,使用GPL发布。
2009-12-01:第一天,我很喜欢折腾,所以早早地刷了M8的新UI固件,看了几个目录,发现M8存放资料的数据库由难用的edb变成了好用的sqlite3。当看到sms.db的magic number时,我内心一阵惊喜,这很明显就是sqlite3嘛!至少数据库读取资料不是件麻烦事了。edb这个死变态,总算可以不惹它了,据我粗略了解,这东西相当难用,还只能用在WinCE上,幸好Meizu明智地借着新UI的机会,转成了Sqlite3来存取资料。回到家后立马就去sqlite3.org下了个lib,嗯,还有个sqlite database browser,匆匆写了几条sql,加了几个控件,嘿,还真能读取并显示出来。err, 这么几行sql和几个控件就让我从7点搞到12点。GUI开发真让人崩溃啊,居然还是不带控件设计的,需要人肉计算坐标,设置资源ID等等。
2009-12-02:第二天,前一天只能显示个短信列表,今天把短信内容窗口也做了下,可以显示短信息的若干属性。可杯具的是,中文全是乱码,WinCE全都是使用unicode编码,可我还不知道sms.db里的编码格式。下班回来得较晚,做了个内容窗口,也就要休息了。
PS: vim用得太顺手了,即使在vs 2005中装了viEmu,都还是觉得不够,干脆下了个cygwin,然后装上vim,把我超强的vim配置文件拷过来,开始了用vim编写代码,然后用vs编译调试的奇怪组合体验了。vim能够应对大部分常见的补全,可是对于GUI和SDK里的内容就无能为力了,只好又转到vs中把需要的代码补全,然后又切到vim。
2009-12-03:第三天,网上搜了搜,发现有个CppSQLite3U这个Sqlite的C++封装库,本着节约不浪费体力的精神,就拿过来用了。这个库也是从CppSQLite3加上了unicode转换而来的,这个库并没有把CppSQLite3的所有特性都完善,嗯,至少在代码中如是说。然后自己也在这个基础上,使用了Bridge这个模式,将常用的Pim数据操作也做了个封装,暂且称之为PimDataLib好了。试了试,居然也能顺利地显示中文了。这个样子,可以先扔进svn@google code了,不好意思放在trunk中,只好在branches下开了个testing,这些工作算是前期验证功能能否实现吧,等有第一个成型的版本了,再放到trunk中去。
PS:我想既然sqlite是跨平台,那么我把常用的联系人操作封装好后,因为这些代码是与GUI无关的,并且里也没有什么平台相关的部分,我应该也可以在cygwin下用g++来编译。如果是这样的话,我做单元测试应该是比较方便的了,至少可以保证我的PimDataLib是没问题的。
2009-12-04:第四天,短信数据库中只有电话号码,如果只在短信列表显示号码,肯定不是个好主意。于是乎,还得将contact.db和sms.db关联起来,目前而言,短信列表和联系人列表没什么区别,于是又加了个联系人列表显示,并且在短信列表上不再显示号码,而是人名了。画界面真是个痛苦的事情,我想,在填充窗体代码之前,我还是用gimp先把想要的UI描出来,如果直接先写代码来画,如果不满意,那改起来又是很麻烦的事情了。
2009-12-05:第五天,仔细想了想,feature列表里,比较常用的应该还是模糊查找,快速拔号。于是乎,又在PimDataLib中加入了模糊查找联系人的代码,不过因为明天要出去爬山(十里琅铛),这部分代码就先不验证了,先洗洗睡了,这几天太累了,周六都还在上班,damn it。PimDataLib的部分先缓一缓,这部分问题经过验证,已经不大了,现在要做的就是界面设计了,痛苦ing。
2009-12-06 -> 2009-12-12:这一整个星期都在加班,晚上回来也没有力气整代码了,时不时地想想UI该怎么设计的问题,然后就洗洗睡了。
2009-12-13:花了一下午的时间,操起尘封已久的PS,弄了5张UI图,弄完后,眼睛看什么都是花的了。界面画得倒是挺满意,但要做出现对应的控件来,可得花点功夫了。
靠,你现在涉及的可真是够全的,我看好你!
哇,牛B闪闪~~~~~~~~~~
闪亮滨江。哈哈
楼主,M8Pim这个项目还在开发吗?能否将现有代码公开一下啊?
很惭愧啊,这个项目没能进行下去,我得把标题改一下了。
源代码托管在Google Code,地址是http://code.google.com/p/m8pim,你可以去那里看看源代码。
我对这个项目挺感兴趣的,因为我有一部M8,想把通讯簿和谷歌的联系人同步上。
能给我一个google Code的修改权限吗,我想尝试着继续开发。
我已经将你的邮箱加到项目的committers里了,你试着用你的Google Account提交试试?或者你可以自己新建一个项目,这个项目的svn信息在: http://code.google.com/p/m8pim/source/checkout
工程编译时提示“CallInterface.lib”打不开。
这个库文件,在何处能得到?
待我回家后看看是不是没有把CallInterface.lib加到svn中来,实在不好意思。:)
不好意思,现在才回复。
我翻了下工程,没发现有CallInterface.lib这个文件,因为此事相隔已久,我机器上已经没有wince的开发环境了。但我已将我电脑上的整个工作目录打包,通过电子邮件发到你Gmail里了。如仍有兴趣,还望过目。