Symbian 更换主题

  http://wiki.forum.nokia.com/index.php/%E5%A6%82%E4 %BD%95%E6%9B%B4%E6%8D%A2%E5%BD%93%E5%89%8D%E4%B8%BB %E9%A2%98
  如何更换当前主题
  From Forum Nokia Wiki
  * 设备, 软件 版本:
  S60 3rd Edition
  * 详细描述:
  [edit] 描述
  S60第三版SDK并未提供给第三方程序一个方法来更换主题。但我们可以在
  Extensions plug-in package for S60 3rd Edition SDK 获取到我们需要的API.
  [edit] 解决方案
  如何更换主题:
  1、连接Skin Server
  #include // link against aknskinsrv.lib
  RAknsSrvSession skinsSession;
  User::LeaveIfError( skinsSession.Connect( this ) );
  CleanupClosePushL( skinsSession );
  2、获取当前skin的package ID
  #include // link against centralrepository.lib
  #include
  void CMyThemeManager::StoreCurrentSkinIdL()
  {
  TAknsPkgIDBuf pidBuf;
  CRepository* repository = CRepository::NewL(KCRUidPersonalisation );
  TInt retVal = repository->Get( KPslnActiveSkinUid, pidBuf );
  delete repository;
  repository = NULL;
  iOriginalSkinPid.SetFromDesL( pidBuf ); // iOriginalSkinPid is of type TAknsPkgID
  }
  3、获得已安装skin packages列表
  CArrayPtr* skinInfoArray =
  skinsSession.EnumerateSkinPackagesL();
  CleanupStack::PushL( skinInfoArray );
  4、查询已安装的主题,确认第一个有效新主题
  TInt retValue( KErrNone );
  if ( skinInfoArray->Count() > 0 )
  {
  for ( TInt i = 0; i Count(); i++ )
  {
  TAknsPkgID pkgId = skinInfoArray->At( i )->PID();
  if ( pkgId != iOriginalSkinPid )
  {
  // Activates a complete skin package
  retValue = skinsSession.SetAllDefinitionSets( pkgId );
  if ( retValue == KErrNone )
  {
  SetNewSkinIdL( pkgId );
  }
  break;
  }
  }
  }
  5、在Central Repository中存储新主题id
  void CMyThemeManager::SetNewSkinIdL( TAknsPkgID aPkgId )
  {
  TAknsPkgIDBuf pidBuf;
  aPkgId.CopyToDes( pidBuf );
  CRepository* repository = CRepository::NewL( KCRUidPersonalisation );
  TInt retVal = repository->Set( KPslnActiveSkinUid, pidBuf );
  // KPslnActiveSkinLocation value needs to be updated
  // if the new skin resides on memory card and the
  // previous one resided in phone memory (and vice versa)
  delete repository;
  repository = NULL;
  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值