CAknSettingItemList中使用CAknEnumeratedTextPopupSettingItem使用心得
CAknSettingItemList是一个控件,而CAknEnumeratedTextPopupSettingItem不是一个控件。只是在CAknSettingItemList中设置了一种列表的方式。
//--------------------------------------.rss文件--------------------------------------
RESOURCE POPUP_SETTING_LIST r_popup_setting_list
{
flags = 0;
}
RESOURCE AVKON_SETTING_PAGE r_enumeratedtext_setting_page
{
type = EAknCtPopupSettingList;
editor_resource_id = r_popup_setting_list;
}
RESOURCE AVKON_POPUP_SETTING_TEXTS r_popup_setting_texts
{
setting_texts_resource = r_texts;
}
RESOURCE ARRAY r_texts
{
items =
{
AVKON_ENUMERATED_TEXT
{value=0; text = "dummy";}
};
}
RESOURCE AVKON_SETTING_ITEM_LIST r_entry_settings_list
{
title = "Example";
}
//--------------------------------------创建列表--------------------------------------
1.Container的头文件中
CAknSettingItemList* iItemList;
TInt iEnumText1;
//此函数用于创建CAknEnumeratedTextPopupSettingItem列表项
void LoadListL();
//获取列表选中的内容
void GetCurSelect();
//设置列表选中的内容
void SetCurSelect();
//这三个为.cpp文件中的全局变量
_LIT(KName9, "Enumerated text");
_LIT(KEnumText1, "Enum text 1");
_LIT(KEnumText2, "Enum text 2");
2.Container的定义文件中
构造函数中设置为NULL
iItemList = NULL;
3.二段构造ConstructL()函数中
iItemList = new (ELeave) CAknSettingItemList;
iItemList->SetMopParent(this);
iItemList->ConstructFromResourceL(R_ENTRY_SETTINGS_LIST);
iItemList->SetFocus(ETrue);
LoadListL();
iItemList->MakeVisible(ETrue);
iItemList->SetExtent(aRect.iTl, TSize(aRect.Size().iWidth,
aRect.Size().iHeight));
iItemList->ActivateL();
iItemList->ListBox()->UpdateScrollBarsL();
//iItemList->DrawNow();
4.定义LoadListL()函数
void CMainContainer::LoadListL()
{
TBool isNumberedStyle = iItemList->IsNumberedStyle();
CArrayPtr<CGulIcon>
* icons =
iItemList->ListBox()->ItemDrawer()->FormattedCellData()->IconArray();
/*Enumerated text setting item*/
CAknEnumeratedTextPopupSettingItem* item9 =
new (ELeave) CAknEnumeratedTextPopupSettingItem(1, iEnumText);
CleanupStack::PushL(item9);
// The same resource id can be used for multiple enumerated text setting pages.
item9->ConstructL(isNumberedStyle, 9, KName9, icons,
R_ENUMERATEDTEXT_SETTING_PAGE, -1, 0, R_POPUP_SETTING_TEXTS);
// Load texts dynamically.
CArrayPtr<CAknEnumeratedText>* texts = item9->EnumeratedTextArray();
texts->ResetAndDestroy();
CAknEnumeratedText* enumText;
// Text 1
HBufC* text = KEnumText1().AllocLC();
enumText = new (ELeave) CAknEnumeratedText(0, text); //0代表此条记录的编号
CleanupStack::Pop(text);
CleanupStack::PushL(enumText);
texts->AppendL(enumText);
CleanupStack::Pop(enumText);
// Text 2
text = KEnumText2().AllocLC();
enumText = new (ELeave) CAknEnumeratedText(1, text); //1代表此条记录的编号
CleanupStack::Pop(text);
CleanupStack::PushL(enumText);
texts->AppendL(enumText);
CleanupStack::Pop(enumText);
iItemList->SettingItemArray()->AppendL(item9);
CleanupStack::Pop(item9);
// Required when there is only one setting item.
iItemList->SettingItemArray()->RecalculateVisibleIndicesL();
iItemList->HandleChangeInItemArrayOrVisibilityL();
}
5.定义获取选中的值
void CMainContainer::GetCurSelect()
{
iItemList->StoreSettingsL();
iEnumText1; //此时iItemList列表已经更新,选中的值已经反映到iEnumText1中
}
6.设置选值
void CMainContainer::SetCurSelect()
{
iItemList->StoreSettingsL(); //更新列表
iEnumText1 = 1; //设置1为当前选中的内容
iItemList->LoadSettingsL(); //加载设置
iItemList->DrawDeferred(); //刷新
}
CAknSettingItemList中使用CAknEnumeratedTextPopupSettingItem使用心得
最新推荐文章于 2024-09-15 18:25:31 发布