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