Графический диалог "список" системы UIX. Поддерживает списки строк с иконками и доп. данными.
Содержание
Создание
В зависимости от потребностей создается функциями UIX_CreateListDlg или UIX_CreateListDialog (альтернативное имя UIX_CreateList).
Параметры
- app - указатель на приложение.
- num - количество элементов в списке.
- reqEntry - указатель на функцию, возвращающую элемент списка.
- имеет вид void * имя_функции( APPLICATION_T * app, UINT32 param ). Должна вернуть указатель на UIX_LIST_ENTRY_T.
- cbArray - массив указателей на функции колбэки диалога.
- Элементы массива:
- Обработчик действия "Select". Вызывается при нажатии на джойстик и вызове акшна "Select" (на софт кнопке). Может быть равным NULL.
- Обработчик действия "Back". Вызывается при вызове акшна "Back". Может быть равным NULL.
- Обработчик события "навигация". Вызывается когда пользователь изменяет положение курсора. Может быть равным NULL.
Заполнение списка элементами
Диалог не хранит данных об элементах списка, поэтому приложение должно заботиться о том, чтобы с максимальной скоростью выдавать эти данные.
Данные запрашиваются через функцию, указанную в reqEntry при создании диалога, вторым параметром ей передается номер строки. Функция должна веруть указатель на UIX_LIST_ENTRY_T. Память под элемент может быть выделена динамически, используя suAllocMem, или обьявлена как глобальная константа. В случае динамического выделения должен быть выставлен флаг LE_FLAG_FREE_MEM.
UIX_LIST_ENTRY_T
Структура описывает элемент списка. Поля:
- name - указатель на строку, которая должна быть написана в пункте. Память под строку может быть выделена динамически, тогда должен быть выставлен флаг LE_FLAG_FREE_NAME, чтобы система освоболила память.
- icon - иконка на пункте. Если есть иконка, должен быть выставлен флаг LE_FLAG_ICONIC.
- icon.bmp - указатель на AHIBITMAP_T.
- icon.point - координаты, откуда начинается иконка в изображении. Размеры иконки стандартные - 16x16, прозрачный фон задается цветом #FF00FF.
- flags - флаги, параметры. Используйте комбинации через знак логического сложения.
- возможные значения:
- LE_FLAG_DISABLED - пункт рисуется стандартным цветом "недоступный".
- LE_FLAG_ICONIC - текст рисуется с отступом для иконки от левого края.
- LE_FLAG_SELECTED - пункт рисуется стандартным цветом "выделенный".
- LE_FLAG_FREE_MEM - означает, что под структуру память выделена динамически, и ее нужно освободить.
- LE_FLAG_FREE_NAME - означает, что под строку память выделена динамически, и ее нужно освободить.
- LE_FLAG_HAS_DATA - у пункта есть дополнительные данные, которые нужно отобразить у правого края.
- LE_FLAG_FREE_DATA - под доп. данные пункта память выделена динамически (актуально только если доп. данные это указатель).
- LE_FLAG_SET_COLOR - пункт рисуется нестандартным цветом, который задается в доп. данных. Не рекомендуется использовать с сочетании с флагом LE_FLAG_HAS_DATA.
- dtype - указывает на тип доп. даннх, передаваемых в обьединении.
- возможные значения:
- LE_DATA_TYPE_STR - строка.
- LE_DATA_TYPE_STR_NUM - число строкой.
- LE_DATA_TYPE_STR_PW - пароль, все символы заменяются на звездочку.
- LE_DATA_TYPE_UINT32 - беззнаковое число длинной 32 бит.
- LE_DATA_TYPE_INT32 - знаковое число длинной 32 бит.
- LE_DATA_TYPE_BOOL - true/false.
- LE_DATA_TYPE_COLOR_565 - цвет в формате RGB565.
- LE_DATA_TYPE_COLOR_888 - цвет в традиционном формате RGB888.
- LE_DATA_TYPE_CHECKBOX - галочка.
- обьединение "дополнительные данные" - тип зависит от значения dtype.
Колбэки
Вызываются при навигации, выборе "Back" или при выборе пункта (акшн "Select").
Имеют вид:UINT32 имя_функции( EVENT_STACK_T * ev_st, APPLICATION_T * app, UINT32 param );
где третьим параметром передается номер текущего пункта, начиная от нуля.
Получение и изменение параметров
- Функция UIX_ListDlgGetPos и макрос UIX_ListGetPos / функция UIX_ListDlgSetPos и макрос UIX_ListSetPos - получение/изменение положения курсора. Отсчет от нуля.
- Функция UIX_ListDlgGetNum и макрос UIX_ListGetNum / функция UIX_ListDlgSetNum и макрос UIX_ListSetNum - получение/изменение количества пунктов.
Макросы получают первым параметром хэндлер UIS диалога.