如何创建自己的的message Folder

            symbian messing system 简介

 

    1   在symbian系统中,短信息有一个一个的entry组成,每个entry都有一个唯一的ID,通常用TMsvId 类型表示 。一个entry可以为四种类型  (1)    folder   ( 2) message  (3) attachment  (4 ) a service entry 


  2  一个entry 可以包含其他的entry ,当然自己也可以为另一个entry的子entry , 这就形成了一个和文件系统类似的树结构系统。


   3 其中树的根节点为  RootIndexEntry    在树节点下有四个 子节点 ,分别为 Inbox , OutBox , Draft  , SentBox 就是我们常用的收件箱,发件箱,草稿箱,等等。

  

4   service entry 是一类特殊的entry ,包含许多特殊的信息如 (1) 服务 (2)账号 。 通常只有一个。 但是也可以由多个,比如每一个email entry 都有一个service entry都有一个sevice entry ,MMS entry 也有多个,但是sms通常只有一个。

 


                                      二 信息索引  


    1   messing server 通常维护一个对各种信息通用的entry索引,当服务器运行的时候,索引被读入内存,只有当系统出现故障的时候才把索引放到文件存储中。   索引中存储的只是每个消息的轻量级信息,诸如大小,日期 ,类型等等。 这样就能快速的得到每个entry的概要信息 ,从而使收件箱快速的展示每一串短信,TMsvEntry 就是表示上述索引的类。

 

                                        三实际存储

 

在messaging system 中每个entry都有一个实际存储,这个实际的存储就有了类型的差别。通常每个message entry 用这个实际存储来存储消息的正文和消息头。而service entry 则存储配置信息,附件也存储在这个entry中,通常用CMsvStore来表示这个这个存储。

                             

通常通过CMsvSession 的GetEntryL(TMsvId aEntryId); 来获得CMsvEntry 的引用,例如你要是想得到rootentry ,那么你就需要传递KMsvRootIndexId (在MSCIDS.h)中定义 。

 

                                          四 在messaging system中增加自己定义的folder

 

 

 

 这种自己定义的文件夹和收件箱,草稿箱,发送箱是一个等级的。方法如下(找了好久才找到的):

   

      在msvids.h 中增加以下一项

const TMsvId KMsvMyFoldersEntryId=KMsvMyFoldersEntryIdValue;

在msvstd.hrh中增加以下一项 
#define KMsvMyFoldersEntryIdValue 0x1008



TMsvId msvServId;
CMsvEntry * entry1 = NULL ;
CMsvEntry * rootEntry = NULL ;
CMsvEntry * entryRootService = NULL ;
 
TInt newFldrID = 0 ;
 
//Get the entry (whatever is passed in)
entry1 = iSmsMtm- > Session( ) .GetEntryL ( KMsvMyFoldersEntryIdValue) ; 自己定义的文件ID ,就是上述在系统头文件中修改的
CleanupStack:: PushL ( entry1) ;
 
if ( entry1)
{
msvServId = entry1- > OwningService( ) ; //得到父目录的ID
 
entryRootService = iSmsMtm- > Session( ) .GetEntryL ( msvServId) ; //这句不知道有什么用
CleanupStack:: PushL ( entryRootService) ;
 
rootEntry = iSmsMtm- > Session( ) .GetEntryL ( msvServId) ; //得到你要创建目录的父目录的CMsvEntry对象
CleanupStack:: PushL ( rootEntry) ;
 
rootEntry- > SetEntryL( KMsvMyFoldersEntryIdValue) ; // set to parent
 
TMsvEntry newServiceEntry;
TTime ttime;
ttime.HomeTime ( ) ;
newServiceEntry.iDate = ttime;
newServiceEntry.iSize = 0 ;
newServiceEntry.iType = KUidMsvFolderEntry;
newServiceEntry.iMtm = KUidMsvLocalServiceMtm;
newServiceEntry.iServiceId = iSmsMtm- > ServiceId( ) ;
newServiceEntry.iDetails .Set ( _L( "Wiki" ) ) ;
newServiceEntry.iDescription .Set ( KNullDesC) ;
newServiceEntry.SetVisible ( ETrue) ;
 
rootEntry- > CreateL( newServiceEntry) ; //在根目录下创建myFolder的 TMsvEntry的对象
newFldrID = newServiceEntry.Id ( ) ; //得到myFolder的TMsvId 的值
iNewFolderId= newFldrID;
CleanupStack:: PopAndDestroy ( ) ;
CleanupStack:: PopAndDestroy ( ) ;
}


上述就是基本的操作,淡然你最好就是在创建 的时候先查询一下 ,判断你要创建的文件名是否与系统已有文件冲突















 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值