I've subclassed CAknSelectionListDialog to do almost what I want, but I'd like to customize the ItemDrawer used by the list. To do this, it looks as if I need to create my own ListBox subclass.
So I've got a resource file with a section like this:
RESOURCE DIALOG r_listdlg_dialog
flags = EAknDialogSelectionList;
buttons = R_AVKON_SOFTKEYS_DONE_CANCEL;
type = EAknCtSingleListBox ; // putting a custom type here causes trouble
id = ESelectionListControl;
control = LISTBOX
flags = EAknListBoxMultiselectionList;
array_id = r_listdlg_list_array;
itemflags = EEikDlgItemNonFocusing;
id = EFindControl;
type = EAknCtSelectionListFixedFind;
...and until that point everything works fine. But I'd like to change the type in the first DLG_LINE section and create my own ListBox class using CreateCustomControlL. So far I haven't been able to get this to work -- it panics with AVKON 6 or AVKON 56.
I understand that it might also be necessary to do something with ConvertCustomControlTypeToBaseControlType and IsAcceptableListBoxType, but I've had trouble finding good documentation on these.
Has anyone had any luck with custom lists in a CAknSelectionListDialog? Or is there any way to replace the ItemDrawer without a custom list?