CAknSettingItemList中使用CAknEnumeratedTextPopupSettingItem使用心得






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();    //刷新

    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值