Открыть главное меню

Графический диалог "список" системы UIX. Поддерживает списки строк с иконками и доп. данными.


Создание

В зависимости от потребностей создается функциями UIX_CreateListDlg или UIX_CreateListDialog (альтернативное имя UIX_CreateList).

Параметры

  • app - указатель на приложение.
  • num - количество элементов в списке.
  • reqEntry - указатель на функцию, возвращающую элемент списка.
    имеет вид void * имя_функции( APPLICATION_T * app, UINT32 param ). Должна вернуть указатель на UIX_LIST_ENTRY_T.
  • cbArray - массив указателей на функции колбэки диалога.
    Элементы массива:
    1. Обработчик действия "Select". Вызывается при нажатии на джойстик и вызове акшна "Select" (на софт кнопке). Может быть равным NULL.
    2. Обработчик действия "Back". Вызывается при вызове акшна "Back". Может быть равным NULL.
    3. Обработчик события "навигация". Вызывается когда пользователь изменяет положение курсора. Может быть равным 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 диалога.