I am having trouble persisting the text value of a user defined entry in an Enumerated Text settings list. The S60 SDK example "AknExSettingList" shows how to get the desired UI functionality, but it does not demonstrate how to persist the text value of a user defined option entry.

Please note my problem is not with standard Enumerated Text settings lists - I can construct a settings list from a resource and persist the settings values. My problem is specifically with Enumerated Text settings lists that *allow user defined entries*.

If you think you can help, please run the AknExSettingList example on the emulator. Click the "Next" button 4 times to get to the "Enum Text in value field" screen - this screen allows the user to select one of 10 pre-defined options ("aaaaaa", "bbbbbb", etc.); OR select an 11th option "Other..." which opens a text editor where the user can input a user defined option.

QUESTION: Where is the text of the user defined option stored? For example, if the user inputs "newoption", what variable/array/structure/etc holds the value "newoption"?

CLARIFICATION: I should probably ask "HOW can the text value of the user defined option be stored?"... because the AknExSettingList example does not appear to store the text value of the user defined option. It appears "iData->iLanguageCode" stores the *integer* value of the option (see code snippet below), but it does not appear a variable has been declared to store the *text* of the user defined option.

Any help is appreciated... I have exhausted all of my resources including the SDK docs, the Nokia Press "Developing S60 Apps" book, the discussion.epoc.c++ newsgroup, and this helpful discussion board.

Please help symbianyucca, et al!

Applicable AknExSettingList code snippets follow... thanks for your patience.
-Lee


/*
* from resource.rss
* define settings list that allows user defined entry
*/

//-----------------------------------------------------------------------------
// r_aknexsettinglist_popup_setting_page_new_entry
// For outline%TODO%
//-----------------------------------------------------------------------------
RESOURCE POPUP_SETTING_LIST r_aknexsettinglist_popup_setting_list_new_entry
{
flags = EAknPopupSettingListFlagAllowsUserDefinedEntry;
}

//----------------------------------------------------------------------------
// r_aknexsettinglist_enumtext_setting_page
// Setting page
// For Outline04.
//----------------------------------------------------------------------------
RESOURCE AVKON_SETTING_PAGE r_aknexsettinglist_enumtext_setting_page
{
number= 1;
label= qtn_aknexsettinglist_enumtext_title;
type = EAknCtPopupSettingList;
editor_resource_id = r_aknexsettinglist_popup_setting_list_new_entry;
}

RESOURCE AVKON_POPUP_SETTING_TEXTS r_aknexsettinglist_popup_setting_list
{
setting_texts_resource = r_aknexsettinglist_page_list;
popped_up_texts_resource = r_aknexsettinglist_list_item_array;
}

RESOURCE ARRAY r_aknexsettinglist_page_list
{
items =
{
AVKON_ENUMERATED_TEXT
{
value = 0;
text = qtn_aknexsettinglist_item_list0;
},
AVKON_ENUMERATED_TEXT
{
value = 1;
text = qtn_aknexsettinglist_item_list1;
},
AVKON_ENUMERATED_TEXT
{
value = 2;
text = qtn_aknexsettinglist_item_list2;
},
AVKON_ENUMERATED_TEXT
{
value = 3;
text = qtn_aknexsettinglist_item_list3;
},
AVKON_ENUMERATED_TEXT
{
value = 4;
text = qtn_aknexsettinglist_item_list4;
},
AVKON_ENUMERATED_TEXT
{
value = 5;
text = qtn_aknexsettinglist_item_list5;
},
AVKON_ENUMERATED_TEXT
{
value = 6;
text = qtn_aknexsettinglist_item_list6;
},
AVKON_ENUMERATED_TEXT
{
value = 7;
text = qtn_aknexsettinglist_item_list7;
},
AVKON_ENUMERATED_TEXT
{
value = 8;
text = qtn_aknexsettinglist_item_list8;
},
AVKON_ENUMERATED_TEXT
{
value = 9;
text = qtn_aknexsettinglist_item_list9;
}
};
}
//----------------------------------------------------------------------------
// r_aknexsettinglist_setting_list_setting_enumtext
// ListBox( Setting style )
// For Outline04.
//----------------------------------------------------------------------------
RESOURCE AVKON_SETTING_ITEM_LIST r_aknexsettinglist_setting_list_setting_enumtext
{
flags= EAknSettingItemNumberedStyle;
title = qtn_aknexsettinglist_outline04;
initial_number = 1;
items =
{
AVKON_SETTING_ITEM
{
identifier = EAknExSettingEnumText;
setting_page_resource = r_aknexsettinglist_enumtext_setting_page;
associated_resource = r_aknexsettinglist_popup_setting_list;
name = qtn_aknexsettinglist_enumtext_title;
}
};
}


RESOURCE POPUP_SETTING_LIST r_aknexsettinglist_popup_setting_list_new_entry
{
flags = EAknPopupSettingListFlagAllowsUserDefinedEntry;
}


/*
* from aknexsettinglistlistbox.cpp
* construct settings list
*/
CAknSettingItem* CAknExSettingListListbox::CreateSettingItemL( TInt aIdentifier )
{
....
case EAknExSettingEnumText:
settingItem = new (ELeave) CAknEnumeratedTextPopupSettingItem(
aIdentifier, iData->iLanguageCode );
break;
....
}