博客园丁

我是博客园的一丁,我会永不停顿,不停创新。
  首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
为设置列表的列表项设置值,有点拗口,大体意思是,如果用户不满意自己的设置,想把它设置回默认值的操作。

问题核心:怎样为SettingsList赋值的问题。

解决方法:iListBox->LoadSettingsL()

首先看一下创建设置列表函数CreateSettingListL(TInt aIdentifier)的重载,代码如下:
 1 CAknSettingItem* CFirewallSettingList::CreateSettingItemL( TInt aIdentifier)
 2     {
 3     CAknSettingItem* settingItem = NULL ;
 4     
 5     switch (aIdentifier)
 6         {
 7         case ESettingItemSizeLogFile:
 8             settingItem = new (ELeave) CAknIntegerEdwinSettingItem(aIdentifier, iData->iSizeOfLogfile) ;
 9             break ;    
10         case ESettingItemIsRecordLog:
11             settingItem = new (ELeave) CAknBinaryPopupSettingItem(aIdentifier, iData->iIsRecordLog) ;
12             break ;    
13         case ESettingItemDefaultAction:
14             settingItem = new (ELeave) CAknEnumeratedTextPopupSettingItem(aIdentifier, iData->iDefaultAction) ;
15             break ;    
16         case ESettingItemIsAutostart:
17             settingItem = new (ELeave) CAknBinaryPopupSettingItem(aIdentifier, iData->iIsAutoStart) ;
18             break ;    
19         default:
20             break;
21         }
22     return settingItem ;
23     }
24 
第8、11、14、17行是用来创建设置列表的列表项,可以看出我们用了三种设置列表。
例如:CAknIntegerEdwinSettingItem(aIdentifier, iData->iSizeOfLogfile) 这个函数,其中第二个参数为我们要给该项赋值的值。
通过从新设置iData的值,然后调用LoadSettingsListL()函数,就会将iData的值重新送给SettingsList,然后将新值显示出来。