Экраны и папки плагина: виды, раскладки, элементы и картинки¶
Редакция 2026-10-31. Как PHP-плагин Dune HD описывает экран: какой вид папки выбрать, как задать сетку или список, как отдавать элементы кусками, откуда брать картинки и фон, как обновить уже показанный экран и что такое rows и GComponents. Источники: SDK плагинов (
doc; платформаany-documented, версия документа не указана — версии только там, где SDK их помечает);dune_api.phpиshell_ext/libпрошивки tv188b260827_0003_r24и261021_0117_r25(code,android-dune-fw); Android APK r24260724_0207(code,android-atv); исходники плагинов GlobalTV260130_1351, Widget Ext 1.5.6, Screenshoter 1.0.6, моста Lampa 1.0.1 и Домашнего ТВ 3.5.4 с модом ext_epg (code). Отрисовка на устройстве не проверялась — §6. Каждое фактическое предложение ссылается на claim id.Рядом: клавиши, диалоги и контролы —
guide/input-dialogs.md; запуск воспроизведения и OSD —guide/playback.md; очередь операций и тайм-ауты —guide/plugin-operations.md; поставщик каталога «Фильмы» —guide/movie-suppliers.md; различия прошивок —guide/versions.md; каталог приёмов плагинов —guide/plugin-recipes.md.
Коротко: вопрос → ответ¶
| Вопрос | Ответ | Где |
|---|---|---|
| С чего начинается экран плагина? | с DunePlugin::get_folder_view($media_url): оболочка вызывает его, исполняя PLUGIN_OPEN_FOLDER (SDK)1 |
§1 |
| Какие бывают виды папок? | SDK: regular, controls, movie (SDK)2; в dune_api.php r24 tv188b ещё view_gcomps и view_rows (код r24)3 |
§1, §2.10 |
| Как задать сетку? | ViewParams::num_cols и num_rows — обязательные положительные целые (SDK)4 |
§2.1, §3.2 |
| Как показать список, а не сетку? | один столбец: так делает Widget Ext 1.5.6 (num_cols=1, num_rows=12) (код)5 и вид серий VOD в shell_ext r25 (num_cols=1, item_layout=HALIGN_LEFT) (код r25)6 |
§2.1 |
| Как не отдавать все элементы сразу? | ленивая папка: initial_range — первый кусок, дальше оболочка вызывает get_regular_folder_items() (SDK)7 |
§2.2 |
| Как дать переключать вид папки? | multiple_views_supported = true и get_next_folder_view(), его оболочка вызывает по A_RED (SDK)8 |
§2.3 |
| Какие картинки и URL поддерживаются? | JPEG, PNG, BMP и AAI (SDK)9; http://, plugin_archive://, plugin_file://, gui_skin:// (SDK)10 |
§2.4 |
| Почему экран замирает, пока грузятся иконки? | при async_icon_loading = false GUI блокируется до загрузки видимых иконок (SDK)11 |
§2.4 |
| Как задать фон? | регулярная папка — ViewParams::background_path (SDK)12; control- и movie-папка — PluginFolderViewParams::background_url (SDK)13 |
§2.5 |
| Как обновить открытую папку? | текущую регулярную — PluginUpdateFolderAction (SDK)14; родительскую — PluginInvalidateFolders (SDK)15 |
§2.7 |
| Почему обновление не сработало? | PluginUpdateFolderAction вне регулярной папки игнорируется (SDK)16; во время TV/VOD-воспроизведения исполняются только пять действий (SDK)17 |
§2.7 |
| Как сделать экран настроек? | control-папка; изменения применяются через HANDLE_USER_INPUT (SDK)18 |
§2.8 |
| Как показать карточку фильма? | movie-папка: PluginMovieFolderView с PluginMovie (SDK)19 |
§2.9 |
| Можно ли использовать GComponents и rows? | SDK называет GComponents незавершённым и внутренним (SDK)20; оба вида объявлены в r24 tv188b (код r24)3 | §2.10, §5 |
1. Как устроен экран плагина¶
Объект: папка плагина в SDK плагинов (doc, any-documented, версия документа не указана); сверх SDK — dune_api.php
tv188b r24 (code).
Экран плагина — это папка: оболочка Dune открывает её, получает от плагина описание и показывает результат как содержимое папки (SDK)21. Поэтому разработчик не рисует экран, а выбирает вид папки и заполняет его структуру; от вида зависит тип данных (SDK)22. Ниже — кто кого вызывает.
- Папку открывает GUI-действие
PLUGIN_OPEN_FOLDER; в ответ оболочка вызываетget_folder_view()плагина (SDK)23. Без этого метода иерархии папок у плагина нет (SDK)24. ДействиеPluginOpenFolderActionберёт необязательныеcaptionиmedia_url, добавляетcaptionв блок пути и вызываетget_folder_view($media_url)(SDK)25. Безmedia_urlберётсяmedia_urlвыбранного элемента, а без выбранного элемента действие игнорируется (SDK)26; безcaptionв путь идётcaptionвыбранного элемента (SDK)27. - Плагин возвращает
PluginFolderViewс полямиview_kind,data,multiple_views_supportedиarchive(SDK)28; типdataзависит отview_kind(SDK)22. - Если регулярная папка ленивая, оболочка дозапрашивает элементы через
get_regular_folder_items(), обычно при прокрутке (SDK)29 — §2.2. - Если папка объявила несколько видов, по
A_REDоболочка вызываетget_next_folder_view()(SDK)8 — §2.3. - Клавиши, карта действий и то, какие нажатия доходят до плагина, —
guide/input-dialogs.md§2.1–2.2.
SDK различает три вида папок (SDK)30:
view_kind |
data |
Что это | Задача | Claim |
|---|---|---|---|---|
PLUGIN_FOLDER_VIEW_REGULAR |
PluginRegularFolderView |
таблица элементов в сетке | каталог, список — §2.1 | (SDK)31 |
PLUGIN_FOLDER_VIEW_CONTROLS |
PluginControlsFolderView |
вертикальный список контролов для настроек | экран настроек — §2.8 | (SDK)31 |
PLUGIN_FOLDER_VIEW_MOVIE |
PluginMovieFolderView |
карточка фильма | карточка фильма — §2.9 | (SDK)31 |
Сверх перечня SDK в dune_api.php r24 tv188b объявлены PLUGIN_FOLDER_VIEW_GCOMPS='view_gcomps' и
PLUGIN_FOLDER_VIEW_ROWS='view_rows' (код r24)3, а у PluginFolderView там шесть
ключей — добавлены folder_type и params (код r24)32. Что это за виды и можно ли
на них опираться — §2.10.
Раскладка регулярной папки. Обычно экран делится на блок пути сверху (необязательный), блок содержимого слева снизу и блок деталей справа снизу (SDK)33. Блок содержимого разбивается числом строк и столбцов на прямоугольники элементов одинакового размера (SDK)34; в непустом прямоугольнике обычно иконка и подпись (SDK)35. Блок деталей показывает выбранный элемент: иконку сверху и структурированный текст ниже (SDK)36.
Два уровня параметров. ViewParams назначаются папке и задают отображение её содержимого
(SDK)37; ViewItemParams назначаются каждому элементу и вместе с ViewParams папки влияют
на его вид (SDK)38. В PluginRegularFolderView первые лежат в view_params
(SDK)39, а base_view_item_params задаёт значения ViewItemParams по умолчанию для каждого
элемента (SDK)40. Поэтому сетку, фон и блоки настраивают в view_params
(SDK)41, общий вид элемента — в
base_view_item_params (SDK)40, а отклонения — в view_item_params отдельного элемента
(§3.4) (SDK)38.
2. Задачи¶
2.1. Показать каталог сеткой или списком¶
Объект: регулярная папка, ViewParams и ViewItemParams в SDK плагинов (doc, any-documented); примеры —
Widget Ext 1.5.6 и shell_ext tv188b r25 (code).
Каталог — это регулярная папка (§1) (SDK)30. Сетку задают ViewParams::num_cols и num_rows: это
обязательные положительные целые (SDK)4. Положение и размер блока содержимого задают
content_box_x/y/width/height (по умолчанию auto) (SDK)42, внутренние отступы — content_box_padding_* (по умолчанию
20) (SDK)43. У каждого элемента обязателен URL иконки icon_path
(SDK)44.
Список. Отдельного вида «список» среди видов SDK нет (SDK)2; список строят как сетку в
один столбец. Так делает Widget Ext 1.5.6: экран plugins_screen — регулярная папка с num_cols=1, num_rows=12, иконкой gui_skin://small_icons/folder.aai и
item_caption_width=1550 (код)5. Вид серий VOD в shell_ext r25 — тоже один столбец и 12 строк, с
item_layout=HALIGN_LEFT, icon_valign=VALIGN_CENTER, icon_dx=10, icon_dy=-5, item_caption_dx=60
(код r25)6. При item_layout=left иконка стоит слева, а текст идёт от
левого края текстового блока (SDK)45. Но текстовый блок обычно занимает всю ширину
элемента, поэтому, чтобы текст не лёг поверх иконки, меняют item_caption_dx или item_caption_width
(SDK)46. icon_valign действует только при item_layout=HALIGN_CENTER
(SDK)47.
Горизонтальная лента. orientation=horizontal доступна с прошивки 131203_b9 (SDK)48;
анимация прокрутки scroll_animation_enabled сейчас действует только в горизонтальной ориентации
(SDK)49. Режим cycle_mode_enabled удерживает выделение в центре при прокрутке
(SDK)50.
Нельзя: включать cycle_mode_enabled в вертикальной папке, в сетке из нескольких строк или с чётным числом
столбцов либо меньше пяти — режим действует только при horizontal, одной строке и нечётном числе столбцов ≥ 5
(SDK)50. Параметры промежутка cycle_mode_gap* действуют только при фактически включённом
режиме (SDK)51.
Подписи, блок деталей и украшения элемента — §2.6; полные таблицы свойств — §3.2 и §3.3.
2.2. Отдавать элементы кусками: ленивая папка¶
Объект: PluginRegularFolderView::initial_range и get_regular_folder_items() в SDK плагинов (doc,
any-documented); PluginRegularFolderRange и помощники в dune_api.php/shell_ext tv188b r24 (code).
Регулярная папка бывает простой — всё содержимое отдаётся сразу — и ленивой, с подгрузкой кусками; общий размер
ленивой папки может быть известен или неизвестен (SDK)52. Выбор делается через initial_range: у
простой папки он должен содержать все элементы, у ленивой — первый кусок или даже пустой список
(SDK)53.
Для простой папки оболочка никогда не вызывает get_regular_folder_items() (SDK)54. Для
ленивой — вызывает каждый раз, когда нужно показать ещё не загруженные элементы, обычно при прокрутке
(SDK)29; метод возвращает запрошенный кусок как PluginRegularFolderRange
(SDK)55. Загруженные элементы оболочка кэширует в памяти до выхода из папки
(SDK)56.
Кусок в dune_api.php r24 — PluginRegularFolderRange с ключами total, more_items_available, from_ndx, count,
items (код r24)57. Помощник HD::create_regular_folder_range($items, $from_ndx=0,
$total=-1, $more_items_available=false) строит такой массив и обрезает items по total
(код r24)58. В shell_ext r24 простая папка — это
AbstractPreloadedRegularScreen: его get_folder_range игнорирует from_ndx и отдаёт все элементы
(код r24)59.
Ленивые ряды rows-вида в r25 устроены иначе — §2.10.
2.3. Несколько видов одной папки¶
Объект: multiple_views_supported и get_next_folder_view() в SDK плагинов (doc, any-documented); реализация в
shell_ext tv188b r24 и r25 (code).
Одну и ту же папку можно показывать по-разному; пользователь переключает виды клавишей
A_RED (SDK)60. Для этого плагин ставит PluginFolderView::multiple_views_supported
(SDK)61 и реализует get_next_folder_view(): при multiple_views_supported == true
оболочка вызывает его по A_RED и получает следующий вид (SDK)8. Обновление данных —
§2.7.
В shell_ext r24 индекс вида хранится в cookie screen.<id>.view_idx и при чтении ограничивается диапазоном
0..count(folder_views)-1 (код r24)62; get_next_folder_view увеличивает его
циклически и записывает cookie (код r24)63. В r25 toggle_view_index
пропускает виды, для которых cur_view_index_is_allowed() ложно, и останавливается, вернувшись к исходному индексу (код r25)64. В regular-ветке AbstractSmartRegularScreen r25
multiple_views_supported равен 1 только при !is_manual_views_handling() и числе видов больше одного
(код r25)65; этот класс может отдать один из видов как rows
(код r25)66 (§2.10).
2.4. Картинки и иконки: форматы, URL, gui_skin://, загрузка¶
Объект: картинки в SDK плагинов (doc, any-documented); примеры gui_skin:// и кэш — код tv188b r24/r25,
Android APK r24 260724_0207 и плагинов (code).
Форматы и схемы URL. Поддерживаются JPEG, PNG с альфа-каналом, BMP с альфа-каналом и собственный формат Dune HD AAI
с альфа-каналом (SDK)9. Картинку указывают как http://, plugin_archive://archive/path,
plugin_file://path или gui_skin://path — ресурс стандартного скина прошивки (SDK)10.
| Схема | Что значит | Claim |
|---|---|---|
http:// |
картинка из сети | (SDK)10 |
plugin_file://path |
ресурс текущего плагина; plugin_file://%plugin_name%/path — ресурс указанного плагина |
(SDK)67 |
plugin_archive://<archive>/<key> |
картинка, закэшированная plugin archive в system/flash storage; если GUI не смог сохранить локальную копию архива, URL работает как http:// |
(SDK)68 |
gui_skin://path |
файл стандартного GUI-скина прошивки | (SDK)10 |
Plugin archive папки описывается необязательным полем PluginFolderView::archive (SDK)69.
Если к загрузке больше 50 картинок архива и задан all_tgz_url, качается один gzip-tarball, иначе файлы качаются по
отдельности (SDK)70.
gui_skin://. Имена файлов скина в базе известны только по примерам: gui_skin://special_icons/sandwich_base.aai
в примере SDK (SDK)71; gui_skin://small_icons/iptv.aai — иконка группы каналов по
умолчанию в shell_ext r25 (код r25)72;
gui_skin://small_icons/movie.aai — в виде серий VOD r25 (код r25)6;
gui_skin://small_icons/folder.aai — в Widget Ext (код)5; gui_skin://large_icons/apps.png —
запасная иконка приложения в r25 (код r25)73;
gui_skin://special_icons/imdb.png и gui_skin://special_icons/kp.png — значки рейтингов в r25
(код r25)74. Набор скинов зависит от сборки: в Android APK r24 260724_0207
альтернативные скины — Air, Black и Silver, а в tv175u той же сборки ещё Blue, Dune, Glass, Green, Mountain, Red и
Sunset (код r24)75. Поэтому путь
gui_skin://… берут из ресурсов конкретного скина, а не угадывают; полного каталога в базе нет — §6.
cut_icon://. В sandwich_base/mask/cover допустим cut_icon URL (SDK)76; пример SDK —
cut_icon://{name=sandwich_mask} и cut_icon://{name=sandwich_cover} (SDK)71. Других
сведений о cut_icon:// в базе нет — §6.
Иконки элемента. icon_path — обязательная иконка, icon_sel_path — для выделенного состояния (по умолчанию та
же) (SDK)44. Без icon_width/height берутся реальные размеры изображения
(SDK)77. Иконка блока деталей — item_detailed_icon_path, по умолчанию равная icon_path
(SDK)78.
Асинхронная загрузка. PluginRegularFolderView::async_icon_loading включает асинхронную загрузку иконок
(SDK)79. При false GUI блокируется до загрузки видимых иконок; при true иконки грузятся
в отдельном потоке, а элемент пока рисуется по not_loaded_view_item_params (SDK)11. Эти параметры
задают вид элемента, чья картинка ещё не загружена или загрузилась с ошибкой (SDK)80, и
сейчас игнорируются при async_icon_loading == false (SDK)81. С прошивки 120616 есть
async_icon_loading_pipelining (CURLMOPT_PIPELINING, по умолчанию true) (SDK)82 и
async_icon_loading_max_connects (CURLMOPT_MAXCONNECTS, по умолчанию 8) (SDK)83. В
dune_api.php r24 есть ещё load_failed_view_item_params и async_icon_loading_interrupt_enabled
(код r24)84.
Кэш картинок. HD::enable_caching_for_image_url r24 дописывает к URL, начинающемуся с http или cached_image,
параметр dune_image_cache=1 (код r24)85; GlobalTV делает то же через
HD::enable_caching (код)86. Что оболочка делает с этим параметром, в базе не установлено — §6.
2.5. Фон экрана¶
Объект: фон в SDK плагинов (doc, any-documented); фон GComponents и rows — dune_api.php/shell_ext tv188b r24
(code).
Где задаётся фон, зависит от вида папки (код r24, SDK)87.
| Вид | Где фон | Claim |
|---|---|---|
| регулярная папка | ViewParams::background_path и прямоугольник background_x/y/width/height, порядок — background_order |
(SDK)88 |
| control- и movie-папка | PluginFolderViewParams::background_url |
(SDK)13 |
| GComponents (r24) | GCompWindowDef::background_url, background_color и др. |
(код r24)89 |
| rows (r24) | PluginRowsPane::bg; фон информационной панели — PluginRowsInfo::bg_url |
(код r24)90 |
В регулярной папке пользовательский фон рисуется после стандартного полноэкранного фона, а остальные свойства фона
действуют только при заданном background_path (SDK)12. Без background_width/height
берутся реальные размеры изображения (SDK)91. background_order выбирает слой:
before_all — до всей прочей графики, before_icons (по умолчанию) — после glasses, до иконок, подписей и выделения,
after_all — после всей графики (SDK)92. Стандартные части экрана (блок пути, фон блока
содержимого, полосу прокрутки, блок деталей и др.) скрывают флагами paint_* (SDK)93.
Нельзя: рассчитывать, что optimize_full_screen_background уберёт фон скина сам по себе: нужен
background_order=before_all и пользовательский фон, фактически покрывающий весь экран
(SDK)94.
2.6. Оформить элемент: подпись, блок деталей, badge, sandwich¶
Объект: ViewParams и ViewItemParams в SDK плагинов (doc, any-documented; версии — по пометкам SDK).
Подпись. Двухстрочную подпись включает item_caption_wrap_enabled; если двух строк мало, подпись рисуется в одну
строку с прокруткой (SDK)95. Раскладка при этом должна не давать подписи пересекать
границы блока содержимого (SDK)96. Подписи невыделенных элементов скрывает
item_paint_unselected_caption (с 130818) (SDK)97; подпись внутри иконки —
item_paint_caption_within_icon, обычно вместе с item_paint_caption=0 (SDK)98.
Блок деталей. Текст для выделенного элемента — item_detailed_info: несколько абзацев с однострочным заголовком и
многострочным текстом (SDK)99. Абзацы разделяются ||, заголовок и строки текста — |;
вместо ручного разбиения строк можно включить ViewParams::item_detailed_info_auto_line_break
(SDK)100, доступный с 120605 (SDK)101. При
paint_item_info_in_details=false в блоке деталей рисуется только иконка (SDK)102. Масштаб
иконки деталей выбирается по приоритету: zoom_detailed_icon → detailed_icon_scale_factor → авто по ширине и
item_detailed_info_rel_y (если задан) (SDK)103.
Badge. ViewParams::paint_icon_badge_box включает badge mode: под иконкой рисуется badge cut-image скина, а иконка
уменьшается и центрируется в badge box (SDK)104; степень уменьшения — icon_fit_scale_factor
(с 120605) (SDK)105. hidden_badge_box (с 120819) скрывает badge, но сохраняет позиции
marks и stars как в badge mode (SDK)106. Свою картинку badge задаёт
item_badge_icon_path (с 120830): она действует только в badge mode и игнорируется при enable_badge_icons=no, если
item_override_default_badge не true (SDK)107; сам item_override_default_badge — с
131005 (SDK)108.
Sandwich. paint_sandwich собирает каждый элемент из Base, Mask (только alpha), Cover и Icon
(SDK)109. Порядок: Base как фон в буфер, затем Icon (обычно центрируется, если меньше, или
уменьшается, если больше), затем alpha Mask сливается с alpha буфера, затем Cover (SDK)110.
Слои задаются image URL или cut_icon URL (SDK)76; пример SDK — §2.4. Иконка внутри sandwich
по умолчанию не увеличивается, а необходимое уменьшение выполняется всегда (SDK)111;
масштаб на уровне элемента переопределяет item_sandwich_icon_scale_factor (SDK)112.
Метки поверх содержимого. extra_content_objects (с 121201) рисует фиксированную графику в блоке содержимого;
сейчас поддерживаются только текстовые метки обычным шрифтом (SDK)113. Координаты меток
отсчитываются от блока содержимого (SDK)114; пример SDK задаёт две метки label с x, y,
text и color (SDK)115.
Стикеры и полоса просмотра в базе описаны для rows и GComponents r24 — §3.8, §3.9; ключи item_sticker* у
ViewItemParams r24 только объявлены (§3.3).
2.7. Обновить уже открытый экран¶
Объект: действия обновления в SDK плагинов (doc, any-documented); поля и помощники dune_api.php/shell_ext
tv188b r24 и r25 (code).
Оболочка кэширует загруженные элементы папки в памяти до выхода из неё (SDK)56. Поэтому, если данные плагина изменились, а папка уже открыта, нужно одно из действий ниже; поля действий — §3.6.
| Что нужно | Действие | Ограничение | Claim |
|---|---|---|---|
| заменить элементы или фокус в текущей регулярной папке | PluginUpdateFolderAction |
вне регулярной папки игнорируется | (SDK)116 |
| перезагрузить родительскую или другую папку | PluginInvalidateFolders |
некэшированные media_url игнорируются |
(SDK)117 |
заменить контролы в control-папке или диалоге (подробно — guide/input-dialogs.md §2.3–2.4) |
ResetControls |
вне них игнорируется | (SDK)118 |
| заменить карту действий или перезапустить таймер | ChangeBehaviour |
только регулярная папка, диалог с контролами и VOD-воспроизведение | (SDK)119 |
Текущая регулярная папка. PluginUpdateFolderAction частично заменяет её состояние: при need_refresh очищает
кэш состояния папки, применяет переданный range, а при sel_ndx >= 0 переводит фокус на элемент с этим индексом
(SDK)14. В shell_ext r24 его строит ActionFactory::update_regular_folder со значениями по
умолчанию need_refresh=false и sel_ndx=-1 (код r24)120. Пример — Widget Ext
в §4.
Родительская папка. PluginInvalidateFolders очищает кэш папок с указанными media_urls и заставляет полностью
перезагрузить их (SDK)121; оно нужно, когда действие во вложенной папке изменило состояние
родительской (SDK)15. В dune_api.php r24 у данных действия есть ещё all_except и
repopulate (код r24)122; ActionFactory::invalidate_all_folders в shell_ext r24
вызывает invalidate_folders с all_except=true (код r24)123.
Таймер и карта действий. Таймер регулярной папки (PluginRegularFolderView::timer) срабатывает один раз, но его
можно сбросить действием ChangeBehaviour (SDK)124. ChangeBehaviour заменяет карту
действий на заданную и перезапускает заданный таймер от текущего момента (SDK)125. В r25
интерфейсы GCompsScreen, RowsScreen и RegularScreen в shell_ext объявляют get_timer($media_url) без
&$plugin_cookies (код r25)126; по умолчанию он возвращает null (код r25)127, а AbstractRegularScreen::get_folder_view
кладёт таймер в PluginRegularFolderView::timer только при истинном результате
(код r25)128.
Нельзя: рассчитывать на ChangeBehaviour в control- и movie-папке, в TV- и обычном воспроизведении — SDK называет
их поддержку будущей (SDK)129.
Во время воспроизведения. Пока идёт TV- или VOD-воспроизведение плагина, исполняются только PluginHandleUserInput,
PluginShowError, ChangeBehaviour, PluginInvalidateFolders и PluginVodPlay с обязательным vod_info
(SDK)17. PluginUpdateFolderAction и ResetControls в этот список не входят (SDK)17; из
перечисленных обновить папку может PluginInvalidateFolders (SDK)121.
Для rows и GComponents r24 есть свои действия — change_gcomps, plugin_update_sticker, plugin_update_rows_info
(§3.6).
2.8. Экран настроек: control-папка¶
Объект: PluginControlsFolderView в SDK плагинов (doc, any-documented); dune_api.php tv188b r24 (code).
Экран настроек — control-папка: вертикальный список контролов (SDK)30. SDK называет в ней контролы
button, combobox и text field, а изменения применяются и сохраняются через действие HANDLE_USER_INPUT
(SDK)130. Данные вида — PluginControlsFolderView с полями defs (список GuiControlDef),
initial_sel_ndx и params (SDK)131; initial_sel_ndx — индекс с нуля, -1 — первый
контрол (SDK)132. Сами контролы, их поля, отличие папки от диалога и обработка ввода — в
guide/input-dialogs.md §2.4 и §3.4–3.6; здесь — только то, что относится к экрану.
params — PluginFolderViewParams с paint_path_box, paint_content_box_background и background_url
(SDK)13; ключи r24 — §3.1. Обновить контролы на открытом экране — ResetControls (§2.7).
AbstractControlsScreen в shell_ext r24 кладёт в данные вида ещё actions и timer
(код r24)133 — эти поля в SDK-описании PluginControlsFolderView не названы
(SDK)131. Примеры — Widget Ext и Screenshoter в §4.
2.9. Карточка фильма: movie-папка¶
Объект: PluginMovieFolderView и PluginMovie в SDK плагинов (doc, any-documented); dune_api.php tv188b r24
(code).
Movie-папка — карточка фильма с постером (SDK)134, обязательной кнопкой PLAY и
необязательной второй кнопкой (SDK)135. Плагин заполняет PluginMovieFolderView: описание фильма в
movie (PluginMovie), кнопки и сценарий сериала (SDK)136; полный перечень полей — §3.5.
Кнопка PLAY. По умолчанию левая кнопка подписана Play (SDK)137 и выполняет GUI-действие
VOD_PLAY (SDK)138. ENTER на ней при has_multiple_series = FALSE исполняет
PLUGIN_VOD_PLAY, а при TRUE открывает папку серий по series_media_url (SDK)139. Тип
series_media_url в SDK и r24 расходится — §5.
Вторая кнопка. has_right_button включает кнопку в правом нижнем углу, right_button_caption и
right_button_action задают её подпись и действие (SDK)140.
Постер и текст. poster_valign выравнивает постер по вертикали, когда его пропорции не совпадают с местом под
постер; поле есть с прошивки 120610 (SDK)141. Дополнительные пары идут в
PluginMovie::details (основная прокручиваемая область), дополнительные строки рейтингов — в rate_details (под
постером) (SDK)142. Фон и отрисовку блока пути и фона содержимого задаёт params (PluginFolderViewParams, §2.5)
(SDK)13.
Пример — мост Lampa в §4.
2.10. Rows и GComponents: что это и можно ли их использовать¶
Объект: виды view_rows и view_gcomps в dune_api.php и shell_ext tv188b r24 и r25 (code, android-dune-fw);
позиция SDK плагинов (doc).
Что это. В dune_api.php r24 tv188b, кроме трёх видов SDK, объявлены PLUGIN_FOLDER_VIEW_GCOMPS и
PLUGIN_FOLDER_VIEW_ROWS (код r24)3. GComponents-экран (PluginGCompsFolderView)
состоит из window_def, sel_state, actions и timer (код r24)143: окно
собирается из компонентов label, image, panel, scroll_pane и других (§3.8)
(код r24)144. Rows-экран (PluginRowsFolderView) — pane, sel_state, actions,
timer (код r24)145: панель PluginRowsPane содержит ряды rows и заголовки
headers (код r24)146, а ряд бывает row_vgap, row_gcomps, row_regular или
row_title (код r24)147. Встроенный shell_ext r24 возвращает оба вида из
AbstractGCompsScreen и AbstractRowsScreen (код r24)148.
Можно ли использовать. SDK этих видов не перечисляет (SDK)2, а фреймворк GComponents
называет незавершённым и зарезервированным для внутреннего использования (SDK)20. При этом сторонний
плагин GlobalTV 260130_1351 возвращает и PLUGIN_FOLDER_VIEW_ROWS (код)149, и
PLUGIN_FOLDER_VIEW_GCOMPS (код)150 — через собственные фабрики (§4). Так же делает
Домашнее ТВ 3.5.4: rows-папка с view_kind=PLUGIN_FOLDER_VIEW_ROWS (код)151 и GComps-экран
ProgramScreen (код)152. Итог для разработчика: в базе эти виды подтверждены кодом только для
tv188b r24/r25 и сторонних плагинов GlobalTV и Домашнее ТВ; на других прошивках и устройствах их поддержка не
установлена (§6), а позиция SDK — «внутренний API» (§5).
Ленивые ряды r25. В r25 dune_api.php добавляет тип ряда PLUGIN_ROW_TYPE_DUP='row_dup', опции
PLUGIN_ROW_OPT_LOADING и PLUGIN_ROW_OPT_OPTIMIZE_INVISIBLE и поле PluginRowsPane::row_dup_map
(код r25)153. В shell_ext r25 RowsScreen объявляет get_rows(MediaURL $media_url, $row_ids):
DefaultDunePlugin::get_folder_rows находит экран по media_url и вызывает его get_rows, а
AbstractRowsScreen::get_rows по умолчанию бросает исключение («override it to use lazy rows loading»)
(код r25)154. RowsFactory::pane получил второй позиционный параметр row_dup_map, добавлены
dup_row и row_set_options (код r25)155. Сама прошивка так строит MovieListScreen: get_rows
один раз запрашивает нужный диапазон фильмов и отдаёт запрошенные ряды (код r25)156,
а для ряда без загруженных объектов создаёт dup_row с опциями LOADING|OPTIMIZE_INVISIBLE и кладёт общий
loading-ряд в row_dup_map (код r25)157. Как оболочка использует эти опции, из кода
PHP не установлено — §6.
Rows из регулярного экрана (r25). AbstractSmartRegularScreen наследует AbstractRegularScreen и отдаёт
PLUGIN_FOLDER_VIEW_ROWS, если в описании текущего вида есть ключ rows, иначе обычный регулярный вид; состояние
выбора берёт из parent_sel_state (код r25)66. Так одна папка может переключаться между сеткой
и рядами (код r25)158 (§2.3).
Структуры rows и компоненты GComponents полностью — §3.8 и §3.9.
3. Справочник¶
3.1. PluginFolderView и PluginRegularFolderView¶
Объект: SDK плагинов (doc, any-documented) и dune_api.php tv188b r24 (code); r25 — по отдельным claims.
| Структура | SDK | r24 tv188b | Claim |
|---|---|---|---|
PluginFolderView |
view_kind, data, multiple_views_supported, archive |
шесть ключей: добавлены folder_type, params; в r25 есть ещё type_mask (int) |
(код, SDK)159 |
PluginRegularFolderView |
view_params, base_view_item_params, not_loaded_view_item_params, actions, timer, async_icon_loading, async_icon_loading_pipelining, async_icon_loading_max_connects, initial_range |
11 ключей: добавлены load_failed_view_item_params, async_icon_loading_interrupt_enabled |
(код r24, SDK)160 |
PluginControlsFolderView |
defs, initial_sel_ndx, params |
— | (SDK)131 |
PluginFolderViewParams |
paint_path_box, paint_content_box_background, background_url |
пять ключей: добавлены paint_path_box_background, popup_dialogs_enabled |
(код r24, SDK)161 |
PluginGCompsFolderView |
нет | window_def, sel_state, actions, timer |
(код r24)143 |
PluginRowsFolderView |
нет | pane, sel_state, actions, timer |
(код r24)145 |
Поля PluginRegularFolderView по смыслу: view_params — параметры папки целиком (SDK)39;
base_view_item_params — умолчания для элементов (SDK)40; not_loaded_view_item_params и
async_icon_loading* — §2.4; timer — §2.7; initial_range — §2.2.
3.2. Свойства ViewParams¶
Объект: ViewParams в SDK плагинов (doc, any-documented); сверх SDK — dune_api.php tv188b r24 (code).
Все строки — SDK, платформа any-documented. «Версия не указана» значит, что SDK не помечает свойство версией
прошивки, а не что свойство есть во всех прошивках.
Свойство ViewParams |
Назначение и значения | Где работает | Claim |
|---|---|---|---|
num_cols, num_rows |
обязательные положительные целые: число столбцов и строк сетки содержимого | SDK, версия не указана | (SDK)4 |
animation_enabled |
boolean, default yes: анимация курсора |
SDK, версия не указана | (SDK)162 |
scroll_animation_enabled |
boolean, default yes: анимация прокрутки; действует только при горизонтальной ориентации |
SDK, с 131203_b9 |
(SDK)49 |
orientation |
vertical или horizontal; default vertical |
SDK, с 131203_b9 |
(SDK)48 |
cycle_mode_enabled |
boolean, default no: удерживает выделение в центре при прокрутке влево/вправо; только horizontal, одна строка и нечётное число столбцов ≥ 5 |
SDK, с 131203_b9 |
(SDK)50 |
cycle_mode_gap |
yes, no или auto; default no; auto рисует промежуток при числе элементов больше числа столбцов; только при включённом cycle_mode |
SDK, с 131203_b9 |
(SDK)163 |
cycle_mode_gap_width |
integer; default auto — половина ширины элемента; только при включённом cycle_mode |
SDK, с 131203_b9 |
(SDK)164 |
cycle_mode_gap_icon_path |
image URL, default unset: иконка в середине промежутка; только при включённом cycle_mode |
SDK, с 131203_b9 |
(SDK)165 |
background_path |
image URL, default unset: пользовательский фон, рисуется после стандартного полноэкранного фона; остальные свойства фона действуют только при заданном background_path |
SDK, версия не указана | (SDK)12 |
background_x, background_y |
целые ≥ 0, default 0: положение прямоугольника фона |
SDK, версия не указана | (SDK)91 |
background_width, background_height |
положительные целые; по умолчанию реальные размеры изображения | SDK, версия не указана | (SDK)91 |
optimize_full_screen_background |
boolean, default false: не рисовать фон скина; требует background_order=before_all и фактического покрытия всего экрана пользовательским фоном |
SDK, версия не указана | (SDK)94 |
background_order |
before_all — до всей прочей графики; before_icons (default) — после glasses, до иконок, подписей и выделения; after_all — после всей прочей графики |
SDK, версия не указана | (SDK)92 |
scroll_path, scroll_x, scroll_y, scroll_height |
переопределяют полосу прокрутки скина: path — image URL (unset), x/y — целые ≥ 0 (auto), height — положительное целое (auto) |
SDK, версия не указана | (SDK)166 |
mark_path, mark_dx, mark_dy, mark_scale_factor |
переопределяют значок отметки элемента: path — image URL (unset), dx/dy — integer (0), scale_factor — double (1.0) |
SDK, версия не указана | (SDK)167 |
mark_dx, mark_dy (точка отсчёта) |
при заданном mark_path смещения считаются от верхнего левого угла иконки; иначе — от стандартной позиции у её верхнего правого угла |
SDK, версия не указана | (SDK)168 |
paint_path_box, paint_content_box_background, paint_scrollbar, paint_icon_selection_box, paint_help_line, paint_details, paint_details_box_background |
boolean, default true: скрывают соответствующую графику |
SDK, версия не указана | (SDK)169 |
paint_path_box_background, paint_widget, paint_widget_background |
boolean, default true: скрывают соответствующую графику |
SDK, с 130818 |
(SDK)170 |
help_line_text_color |
integer 0..23, default 23: индекс цвета текста строки подсказок |
SDK, версия не указана | (SDK)171 |
icon_selection_box_dx, icon_selection_box_dy |
integer, default auto: сдвиг выделения иконки |
SDK, версия не указана | (SDK)172 |
icon_selection_box_width, icon_selection_box_height |
положительные целые, default auto: размер выделения иконки; по умолчанию оно рисуется поверх прямоугольника элемента |
SDK, версия не указана | (SDK)172 |
paint_icon_badge_box |
boolean, default false: badge mode; под иконкой рисуется badge cut-image скина, иконка уменьшается и центрируется в badge box |
SDK, версия не указана | (SDK)104 |
hidden_badge_box |
boolean, default false: скрывает badge, сохраняя позиции marks и stars как в badge mode |
SDK, с 120819 |
(SDK)106 |
icon_badge_box_dx, icon_badge_box_dy, icon_badge_box_width, icon_badge_box_height |
прямоугольник badge без выделения: dx/dy — integer, width/height — положительные целые, все default auto |
SDK, версия не указана | (SDK)173 |
icon_badge_box_sel_dx, icon_badge_box_sel_dy, icon_badge_box_sel_width, icon_badge_box_sel_height |
то же для выделенного состояния | SDK, версия не указана | (SDK)173 |
content_box_x, content_box_y |
целые ≥ 0, default auto: положение блока содержимого |
SDK, версия не указана | (SDK)42 |
content_box_width, content_box_height |
положительные целые, default auto: размер блока содержимого |
SDK, версия не указана | (SDK)42 |
content_box_padding_left, content_box_padding_top, content_box_padding_right, content_box_padding_bottom |
целые ≥ 0, все default 20: внутренние отступы блока содержимого |
SDK, версия не указана | (SDK)43 |
extra_content_objects |
string, default null: фиксированная графика в блоке содержимого; сейчас поддерживаются только текстовые метки обычным шрифтом |
SDK, с 121201 |
(SDK)113 |
extra_content_objects (координаты) |
x/y задаются относительно прямоугольника блока содержимого; дополнительные объекты обычно не должны пересекать его границы |
SDK, с 121201 |
(SDK)114 |
paint_item_info_in_details |
boolean, default true: текст в блоке деталей; при false там рисуется только иконка |
SDK, версия не указана | (SDK)102 |
item_detailed_info_rel_y |
целое ≥ 0, default auto: Y текста относительно верха блока деталей; без значения масштаб иконки не ограничен по высоте, текст идёт сразу под ней; при значении масштаб и позиция иконки подстраиваются |
SDK, версия не указана | (SDK)174 |
zoom_detailed_icon |
boolean, default false: вписать иконку деталей по ширине с возможным увеличением; первый приоритет выбора масштаба |
SDK, версия не указана | (SDK)103 |
detailed_icon_scale_factor |
double, default auto: масштаб иконки деталей, если zoom_detailed_icon не включён |
SDK, версия не указана | (SDK)103 |
detailed_icon_valign |
top, center или bottom; default top; действует, когда item_detailed_info_rel_y задан и больше фактической высоты иконки |
SDK, с 120606 |
(SDK)175 |
item_detailed_info_font_size |
normal или small; default normal |
SDK, версия не указана | (SDK)176 |
item_detailed_info_title_color |
integer 0..23, default 8: цвет заголовка деталей |
SDK, версия не указана | (SDK)177 |
item_detailed_info_text_color |
integer 0..23, default 7: цвет текста деталей |
SDK, версия не указана | (SDK)177 |
item_detailed_info_auto_line_break |
boolean, default false: автоматически переносить текст деталей, если строка не помещается по ширине |
SDK, с 120605 |
(SDK)101 |
paint_sandwich |
boolean, default false: sandwich для всех элементов; состав — Base, Mask (только alpha), Cover и Icon |
SDK, версия не указана | (SDK)109 |
sandwich_base, sandwich_mask, sandwich_cover |
string: image URL или cut_icon URL; все default unset |
SDK, версия не указана | (SDK)76 |
sandwich_width, sandwich_height |
целые ≥ 0, default 0 — auto: размеры sandwich без выделения |
SDK, версия не указана | (SDK)178 |
sandwich_sel_width, sandwich_sel_height |
целые ≥ 0, default 0 — auto: размеры sandwich с выделением |
SDK, версия не указана | (SDK)178 |
sandwich_icon_keep_aspect_ratio |
boolean, default true: сохранять пропорции иконки при масштабировании |
SDK, версия не указана | (SDK)179 |
sandwich_icon_upscale_enabled |
boolean, default false: разрешать увеличивать иконку до границ sandwich; уменьшение выполняется всегда |
SDK, версия не указана | (SDK)111 |
sandwich_icon_scale_factor |
положительный double в (0..1], default 1: масштаб иконки относительно границ sandwich; может переопределяться ViewItemParams::item_sandwich_icon_scale_factor |
SDK, версия не указана | (SDK)180 |
PHP-константы: detailed_icon_valign — VALIGN_TOP, VALIGN_CENTER, VALIGN_BOTTOM
(SDK)181; item_detailed_info_font_size — FONT_SIZE_NORMAL, FONT_SIZE_SMALL
(SDK)182.
r24 сверх таблицы. В dune_api.php r24 tv188b у ViewParams 91 ключ; среди них, кроме описанных в SDK, есть
item_width, item_height, marks_enabled, popup_dialogs_enabled, paint_playback_help_line,
paint_playback_status, paint_playback_volume_indicators, details_box_width, item_small_icon_name,
folder_small_icon_name, item_detailed_info_use_main_icon, max_icon_width и max_icon_height
(код r24)183. Это только объявленные имена; C-типы полей разложены по группам в
комментариях dune_api.php (например, (код r24)184), а поведение этих ключей в базе не описано.
3.3. Свойства ViewItemParams¶
Объект: ViewItemParams в SDK плагинов (doc, any-documented); сверх SDK — dune_api.php tv188b r24 (code).
Все строки — SDK, платформа any-documented, версия не указана, если не сказано иное.
Свойство ViewItemParams |
Назначение и значения | Где работает | Claim |
|---|---|---|---|
item_paint_icon |
boolean, default true: рисовать иконку элемента в блоке содержимого |
SDK, версия не указана | (SDK)185 |
item_paint_caption |
boolean, default true: рисовать подпись элемента |
SDK, версия не указана | (SDK)186 |
item_paint_unselected_caption |
boolean, default true: рисовать подписи невыделенных элементов |
SDK, с 130818 |
(SDK)97 |
item_caption_font_size |
normal или small; default normal |
SDK, версия не указана | (SDK)187 |
item_paint_caption_within_icon |
boolean, default false: подпись внутри иконки; обычно вместе с item_paint_caption=0 |
SDK, версия не указана | (SDK)98 |
item_caption_within_icon_color |
white, black или 0..23; default white: цвет подписи внутри иконки |
SDK, версия не указана | (SDK)188 |
item_padding_top, item_padding_bottom |
целые ≥ 0, default 0: вертикальные отступы области иконки и подписи; подпись обычно снизу, иконка выравнивается над ней |
SDK, версия не указана | (SDK)189 |
icon_path |
обязательный URL иконки | SDK, версия не указана | (SDK)44 |
icon_sel_path |
URL иконки выделенного состояния; по умолчанию равен icon_path |
SDK, версия не указана | (SDK)44 |
icon_width, icon_height |
целые ≥ 0, default 0 — auto: размеры иконки без выделения; если не заданы, берутся реальные размеры изображения |
SDK, версия не указана | (SDK)77 |
icon_sel_width, icon_sel_height |
то же для выделенного состояния | SDK, версия не указана | (SDK)77 |
icon_keep_aspect_ratio |
boolean, default yes: сохранять пропорции при масштабировании к заданным размерам |
SDK, версия не указана | (SDK)190 |
icon_scale_factor |
positive double, default 1.0: масштаб иконки без выделения |
SDK, версия не указана | (SDK)191 |
icon_sel_scale_factor |
positive double, default auto: масштаб иконки с выделением |
SDK, версия не указана | (SDK)191 |
icon_margin_top, icon_margin_bottom, icon_margin_left, icon_margin_right |
integer, все default 0: отступы иконки без выделения |
SDK, версия не указана | (SDK)192 |
icon_sel_margin_top, icon_sel_margin_bottom, icon_sel_margin_left, icon_sel_margin_right |
integer, все default 0: отступы иконки с выделением |
SDK, версия не указана | (SDK)192 |
item_layout |
center (default): иконка и подпись центрируются горизонтально, иконка над подписью; left: обе центрируются вертикально, иконка слева, текст от левого края текстового блока |
SDK, версия не указана | (SDK)45 |
item_layout=left (текстовый блок) |
текст выровнен вправо и обычно занимает всю ширину элемента; чтобы текст не рисовался поверх иконки, меняйте item_caption_dx или item_caption_width |
SDK, версия не указана | (SDK)46 |
icon_valign |
top, center или bottom; default top; действует только при item_layout=HALIGN_CENTER |
SDK, версия не указана | (SDK)47 |
icon_dx, icon_dy |
integer, default 0: дополнительные смещения иконки без выделения |
SDK, версия не указана | (SDK)193 |
icon_sel_dx, icon_sel_dy |
integer, default 0: дополнительные смещения иконки с выделением |
SDK, версия не указана | (SDK)193 |
icon_fit_scale_factor |
double в (0..1], default 0.9: уменьшение и центрирование иконки в badge box; только при ViewParams::paint_icon_badge_box=true |
SDK, с 120605 |
(SDK)105 |
item_caption_wrap_enabled |
boolean, default false: подпись в две строки; если двух строк недостаточно, подпись рисуется в одну строку с прокруткой |
SDK, версия не указана | (SDK)95 |
item_caption_wrap_enabled (границы) |
при двухстрочной подписи раскладка должна не давать подписи пересекать границы блока содержимого | SDK, версия не указана | (SDK)96 |
item_caption_width |
целое ≥ 0, default 0 — auto: ширина текстового блока подписи; по умолчанию текст занимает всю ширину элемента |
SDK, версия не указана | (SDK)194 |
item_caption_dx |
integer, default 0: сдвигает левую границу текстового блока, не меняя правую |
SDK, версия не указана | (SDK)195 |
item_caption_dy |
integer, default 0: дополнительное вертикальное положение подписи без выделения |
SDK, версия не указана | (SDK)196 |
item_caption_sel_dy |
integer, default 0: то же для выделенного состояния |
SDK, версия не указана | (SDK)196 |
item_caption_color |
integer 0..23, default auto; по умолчанию используется 15 (белый) |
SDK, версия не указана | (SDK)197 |
item_detailed_info |
string, default unset: структурированный текст в блоке деталей при выделении элемента; несколько абзацев с однострочным заголовком и многострочным текстом |
SDK, версия не указана | (SDK)99 |
item_detailed_info (формат) |
абзацы разделяются \|\|, заголовок и строки текста — \|; вместо этого можно включить ViewParams::item_detailed_info_auto_line_break |
SDK, версия не указана | (SDK)100 |
item_detailed_icon_path |
URL иконки блока деталей; default icon_path, то есть одна иконка для содержимого и деталей |
SDK, версия не указана | (SDK)78 |
item_badge_icon_path |
image URL, default unset: своя иконка вместо badge cut-image скина; только в badge mode; игнорируется при enable_badge_icons=no, если item_override_default_badge не true |
SDK, с 120830 |
(SDK)107 |
item_override_default_badge |
boolean, default false: разрешает item_badge_icon_path переопределять badge скина даже при enable_badge_icons=no |
SDK, с 131005 |
(SDK)108 |
item_sandwich_icon_scale_factor |
double в (0..1], default auto: масштаб иконки относительно границ sandwich; если не задан, берётся ViewParams::sandwich_icon_scale_factor |
SDK, версия не указана | (SDK)112 |
PHP-константы: item_caption_font_size — FONT_SIZE_NORMAL, FONT_SIZE_SMALL (SDK)198;
item_layout — HALIGN_CENTER, HALIGN_LEFT (SDK)199; icon_valign — VALIGN_TOP,
VALIGN_CENTER, VALIGN_BOTTOM (SDK)200.
r24 сверх таблицы. В dune_api.php r24 tv188b у ViewItemParams 54 ключа; среди них, кроме описанных в SDK,
predefined, item_ui_state_paint_caption, item_caption_scroll_enabled, item_sticker, item_sticker_collage,
item_detailed_info_sticker, item_detailed_info_tags, item_detailed_info_extra, item_extra_info,
item_detailed_icon_width и item_detailed_icon_height (код r24)201. Это только
объявленные ключи; поведение в базе не описано.
3.4. Элемент и диапазон: PluginRegularFolderItem, PluginRegularFolderRange¶
Объект: dune_api.php tv188b r24 (code); SDK плагинов (doc) — для умолчаний PluginOpenFolderAction.
| Структура | Ключи (r24) | Claim |
|---|---|---|
PluginRegularFolderItem |
media_url, caption, starred, locked, view_item_params, plugin_ref |
(код r24)202 |
PluginRegularFolderRange |
total, more_items_available, from_ndx, count, items |
(код r24)57 |
media_url и caption элемента — то, что PluginOpenFolderAction берёт по умолчанию, если своих не задано
(SDK)203. view_item_params — индивидуальные
ViewItemParams элемента (тип (ViewItemParams *)) (код r24)204,
plugin_ref — (PluginRef *) (код r24)205. starred в shell_ext r25
TvChannelListScreen заполняется признаком избранного канала
(код r25)206. Что делает locked, в базе не описано — §6. Помощник
построения диапазона — §2.2.
3.5. PluginMovieFolderView и PluginMovie¶
Объект: SDK плагинов (doc, any-documented) и dune_api.php tv188b r24 (code).
| Структура | Поля | Claim |
|---|---|---|
PluginMovieFolderView (SDK, 10 полей) |
movie, left_button_caption, left_button_action, has_right_button, right_button_caption, right_button_action, has_multiple_series, series_media_url, poster_valign, params |
(SDK)136 |
PluginMovieFolderView (r24) |
те же 10 ключей | (код r24)207 |
PluginMovie (SDK, 17 полей) |
name, name_original, description, poster_url, length_min, year, directors_str, scenarios_str, actors_str, genres_str, rate_imdb, rate_kinopoisk, rate_mpaa, country, budget, details, rate_details |
(SDK)134 |
PluginMovie (r24) |
те же 17 ключей | (код r24)208 |
Смысл кнопок, poster_valign, details и rate_details — §2.9. series_media_url SDK объявляет как Boolean
(SDK)209, а комментарий dune_api.php r24 — как (char *)
(код r24)210 (§5).
3.6. Действия обновления экрана¶
Объект: SDK плагинов (doc, any-documented); строки с пометкой r24 — dune_api.php/shell_ext tv188b r24
(code), на другие прошивки не переносятся.
| Действие | Данные | Где и когда действует | Claim |
|---|---|---|---|
plugin_update_folder |
range, need_refresh, sel_ndx (-1 — не менять); класс в SDK — PluginUpdateFolderAction, в r24 — PluginUpdateFolderActionData |
SDK: только текущая регулярная папка; вне её игнорируется | (код r24, SDK)211 |
plugin_invalidate_folders |
media_urls, post_action; в r24 ещё all_except, repopulate |
SDK: очищает кэш указанных папок; некэшированные media_url игнорирует |
(код r24, SDK)212 |
reset_controls |
defs, initial_sel_ndx (-1 — выбор не менять), post_action |
SDK: диалог с контролами или control-папка; вне их игнорируется | (код r24, SDK)213 |
change_behaviour |
actions, timer, post_action (все необязательны) |
SDK: регулярная папка, диалог с контролами, VOD; control/movie, TV и обычное воспроизведение — «в будущем» | (SDK)214 |
change_gcomps |
11 ключей: change_defs, window_change, interrupt_disabled, num_steps, flip_effect, duration_multiplier, small_state_text, sel_state, ui_state, skip_repaint, post_action |
r24, GComponents; ActionFactory::change_gcomps ставит num_steps=0, sel_state из get_cur_sel_state_str() и skip_repaint=true |
(код r24)215 |
plugin_update_sticker |
ep_media_url, sticker, post_action |
r24 | (код r24)216 |
plugin_update_rows_info |
info (PluginRowsInfo: folder_key, item_id, info_defs, bg_url, nl_bg_url, mask_url, bg_poster_mode, playback_urls), post_action |
r24, rows | (код r24)217 |
3.7. Каркас экранов shell_ext (r24, r25)¶
Объект: UI-библиотека встроенного плагина shell_ext tv188b r24 и r25 (code, android-dune-fw).
shell_ext — встроенный плагин прошивки со своей UI-библиотекой в lib/: action_factory.php,
control_factory.php, gcomps_factory.php, rows_factory.php, абстрактные экраны regular, rows, gcomps и controls
(код r24)218. Это код прошивки, а не SDK; в стороннем плагине GlobalTV есть свои
фабрики с теми же именами (код)219 (§4). Подробности —
в разборах fw-tv188b-260827-0003-r24--shell-ext--ui-lib и
fw-tv188b-261021-0117-r25--shell-ext--ui-lib.
| Интерфейс / класс (r24) | Методы или результат | Claim |
|---|---|---|
Screen |
get_id, get_category, get_folder_view, invalidate, get_folder_type |
(код r24)220 |
RegularScreen |
get_action_map, get_folder_range, get_next_folder_view, get_archive |
(код r24)221 |
ControlsScreen |
get_control_defs |
(код r24)222 |
GCompsScreen |
get_window_def, get_timer, get_action_map |
(код r24)223 |
RowsScreen |
get_rows_pane, get_timer, get_action_map |
(код r24)224 |
AbstractControlsScreen |
PLUGIN_FOLDER_VIEW_CONTROLS с defs, actions, timer, initial_sel_ndx, params, multiple_views_supported=false |
(код r24)133 |
AbstractGCompsScreen |
PLUGIN_FOLDER_VIEW_GCOMPS с window_def, sel_state, actions, timer |
(код r24)225 |
AbstractRowsScreen |
PLUGIN_FOLDER_VIEW_ROWS с pane, sel_state, actions, timer |
(код r24)226 |
AbstractPreloadedRegularScreen |
get_folder_range игнорирует from_ndx и отдаёт все элементы |
(код r24)59 |
Отличия r25: get_timer($media_url) без &$plugin_cookies (код r25)126, ленивые ряды через
get_rows (код r25)154, новый AbstractSmartRegularScreen (код r25)66 — §2.10.
Смена вида в AbstractRegularScreen — §2.3.
3.8. GComponents (r24): компоненты и фабрики¶
Объект: dune_api.php и GCompsFactory из shell_ext tv188b r24 (code); SDK считает GComponents внутренним API
(§2.10).
GComponentKind в r24: label, ttf_label, rect, image, cut_image, sandwich, button, text_field, panel,
scroll_pane, prepaint_pane, scrollbar (код r24)144. Окно — GCompWindowDef с
12 ключами: background_color, background_url, background_fit_def, async_loading_background,
not_loaded_background_url, playback_bg_alpha, small_state_text, opaque_background, comp_defs, focus,
bg_def, ui_state (код r24)89.
Компонент (фабрика GCompsFactory) |
Что задаёт | Claim |
|---|---|---|
label |
GCompLabelDef: text, max_num_lines=1, text_color=15, font_size=FONT_SIZE_NORMAL |
(код r24)227 |
ttf_label |
GCompTtfLabelDef: text, text_color, font_size, max_num_lines, line_spacing, base_font_size, min_font_size, halign; label_v2 добавляет valign и опции GCOMP_OPT_TTF_LAYOUT_FIX, GCOMP_OPT_TTF_COMPACT_HEIGHT |
(код r24)228 |
rect |
GCompRectDef::color |
(код r24)229 |
image |
GCompImageDef: url, keep_aspect_ratio=false, upscale_enabled=true, not_loaded_url, load_failed_url, low_quality_url, alpha, mix_alpha, mix_color |
(код r24)230 |
cut_image |
GCompImageDef::url |
(код r24)231 |
button |
GCompButtonDef: caption, selected=false, caption_centered=true |
(код r24)232 |
scrollbar |
GCompScrollbarDef: scroll_pane_id, vertical |
(код r24)233 |
panel |
GCompPanelDef::children; margins и options только при истинности |
(код r24)234 |
prepaint_pane |
GCompPrepaintPaneDef: panel, native_width, native_height |
(код r24)235 |
scroll_pane |
GCompScrollPaneDef: panel, view_width, view_height, view_position; вертикальный и горизонтальный варианты — view_use_base_width/view_use_base_height |
(код r24)236 |
text_field |
GuiTextFieldDef: initial_value, numeric, password, has_osk, width, apply_action; GCompTextFieldDef: def, params |
(код r24)237 |
| окно | get_window_def: поля GCompWindowDef |
(код r24)238 |
| изменение | get_change_def → ChangeGCompDef: id, geom_def, props, view_position, selected, children, transition |
(код r24)239 |
Геометрию задаёт GCompGeom::geom($w, $h, ...), role и align_def добавляются только при истинных аргументах
(код r24)240; GCompGeom::align добавляет x, y, use_base_width,
use_base_height, halign, valign, base_halign, base_valign, base_to_prev, base_id только при истинных
значениях (код r24)241. Отступы — GCompMargins::all с left, top, right,
bottom (код r24)242. Изменить открытое окно — действие change_gcomps (§3.6).
GCompList. Помощник списка хранит выбор и верх списка в свойствах состояния <id>.sel и <id>.top
(код r24)243 и создаёт не больше preload_size элементов начиная с top
(код r24)244. Картинку элемента с watched_fraction или stickers он собирает в
prepaint_panel (код r24)245; полосу просмотра рисует сам прямоугольниками по
доле watched_fraction (код r24)246. Навигация и геометрия полосы —
в разборе fw-tv188b-260827-0003-r24--shell-ext--ui-lib--gcomp-list.
Свой GComps-экран вместо встроенного. Домашнее ТВ 3.5.4 открывает передачу своим GComps-экраном
ProgramScreen (код)247, а мод ext_epg с forum.mydune.ru на
control_id=open при plugin_name=home_tv и определённых PLUGIN_HANDLE_USER_INPUT_ACTION_ID и GuiAction::plugin_name
перенаправляет вызов в этот плагин (код)248. Копия GCompsFactory в этом
плагине пишет поля TTF-подписей только при определённых GCompTtfLabelDef::… (код)249. Приём —
guide/plugin-recipes-structure.md §4.7, копии фабрик — §4.
3.9. Rows (r24, r25): структуры и RowsFactory¶
Объект: dune_api.php и RowsFactory из shell_ext tv188b r24 (code); добавления r25 — §2.10.
| Структура (r24) | Ключи | Claim |
|---|---|---|
PluginRowsFolderView |
pane, sel_state, actions, timer |
(код r24)145 |
PluginRowsPane |
26: rows, headers, focus, bg, screen_r, screen_y2, min_row_index_for_y2, info_r, vod_r, header_enabled, single_list_navigation, initial_focus_*, коэффициенты свободы и гравитации фокуса, параметры шрифта и ширины заголовков, up_arrow_dy, regular_item_params_templates |
(код r24)146 |
PluginRow |
type, data, id, ui_level, group_id, header_id, title, focusable, options, height, inactive_height, show_all_action |
(код r24)250 |
PluginRowType |
row_vgap, row_gcomps, row_regular, row_title; в r25 ещё row_dup |
(код)251 |
PluginRegularRow |
14: hide_captions, hide_icons, left_padding, inactive_left_padding, right_padding, width, fade_enabled, fade_icon_mix_color, fade_icon_mix_alpha, lite_fade_icon_mix_alpha, fade_caption_color, item_params_template_id, item_params, items |
(код r24)252 |
PluginRegularItem |
icon_url, sticker_urls, stickers, caption, id, params_template_id |
(код r24)253 |
PluginRegularItemParams |
def, sel, inactive, loading_url, load_failed_url, hide_captions, caption_max_num_lines, caption_line_spacing, sticker_text_size, sticker_text_color, sel_margins |
(код r24)254 |
PluginRegularItemVariableParams |
width, height, dx, icon_width, icon_height, icon_keep_aspect_ratio, icon_dy, caption_dy, caption_color, caption_font_size, sticker_width, sticker_height |
(код r24)255 |
PluginTitleRow |
caption, color, font_size, left, dy, active_dy, width, fade_enabled, fade_color, lite_fade_color |
(код r24)256 |
PluginGCompsRow |
defs, width, options, ui_state |
(код r24)257 |
PluginRowsHeader |
id, title, first_in_cluster |
(код r24)258 |
PluginRegularSticker |
r, icon_url, text, color |
(код r24)259 |
PluginRowsInfo |
folder_key, item_id, info_defs, bg_url, nl_bg_url, mask_url, bg_poster_mode, playback_urls |
(код r24)260 |
Ленивая подгрузка строк (r25, device). На tv188b r25 (один прогон) строки с
PLUGIN_ROW_OPT_LOADING оболочка сама, без кнопок, дозагрузила через get_folder_rows сразу после открытия рядов
(устройство r25)261. Как устроена подгрузка в оболочке —
plugin-operations.md §1.3.
RowsFactory r24 строит pane с rows, focus, bg, header_enabled, single_list_navigation, начальным фокусом и
коэффициентами фокуса (код r24)262; pane_set_geometry задаёт screen_r,
screen_y2, min_row_index_for_y2, info_r, vod_r, up_arrow_dy (код r24)263.
Ряды строят vgap_row (код r24)264, title_row
(код r24)265, regular_row (код r24)266 и
gcomps_row (код r24)267. Элемент ряда добавляет add_regular_item (id,
icon_url, caption, stickers, params_template_id) (код r24)268; параметры
элементов — item_params (код r24)269 и variable_params
(код r24)270; общий шаблон параметров по id сохраняет
set_item_params_template в regular_item_params_templates (код r24)271.
Стикер элемента в shell_ext r24 собирает помощник Sticker: Sticker::sticker возвращает items, above_selection,
auto_scale (оба флага по умолчанию false) (код r24)272, Sticker::geom — x,
y, halign (по умолчанию right), valign (по умолчанию top) (код r24)273,
Sticker::icon — элемент type=icon с url (код r24)274. Обновить стикер и
информационную панель на открытом экране — plugin_update_sticker и plugin_update_rows_info (§3.6).
EPF: rows-папка в файле. GlobalTV записывает folder_view целиком в <epf_id>.json (код)275;
Домашнее ТВ 3.5.4 собирает EPF тем же кодом, что и открытую папку (код)276, берёт id EPF (htv)
из своего манифеста (код)277, перезаписывает файл только при изменении
(код)278 и ставит id EPF первым в invalidate_folders (код)279. Оба
образца — guide/plugin-recipes-structure.md §4.7.
3.10. Различия SDK, r24, r25 и платформ¶
Объект: SDK, tv188b r24 260827_0003_r24 и r25 261021_0117_r25 — только то, что есть в claims; «—» значит, что
утверждения нет, а не что возможности нет.
| Что | SDK | r24 tv188b | r25 tv188b | Claim |
|---|---|---|---|---|
Виды PluginFolderViewKind |
три: regular, controls, movie | пять: добавлены view_gcomps, view_rows |
полного перечня нет; rows-вид из AbstractSmartRegularScreen |
(код, SDK)280 |
Поля PluginFolderView |
четыре | шесть: добавлены folder_type, params |
есть type_mask (int) |
(код, SDK)159 |
Поля PluginRegularFolderView |
девять | одиннадцать | — | (код r24, SDK)160 |
ViewParams / ViewItemParams |
таблицы §3.2, §3.3 | 91 / 54 ключа | — | (код r24)281 |
PluginInvalidateFoldersActionData |
media_urls, post_action |
добавлены all_except, repopulate |
— | (код r24, SDK)282 |
| Класс данных обновления папки | PluginUpdateFolderAction |
PluginUpdateFolderActionData |
— | (код r24, SDK)283 |
Тип series_media_url |
Boolean | (char *) |
— | (код r24, SDK)284 |
| Ленивые ряды | — | — | row_dup, row_dup_map, get_rows |
(код r25)285 |
get_timer в shell_ext |
— | — | get_timer($media_url) без &$plugin_cookies |
(код r25)126 |
GCompsFactory::label_v2 |
— | valign, GCOMP_OPT_TTF_LAYOUT_FIX, GCOMP_OPT_TTF_COMPACT_HEIGHT |
добавлено поле fit из attrs[fit] |
(код)286 |
Платформы. SDK заявляет, что все возможности фреймворка PHP-плагинов поддерживаются на SMP87xx так же, как на
SMP86xx (SDK)287, и на Android так же, как на Sigma (SMP87xx) (SDK)288. Отдельных claims о
различиях экранов по классам устройств в базе нет — §6. Набор скинов зависит от сборки (§2.4)
(код r24)75, поэтому gui_skin://-путь, найденный в одном скине, в другом не гарантирован.
4. Как это делают плагины¶
Объект: плагины GlobalTV 260130_1351, Widget Ext 1.5.6, Screenshoter 1.0.6, Домашнее ТВ 3.5.4 (code; платформа
не установлена, если не сказано иное) и мост Lampa 1.0.1 (code, android). Подробности — в разборах плагинов и
guide/plugin-recipes.md.
Widget Ext: список и настройки. plugins_screen — регулярная папка списком (num_cols=1, num_rows=12)
(код)5. GUI_EVENT_KEY_D_BLUE и GUI_EVENT_KEY_ENTER привязаны к одному действию
ignore_unignore_plugin (код)289, после которого плагин перерисовывает список действием
plugin_update_folder с range, need_refresh и sel_ndx (код)290. Настройки — control-папка с
initial_sel_ndx=-1 (код)291; после каждого ввода плагин возвращает reset_controls с новыми defs
(код)292. Всё это — виды и действия SDK. Подробности — в разборе плагина Widget Ext.
Screenshoter: экран настроек, зависящий от платформы. SmartSetupScreen (ID setup) наследует
AbstractControlsScreen (код)293 и обновляется через reset_controls (код)294. На
Android экран показывает адрес веб-интерфейса и кнопку QR code (код)295, на других платформах — надпись
«Plugin for Dune Android» (код)296. Подробности — в разборе Screenshoter.
Lampa: карточка фильма. Мост lampa_dune_bridge отдаёт view_movie с movie из LampaDuneBridge::movie()
(код)297, без серий и без второй кнопки (has_multiple_series=false,
has_right_button=false) (код)298. Левая кнопка подписана «Смотреть» и выполняет
plugin_vod_play с vod_info, который собирает сам плагин (код)299. Подробности —
в разборе моста Lampa.
GlobalTV: rows-экран каналов. Плагин возвращает PLUGIN_FOLDER_VIEW_ROWS с pane, sel_state, actions, timer
(код)300. Непустая категория — title-ряд и regular-ряды
порциями до семи элементов с общим шаблоном параметров common (код)301. Информационную панель
он обновляет действием update_rows_info с PluginRowsInfo внутри PluginUpdateRowsInfoActionData::info
(код)302. Ограничение: rows-вида нет в перечне SDK (§5).
Подробности — в разборе rows-экрана GlobalTV.
GlobalTV: свои фабрики GComponents. В пакете плагина свои GCompsFactory, GCompGeom, GCompMargins и
GCompList (код)303. Экран контролов возвращает
PLUGIN_FOLDER_VIEW_CONTROLS с initial_sel_ndx=-1 и пустым params (код)304,
GComps-экран — PLUGIN_FOLDER_VIEW_GCOMPS с window_def, sel_state, actions, timer
(код)150. Ограничение: GComponents SDK называет незавершённым и внутренним
(SDK)20. Подробности — в разборе plg-dc-globaltv--gcomps-controls, сравнение с
shell_ext/lib — в разборе plg-dc-globaltv--lib.
Домашнее ТВ 3.5.4: rows-экран каналов. Rows-папку плагин отдаёт из своей копии AbstractRowsScreen:
view_kind=PLUGIN_FOLDER_VIEW_ROWS и данные PluginRowsFolderView с pane, sel_state, actions, timer
(код)151. Каждая непустая группа каналов — title-ряд и regular-ряды по 7 каналов
(код)305; без каналов вместо рядов идёт один GCOMPS-ряд с кнопками «Выбор локации» и «Поиск
каналов» (код)306. EPF, ряд «Продолжить просмотр», ENTER на ряду и предпросмотр
plugin_tv:// — guide/plugin-recipes-structure.md §4.7.
Домашнее ТВ: копии фабрик под разные прошивки. GCompsFactory плагина отличается от shell_ext r24: label и
label_v2 пишут base_font_size, min_font_size, halign, valign только при defined('GCompTtfLabelDef::…'), а
get_image_def не передаёт alpha, mix_alpha, mix_color, get_window_def — ui_state и background_fit_def
(строки закомментированы с пометкой «r11») (код)249. RowsFactory — копия shell_ext без
поздних аргументов: regular_row без header_id и ui_level, add_regular_item без params_id, pane() без
headers (код)307. AbstractGCompsScreen возвращает handler_id вида <id>_handler, а r24 —
gcomps_<id> (код)308. Что из-за этого может не работать — §6. Подробности —
в разборе plg-mydune-home-tv--newui.
Домашнее ТВ: палитра скина. По комментарию автора, DunePalettePatcher исправляет палитру скина Silver и
производных, где почти все цвета переназначены на серый 0x797979: патч не трогает цвета, которые использует оболочка,
и приводит к базовым значениям неиспользуемый ею диапазон DEF_LABEL_TEXT_COLOR_* (код)309.
Проверка читает dune_skin_config.xml активного скина (путь — из /tmp/dune_skin_dir.txt) и сверяет элементы
<color index= value=> с таблицей из 16 эталонных цветов (код)310. Встроенный скин (путь с firmware) патчится через копию в
<flashdata|persistfs>/dune_skin и change_settings с gui_skin=custom, прочие — на месте; исходный файл сохраняется в
<data_dir>/backup/<md5 исправленного> (код)311, а при удалении плагин предлагает восстановить
палитру (код)312. Проверка палитры идёт раз за процесс при открытии настроек и запуске ТВ, пока
включена cookie customs_control.check_skin_palette; при расхождении показывается диалог «ПРЕДУПРЕЖДЕНИЕ!»
(код)313. Для применения
патча, по комментарию автора, нужен перезапуск оболочки; начиная с branch_num 11 плагин готовит для этого
stb_shell_reboot() (код)314. По сообщению автора на форуме, действие патча глобально и
отражается на работе всех плагинов (форум)315.
Домашнее ТВ: рамки OSD из нарезки скина. OSDComponentFactory берёт нарезку cut_images/osd_glass и
cut_images/weather_glass из активного скина, если там есть osd_glass.txt/weather_glass.txt, иначе из
/firmware/skin, и читает эти файлы как ini (код)316. Рамка рисуется «девятью кусками» через
add_osd_image с расширением на *_extent (код)317. Одноцветную заливку без центральной
картинки, но с center_color, плагин генерирует сам: файл <0xaarrggbb>.aai из pack("V2C4", 1, 1, B, G, R, A)
(код)318; AAI SDK перечисляет среди форматов картинок (SDK)9 (§2.4), раскладка
байтов — §6. Предзагрузку картинок OSD ядро плагина не вызывает на платформах 87xx с комментарием о зависании на скине
«Holography» (код)319.
5. Расхождения¶
Объект: расхождения claims об экранах плагина; обе стороны и связи conflicts_with.
- Три вида папок в SDK против пяти в r24 и rows-вида в плагине. SDK перечисляет
PLUGIN_FOLDER_VIEW_REGULAR,PLUGIN_FOLDER_VIEW_CONTROLS,PLUGIN_FOLDER_VIEW_MOVIE(SDK)2 и три типа папок (SDK)30. Вdune_api.phpr24 объявлены ещёPLUGIN_FOLDER_VIEW_GCOMPSиPLUGIN_FOLDER_VIEW_ROWS(код r24)3, а GlobalTV возвращаетPLUGIN_FOLDER_VIEW_ROWS(код)149. У claim плагина естьconflicts_withна оба SDK-claim; у r24-claimc108связи с SDK нет. - Тип
series_media_url. SDK объявляет поле Boolean, хотя по описанию этоmedia_urlоткрываемой папки (SDK)209; комментарийdune_api.phpr24 даёт(char *)(код r24)210. Стороны связаныconflicts_with. - Имя класса данных обновления папки. SDK называет класс
PluginUpdateFolderAction(без суффиксаActionData) (SDK)320, аdune_api.phpr24 —PluginUpdateFolderActionData(код r24)321. Набор полей тот же; связаныconflicts_with. - GComponents: «незавершённый и внутренний» против использования. SDK называет фреймворк GComponents незавершённым и
зарезервированным для внутреннего использования (SDK)20. При этом r24 объявляет
view_gcomps(код r24)3,shell_extвозвращает этот вид (код r24)225, а сторонний GlobalTV — и GComps-, и rows-экраны (код)322; Домашнее ТВ 3.5.4 — тоже (код)323. Связиconflicts_withмеждуc127и этими claims нет. - Поля
PluginControlsFolderView. В SDK у негоdefs,initial_sel_ndxиparams(SDK)131, аdune_api.phpr24 объявляет в классе ещёactionsиtimer(код r24)324;AbstractControlsScreenвshell_extr24 кладёт их в данные (код r24)133. Поля класса r24 связаны с SDK черезconflicts_with.
6. Не проверено¶
Объект: гипотезы (inference), disputed и пробелы области, для которых в базе нет claim; кандидаты на проверку на
устройстве или в коде.
| Утверждение | Статус | Claim |
|---|---|---|
Нативная оболочка, вероятно, ищет эффективную строку DUP в row_dup_map по dup_id из data; отсутствие карты, dup_id или эффективной строки диагностируется предупреждением |
inference | (вывод r25)325 |
PLUGIN_ROW_OPT_OPTIMIZE_INVISIBLE, вероятно, разрешает оптимизацию невидимых строк; какие операции пропускаются и как определяется невидимость, не установлено |
inference | (вывод r25)326 |
Без PluginRowsPane::headers сообщение msg_search_empty в GlobalTV, вероятно, не появится даже при отсутствии найденных каналов: rows уже содержит начальный VGAP |
inference | (вывод)327 |
embeddable_plugin_folders (во внутренних именах — EPF), вероятно, объявляет «встраиваемые папки плагина», которые оболочка кэширует и показывает в своём меню |
inference | (вывод r24)328 |
В ext_epg/lib вызов GCompsFactory::get_window_def($comp_defs, null, 'rgb(0,0,0)') задаёт чёрный background_color; при подмене на shell_ext/lib r25 строка 'rgb(0,0,0)' попала бы в background_url, а background_color остался бы null |
inference | (вывод r25)329 |
Вероятно, .aai — формат картинки оболочки «ширина, высота (LE uint32), затем пиксели BGRA»: так Домашнее ТВ делает одноцветную заливку 1×1 без PNG |
inference | (вывод)330 |
Позиционные вызовы regular_row в Домашнем ТВ рассчитаны на копию без header_id/ui_level: с rows_factory.php из shell_ext r24 аргументы сдвинулись бы (title попал бы в header_id) |
inference | (вывод)331 |
Приглушение подсказок «Вперед»/«Назад» (alpha 99) в Домашнем ТВ, вероятно, не действует: get_image_def копии отбрасывает alpha, заметна только смена цвета текста |
inference | (вывод)332 |
SDK описывает icon_url как параметр отображения точки входа; на r25 точки входа без icon_url в «Приложениях» не появлялись — поведение шире описания |
doc, disputed; device-наблюдение | (устройство r25, SDK)333 |
Пробелы области, для которых нет claim:
- Полного каталога ресурсов
gui_skin://(имена файлов, наличие в конкретном скине) в базе нет; примеры в §2.4 — только то, что встретилось в claims. - Полного сравнения
ViewParams/ViewItemParamsr24 → r25 нет: для r25 есть только отдельные claims оdune_api.phpиshell_ext. - Поведение
PluginRegularFolderItem::lockedи контрактcut_icon://вне примера sandwich не описаны. - Что оболочка делает с
dune_image_cache=1и сколько живёт кэш картинок, не установлено. - Отрисовка папок, badge, sandwich и фона на устройстве не проверялась;
device-claims об отрисовке экранов плагина в базе нет. - Различий экранов по классам устройств (Android/Sigma) в claims нет: SDK говорит только о поддержке возможностей плагинов в целом.
- Поддержка
view_gcomps/view_rowsна прошивках, отличных от tv188b r24/r25, не установлена.
-
- doc-sdk-plugins.c076 · doc · any-documented; прошивка — · Для поддержки иерархии папок плагин должен реализовать как минимум DunePlugin::get_folder_view($media_url)
- doc-sdk-plugins--operations.c003 · doc · any-documented; прошивка — · get_folder_view() вызывается, когда GUI Dune исполняет действие PLUGIN_OPEN_FOLDER
-
doc-sdk-plugins--operations.c007 · doc · any-documented; прошивка — · PluginFolderView::view_kind принимает значения PLUGIN_FOLDER_VIEW_REGULAR, PLUGIN_FOLDER_VIEW_CONTROLS, PLUGIN_FOLDER_VIEW_MOVIE ↩↩↩↩
-
fw-tv188b-260827-0003-r24--php-framework.c108 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · dune_api.php задаёт перечисление PluginFolderViewKind строковыми константами: PLUGIN_FOLDER_VIEW_REGULAR='view_regular', PLUGIN_FOLDER_VIEW_CONTROLS='view_controls', PLUGIN_FOLDER_VIEW_MOVIE='view_movie', PLUGIN_FOLDER_VIEW_GCOMPS='view_gcomps', PLUGIN_FOLDER_VIEW_ROWS='view_rows' ↩↩↩↩↩↩
-
doc-sdk-plugins--view-params.c006 · doc · any-documented; прошивка — · ViewParams::num_cols и num_rows — обязательные положительные целые числа столбцов и строк сетки содержимого. ↩↩↩
-
plg-dc-widget-ext.c026 · code · unknown; прошивка — · Экран plugins_screen — обычная папка PLUGIN_FOLDER_VIEW_REGULAR списком: num_cols 1, num_rows 12, иконка gui_skin://small_icons/folder.aai, item_caption_width 1550 ↩↩↩↩
-
fw-tv188b-261021-0117-r25--shell-ext--ui-lib--tv-vod.c047 · code · tv188b, android-dune-fw; прошивка 261021_0117_r25 · AbstractVod::get_vod_list_folder_views и get_vod_genres_folder_views по умолчанию бросают 'Not implemented', а get_vod_series_folder_views возвращает один вид: num_cols=1, num_rows=12, item_layout=HALIGN_LEFT, icon_valign=VALIGN_CENTER, icon_dx=10, icon_dy=-5, item_caption_dx=60, icon_path gui_skin://small_icons/movie.aai, not_loaded_view_item_params пустой. ↩↩↩
-
- doc-sdk-plugins--operations.c010 · doc · any-documented; прошивка — · PluginRegularFolderView::initial_range — начальный диапазон элементов: для простых (preloaded) папок он должен содержать все элементы, для lazy-loaded — первый кусок или даже пустой список
- doc-sdk-plugins--operations.c036 · doc · any-documented; прошивка — · Для lazy-loaded папки get_regular_folder_items() вызывается каждый раз, когда нужно показать ещё не загруженные элементы (обычно при прокрутке)
-
doc-sdk-plugins--operations.c033 · doc · any-documented; прошивка — · get_next_folder_view() возвращает следующий вид папки; GUI вызывает его по A_RED, если плагин задал PluginFolderView::multiple_views_supported == true ↩↩↩
-
doc-sdk-plugins.c100 · doc · any-documented; прошивка — · Поддерживаемые форматы изображений: JPEG, PNG с альфа-каналом, BMP с альфа-каналом и собственный формат Dune HD AAI с альфа-каналом ↩↩↩
-
doc-sdk-plugins.c101 · doc · any-documented; прошивка — · Картинки можно указывать как http://, plugin_archive://archive/path, plugin_file://path или gui_skin://path (ресурс стандартного скина прошивки) ↩↩↩↩
-
doc-sdk-plugins.c087 · doc · any-documented; прошивка — · При async_icon_loading = false GUI блокируется до загрузки видимых иконок; при true иконки грузятся в отдельном потоке, а элемент рисуется по not_loaded_view_item_params ↩↩
-
doc-sdk-plugins--view-params.c014 · doc · any-documented; прошивка — · ViewParams::background_path задаёт пользовательский фон (image URL, default=unset), рисуемый после стандартного полноэкранного фона; свойства фона действуют только при заданном background_path. ↩↩↩
-
doc-sdk-plugins--operations.c021 · doc · any-documented; прошивка — · Класс PluginFolderViewParams (параметры control- и movie-папок) в документе имеет поля paint_path_box, paint_content_box_background (Boolean) и background_url (String) ↩↩↩↩
-
doc-sdk-plugins--gui-actions.c069 · doc · any-documented; прошивка — · PluginUpdateFolderAction частично заменяет состояние текущей регулярной папки плагина: при need_refresh очищается кэш состояния папки, применяется переданный range, при sel_ndx >= 0 фокус переходит на элемент с этим индексом ↩↩
-
doc-sdk-plugins--gui-actions.c073 · doc · any-documented; прошивка — · PluginInvalidateFolders нужен, когда действия во вложенной папке изменили состояние родительской: так родительскую папку заставляют перезагрузиться ↩↩
-
doc-sdk-plugins--gui-actions.c070 · doc · any-documented; прошивка — · Вне регулярной папки PluginUpdateFolderAction игнорируется ↩
-
doc-sdk-plugins.c081 · doc · any-documented; прошивка — · Во время TV/VOD-воспроизведения плагина работает playback executor, исполняющий только PluginHandleUserInput, PluginShowError, ChangeBehaviour, PluginInvalidateFolders и PluginVodPlay (с обязательным vod_info) ↩↩↩
-
- doc-sdk-plugins.c071 · doc · any-documented; прошивка — · Папки плагина бывают трёх типов: регулярная (таблица элементов), control-папка (вертикальный список контролов для настроек) и movie-папка (карточка фильма)
- doc-sdk-plugins.c074 · doc · any-documented; прошивка — · Control-папка поддерживает контролы button, combobox, text field; изменения применяются/сохраняются через действие HANDLE_USER_INPUT
-
- doc-sdk-plugins--operations.c024 · doc · any-documented; прошивка — · Класс PluginMovieFolderView имеет поля movie, left_button_caption, left_button_action, has_right_button, right_button_caption, right_button_action, has_multiple_series, series_media_url, poster_valign, params
- doc-sdk-plugins--operations.c031 · doc · any-documented; прошивка — · Класс PluginMovie имеет поля name, name_original, description, poster_url, length_min, year, directors_str, scenarios_str, actors_str, genres_str, rate_imdb, rate_kinopoisk, rate_mpaa, country, budget, details, rate_details
-
doc-sdk-plugins.c127 · doc · any-documented; прошивка — · Фреймворк GComponents (gcomp*) не завершён и зарезервирован для внутреннего использования ↩↩↩↩
-
doc-sdk-plugins--gui-actions.c033 · doc · any-documented; прошивка — · PluginOpenFolderAction открывает папку плагина: caption добавляется в блок пути, выполняется операция Get_folder_view($media_url), её результат показывается как содержимое папки ↩
-
doc-sdk-plugins--operations.c008 · doc · any-documented; прошивка — · Тип PluginFolderView::data зависит от view_kind: регулярная папка — PluginRegularFolderView, control-папка — PluginControlsFolderView, movie-папка — PluginMovieFolderView ↩↩
-
doc-sdk-plugins--operations.c003 · doc · any-documented; прошивка — · get_folder_view() вызывается, когда GUI Dune исполняет действие PLUGIN_OPEN_FOLDER ↩
-
doc-sdk-plugins.c076 · doc · any-documented; прошивка — · Для поддержки иерархии папок плагин должен реализовать как минимум DunePlugin::get_folder_view($media_url) ↩
-
- doc-sdk-plugins--gui-actions.c032 · doc · any-documented; прошивка — · Данные PluginOpenFolderAction — класс PluginOpenFolderActionData с необязательными полями caption и media_url (по умолчанию null — автоматически)
- doc-sdk-plugins--gui-actions.c033 · doc · any-documented; прошивка — · PluginOpenFolderAction открывает папку плагина: caption добавляется в блок пути, выполняется операция Get_folder_view($media_url), её результат показывается как содержимое папки
-
doc-sdk-plugins--gui-actions.c034 · doc · any-documented; прошивка — · Если media_url в PluginOpenFolderAction равен null, используется media_url выбранного элемента папки; если элемент не выбран, действие игнорируется ↩
-
doc-sdk-plugins--gui-actions.c035 · doc · any-documented; прошивка — · Если caption в PluginOpenFolderAction равен null, элементом пути становится caption выбранного элемента папки ↩
-
doc-sdk-plugins--operations.c004 · doc · any-documented; прошивка — · Класс PluginFolderView в документе имеет 4 поля: view_kind (PluginFolderViewKind), data (union по view_kind), multiple_views_supported (Boolean), archive (PluginArchiveDef) ↩
-
doc-sdk-plugins--operations.c036 · doc · any-documented; прошивка — · Для lazy-loaded папки get_regular_folder_items() вызывается каждый раз, когда нужно показать ещё не загруженные элементы (обычно при прокрутке) ↩↩
-
doc-sdk-plugins.c071 · doc · any-documented; прошивка — · Папки плагина бывают трёх типов: регулярная (таблица элементов), control-папка (вертикальный список контролов для настроек) и movie-папка (карточка фильма) ↩↩↩↩
-
- doc-sdk-plugins--operations.c007 · doc · any-documented; прошивка — · PluginFolderView::view_kind принимает значения PLUGIN_FOLDER_VIEW_REGULAR, PLUGIN_FOLDER_VIEW_CONTROLS, PLUGIN_FOLDER_VIEW_MOVIE
- doc-sdk-plugins--operations.c008 · doc · any-documented; прошивка — · Тип PluginFolderView::data зависит от view_kind: регулярная папка — PluginRegularFolderView, control-папка — PluginControlsFolderView, movie-папка — PluginMovieFolderView
-
fw-tv188b-260827-0003-r24--php-framework.c201 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · dune_api.php определяет класс PluginFolderView с ключами (6): view_kind, data, multiple_views_supported, archive, folder_type, params ↩
-
doc-sdk-plugins.c126 · doc · any-documented; прошивка — · Обычно (Normally) экран регулярной папки делится на path block сверху (опционально), content block слева снизу и details block справа снизу ↩
-
doc-sdk-plugins--view-params.c003 · doc · any-documented; прошивка — · Прямоугольная область содержимого регулярной папки разбивается числом строк и столбцов на прямоугольники элементов одинакового размера. ↩
-
doc-sdk-plugins--view-params.c004 · doc · any-documented; прошивка — · В непустом прямоугольнике элемента обычно находятся иконка и подпись. ↩
-
doc-sdk-plugins--view-params.c005 · doc · any-documented; прошивка — · Блок деталей обычно содержит дополнительную информацию о выбранном элементе: иконку сверху и структурированный текст ниже. ↩
-
doc-sdk-plugins--view-params.c001 · doc · any-documented; прошивка — · ViewParams назначаются регулярной папке и задают аспекты отображения её содержимого. ↩
-
doc-sdk-plugins--view-params.c002 · doc · any-documented; прошивка — · ViewItemParams назначаются каждому элементу папки и вместе с ViewParams папки влияют на отображение элемента в родительской папке. ↩↩
-
doc-sdk-plugins--operations.c011 · doc · any-documented; прошивка — · PluginRegularFolderView::view_params задаёт параметры представления папки целиком (num_cols, num_rows, async_icon_loading и т. п.) ↩↩
-
doc-sdk-plugins--operations.c015 · doc · any-documented; прошивка — · PluginRegularFolderView::base_view_item_params задаёт значения по умолчанию параметров отображения каждого элемента папки ↩↩↩
-
- doc-sdk-plugins--view-params.c001 · doc · any-documented; прошивка — · ViewParams назначаются регулярной папке и задают аспекты отображения её содержимого.
- doc-sdk-plugins--operations.c011 · doc · any-documented; прошивка — · PluginRegularFolderView::view_params задаёт параметры представления папки целиком (num_cols, num_rows, async_icon_loading и т. п.)
-
doc-sdk-plugins--view-params.c028 · doc · any-documented; прошивка — · ViewParams::content_box_x/y (целые ≥ 0) и content_box_width/height (положительные целые) задают прямоугольник блока содержимого; все default=auto. ↩↩↩
-
doc-sdk-plugins--view-params.c029 · doc · any-documented; прошивка — · ViewParams::content_box_padding_left/top/right/bottom задают внутренние отступы блока содержимого: целые ≥ 0, все default=20. ↩↩
-
doc-sdk-plugins--view-params.c053 · doc · any-documented; прошивка — · ViewItemParams::icon_path — обязательный URL иконки, icon_sel_path — URL для выделенного состояния; по умолчанию icon_sel_path равен icon_path. ↩↩↩↩
-
doc-sdk-plugins--view-params.c058 · doc · any-documented; прошивка — · ViewItemParams::item_layout по умолчанию center: иконка и подпись центрируются горизонтально, иконка над подписью; при left обе центрируются вертикально, иконка слева, текст — от левого края текстового блока. ↩↩
-
doc-sdk-plugins--view-params.c059 · doc · any-documented; прошивка — · При ViewItemParams::item_layout=left текстовый блок выровнен вправо и обычно занимает всю ширину элемента; чтобы текст не рисовался поверх иконки, нужно изменить item_caption_dx или item_caption_width. ↩↩
-
doc-sdk-plugins--view-params.c060 · doc · any-documented; прошивка — · ViewItemParams::icon_valign выравнивает иконку между верхом элемента и подписью: top|center|bottom, default=top; действует только при item_layout=HALIGN_CENTER. ↩↩
-
doc-sdk-plugins--view-params.c009 · doc · any-documented; прошивка — · ViewParams::orientation задаёт vertical или horizontal; по умолчанию vertical, доступно с 131203_b9. ↩↩
-
doc-sdk-plugins--view-params.c008 · doc · any-documented; прошивка — · ViewParams::scroll_animation_enabled управляет анимацией прокрутки содержимого (boolean, default=yes); сейчас действует только при горизонтальной ориентации, с 131203_b9. ↩↩
-
doc-sdk-plugins--view-params.c010 · doc · any-documented; прошивка — · ViewParams::cycle_mode_enabled (boolean, default=no, с 131203_b9) удерживает выделение в центре при прокрутке элементов влево/вправо; действует только при horizontal, одной строке и нечётном числе столбцов ≥ 5. ↩↩↩
-
- doc-sdk-plugins--view-params.c011 · doc · any-documented; прошивка — · ViewParams::cycle_mode_gap задаёт промежуток между последним и первым элементами (yes|no|auto, default=no, с 131203_b9); auto рисует его при числе элементов больше числа столбцов, только при фактически включённом cycle_mode.
- doc-sdk-plugins--view-params.c012 · doc · any-documented; прошивка — · ViewParams::cycle_mode_gap_width задаёт ширину промежутка (integer, default=auto=половина ширины элемента); действует только при фактически включённом cycle_mode, с 131203_b9.
- doc-sdk-plugins--view-params.c013 · doc · any-documented; прошивка — · ViewParams::cycle_mode_gap_icon_path задаёт иконку в середине промежутка (image URL, default=unset); действует только при фактически включённом cycle_mode, с 131203_b9.
-
doc-sdk-plugins.c073 · doc · any-documented; прошивка — · Регулярные папки бывают простые (всё содержимое сразу) и с ленивой подгрузкой кусками — с известным и с неизвестным общим размером ↩
-
doc-sdk-plugins--operations.c010 · doc · any-documented; прошивка — · PluginRegularFolderView::initial_range — начальный диапазон элементов: для простых (preloaded) папок он должен содержать все элементы, для lazy-loaded — первый кусок или даже пустой список ↩
-
doc-sdk-plugins--operations.c035 · doc · any-documented; прошивка — · Для простых (preloaded) папок GUI Dune никогда не вызывает get_regular_folder_items() ↩
-
doc-sdk-plugins--operations.c034 · doc · any-documented; прошивка — · get_regular_folder_items() возвращает заданный кусок элементов папки $media_url (PluginRegularFolderRange) и относится к ленивой подгрузке регулярных папок ↩
-
doc-sdk-plugins--operations.c037 · doc · any-documented; прошивка — · Загруженные элементы папки кэшируются в памяти до выхода из папки ↩↩
-
fw-tv188b-260827-0003-r24--php-framework.c218 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · dune_api.php определяет класс PluginRegularFolderRange с ключами (5): total, more_items_available, from_ndx, count, items ↩↩
-
fw-tv188b-260827-0003-r24--php-framework.c064 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · HD::create_regular_folder_range($items, $from_ndx=0, $total=-1, $more_items_available=false) строит массив с ключами PluginRegularFolderRange total, more_items_available, from_ndx, count, items и обрезает items по total ↩
-
fw-tv188b-260827-0003-r24--shell-ext--ui-lib.c197 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · AbstractPreloadedRegularScreen::get_folder_range игнорирует from_ndx и строит диапазон HD::create_regular_folder_range из всех get_all_folder_items. ↩↩
-
doc-sdk-plugins.c072 · doc · any-documented; прошивка — · В регулярной папке плагина клавиши ENTER, PLAY, INFO, POPUP_MENU, B_GREEN, C_YELLOW, D_BLUE игнорируются, если плагин не назначил им действия; A_RED переключает варианты отображения (folder view) ↩
-
doc-sdk-plugins--operations.c006 · doc · any-documented; прошивка — · PluginFolderView::multiple_views_supported указывает, доступны ли для папки несколько видов (см. get_next_folder_view) ↩
-
fw-tv188b-260827-0003-r24--shell-ext--ui-lib.c194 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · AbstractRegularScreen хранит индекс представления в cookie screen.
.view_idx; при чтении ограничивает индекс диапазоном 0..count(folder_views)-1. ↩ -
fw-tv188b-260827-0003-r24--shell-ext--ui-lib.c195 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · AbstractRegularScreen::get_next_folder_view увеличивает индекс циклически, записывает cookie и возвращает новое представление. ↩
-
- fw-tv188b-261021-0117-r25--shell-ext--ui-lib.c014 · code · tv188b, android-dune-fw; прошивка 261021_0117_r25 · AbstractRegularScreen::toggle_view_index циклически увеличивает индекс, записывая cookie на каждой итерации, и останавливается при cur_view_index_is_allowed() либо возврате к исходному индексу; возвращает индекс.
- fw-tv188b-261021-0117-r25--shell-ext--ui-lib.c015 · code · tv188b, android-dune-fw; прошивка 261021_0117_r25 · AbstractRegularScreen::get_next_folder_view вызывает toggle_view_index и затем возвращает get_folder_view.
-
fw-tv188b-261021-0117-r25--shell-ext--ui-lib.c025 · code · tv188b, android-dune-fw; прошивка 261021_0117_r25 · В regular-ветке AbstractSmartRegularScreen::get_folder_view_v2 multiple_views_supported равен 1 только при !is_manual_views_handling() и числе folder_views больше одного. ↩
-
fw-tv188b-261021-0117-r25.c047 · code · tv188b, android-dune-fw; прошивка 261021_0117_r25 · Новый класс AbstractSmartRegularScreen (shell_ext/lib, r25) наследует AbstractRegularScreen; get_folder_view_v2 отдаёт вид PLUGIN_FOLDER_VIEW_ROWS, если в описании вида есть ключ rows, иначе обычный регулярный вид; состояние выбора берёт из parent_sel_state ↩↩↩
-
doc-sdk-plugins.c083 · doc · any-documented; прошивка — · plugin_file://path обращается к ресурсам текущего плагина, plugin_file://%plugin_name%/path — к ресурсам указанного плагина ↩
-
- doc-sdk-plugins.c084 · doc · any-documented; прошивка — · Plugin archive (PluginArchiveDef: id, urls_with_keys, all_tgz_url, total_size) кэширует картинки папок в system/flash storage; ссылки на них — plugin_archive://
/ - doc-sdk-plugins.c086 · doc · any-documented; прошивка — · URL plugin_archive:// работают как http://, если GUI не смог сохранить локальную копию архива
- doc-sdk-plugins.c084 · doc · any-documented; прошивка — · Plugin archive (PluginArchiveDef: id, urls_with_keys, all_tgz_url, total_size) кэширует картинки папок в system/flash storage; ссылки на них — plugin_archive://
-
doc-sdk-plugins--operations.c005 · doc · any-documented; прошивка — · PluginFolderView::archive — необязательное описание plugin archive, используемого этой папкой (подробности — раздел «Plugin archives») ↩
-
doc-sdk-plugins.c085 · doc · any-documented; прошивка — · Если к загрузке больше 50 картинок архива и задан all_tgz_url, качается и распаковывается один gzip-tarball, иначе файлы качаются по отдельности ↩
-
doc-sdk-plugins--view-params.c080 · doc · any-documented; прошивка — · Пример SDK для sandwich использует ресурсы скина gui_skin://special_icons/sandwich_base.aai, cut_icon://{name=sandwich_mask} и cut_icon://{name=sandwich_cover}. ↩↩
-
fw-tv188b-261021-0117-r25--shell-ext--ui-lib--tv-vod.c009 · code · tv188b, android-dune-fw; прошивка 261021_0117_r25 · DefaultGroup хранит id, title, icon_url и HashedArray каналов; при icon_url=null подставляет gui_skin://small_icons/iptv.aai; is_favorite_channels и is_all_channels по умолчанию false, get_channels возвращает HashedArray, add_channel кладёт канал через put. ↩
-
fw-tv188b-261021-0117-r25--shell-ext--android-apps.c022 · code · tv188b, android-dune-fw; прошивка 261021_0117_r25 · Для иконки ярлыка ensure_apps выбирает явный URL с ://, иначе файл из firmware icons, иначе загруженный файл из flashdata icons, иначе gui_skin://large_icons/apps.png. ↩
-
fw-tv188b-261021-0117-r25--ext-epg.c011 · code · tv188b, android-dune-fw; прошивка 261021_0117_r25 · key_to_label r25 задаёт для imdb_rating иконку gui_skin://special_icons/imdb.png размером 78×37, для kinopoisk_rating — gui_skin://special_icons/kp.png размером 37×37. ↩
-
fw-apk-260724-0207-r24.c052 · code · android-atv; прошивка 260724_0207_r24 · В data.zip три альтернативных скина — Air, Black, Silver (821 файл, все совпадают с tv175u по sha256); скинов Blue, Dune, Glass, Green, Mountain, Red, Sunset из tv175u той же сборки (455 файлов) в APK нет ↩↩
-
doc-sdk-plugins--view-params.c041 · doc · any-documented; прошивка — · ViewParams::sandwich_base/mask/cover задают компоненты sandwich как изображения или cut-icons: string с image URL либо cut_icon URL, все default=unset. ↩↩↩
-
doc-sdk-plugins--view-params.c054 · doc · any-documented; прошивка — · ViewItemParams::icon_width/height и icon_sel_width/height задают размеры иконки без выделения и с выделением: целые ≥ 0, default=0 означает auto; если не заданы, используются реальные размеры изображения. ↩↩↩
-
doc-sdk-plugins--view-params.c071 · doc · any-documented; прошивка — · ViewItemParams::item_detailed_icon_path задаёт URL иконки блока деталей; default=icon_path, то есть по умолчанию одна иконка используется для содержимого и деталей. ↩↩
-
doc-sdk-plugins--operations.c012 · doc · any-documented; прошивка — · PluginRegularFolderView::async_icon_loading указывает, использовать ли асинхронную загрузку иконок по умолчанию ↩
-
doc-sdk-plugins--operations.c016 · doc · any-documented; прошивка — · PluginRegularFolderView::not_loaded_view_item_params задаёт отображение элемента, чья картинка ещё не загружена или загрузилась с ошибкой ↩
-
doc-sdk-plugins--operations.c017 · doc · any-documented; прошивка — · not_loaded_view_item_params сейчас игнорируется, если ViewParams::async_icon_loading == false ↩
-
doc-sdk-plugins--operations.c013 · doc · any-documented; прошивка — · PluginRegularFolderView::async_icon_loading_pipelining — значение CURLMOPT_PIPELINING для асинхронной загрузки картинок, по умолчанию true; доступно с прошивки 120616 ↩
-
doc-sdk-plugins--operations.c014 · doc · any-documented; прошивка — · PluginRegularFolderView::async_icon_loading_max_connects — значение CURLMOPT_MAXCONNECTS для асинхронной загрузки картинок, по умолчанию 8; доступно с прошивки 120616 ↩
-
fw-tv188b-260827-0003-r24--php-framework.c219 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · dune_api.php определяет класс PluginRegularFolderView с ключами (11): view_params, base_view_item_params, not_loaded_view_item_params, load_failed_view_item_params, actions, timer, async_icon_loading, async_icon_loading_pipelining, async_icon_loading_max_connects, async_icon_loading_interrupt_enabled, initial_range ↩
-
fw-tv188b-260827-0003-r24--php-framework.c073 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · HD::enable_caching_for_image_url дописывает к URL картинки, начинающемуся с http или cached_image, параметр dune_image_cache=1 ↩
-
plg-dc-globaltv.c092 · code · unknown; прошивка — · HD::enable_caching дописывает параметр dune_image_cache=1 к URL картинок, начинающимся с http или cached_image. ↩
-
- doc-sdk-plugins--view-params.c014 · doc · any-documented; прошивка — · ViewParams::background_path задаёт пользовательский фон (image URL, default=unset), рисуемый после стандартного полноэкранного фона; свойства фона действуют только при заданном background_path.
- doc-sdk-plugins--operations.c021 · doc · any-documented; прошивка — · Класс PluginFolderViewParams (параметры control- и movie-папок) в документе имеет поля paint_path_box, paint_content_box_background (Boolean) и background_url (String)
- fw-tv188b-260827-0003-r24--php-framework.c176 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · dune_api.php определяет класс GCompWindowDef с ключами (12): background_color, background_url, background_fit_def, async_loading_background, not_loaded_background_url, playback_bg_alpha, small_state_text, opaque_background, comp_defs, focus, bg_def, ui_state
- fw-tv188b-260827-0003-r24--php-framework.c230 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · dune_api.php определяет класс PluginRowsPane с ключами (26): rows, headers, focus, bg, screen_r, screen_y2, min_row_index_for_y2, info_r, vod_r, header_enabled, single_list_navigation, initial_focus_header, initial_focus_header_id, initial_focus_item_id, initial_focus_row_id, horizontal_focus_freedom_factor, horizontal_focus_end_min_offset, vertical_focus_freedom_factor, vertical_focus_gravity, vertical_focus_end_min_offset, header_font_size, header_min_font_size, max_header_width, min_header_width, up_arrow_dy, regular_item_params_templates
- fw-tv188b-260827-0003-r24--php-framework.c229 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · dune_api.php определяет класс PluginRowsInfo с ключами (8): folder_key, item_id, info_defs, bg_url, nl_bg_url, mask_url, bg_poster_mode, playback_urls
-
- doc-sdk-plugins--view-params.c014 · doc · any-documented; прошивка — · ViewParams::background_path задаёт пользовательский фон (image URL, default=unset), рисуемый после стандартного полноэкранного фона; свойства фона действуют только при заданном background_path.
- doc-sdk-plugins--view-params.c015 · doc · any-documented; прошивка — · Прямоугольник пользовательского фона ViewParams задают background_x/background_y (целые ≥ 0, default=0) и background_width/background_height (положительные целые, по умолчанию реальные размеры изображения).
- doc-sdk-plugins--view-params.c017 · doc · any-documented; прошивка — · ViewParams::background_order задаёт порядок отрисовки пользовательского фона: before_all — до всей прочей графики, before_icons (default) — после glasses, до иконок/подписей/выделения, after_all — после всей прочей графики.
-
fw-tv188b-260827-0003-r24--php-framework.c176 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · dune_api.php определяет класс GCompWindowDef с ключами (12): background_color, background_url, background_fit_def, async_loading_background, not_loaded_background_url, playback_bg_alpha, small_state_text, opaque_background, comp_defs, focus, bg_def, ui_state ↩↩
-
- fw-tv188b-260827-0003-r24--php-framework.c230 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · dune_api.php определяет класс PluginRowsPane с ключами (26): rows, headers, focus, bg, screen_r, screen_y2, min_row_index_for_y2, info_r, vod_r, header_enabled, single_list_navigation, initial_focus_header, initial_focus_header_id, initial_focus_item_id, initial_focus_row_id, horizontal_focus_freedom_factor, horizontal_focus_end_min_offset, vertical_focus_freedom_factor, vertical_focus_gravity, vertical_focus_end_min_offset, header_font_size, header_min_font_size, max_header_width, min_header_width, up_arrow_dy, regular_item_params_templates
- fw-tv188b-260827-0003-r24--php-framework.c229 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · dune_api.php определяет класс PluginRowsInfo с ключами (8): folder_key, item_id, info_defs, bg_url, nl_bg_url, mask_url, bg_poster_mode, playback_urls
-
doc-sdk-plugins--view-params.c015 · doc · any-documented; прошивка — · Прямоугольник пользовательского фона ViewParams задают background_x/background_y (целые ≥ 0, default=0) и background_width/background_height (положительные целые, по умолчанию реальные размеры изображения). ↩↩↩
-
doc-sdk-plugins--view-params.c017 · doc · any-documented; прошивка — · ViewParams::background_order задаёт порядок отрисовки пользовательского фона: before_all — до всей прочей графики, before_icons (default) — после glasses, до иконок/подписей/выделения, after_all — после всей прочей графики. ↩↩
-
- doc-sdk-plugins--view-params.c021 · doc · any-documented; прошивка — · Флаги ViewParams::paint_path_box, paint_content_box_background, paint_scrollbar, paint_icon_selection_box, paint_help_line, paint_details и paint_details_box_background позволяют скрывать соответствующую графику; все boolean, default=true.
- doc-sdk-plugins--view-params.c022 · doc · any-documented; прошивка — · Флаги ViewParams::paint_path_box_background, paint_widget и paint_widget_background позволяют скрывать соответствующую графику; все boolean, default=true, с 130818.
-
doc-sdk-plugins--view-params.c016 · doc · any-documented; прошивка — · ViewParams::optimize_full_screen_background (boolean, default=false) позволяет не рисовать фон скина; для этого background_order должен быть before_all, а фактический прямоугольник пользовательского фона — покрывать весь экран. ↩↩
-
doc-sdk-plugins--view-params.c063 · doc · any-documented; прошивка — · ViewItemParams::item_caption_wrap_enabled включает подписи в две строки (boolean, default=false); если двух строк недостаточно, подпись рисуется в одну строку с прокруткой. ↩↩
-
doc-sdk-plugins--view-params.c064 · doc · any-documented; прошивка — · При двухстрочной подписи ViewItemParams::item_caption_wrap_enabled раскладка содержимого должна обеспечивать, чтобы подпись не пересекала границы блока содержимого. ↩↩
-
doc-sdk-plugins--view-params.c048 · doc · any-documented; прошивка — · ViewItemParams::item_paint_unselected_caption управляет подписями невыбранных элементов; boolean, default=true, с 130818. ↩↩
-
doc-sdk-plugins--view-params.c050 · doc · any-documented; прошивка — · ViewItemParams::item_paint_caption_within_icon рисует подпись внутри иконки (boolean, default=false); обычно используется совместно с item_paint_caption=0. ↩↩
-
doc-sdk-plugins--view-params.c069 · doc · any-documented; прошивка — · ViewItemParams::item_detailed_info — структурированный текст (string, default=unset), показываемый в блоке деталей при выделении текущего элемента; может содержать несколько абзацев с отдельным однострочным заголовком и многострочным текстом. ↩↩
-
doc-sdk-plugins--view-params.c070 · doc · any-documented; прошивка — · Формат ViewItemParams::item_detailed_info разделяет абзацы через '||', а заголовок и строки текста — через '|'; для текстовых строк вместо '|' можно использовать автоматический перенос ViewParams::item_detailed_info_auto_line_break. ↩↩
-
doc-sdk-plugins--view-params.c038 · doc · any-documented; прошивка — · ViewParams::item_detailed_info_auto_line_break (boolean, default=false, с 120605) автоматически переносит текст деталей, если строка не помещается по ширине. ↩↩
-
doc-sdk-plugins--view-params.c032 · doc · any-documented; прошивка — · ViewParams::paint_item_info_in_details (boolean, default=true) управляет текстом в блоке деталей; при false там рисуется только иконка. ↩↩
-
doc-sdk-plugins--view-params.c034 · doc · any-documented; прошивка — · Масштаб иконки деталей ViewParams выбирается по приоритету: zoom_detailed_icon=true (boolean, default=false) вписывает по ширине с возможным увеличением; иначе заданный detailed_icon_scale_factor (double, default=auto); иначе авто по ширине и item_detailed_info_rel_y, если он задан. ↩↩↩
-
doc-sdk-plugins--view-params.c025 · doc · any-documented; прошивка — · ViewParams::paint_icon_badge_box включает badge mode (boolean, default=false): под иконкой рисуется badge cut-image скина, а иконка автоматически уменьшается и центрируется в badge box. ↩↩
-
doc-sdk-plugins--view-params.c062 · doc · any-documented; прошивка — · ViewItemParams::icon_fit_scale_factor (double в (0..1], default=0.9, с 120605) используется только при ViewParams::paint_icon_badge_box=true для уменьшения и центрирования иконки в badge box. ↩↩
-
doc-sdk-plugins--view-params.c026 · doc · any-documented; прошивка — · ViewParams::hidden_badge_box (boolean, default=false, с 120819) скрывает badge, сохраняя позиции дополнительной графики (marks и stars) как в badge mode. ↩↩
-
doc-sdk-plugins--view-params.c072 · doc · any-documented; прошивка — · ViewItemParams::item_badge_icon_path заменяет стандартный badge cut-image скина своей иконкой (image URL, default=unset, с 120830); действует только в badge mode и игнорируется при enable_badge_icons=no, если item_override_default_badge не true. ↩↩
-
doc-sdk-plugins--view-params.c073 · doc · any-documented; прошивка — · ViewItemParams::item_override_default_badge=true позволяет item_badge_icon_path переопределять badge скина даже при enable_badge_icons=no; boolean, default=false, с 131005. ↩↩
-
doc-sdk-plugins--view-params.c039 · doc · any-documented; прошивка — · ViewParams::paint_sandwich включает sandwich для всех элементов (boolean, default=false); состав — Base, Mask (только alpha), Cover и Icon. ↩↩
-
doc-sdk-plugins--view-params.c040 · doc · any-documented; прошивка — · Порядок сборки sandwich: Base как фон в буфер → Icon (обычно центрируется, если меньше, или уменьшается, если больше) → слияние alpha Mask с alpha буфера → Cover. ↩
-
doc-sdk-plugins--view-params.c044 · doc · any-documented; прошивка — · ViewParams::sandwich_icon_upscale_enabled (boolean, default=false) разрешает увеличивать иконку до границ sandwich; необходимое уменьшение выполняется всегда. ↩↩
-
doc-sdk-plugins--view-params.c074 · doc · any-documented; прошивка — · ViewItemParams::item_sandwich_icon_scale_factor задаёт масштаб иконки относительно границ sandwich: double в (0..1], default=auto; если не задан, используется ViewParams::sandwich_icon_scale_factor. ↩↩
-
doc-sdk-plugins--view-params.c030 · doc · any-documented; прошивка — · ViewParams::extra_content_objects (string, default=null, с 121201) позволяет рисовать фиксированную графику в блоке содержимого; сейчас поддерживаются только текстовые метки обычным шрифтом. ↩↩
-
doc-sdk-plugins--view-params.c031 · doc · any-documented; прошивка — · Координаты x/y в ViewParams::extra_content_objects задаются относительно прямоугольника блока содержимого; дополнительные объекты обычно не должны пересекать его границы. ↩↩
-
doc-sdk-plugins--view-params.c081 · doc · any-documented; прошивка — · Пример SDK для ViewParams::extra_content_objects задаёт две метки последовательностью label с параметрами x, y, text и color. ↩
-
- doc-sdk-plugins--gui-actions.c069 · doc · any-documented; прошивка — · PluginUpdateFolderAction частично заменяет состояние текущей регулярной папки плагина: при need_refresh очищается кэш состояния папки, применяется переданный range, при sel_ndx >= 0 фокус переходит на элемент с этим индексом
- doc-sdk-plugins--gui-actions.c070 · doc · any-documented; прошивка — · Вне регулярной папки PluginUpdateFolderAction игнорируется
-
- doc-sdk-plugins--gui-actions.c072 · doc · any-documented; прошивка — · PluginInvalidateFolders очищает кэш папок плагина с указанными media_urls, заставляя полностью перезагрузить их; некэшированные media_url игнорируются
- doc-sdk-plugins--gui-actions.c073 · doc · any-documented; прошивка — · PluginInvalidateFolders нужен, когда действия во вложенной папке изменили состояние родительской: так родительскую папку заставляют перезагрузиться
-
doc-sdk-plugins--gui-actions.c064 · doc · any-documented; прошивка — · ResetControlsAction заменяет состояние текущего диалога с контролами или папки с контролами; вне их игнорируется ↩
-
- doc-sdk-plugins--gui-actions.c095 · doc · any-documented; прошивка — · ChangeBehaviour меняет поведение в текущем GUI-контейнере; поддерживаются регулярная папка, диалог с контролами и VOD-воспроизведение, а папки с контролами/фильмом, TV- и обычное воспроизведение обещаны в будущем
- doc-sdk-plugins--gui-actions.c096 · doc · any-documented; прошивка — · В ChangeBehaviour заданное actions заменяет существующую карту действий, а заданный таймер перезапускается от текущего момента
-
fw-tv188b-260827-0003-r24--shell-ext--ui-lib.c022 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · ActionFactory::update_regular_folder строит действие plugin_update_folder; схема заполнения использует PluginUpdateFolderActionData::{range, need_refresh, sel_ndx}. need_refresh=false; sel_ndx=-1, приводится к int. ↩
-
doc-sdk-plugins--gui-actions.c072 · doc · any-documented; прошивка — · PluginInvalidateFolders очищает кэш папок плагина с указанными media_urls, заставляя полностью перезагрузить их; некэшированные media_url игнорируются ↩↩
-
fw-tv188b-260827-0003-r24--php-framework.c207 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · dune_api.php определяет класс PluginInvalidateFoldersActionData с ключами (4): media_urls, all_except, repopulate, post_action ↩
-
- fw-tv188b-260827-0003-r24--shell-ext--ui-lib.c017 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · ActionFactory::invalidate_folders строит действие plugin_invalidate_folders; схема заполнения использует PluginInvalidateFoldersActionData::{media_urls, post_action, all_except}.
- fw-tv188b-260827-0003-r24--shell-ext--ui-lib.c018 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · ActionFactory::invalidate_all_folders вызывает invalidate_folders(except_media_urls, post_action, true).
-
doc-sdk-plugins--operations.c019 · doc · any-documented; прошивка — · PluginRegularFolderView::timer задаёт задержку события таймера; событие генерируется один раз, но таймер можно сбросить действием ChangeBehaviour ↩
-
doc-sdk-plugins--gui-actions.c096 · doc · any-documented; прошивка — · В ChangeBehaviour заданное actions заменяет существующую карту действий, а заданный таймер перезапускается от текущего момента ↩
-
fw-tv188b-261021-0117-r25.c044 · code · tv188b, android-dune-fw; прошивка 261021_0117_r25 · В shell_ext/lib r25 сигнатура get_timer стала get_timer($media_url) (без &$plugin_cookies) в интерфейсах GCompsScreen и RowsScreen; RegularScreen тоже объявляет get_timer($media_url), а AbstractRegularScreen по умолчанию возвращает null и кладёт таймер в PluginRegularFolderView::timer ↩↩↩
-
fw-tv188b-261021-0117-r25--shell-ext--ui-lib.c006 · code · tv188b, android-dune-fw; прошивка 261021_0117_r25 · AbstractControlsScreen, AbstractGCompsScreen, AbstractRowsScreen и AbstractRegularScreen предоставляют публичный get_timer($media_url), по умолчанию возвращающий null. ↩
-
fw-tv188b-261021-0117-r25--shell-ext--ui-lib.c008 · code · tv188b, android-dune-fw; прошивка 261021_0117_r25 · AbstractRegularScreen::get_folder_view записывает PluginRegularFolderView::timer только при истинном результате get_timer($media_url). ↩
-
doc-sdk-plugins--gui-actions.c095 · doc · any-documented; прошивка — · ChangeBehaviour меняет поведение в текущем GUI-контейнере; поддерживаются регулярная папка, диалог с контролами и VOD-воспроизведение, а папки с контролами/фильмом, TV- и обычное воспроизведение обещаны в будущем ↩
-
doc-sdk-plugins.c074 · doc · any-documented; прошивка — · Control-папка поддерживает контролы button, combobox, text field; изменения применяются/сохраняются через действие HANDLE_USER_INPUT ↩
-
doc-sdk-plugins--operations.c020 · doc · any-documented; прошивка — · Класс PluginControlsFolderView имеет поля defs (Array
), initial_sel_ndx (int), params (PluginFolderViewParams) ↩↩↩↩ -
doc-sdk-plugins--operations.c023 · doc · any-documented; прошивка — · PluginControlsFolderView::initial_sel_ndx — индекс (с 0) контрола, получающего фокус первым; -1 означает контрол по умолчанию (первый) ↩
-
fw-tv188b-260827-0003-r24--shell-ext--ui-lib.c186 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · AbstractControlsScreen::get_folder_view возвращает PluginFolderView вида PLUGIN_FOLDER_VIEW_CONTROLS с данными PluginControlsFolderView (defs, actions, timer, initial_sel_ndx, params) и multiple_views_supported=false. ↩↩↩
-
doc-sdk-plugins--operations.c031 · doc · any-documented; прошивка — · Класс PluginMovie имеет поля name, name_original, description, poster_url, length_min, year, directors_str, scenarios_str, actors_str, genres_str, rate_imdb, rate_kinopoisk, rate_mpaa, country, budget, details, rate_details ↩↩
-
doc-sdk-plugins.c075 · doc · any-documented; прошивка — · В movie-папке обязательная кнопка PLAY открывает список серий, если серий больше одной, иначе запускает VOD; опциональная вторая кнопка имеет свою подпись и действие ↩
-
doc-sdk-plugins--operations.c024 · doc · any-documented; прошивка — · Класс PluginMovieFolderView имеет поля movie, left_button_caption, left_button_action, has_right_button, right_button_caption, right_button_action, has_multiple_series, series_media_url, poster_valign, params ↩↩
-
doc-sdk-plugins--operations.c026 · doc · any-documented; прошивка — · PluginMovieFolderView::left_button_caption необязателен, по умолчанию подпись левой кнопки — 'Play' ↩
-
doc-sdk-plugins--operations.c027 · doc · any-documented; прошивка — · PluginMovieFolderView::left_button_action необязателен, по умолчанию левой кнопке назначено GUI-действие VOD_PLAY ↩
-
doc-sdk-plugins--operations.c029 · doc · any-documented; прошивка — · ENTER на кнопке PLAY movie-папки: при has_multiple_series = FALSE исполняется PLUGIN_VOD_PLAY, при TRUE — PLUGIN_OPEN_FOLDER с media_url из series_media_url (сценарий сериала) ↩
-
doc-sdk-plugins--operations.c028 · doc · any-documented; прошивка — · PluginMovieFolderView::has_right_button указывает, рисовать ли кнопку в правом нижнем углу movie-папки; right_button_caption и right_button_action — её подпись и действие ↩
-
doc-sdk-plugins--operations.c030 · doc · any-documented; прошивка — · PluginMovieFolderView::poster_valign — вертикальное выравнивание постера, когда его пропорции не совпадают с местом под постер; доступно с прошивки 120610 ↩
-
doc-sdk-plugins--operations.c032 · doc · any-documented; прошивка — · PluginMovie::details — дополнительные пары в основной (прокручиваемой) области, PluginMovie::rate_details — дополнительные строки в области рейтингов под постером ↩
-
fw-tv188b-260827-0003-r24--php-framework.c204 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · dune_api.php определяет класс PluginGCompsFolderView с ключами (4): window_def, sel_state, actions, timer ↩↩
-
fw-tv188b-260827-0003-r24--php-framework.c102 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · dune_api.php задаёт перечисление GComponentKind строковыми константами: GCOMPONENT_LABEL='label', GCOMPONENT_TTF_LABEL='ttf_label', GCOMPONENT_RECT='rect', GCOMPONENT_IMAGE='image', GCOMPONENT_CUT_IMAGE='cut_image', GCOMPONENT_SANDWICH='sandwich', GCOMPONENT_BUTTON='button', GCOMPONENT_TEXT_FIELD='text_field', GCOMPONENT_PANEL='panel', GCOMPONENT_SCROLL_PANE='scroll_pane', GCOMPONENT_PREPAINT_PANE='prepaint_pane', GCOMPONENT_SCROLLBAR='scrollbar' ↩↩
-
fw-tv188b-260827-0003-r24--php-framework.c227 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · dune_api.php определяет класс PluginRowsFolderView с ключами (4): pane, sel_state, actions, timer ↩↩↩
-
fw-tv188b-260827-0003-r24--php-framework.c230 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · dune_api.php определяет класс PluginRowsPane с ключами (26): rows, headers, focus, bg, screen_r, screen_y2, min_row_index_for_y2, info_r, vod_r, header_enabled, single_list_navigation, initial_focus_header, initial_focus_header_id, initial_focus_item_id, initial_focus_row_id, horizontal_focus_freedom_factor, horizontal_focus_end_min_offset, vertical_focus_freedom_factor, vertical_focus_gravity, vertical_focus_end_min_offset, header_font_size, header_min_font_size, max_header_width, min_header_width, up_arrow_dy, regular_item_params_templates ↩↩
-
fw-tv188b-260827-0003-r24--php-framework.c112 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · dune_api.php задаёт перечисление PluginRowType строковыми константами: PLUGIN_ROW_TYPE_VGAP='row_vgap', PLUGIN_ROW_TYPE_GCOMPS='row_gcomps', PLUGIN_ROW_TYPE_REGULAR='row_regular', PLUGIN_ROW_TYPE_TITLE='row_title' ↩
-
- fw-tv188b-260827-0003-r24--shell-ext--ui-lib.c187 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · AbstractGCompsScreen::get_folder_view_v2 возвращает PluginFolderView вида PLUGIN_FOLDER_VIEW_GCOMPS с данными PluginGCompsFolderView (window_def, sel_state, actions, timer) и multiple_views_supported=false.
- fw-tv188b-260827-0003-r24--shell-ext--ui-lib.c188 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · AbstractRowsScreen::get_folder_view_v2 возвращает PluginFolderView вида PLUGIN_FOLDER_VIEW_ROWS с данными PluginRowsFolderView (pane, sel_state, actions, timer) и multiple_views_supported=false.
-
plg-dc-globaltv--rows-epf.c002 · code · unknown; прошивка — · AbstractRowsScreen возвращает PluginFolderView с view_kind=PLUGIN_FOLDER_VIEW_ROWS, data=rows-представление, multiple_views_supported=false, archive=null и folder_type из get_folder_type(). ↩↩
-
plg-dc-globaltv--gcomps-controls.c024 · code · unknown; прошивка — · AbstractGCompsScreen::get_folder_view_v2 возвращает PluginFolderView вида PLUGIN_FOLDER_VIEW_GCOMPS с data={window_def,sel_state,actions,timer}, multiple_views_supported=false, archive=null и folder_type из get_folder_type(). ↩↩
-
plg-mydune-home-tv--newui.c036 · code · unknown; прошивка — · AbstractRowsScreen::get_folder_view_v2 Домашнего ТВ сохраняет sel_state и возвращает PluginFolderView с folder_type из get_folder_type() (null), view_kind=PLUGIN_FOLDER_VIEW_ROWS, multiple_views_supported=false, archive=null и data PluginRowsFolderView {pane, sel_state, actions, timer}; get_folder_view передаёт sel_state=null. ↩↩
-
plg-mydune-home-tv--newui.c076 · code · unknown; прошивка — · ProgramScreen Домашнего ТВ (addons/ext_epg/program_screen.php, id epg_event_screen) — GComps-экран (AbstractGCompsScreen), который сам регистрируется через DefaultDunePlugin::create_screen в конструкторе. ↩
-
fw-tv188b-261021-0117-r25.c011 · code · tv188b, android-dune-fw; прошивка 261021_0117_r25 · dune_api.php r25 описывает строки с ленивой подгрузкой: тип строки PLUGIN_ROW_TYPE_DUP='row_dup', опции PLUGIN_ROW_OPT_LOADING=0x4 и PLUGIN_ROW_OPT_OPTIMIZE_INVISIBLE=0x8, поле PluginRowsPane::row_dup_map, PluginFolderView::type_mask и GCOMP_OPT_STUB=0x400000 ↩
-
fw-tv188b-261021-0117-r25.c045 · code · tv188b, android-dune-fw; прошивка 261021_0117_r25 · Ленивая подгрузка строк в shell_ext/lib r25: интерфейс RowsScreen объявляет get_rows(MediaURL $media_url, $row_ids); DefaultDunePlugin::get_folder_rows($media_url_str, $row_ids) находит экран по media_url и вызывает его get_rows; AbstractRowsScreen::get_rows по умолчанию бросает исключение («override it to use lazy rows loading») ↩↩
-
fw-tv188b-261021-0117-r25.c043 · code · tv188b, android-dune-fw; прошивка 261021_0117_r25 · RowsFactory::pane в shell_ext/lib r25 получил второй позиционный параметр: pane($rows, $row_dup_map=null, $focus=null, $bg=null, …) и пишет PluginRowsPane::row_dup_map; добавлены RowsFactory::dup_row($id, $dup_id, $header_id=null) (тип PLUGIN_ROW_TYPE_DUP) и row_set_options ↩
-
fw-tv188b-261021-0117-r25--php-framework.c039 · code · tv188b, android-dune-fw; прошивка 261021_0117_r25 · MovieListScreen::get_rows рассматривает id с префиксом row, вычисляет минимальное начало row_index×ncols и вызывает get_item_range_using_cache один раз от этого начала; затем обходит исходный row_ids в его порядке и передаёт каждый подходящий id в add_row с full_only=1. ↩
-
fw-tv188b-261021-0117-r25--php-framework.c042 · code · tv188b, android-dune-fw; прошивка 261021_0117_r25 · MovieListScreen::add_row для полной строки без кэшированных объектов вне full_only создаёт dup_row(row_id, ld) с options LOADING|OPTIMIZE_INVISIBLE; get_rows_pane при таких строках кладёт общий regular loading-row в row_dup_map[ld]. ↩
-
- fw-tv188b-261021-0117-r25--shell-ext--ui-lib.c025 · code · tv188b, android-dune-fw; прошивка 261021_0117_r25 · В regular-ветке AbstractSmartRegularScreen::get_folder_view_v2 multiple_views_supported равен 1 только при !is_manual_views_handling() и числе folder_views больше одного.
- fw-tv188b-261021-0117-r25.c047 · code · tv188b, android-dune-fw; прошивка 261021_0117_r25 · Новый класс AbstractSmartRegularScreen (shell_ext/lib, r25) наследует AbstractRegularScreen; get_folder_view_v2 отдаёт вид PLUGIN_FOLDER_VIEW_ROWS, если в описании вида есть ключ rows, иначе обычный регулярный вид; состояние выбора берёт из parent_sel_state
-
- doc-sdk-plugins--operations.c004 · doc · any-documented; прошивка — · Класс PluginFolderView в документе имеет 4 поля: view_kind (PluginFolderViewKind), data (union по view_kind), multiple_views_supported (Boolean), archive (PluginArchiveDef)
- fw-tv188b-260827-0003-r24--php-framework.c201 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · dune_api.php определяет класс PluginFolderView с ключами (6): view_kind, data, multiple_views_supported, archive, folder_type, params
- fw-tv188b-261021-0117-r25--php-framework.c016 · code · tv188b, android-dune-fw; прошивка 261021_0117_r25 · Аннотации dune_api.php r25 задают поля PluginFolderView: type_mask — int.
-
- doc-sdk-plugins--operations.c009 · doc · any-documented; прошивка — · Класс PluginRegularFolderView имеет поля view_params, base_view_item_params, not_loaded_view_item_params, actions, timer, async_icon_loading, async_icon_loading_pipelining, async_icon_loading_max_connects, initial_range
- fw-tv188b-260827-0003-r24--php-framework.c219 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · dune_api.php определяет класс PluginRegularFolderView с ключами (11): view_params, base_view_item_params, not_loaded_view_item_params, load_failed_view_item_params, actions, timer, async_icon_loading, async_icon_loading_pipelining, async_icon_loading_max_connects, async_icon_loading_interrupt_enabled, initial_range
-
- doc-sdk-plugins--operations.c021 · doc · any-documented; прошивка — · Класс PluginFolderViewParams (параметры control- и movie-папок) в документе имеет поля paint_path_box, paint_content_box_background (Boolean) и background_url (String)
- fw-tv188b-260827-0003-r24--php-framework.c203 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · dune_api.php определяет класс PluginFolderViewParams с ключами (5): paint_path_box, paint_path_box_background, paint_content_box_background, background_url, popup_dialogs_enabled
-
doc-sdk-plugins--view-params.c007 · doc · any-documented; прошивка — · ViewParams::animation_enabled включает анимацию курсора; boolean, по умолчанию yes. ↩
-
doc-sdk-plugins--view-params.c011 · doc · any-documented; прошивка — · ViewParams::cycle_mode_gap задаёт промежуток между последним и первым элементами (yes|no|auto, default=no, с 131203_b9); auto рисует его при числе элементов больше числа столбцов, только при фактически включённом cycle_mode. ↩
-
doc-sdk-plugins--view-params.c012 · doc · any-documented; прошивка — · ViewParams::cycle_mode_gap_width задаёт ширину промежутка (integer, default=auto=половина ширины элемента); действует только при фактически включённом cycle_mode, с 131203_b9. ↩
-
doc-sdk-plugins--view-params.c013 · doc · any-documented; прошивка — · ViewParams::cycle_mode_gap_icon_path задаёт иконку в середине промежутка (image URL, default=unset); действует только при фактически включённом cycle_mode, с 131203_b9. ↩
-
doc-sdk-plugins--view-params.c018 · doc · any-documented; прошивка — · ViewParams::scroll_path/x/y/height переопределяют полосу прокрутки скина: path — image URL (unset), x/y — целые ≥ 0 (auto), height — положительное целое (auto). ↩
-
doc-sdk-plugins--view-params.c019 · doc · any-documented; прошивка — · ViewParams::mark_path/dx/dy/scale_factor переопределяют значок отметки элемента: path — image URL (unset), dx/dy — integer (0), scale_factor — double (1.0). ↩
-
doc-sdk-plugins--view-params.c020 · doc · any-documented; прошивка — · Смещения ViewParams::mark_dx/dy при заданном mark_path считаются от верхнего левого угла иконки; иначе — от стандартной позиции у её верхнего правого угла. ↩
-
doc-sdk-plugins--view-params.c021 · doc · any-documented; прошивка — · Флаги ViewParams::paint_path_box, paint_content_box_background, paint_scrollbar, paint_icon_selection_box, paint_help_line, paint_details и paint_details_box_background позволяют скрывать соответствующую графику; все boolean, default=true. ↩
-
doc-sdk-plugins--view-params.c022 · doc · any-documented; прошивка — · Флаги ViewParams::paint_path_box_background, paint_widget и paint_widget_background позволяют скрывать соответствующую графику; все boolean, default=true, с 130818. ↩
-
doc-sdk-plugins--view-params.c023 · doc · any-documented; прошивка — · ViewParams::help_line_text_color задаёт индекс цвета текста строки подсказок: integer, сейчас 0–23, default=23. ↩
-
doc-sdk-plugins--view-params.c024 · doc · any-documented; прошивка — · ViewParams::icon_selection_box_dx/dy (integer) и width/height (положительные целые), все default=auto, меняют размер и положение выделения иконки; по умолчанию оно рисуется поверх прямоугольника элемента. ↩↩
-
doc-sdk-plugins--view-params.c027 · doc · any-documented; прошивка — · ViewParams::icon_badge_box_{dx,dy,width,height} и icon_badge_box_sel_{dx,dy,width,height} настраивают прямоугольник badge отдельно без выделения и с выделением; dx/dy — integer, width/height — положительные целые, все default=auto. ↩↩
-
doc-sdk-plugins--view-params.c033 · doc · any-documented; прошивка — · ViewParams::item_detailed_info_rel_y задаёт Y текста относительно верха блока деталей (целое ≥ 0, default=auto); без значения масштаб иконки вычисляется без ограничения по высоте, а текст помещается сразу под ней; при заданном Y масштаб и позиция иконки подстраиваются под него. ↩
-
doc-sdk-plugins--view-params.c035 · doc · any-documented; прошивка — · ViewParams::detailed_icon_valign (top|center|bottom, default=top, с 120606) выравнивает иконку по вертикали, когда item_detailed_info_rel_y задан и больше фактической высоты иконки. ↩
-
doc-sdk-plugins--view-params.c036 · doc · any-documented; прошивка — · ViewParams::item_detailed_info_font_size задаёт normal или small для текста деталей, по умолчанию normal. ↩
-
doc-sdk-plugins--view-params.c037 · doc · any-documented; прошивка — · ViewParams::item_detailed_info_title_color/text_color задают индексы цвета заголовка и текста деталей: integer 0–23, default=8 и 7 соответственно. ↩↩
-
doc-sdk-plugins--view-params.c042 · doc · any-documented; прошивка — · ViewParams::sandwich_width/height и sandwich_sel_width/height задают размеры sandwich без выделения и с выделением; целые ≥ 0, default=0 означает auto. ↩↩
-
doc-sdk-plugins--view-params.c043 · doc · any-documented; прошивка — · ViewParams::sandwich_icon_keep_aspect_ratio сохраняет пропорции иконки при масштабировании; boolean, default=true. ↩
-
doc-sdk-plugins--view-params.c045 · doc · any-documented; прошивка — · ViewParams::sandwich_icon_scale_factor задаёт масштаб иконки относительно границ sandwich: положительный double в (0..1], default=1; может переопределяться ViewItemParams::item_sandwich_icon_scale_factor. ↩
-
doc-sdk-plugins--view-params.c075 · doc · any-documented; прошивка — · Для ViewParams::detailed_icon_valign документ перечисляет PHP-константы VALIGN_TOP, VALIGN_CENTER и VALIGN_BOTTOM. ↩
-
doc-sdk-plugins--view-params.c076 · doc · any-documented; прошивка — · Для ViewParams::item_detailed_info_font_size документ перечисляет PHP-константы FONT_SIZE_NORMAL и FONT_SIZE_SMALL. ↩
-
fw-tv188b-260827-0003-r24--php-framework.c284 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · dune_api.php определяет класс ViewParams с ключами (91): num_cols, num_rows, item_width, item_height, animation_enabled, scroll_animation_enabled, popup_dialogs_enabled, marks_enabled, orientation, cycle_mode_enabled, cycle_mode_gap, cycle_mode_gap_width, cycle_mode_gap_icon_path, background_path, background_x, background_y, background_width, background_height, background_order, scroll_path, scroll_x, scroll_y, scroll_height, mark_path, mark_dx, mark_dy, mark_scale_factor, optimize_full_screen_background, paint_path_box, paint_path_box_background, paint_widget, paint_widget_background, paint_content_box_background, paint_scrollbar, paint_icon_selection_box, paint_help_line, paint_playback_help_line, paint_playback_status, paint_playback_volume_indicators, paint_details, paint_details_box_background, help_line_text_color, icon_selection_box_dx, icon_selection_box_dy, icon_selection_box_width, icon_selection_box_height, paint_icon_badge_box, hidden_badge_box, icon_badge_box_dx, icon_badge_box_dy, icon_badge_box_width, icon_badge_box_height, icon_badge_box_sel_dx, icon_badge_box_sel_dy, icon_badge_box_sel_width, icon_badge_box_sel_height, content_box_x, content_box_y, content_box_width, content_box_height, content_box_padding_left, content_box_padding_top, content_box_padding_right, content_box_padding_bottom, extra_content_objects, details_box_width, paint_item_info_in_details, zoom_detailed_icon, detailed_icon_scale_factor, detailed_icon_valign, item_small_icon_name, folder_small_icon_name, item_detailed_info_font_size, item_detailed_info_rel_y, item_detailed_info_title_color, item_detailed_info_text_color, item_detailed_info_auto_line_break, item_detailed_info_use_main_icon, paint_sandwich, sandwich_base, sandwich_mask, sandwich_cover, sandwich_width, sandwich_height, sandwich_sel_width, sandwich_sel_height, sandwich_icon_scale_factor, sandwich_icon_keep_aspect_ratio, sandwich_icon_upscale_enabled, max_icon_width, max_icon_height ↩
-
- fw-tv188b-260827-0003-r24--php-framework--dune-api.c183 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · В комментариях dune_api.php r24 поля ViewParams::{num_cols, num_rows, item_width, item_height, cycle_mode_gap_width, background_width, background_height, scroll_height, content_box_width, content_box_height, details_box_width} имеют C-тип PositiveInt.
- fw-tv188b-260827-0003-r24--php-framework--dune-api.c194 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · В комментариях dune_api.php r24 поля ViewParams::{item_detailed_info_font_size} имеют C-тип MY_FontSize.
-
doc-sdk-plugins--view-params.c046 · doc · any-documented; прошивка — · ViewItemParams::item_paint_icon управляет отрисовкой иконки текущего элемента в блоке содержимого; boolean, default=true. ↩
-
doc-sdk-plugins--view-params.c047 · doc · any-documented; прошивка — · ViewItemParams::item_paint_caption управляет отрисовкой подписи элемента в блоке содержимого; boolean, default=true. ↩
-
doc-sdk-plugins--view-params.c049 · doc · any-documented; прошивка — · ViewItemParams::item_caption_font_size задаёт шрифт подписи normal или small; default=normal. ↩
-
doc-sdk-plugins--view-params.c051 · doc · any-documented; прошивка — · ViewItemParams::item_caption_within_icon_color задаёт цвет подписи внутри иконки строкой white, black или 0…23; default=white. ↩
-
doc-sdk-plugins--view-params.c052 · doc · any-documented; прошивка — · ViewItemParams::item_padding_top/bottom задают вертикальные отступы области иконки и подписи внутри элемента (целые ≥ 0, default=0); обычно подпись рисуется снизу, а иконка выравнивается в оставшемся месте над ней. ↩
-
doc-sdk-plugins--view-params.c055 · doc · any-documented; прошивка — · ViewItemParams::icon_keep_aspect_ratio сохраняет пропорции при масштабировании к заданным icon_width/icon_height; boolean, default=yes. ↩
-
doc-sdk-plugins--view-params.c056 · doc · any-documented; прошивка — · ViewItemParams::icon_scale_factor и icon_sel_scale_factor задают масштаб иконки без выделения и с выделением: positive double, default=1.0 и auto соответственно. ↩↩
-
doc-sdk-plugins--view-params.c057 · doc · any-documented; прошивка — · ViewItemParams::icon_margin_{top,bottom,left,right} и icon_sel_margin_{top,bottom,left,right} задают отступы иконки без выделения и с выделением: integer, все default=0. ↩↩
-
doc-sdk-plugins--view-params.c061 · doc · any-documented; прошивка — · ViewItemParams::icon_dx/dy и icon_sel_dx/dy задают дополнительные смещения иконки по горизонтали и вертикали без выделения и с выделением: integer, все default=0. ↩↩
-
doc-sdk-plugins--view-params.c065 · doc · any-documented; прошивка — · ViewItemParams::item_caption_width изменяет ширину текстового блока подписи: целое ≥ 0, default=0 означает auto; по умолчанию текст занимает всю ширину элемента. ↩
-
doc-sdk-plugins--view-params.c066 · doc · any-documented; прошивка — · ViewItemParams::item_caption_dx сдвигает левую границу текстового блока подписи, не меняя правую: integer, default=0. ↩
-
doc-sdk-plugins--view-params.c067 · doc · any-documented; прошивка — · ViewItemParams::item_caption_dy и item_caption_sel_dy дополнительно меняют вертикальное положение подписи отдельно без выделения и с выделением: integer, оба default=0. ↩↩
-
doc-sdk-plugins--view-params.c068 · doc · any-documented; прошивка — · ViewItemParams::item_caption_color задаёт индекс цвета подписи: integer 0–23, default=auto; по умолчанию используется 15 (белый). ↩
-
doc-sdk-plugins--view-params.c077 · doc · any-documented; прошивка — · Для ViewItemParams::item_caption_font_size документ перечисляет PHP-константы FONT_SIZE_NORMAL и FONT_SIZE_SMALL. ↩
-
doc-sdk-plugins--view-params.c078 · doc · any-documented; прошивка — · Для ViewItemParams::item_layout документ перечисляет PHP-константы HALIGN_CENTER и HALIGN_LEFT. ↩
-
doc-sdk-plugins--view-params.c079 · doc · any-documented; прошивка — · Для ViewItemParams::icon_valign документ перечисляет PHP-константы VALIGN_TOP, VALIGN_CENTER и VALIGN_BOTTOM. ↩
-
fw-tv188b-260827-0003-r24--php-framework.c283 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · dune_api.php определяет класс ViewItemParams с ключами (54): predefined, item_paint_icon, item_paint_caption, item_ui_state_paint_caption, item_paint_unselected_caption, item_caption_font_size, item_paint_caption_within_icon, item_caption_within_icon_color, item_padding_top, item_padding_bottom, icon_path, icon_width, icon_height, icon_dx, icon_dy, icon_scale_factor, icon_margin_top, icon_margin_bottom, icon_margin_left, icon_margin_right, icon_sel_path, icon_sel_width, icon_sel_height, icon_sel_dx, icon_sel_dy, icon_sel_scale_factor, icon_sel_margin_top, icon_sel_margin_bottom, icon_sel_margin_left, icon_sel_margin_right, icon_valign, item_layout, icon_keep_aspect_ratio, icon_fit_scale_factor, item_caption_width, item_caption_wrap_enabled, item_caption_scroll_enabled, item_caption_dy, item_caption_sel_dy, item_caption_dx, item_caption_color, item_sticker, item_sticker_collage, item_detailed_info, item_detailed_icon_path, item_detailed_icon_width, item_detailed_icon_height, item_detailed_info_sticker, item_detailed_info_tags, item_detailed_info_extra, item_badge_icon_path, item_override_default_badge, item_sandwich_icon_scale_factor, item_extra_info ↩
-
fw-tv188b-260827-0003-r24--php-framework.c217 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · dune_api.php определяет класс PluginRegularFolderItem с ключами (6): media_url, caption, starred, locked, view_item_params, plugin_ref ↩
-
- doc-sdk-plugins--gui-actions.c034 · doc · any-documented; прошивка — · Если media_url в PluginOpenFolderAction равен null, используется media_url выбранного элемента папки; если элемент не выбран, действие игнорируется
- doc-sdk-plugins--gui-actions.c035 · doc · any-documented; прошивка — · Если caption в PluginOpenFolderAction равен null, элементом пути становится caption выбранного элемента папки
-
fw-tv188b-260827-0003-r24--php-framework--dune-api.c082 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · В комментариях dune_api.php r24 поля PluginRegularFolderItem::{view_item_params} имеют C-тип (ViewItemParams *). ↩
-
fw-tv188b-260827-0003-r24--php-framework--dune-api.c083 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · В комментариях dune_api.php r24 поля PluginRegularFolderItem::{plugin_ref} имеют C-тип (PluginRef *). ↩
-
fw-tv188b-261021-0117-r25--shell-ext--ui-lib--tv-vod.c028 · code · tv188b, android-dune-fw; прошивка 261021_0117_r25 · TvChannelListScreen::get_all_folder_items вызывает folder_entered, ensure_channels_loaded и get_group(group_id); для каждого канала get_regular_folder_item кодирует media_url с channel_id и group_id, caption, icon_path и item_detailed_icon_path, а starred заполняет is_favorite_channel_id. ↩
-
fw-tv188b-260827-0003-r24--php-framework.c210 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · dune_api.php определяет класс PluginMovieFolderView с ключами (10): movie, left_button_caption, left_button_action, has_right_button, right_button_caption, right_button_action, has_multiple_series, series_media_url, poster_valign, params ↩
-
fw-tv188b-260827-0003-r24--php-framework.c209 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · dune_api.php определяет класс PluginMovie с ключами (17): name, name_original, description, poster_url, length_min, year, directors_str, scenarios_str, actors_str, genres_str, rate_imdb, rate_kinopoisk, rate_mpaa, country, budget, details, rate_details ↩
-
doc-sdk-plugins--operations.c025 · doc · any-documented; прошивка — · В объявлении PluginMovieFolderView поле series_media_url имеет тип Boolean, хотя в описании это идентификатор (media_url) открываемой папки ↩↩
-
fw-tv188b-260827-0003-r24--php-framework--dune-api.c074 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · В комментариях dune_api.php r24 поля PluginMovieFolderView::{left_button_caption, right_button_caption, series_media_url} имеют C-тип (char *). ↩↩
-
- doc-sdk-plugins--gui-actions.c068 · doc · any-documented; прошивка — · Данные PluginUpdateFolderAction описаны классом с именем PluginUpdateFolderAction (без суффикса ActionData): range (PluginRegularFolderRange), need_refresh (Boolean), sel_ndx (необязательно, −1 — не менять)
- doc-sdk-plugins--gui-actions.c070 · doc · any-documented; прошивка — · Вне регулярной папки PluginUpdateFolderAction игнорируется
- fw-tv188b-260827-0003-r24--php-framework.c245 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · dune_api.php определяет класс PluginUpdateFolderActionData с ключами (3): range, need_refresh, sel_ndx
-
- doc-sdk-plugins--gui-actions.c071 · doc · any-documented; прошивка — · Данные PluginInvalidateFolders — класс PluginInvalidateFoldersActionData: media_urls (List
) и необязательный post_action - doc-sdk-plugins--gui-actions.c072 · doc · any-documented; прошивка — · PluginInvalidateFolders очищает кэш папок плагина с указанными media_urls, заставляя полностью перезагрузить их; некэшированные media_url игнорируются
- fw-tv188b-260827-0003-r24--php-framework.c207 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · dune_api.php определяет класс PluginInvalidateFoldersActionData с ключами (4): media_urls, all_except, repopulate, post_action
- doc-sdk-plugins--gui-actions.c071 · doc · any-documented; прошивка — · Данные PluginInvalidateFolders — класс PluginInvalidateFoldersActionData: media_urls (List
-
- doc-sdk-plugins--gui-actions.c063 · doc · any-documented; прошивка — · Данные ResetControlsAction — класс ResetControlsActionData: defs (List
), initial_sel_ndx (по умолчанию −1 — выбор не менять), post_action (необязательно) - doc-sdk-plugins--gui-actions.c064 · doc · any-documented; прошивка — · ResetControlsAction заменяет состояние текущего диалога с контролами или папки с контролами; вне их игнорируется
- fw-tv188b-260827-0003-r24--shell-ext--ui-lib.c024 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · ActionFactory::reset_controls строит действие reset_controls; схема заполнения использует ResetControlsActionData::{defs, initial_sel_ndx, post_action}.
- doc-sdk-plugins--gui-actions.c063 · doc · any-documented; прошивка — · Данные ResetControlsAction — класс ResetControlsActionData: defs (List
-
- doc-sdk-plugins--gui-actions.c094 · doc · any-documented; прошивка — · Данные ChangeBehaviour — класс ChangeBehaviourActionData с необязательными полями actions (GuiActionMap), timer (GuiTimerDef), post_action
- doc-sdk-plugins--gui-actions.c095 · doc · any-documented; прошивка — · ChangeBehaviour меняет поведение в текущем GUI-контейнере; поддерживаются регулярная папка, диалог с контролами и VOD-воспроизведение, а папки с контролами/фильмом, TV- и обычное воспроизведение обещаны в будущем
-
- fw-tv188b-260827-0003-r24--php-framework.c129 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · dune_api.php определяет класс ChangeGCompsActionData с ключами (11): change_defs, window_change, interrupt_disabled, num_steps, flip_effect, duration_multiplier, small_state_text, sel_state, ui_state, skip_repaint, post_action
- fw-tv188b-260827-0003-r24--shell-ext--ui-lib.c065 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · ActionFactory::change_gcomps строит действие change_gcomps; схема заполнения использует ChangeGCompsActionData::{change_defs, num_steps, sel_state, window_change, interrupt_disabled, small_state_text, ui_state, skip_repaint, post_action}. sel_state берётся из get_cur_sel_state_str(); num_steps=0; дополнительные поля по истинности, skip_repaint записывается как true.
-
- fw-tv188b-260827-0003-r24--php-framework.c250 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · dune_api.php определяет класс PluginUpdateStickerActionData с ключами (3): sticker, ep_media_url, post_action
- fw-tv188b-260827-0003-r24--shell-ext--ui-lib.c059 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · ActionFactory::update_sticker строит действие plugin_update_sticker; схема заполнения использует PluginUpdateStickerActionData::{ep_media_url, sticker, post_action}.
-
- fw-tv188b-260827-0003-r24--php-framework.c229 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · dune_api.php определяет класс PluginRowsInfo с ключами (8): folder_key, item_id, info_defs, bg_url, nl_bg_url, mask_url, bg_poster_mode, playback_urls
- fw-tv188b-260827-0003-r24--shell-ext--ui-lib.c067 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · ActionFactory::update_rows_info строит действие plugin_update_rows_info; схема заполнения использует PluginRowsInfo::{info_defs, bg_url, nl_bg_url, mask_url, bg_poster_mode, playback_urls}; PluginUpdateRowsInfoActionData::{info, post_action}.
-
fw-tv188b-260827-0003-r24--shell-ext.c086 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · shell_ext несёт собственную UI-библиотеку в lib/: action_factory.php, control_factory.php, gcomps_factory.php, rows_factory.php, абстрактные экраны (regular, rows, gcomps, controls), подкаталоги tv/ и vod/ и async_worker/ ↩
-
plg-dc-globaltv--gcomps-controls.c001 · code · unknown; прошивка — · GCompsFactory::get_label_def возвращает компонент LABEL с id, geom_def, margins_def и specific_def из text/max_num_lines/text_color/font_size; defaults: id=null, max_num_lines=1, color=15, font_size=FONT_SIZE_NORMAL. ↩
-
fw-tv188b-260827-0003-r24--shell-ext--ui-lib.c173 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · Интерфейс Screen объявляет методы get_id, get_category, get_folder_view, invalidate, get_folder_type. ↩
-
fw-tv188b-260827-0003-r24--shell-ext--ui-lib.c174 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · Интерфейс RegularScreen объявляет методы get_action_map, get_folder_range, get_next_folder_view, get_archive. ↩
-
fw-tv188b-260827-0003-r24--shell-ext--ui-lib.c175 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · Интерфейс ControlsScreen объявляет методы get_control_defs. ↩
-
fw-tv188b-260827-0003-r24--shell-ext--ui-lib.c176 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · Интерфейс GCompsScreen объявляет методы get_window_def, get_timer, get_action_map. ↩
-
fw-tv188b-260827-0003-r24--shell-ext--ui-lib.c177 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · Интерфейс RowsScreen объявляет методы get_rows_pane, get_timer, get_action_map. ↩
-
fw-tv188b-260827-0003-r24--shell-ext--ui-lib.c187 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · AbstractGCompsScreen::get_folder_view_v2 возвращает PluginFolderView вида PLUGIN_FOLDER_VIEW_GCOMPS с данными PluginGCompsFolderView (window_def, sel_state, actions, timer) и multiple_views_supported=false. ↩↩
-
fw-tv188b-260827-0003-r24--shell-ext--ui-lib.c188 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · AbstractRowsScreen::get_folder_view_v2 возвращает PluginFolderView вида PLUGIN_FOLDER_VIEW_ROWS с данными PluginRowsFolderView (pane, sel_state, actions, timer) и multiple_views_supported=false. ↩
-
fw-tv188b-260827-0003-r24--shell-ext--ui-lib.c090 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · GCompsFactory::get_label_def строит GUI-элемент типа label; схема заполнения использует GComponentDef::{id, geom_def, margins_def, kind, specific_def}; GCompLabelDef::{text, max_num_lines, text_color, font_size}. max_num_lines=1, color=15, font_size=FONT_SIZE_NORMAL. ↩
-
- fw-tv188b-260827-0003-r24--shell-ext--ui-lib.c091 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · GCompsFactory::label строит GUI-элемент типа ttf_label; схема заполнения использует GCompTtfLabelDef::{text, text_color, font_size, max_num_lines, line_spacing, base_font_size, min_font_size, halign}; GComponentDef::{id, geom_def, kind, specific_def, margins_def}. color=#FFFFFFE0, font_size=36; max_num_lines только если задан и !=1; line_spacing при isset; base_font_size/min_font_size/halign и margins по истинности.
- fw-tv188b-260827-0003-r24--shell-ext--ui-lib.c092 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · GCompsFactory::label_v2 строит GUI-элемент типа ttf_label; схема заполнения использует GCompTtfLabelDef::{text, text_color, font_size, max_num_lines, line_spacing, base_font_size, min_font_size, halign, valign}; GComponentDef::{id, geom_def, options, kind, specific_def, margins_def}. Как label, дополнительно valign и attrs.margins; options=GCOMP_OPT_TTF_LAYOUT_FIX | GCOMP_OPT_TTF_COMPACT_HEIGHT.
-
fw-tv188b-260827-0003-r24--shell-ext--ui-lib.c094 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · GCompsFactory::get_rect_def строит GUI-элемент типа rect; схема заполнения использует GComponentDef::{geom_def, kind, specific_def, margins_def}; GCompRectDef::{color}. ↩
-
fw-tv188b-260827-0003-r24--shell-ext--ui-lib.c096 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · GCompsFactory::get_image_def строит GUI-элемент типа image; схема заполнения использует GComponentDef::{geom_def, margins_def, kind, specific_def}; GCompImageDef::{url, keep_aspect_ratio, upscale_enabled, not_loaded_url, load_failed_url, low_quality_url, alpha, mix_alpha, mix_color}. keep_aspect_ratio=false, upscale_enabled=true; URL-заглушки и alpha/mix по умолчанию null. ↩
-
fw-tv188b-260827-0003-r24--shell-ext--ui-lib.c097 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · GCompsFactory::get_cut_image_def строит GUI-элемент типа cut_image; схема заполнения использует GComponentDef::{id, geom_def, margins_def, kind, specific_def}; GCompImageDef::{url}. ↩
-
fw-tv188b-260827-0003-r24--shell-ext--ui-lib.c098 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · GCompsFactory::get_button_def строит GUI-элемент типа button; схема заполнения использует GComponentDef::{id, geom_def, margins_def, kind, specific_def}; GCompButtonDef::{caption, selected, caption_centered}. selected=false, caption_centered=true. ↩
-
fw-tv188b-260827-0003-r24--shell-ext--ui-lib.c099 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · GCompsFactory::get_scrollbar_def строит GUI-элемент типа scrollbar; схема заполнения использует GComponentDef::{geom_def, margins_def, kind, specific_def}; GCompScrollbarDef::{scroll_pane_id, vertical}. ↩
-
fw-tv188b-260827-0003-r24--shell-ext--ui-lib.c101 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · GCompsFactory::get_panel_def строит GUI-элемент типа panel; схема заполнения использует GComponentDef::{id, geom_def, kind, specific_def, margins_def, options}; GCompPanelDef::{children}. margins и options только при истинности. ↩
-
fw-tv188b-260827-0003-r24--shell-ext--ui-lib.c106 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · GCompsFactory::get_ppane_def строит GUI-элемент типа prepaint_pane; схема заполнения использует GComponentDef::{id, geom_def, kind, specific_def}; GCompPrepaintPaneDef::{panel, native_width, native_height}; GCompPanelDef::{children}. ↩
-
- fw-tv188b-260827-0003-r24--shell-ext--ui-lib.c107 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · GCompsFactory::get_spane_def строит GUI-элемент типа scroll_pane; схема заполнения использует GComponentDef::{id, geom_def, margins_def, kind, specific_def}; GCompScrollPaneDef::{panel, view_width, view_height, view_position}; GCompPanelDef::{children}.
- fw-tv188b-260827-0003-r24--shell-ext--ui-lib.c108 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · GCompsFactory::get_vertical_spane_def строит GUI-элемент типа scroll_pane; схема заполнения использует GComponentDef::{id, geom_def, margins_def, kind, specific_def}; GCompScrollPaneDef::{panel, view_use_base_width, view_position}; GCompPanelDef::{children}. view_use_base_width=true.
- fw-tv188b-260827-0003-r24--shell-ext--ui-lib.c109 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · GCompsFactory::get_horizontal_spane_def строит GUI-элемент типа scroll_pane; схема заполнения использует GComponentDef::{id, geom_def, margins_def, kind, specific_def}; GCompScrollPaneDef::{panel, view_use_base_height, view_position}; GCompPanelDef::{children}. view_use_base_height=true.
-
fw-tv188b-260827-0003-r24--shell-ext--ui-lib.c093 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · GCompsFactory::text_field строит GUI-элемент типа text_field; схема заполнения использует GuiTextFieldDef::{initial_value, numeric, password, has_osk, width, apply_action}; GComponentDef::{id, geom_def, margins_def, kind, specific_def}; GCompTextFieldDef::{def, params}. other_params: numeric/password/has_osk=false, width=null, apply_action=null. ↩
-
fw-tv188b-260827-0003-r24--shell-ext--ui-lib.c110 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · GCompsFactory::get_window_def формирует или дополняет структуру с полями GCompWindowDef::{background_color, background_url, async_loading_background, comp_defs, ui_state, not_loaded_background_url, playback_bg_alpha, background_fit_def, small_state_text, opaque_background}. ↩
-
fw-tv188b-260827-0003-r24--shell-ext--ui-lib.c120 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · GCompsFactory::get_change_def формирует или дополняет структуру с полями ChangeGCompDef::{id, geom_def, props, view_position, selected, children, transition}. transition=GCOMP_TRANSITION_DEFAULT; остальные необязательные параметры null. ↩
-
fw-tv188b-260827-0003-r24--shell-ext--ui-lib.c140 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · GCompGeom::geom задаёт w/h и добавляет role/align_def только при истинных аргументах. ↩
-
fw-tv188b-260827-0003-r24--shell-ext--ui-lib.c141 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · GCompGeom::align добавляет x, y, use_base_width, use_base_height, halign, valign, base_halign, base_valign, base_to_prev и base_id только при истинных значениях. ↩
-
fw-tv188b-260827-0003-r24--shell-ext--ui-lib.c168 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · GCompMargins::all создаёт поля left, top, right, bottom из четырёх аргументов. ↩
-
fw-tv188b-260827-0003-r24--shell-ext--ui-lib.c199 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · GCompList хранит выбор и верх списка в свойствах состояния
.sel и .top; get_sel_state клонирует исходный объект. ↩ -
fw-tv188b-260827-0003-r24--shell-ext--ui-lib.c202 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · GCompList::get_panel_def создаёт не больше preload_size элементов начиная с top, ограничивая их остатком num_items-top. ↩
-
fw-tv188b-260827-0003-r24--shell-ext--ui-lib.c240 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · GCompList::get_image_def при заданном watched_fraction или stickers собирает prepaint_panel, иначе возвращает image. ↩
-
fw-tv188b-260827-0003-r24--shell-ext--ui-lib--gcomp-list.c013 · code · android-dune-fw; прошивка 260827_0003_r24 · При isset(watched_fraction) ширина просмотренной полосы вычисляется как (int)round(w*watched_fraction); белый прямоугольник высотой 8 добавляется снизу слева только при line_w>0. ↩
-
- plg-mydune-home-tv--newui.c076 · code · unknown; прошивка — · ProgramScreen Домашнего ТВ (addons/ext_epg/program_screen.php, id epg_event_screen) — GComps-экран (AbstractGCompsScreen), который сам регистрируется через DefaultDunePlugin::create_screen в конструкторе.
- plg-mydune-home-tv--newui.c078 · code · unknown; прошивка — · Экран открывает HomeTvLauncher по control_id recent: декодирует media_url, ставит screen_id экрана программы, вызывает invalidate(), берёт program_event_data из epg->get_program_event(channel_id, start_tm) (не массив — null) и возвращает get_update_epg_action(…) с open_folder этого адреса.
-
- plg-mydune-ext-epg.c020 · code · unknown; прошивка — · При control_id=open и одновременном выполнении defined('PLUGIN_HANDLE_USER_INPUT_ACTION_ID'), defined('GuiAction::plugin_name') и plugin_name входа равно 'home_tv' мод формирует действие plugin_handle_user_input с params handler_id=plugin_launcher, control_id=recent, media_url (JSON-строка четырёх полей программы) и playback_browser_activated, затем ставит на действие plugin_name=home_tv и возвращает его вместо открытия своего экрана.
- plg-mydune-ext-epg.c019 · code · unknown; прошивка — · В ветке control_id=open ветка возврата в Домашнее ТВ выполняется только при одновременном выполнении трёх условий: defined('PLUGIN_HANDLE_USER_INPUT_ACTION_ID'), defined('GuiAction::plugin_name') и plugin_name входа равно 'home_tv'.
-
plg-mydune-home-tv--newui.c111 · code · unknown; прошивка — · GCompsFactory Домашнего ТВ отличается от shell_ext r24: label/label_v2 пишут base_font_size, min_font_size, halign, valign только при defined('GCompTtfLabelDef::…'); get_image_def не передаёт alpha, mix_alpha, mix_color (строки закомментированы «for r11»), get_window_def — ui_state и background_fit_def («r11»); ppp() и rectangular_frame нет. ↩↩
-
fw-tv188b-260827-0003-r24--php-framework.c226 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · dune_api.php определяет класс PluginRow с ключами (12): type, data, id, ui_level, group_id, header_id, title, focusable, options, height, inactive_height, show_all_action ↩
-
- fw-tv188b-260827-0003-r24--php-framework.c112 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · dune_api.php задаёт перечисление PluginRowType строковыми константами: PLUGIN_ROW_TYPE_VGAP='row_vgap', PLUGIN_ROW_TYPE_GCOMPS='row_gcomps', PLUGIN_ROW_TYPE_REGULAR='row_regular', PLUGIN_ROW_TYPE_TITLE='row_title'
- fw-tv188b-261021-0117-r25.c011 · code · tv188b, android-dune-fw; прошивка 261021_0117_r25 · dune_api.php r25 описывает строки с ленивой подгрузкой: тип строки PLUGIN_ROW_TYPE_DUP='row_dup', опции PLUGIN_ROW_OPT_LOADING=0x4 и PLUGIN_ROW_OPT_OPTIMIZE_INVISIBLE=0x8, поле PluginRowsPane::row_dup_map, PluginFolderView::type_mask и GCOMP_OPT_STUB=0x400000
-
fw-tv188b-260827-0003-r24--php-framework.c223 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · dune_api.php определяет класс PluginRegularRow с ключами (14): hide_captions, hide_icons, left_padding, inactive_left_padding, right_padding, width, fade_enabled, fade_icon_mix_color, fade_icon_mix_alpha, lite_fade_icon_mix_alpha, fade_caption_color, item_params_template_id, item_params, items ↩
-
fw-tv188b-260827-0003-r24--php-framework.c220 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · dune_api.php определяет класс PluginRegularItem с ключами (6): icon_url, sticker_urls, stickers, caption, id, params_template_id ↩
-
fw-tv188b-260827-0003-r24--php-framework.c221 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · dune_api.php определяет класс PluginRegularItemParams с ключами (11): def, sel, inactive, loading_url, load_failed_url, hide_captions, caption_max_num_lines, caption_line_spacing, sticker_text_size, sticker_text_color, sel_margins ↩
-
fw-tv188b-260827-0003-r24--php-framework.c222 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · dune_api.php определяет класс PluginRegularItemVariableParams с ключами (12): width, height, dx, icon_width, icon_height, icon_keep_aspect_ratio, icon_dy, caption_dy, caption_color, caption_font_size, sticker_width, sticker_height ↩
-
fw-tv188b-260827-0003-r24--php-framework.c234 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · dune_api.php определяет класс PluginTitleRow с ключами (10): caption, color, font_size, left, dy, active_dy, width, fade_enabled, fade_color, lite_fade_color ↩
-
fw-tv188b-260827-0003-r24--php-framework.c205 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · dune_api.php определяет класс PluginGCompsRow с ключами (4): defs, width, options, ui_state ↩
-
fw-tv188b-260827-0003-r24--php-framework.c228 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · dune_api.php определяет класс PluginRowsHeader с ключами (3): id, title, first_in_cluster ↩
-
fw-tv188b-260827-0003-r24--php-framework.c224 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · dune_api.php определяет класс PluginRegularSticker с ключами (4): r, icon_url, text, color ↩
-
fw-tv188b-260827-0003-r24--php-framework.c229 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · dune_api.php определяет класс PluginRowsInfo с ключами (8): folder_key, item_id, info_defs, bg_url, nl_bg_url, mask_url, bg_poster_mode, playback_urls ↩
-
fw-tv188b-261021-0117-r25--php-framework.c044 · device · tv188b, android-dune-fw; прошивка 261021_0117_r25 · PLUGIN_ROW_OPT_LOADING помечает строку для последующей подгрузки через get_folder_rows: на tv188b r25 (один прогон) строки с LOADING оболочка сама, без кнопок, дозагрузила через get_folder_rows сразу после открытия рядов. Порядок, повтор при пустом и дозапрос при неполном ответе — NC2.c037–c039. ↩
-
fw-tv188b-260827-0003-r24--shell-ext--ui-lib.c124 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · RowsFactory::pane формирует или дополняет структуру с полями PluginRowsPane::{rows, focus, bg, header_enabled, single_list_navigation, initial_focus_header, initial_focus_item_id, initial_focus_row_id, horizontal_focus_freedom_factor, horizontal_focus_end_min_offset, vertical_focus_freedom_factor, vertical_focus_gravity, vertical_focus_end_min_offset}. При пустом focus вызывает focus(); header_enabled/single_list_navigation=false, initial_focus_header=-1; hfactor/vfactor=1.0, vgravity=0.0, end_min_offset=0. ↩
-
fw-tv188b-260827-0003-r24--shell-ext--ui-lib.c125 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · RowsFactory::pane_set_geometry формирует или дополняет структуру с полями PluginRowsPane::{screen_r, screen_y2, min_row_index_for_y2, info_r, vod_r, up_arrow_dy}. vod_r.x=w-vod_w, vod_r.y=0; up_arrow_dy при isset. ↩
-
fw-tv188b-260827-0003-r24--shell-ext--ui-lib.c127 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · RowsFactory::vgap_row строит GUI-элемент типа row_vgap; схема заполнения использует PluginRow::{type, height, inactive_height, id}. inactive_height пропускается при -1; id только при истинности. ↩
-
fw-tv188b-260827-0003-r24--shell-ext--ui-lib.c129 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · RowsFactory::title_row строит GUI-элемент типа row_title; схема заполнения использует PluginRow::{type, id, group_id, height, inactive_height, data}; PluginTitleRow::{caption, color, font_size, left, dy, active_dy, width, fade_enabled, fade_color, lite_fade_color}. inactive_height=0, fade_enabled=false. ↩
-
fw-tv188b-260827-0003-r24--shell-ext--ui-lib.c131 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · RowsFactory::regular_row строит GUI-элемент типа row_regular; схема заполнения использует PluginRegularRow::{items, item_params_template_id, item_params, width, left_padding, inactive_left_padding, right_padding, hide_captions, hide_icons, fade_enabled, fade_icon_mix_color, fade_icon_mix_alpha, lite_fade_icon_mix_alpha, fade_caption_color}; PluginRow::{type, id, data, header_id, title, group_id, ui_level, height, inactive_height, focusable, show_all_action}. Опциональные поля при isset; ui_level/show_all_action при истинности. inactive_left_padding не имеет default после аргументов с default. ↩
-
fw-tv188b-260827-0003-r24--shell-ext--ui-lib.c128 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · RowsFactory::gcomps_row строит GUI-элемент типа row_gcomps; схема заполнения использует PluginRow::{type, id, title, ui_level, height, inactive_height, focusable, data}; PluginGCompsRow::{defs, ui_state, width}. ui_level=0; width/height/inactive_height=-1; focusable/ui_state=null. ↩
-
fw-tv188b-260827-0003-r24--shell-ext--ui-lib.c132 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · RowsFactory::add_regular_item формирует или дополняет структуру с полями PluginRegularItem::{id, icon_url, caption, stickers, params_template_id}. caption при isset; stickers/params_template_id при истинности. ↩
-
fw-tv188b-260827-0003-r24--shell-ext--ui-lib.c139 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · RowsFactory::item_params формирует или дополняет структуру с полями PluginRegularItemParams::{def, sel, inactive, loading_url, load_failed_url, hide_captions, caption_max_num_lines, caption_line_spacing, sticker_text_size, sticker_text_color, sel_margins}. def всегда; остальные выходные поля при isset, кроме sticker_text_size по истинности; аргумент mix_color не используется. ↩
-
fw-tv188b-260827-0003-r24--shell-ext--ui-lib.c137 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · RowsFactory::variable_params формирует или дополняет структуру с полями PluginRegularItemVariableParams::{width, height, dx, icon_width, icon_height, icon_dy, caption_dy, caption_color, caption_font_size, sticker_width, sticker_height}. width/height всегда; остальные поля при isset. ↩
-
fw-tv188b-260827-0003-r24--shell-ext--ui-lib.c130 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · RowsFactory::set_item_params_template формирует или дополняет структуру с полями PluginRowsPane::{regular_item_params_templates}. ↩
-
fw-tv188b-260827-0003-r24--shell-ext--ui-lib.c241 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · Sticker::sticker возвращает null при пустых items, иначе массив items/above_selection/auto_scale с двумя флагами по умолчанию false. ↩
-
fw-tv188b-260827-0003-r24--shell-ext--ui-lib.c243 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · Sticker::geom создаёт x/y/halign/valign с halign=right и valign=top по умолчанию. ↩
-
fw-tv188b-260827-0003-r24--shell-ext--ui-lib.c244 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · Sticker::icon оборачивает элемент type=icon/url в items, добавляя width/height только при положительных размерах. ↩
-
plg-dc-globaltv--rows-epf.c031 · code · unknown; прошивка — · write_epf сериализует непустой folder_view целиком через json_encode; файл EPF имеет имя
.json в tmp_epfs_path. ↩ -
plg-mydune-home-tv--newui.c058 · code · unknown; прошивка — · TvRowsScreen::get_folder_view_for_epf строит MediaURL rows_epf, загружает каналы через tv->get_tv_info, берёт id и имя группы избранного из EPG и возвращает get_folder_view — то есть EPF собирается тем же кодом, что и открытая папка. ↩
-
plg-mydune-home-tv--newui.c021 · code · unknown; прошивка — · EpfsHandler::init берёт идентификатор EPF из собственного манифеста: get_plugin_info('embeddable_plugin_folders') → ['embeddable_plugin_folders'][0]['mapping']['tv'] (htv), добавляет его в список no_internet_epfs и вызывает initialize() с DuneSystem::$properties['plugin_name']; при пустом tv или epg ничего не делает. ↩
-
plg-mydune-home-tv--newui.c028 · code · unknown; прошивка — · EpfsHandler::update_all_epfs строит folder_view через HomeTvRowsScreen::get_folder_view_for_epf, при исключении печатает «Exception while generating epf» и возвращает null, перезаписывает EPF только если json_encode нового folder_view отличается от текущего файла, а при холодном старте (нет
/epfs_warmed_up) создаёт этот маркер; меток времени и тега языка, как у GlobalTV, не ведёт. ↩ -
plg-mydune-home-tv--newui.c031 · code · unknown; прошивка — · EpfsHandler::invalidate_folders($media_urls, $post_action) всегда добавляет идентификатор EPF (htv) первым элементом списка media_urls действия ActionFactorySafe::invalidate_folders. ↩
-
- doc-sdk-plugins--operations.c007 · doc · any-documented; прошивка — · PluginFolderView::view_kind принимает значения PLUGIN_FOLDER_VIEW_REGULAR, PLUGIN_FOLDER_VIEW_CONTROLS, PLUGIN_FOLDER_VIEW_MOVIE
- fw-tv188b-260827-0003-r24--php-framework.c108 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · dune_api.php задаёт перечисление PluginFolderViewKind строковыми константами: PLUGIN_FOLDER_VIEW_REGULAR='view_regular', PLUGIN_FOLDER_VIEW_CONTROLS='view_controls', PLUGIN_FOLDER_VIEW_MOVIE='view_movie', PLUGIN_FOLDER_VIEW_GCOMPS='view_gcomps', PLUGIN_FOLDER_VIEW_ROWS='view_rows'
- fw-tv188b-261021-0117-r25.c047 · code · tv188b, android-dune-fw; прошивка 261021_0117_r25 · Новый класс AbstractSmartRegularScreen (shell_ext/lib, r25) наследует AbstractRegularScreen; get_folder_view_v2 отдаёт вид PLUGIN_FOLDER_VIEW_ROWS, если в описании вида есть ключ rows, иначе обычный регулярный вид; состояние выбора берёт из parent_sel_state
-
- fw-tv188b-260827-0003-r24--php-framework.c284 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · dune_api.php определяет класс ViewParams с ключами (91): num_cols, num_rows, item_width, item_height, animation_enabled, scroll_animation_enabled, popup_dialogs_enabled, marks_enabled, orientation, cycle_mode_enabled, cycle_mode_gap, cycle_mode_gap_width, cycle_mode_gap_icon_path, background_path, background_x, background_y, background_width, background_height, background_order, scroll_path, scroll_x, scroll_y, scroll_height, mark_path, mark_dx, mark_dy, mark_scale_factor, optimize_full_screen_background, paint_path_box, paint_path_box_background, paint_widget, paint_widget_background, paint_content_box_background, paint_scrollbar, paint_icon_selection_box, paint_help_line, paint_playback_help_line, paint_playback_status, paint_playback_volume_indicators, paint_details, paint_details_box_background, help_line_text_color, icon_selection_box_dx, icon_selection_box_dy, icon_selection_box_width, icon_selection_box_height, paint_icon_badge_box, hidden_badge_box, icon_badge_box_dx, icon_badge_box_dy, icon_badge_box_width, icon_badge_box_height, icon_badge_box_sel_dx, icon_badge_box_sel_dy, icon_badge_box_sel_width, icon_badge_box_sel_height, content_box_x, content_box_y, content_box_width, content_box_height, content_box_padding_left, content_box_padding_top, content_box_padding_right, content_box_padding_bottom, extra_content_objects, details_box_width, paint_item_info_in_details, zoom_detailed_icon, detailed_icon_scale_factor, detailed_icon_valign, item_small_icon_name, folder_small_icon_name, item_detailed_info_font_size, item_detailed_info_rel_y, item_detailed_info_title_color, item_detailed_info_text_color, item_detailed_info_auto_line_break, item_detailed_info_use_main_icon, paint_sandwich, sandwich_base, sandwich_mask, sandwich_cover, sandwich_width, sandwich_height, sandwich_sel_width, sandwich_sel_height, sandwich_icon_scale_factor, sandwich_icon_keep_aspect_ratio, sandwich_icon_upscale_enabled, max_icon_width, max_icon_height
- fw-tv188b-260827-0003-r24--php-framework.c283 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · dune_api.php определяет класс ViewItemParams с ключами (54): predefined, item_paint_icon, item_paint_caption, item_ui_state_paint_caption, item_paint_unselected_caption, item_caption_font_size, item_paint_caption_within_icon, item_caption_within_icon_color, item_padding_top, item_padding_bottom, icon_path, icon_width, icon_height, icon_dx, icon_dy, icon_scale_factor, icon_margin_top, icon_margin_bottom, icon_margin_left, icon_margin_right, icon_sel_path, icon_sel_width, icon_sel_height, icon_sel_dx, icon_sel_dy, icon_sel_scale_factor, icon_sel_margin_top, icon_sel_margin_bottom, icon_sel_margin_left, icon_sel_margin_right, icon_valign, item_layout, icon_keep_aspect_ratio, icon_fit_scale_factor, item_caption_width, item_caption_wrap_enabled, item_caption_scroll_enabled, item_caption_dy, item_caption_sel_dy, item_caption_dx, item_caption_color, item_sticker, item_sticker_collage, item_detailed_info, item_detailed_icon_path, item_detailed_icon_width, item_detailed_icon_height, item_detailed_info_sticker, item_detailed_info_tags, item_detailed_info_extra, item_badge_icon_path, item_override_default_badge, item_sandwich_icon_scale_factor, item_extra_info
-
- doc-sdk-plugins--gui-actions.c071 · doc · any-documented; прошивка — · Данные PluginInvalidateFolders — класс PluginInvalidateFoldersActionData: media_urls (List
) и необязательный post_action - fw-tv188b-260827-0003-r24--php-framework.c207 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · dune_api.php определяет класс PluginInvalidateFoldersActionData с ключами (4): media_urls, all_except, repopulate, post_action
- doc-sdk-plugins--gui-actions.c071 · doc · any-documented; прошивка — · Данные PluginInvalidateFolders — класс PluginInvalidateFoldersActionData: media_urls (List
-
- doc-sdk-plugins--gui-actions.c068 · doc · any-documented; прошивка — · Данные PluginUpdateFolderAction описаны классом с именем PluginUpdateFolderAction (без суффикса ActionData): range (PluginRegularFolderRange), need_refresh (Boolean), sel_ndx (необязательно, −1 — не менять)
- fw-tv188b-260827-0003-r24--php-framework.c245 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · dune_api.php определяет класс PluginUpdateFolderActionData с ключами (3): range, need_refresh, sel_ndx
-
- doc-sdk-plugins--operations.c025 · doc · any-documented; прошивка — · В объявлении PluginMovieFolderView поле series_media_url имеет тип Boolean, хотя в описании это идентификатор (media_url) открываемой папки
- fw-tv188b-260827-0003-r24--php-framework--dune-api.c074 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · В комментариях dune_api.php r24 поля PluginMovieFolderView::{left_button_caption, right_button_caption, series_media_url} имеют C-тип (char *).
-
- fw-tv188b-261021-0117-r25.c011 · code · tv188b, android-dune-fw; прошивка 261021_0117_r25 · dune_api.php r25 описывает строки с ленивой подгрузкой: тип строки PLUGIN_ROW_TYPE_DUP='row_dup', опции PLUGIN_ROW_OPT_LOADING=0x4 и PLUGIN_ROW_OPT_OPTIMIZE_INVISIBLE=0x8, поле PluginRowsPane::row_dup_map, PluginFolderView::type_mask и GCOMP_OPT_STUB=0x400000
- fw-tv188b-261021-0117-r25.c045 · code · tv188b, android-dune-fw; прошивка 261021_0117_r25 · Ленивая подгрузка строк в shell_ext/lib r25: интерфейс RowsScreen объявляет get_rows(MediaURL $media_url, $row_ids); DefaultDunePlugin::get_folder_rows($media_url_str, $row_ids) находит экран по media_url и вызывает его get_rows; AbstractRowsScreen::get_rows по умолчанию бросает исключение («override it to use lazy rows loading»)
-
- fw-tv188b-260827-0003-r24--shell-ext--ui-lib.c092 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · GCompsFactory::label_v2 строит GUI-элемент типа ttf_label; схема заполнения использует GCompTtfLabelDef::{text, text_color, font_size, max_num_lines, line_spacing, base_font_size, min_font_size, halign, valign}; GComponentDef::{id, geom_def, options, kind, specific_def, margins_def}. Как label, дополнительно valign и attrs.margins; options=GCOMP_OPT_TTF_LAYOUT_FIX | GCOMP_OPT_TTF_COMPACT_HEIGHT.
- fw-tv188b-261021-0117-r25--shell-ext--ui-lib.c004 · code · tv188b, android-dune-fw; прошивка 261021_0117_r25 · GCompsFactory::label_v2 читает attrs[fit] с умолчанием null и добавляет GCompTtfLabelDef::fit только при истинном значении.
-
doc-sdk-plugins.c128 · doc · sigma-smp86xx, sigma-smp87xx; прошивка — · Все возможности фреймворка PHP-плагинов и механизма плагинов (манифест, www/, www/cgi-bin) поддерживаются на SMP87xx так же, как на SMP86xx ↩
-
doc-sdk-plugins.c134 · doc · sigma-smp87xx, android; прошивка — · Все возможности фреймворка PHP-плагинов и механизма плагинов поддерживаются на Android так же, как на Sigma (SMP87xx) ↩
-
plg-dc-widget-ext.c027 · code · unknown; прошивка — · На экране plugins_screen клавиши GUI_EVENT_KEY_D_BLUE и GUI_EVENT_KEY_ENTER привязаны к одному действию ignore_unignore_plugin ↩
-
plg-dc-widget-ext.c028 · code · unknown; прошивка — · После переключения плагин перерисовывает список действием PLUGIN_UPDATE_FOLDER_ACTION_ID с range, need_refresh и sel_ndx ↩
-
plg-dc-widget-ext.c020 · code · unknown; прошивка — · Экран настроек строится как папка вида PLUGIN_FOLDER_VIEW_CONTROLS: PluginControlsFolderView::defs и initial_sel_ndx = -1 ↩
-
plg-dc-widget-ext.c023 · code · unknown; прошивка — · Экран настроек после каждого ввода возвращает ActionFactory::reset_controls(...) — действие RESET_CONTROLS_ACTION_ID с новыми defs ↩
-
plg-dc-screenshoter.c037 · code · unknown; прошивка — · SmartSetupScreen (ID = setup) наследует AbstractControlsScreen ↩
-
plg-dc-screenshoter.c032 · code · unknown; прошивка — · ActionFactory::reset_controls возвращает GuiAction с RESET_CONTROLS_ACTION_ID (defs, initial_sel_ndx, post_action) ↩
-
plg-dc-screenshoter.c038 · code · android; прошивка — · Если HD::get_platform_kind() == 'android', экран setup показывает адрес веб-интерфейса http://
/cgi-bin/plugins/Screenshoter/index и кнопку QR code ↩ -
plg-dc-screenshoter.c039 · code · unknown; прошивка — · На не-Android платформах экран setup вместо веб-интерфейса показывает надпись %tr%t12 «Plugin for Dune Android» (t12 = «Этот плагин для плееров на ARMv7:») ↩
-
plg-gh-vladikshkwok-lampa-dune-plugins.c017 · code · android; прошивка — · Для операции get_folder_view плагин отдаёт plugin_folder_view с view_kind view_movie и movie из LampaDuneBridge::movie(). ↩
-
plg-gh-vladikshkwok-lampa-dune-plugins.c018 · code · android; прошивка — · Movie-папка моста задаёт has_multiple_series=false и has_right_button=false. ↩
-
plg-gh-vladikshkwok-lampa-dune-plugins.c019 · code · android; прошивка — · Левая кнопка movie-папки подписана «Смотреть» и выполняет plugin_vod_play с vod_info из LampaDuneBridge::vod(). ↩
-
- plg-dc-globaltv--rows-epf.c001 · code · unknown; прошивка — · AbstractRowsScreen помещает в PluginRowsFolderView поля pane, sel_state, actions и timer, полученные из методов экрана и текущего состояния выбора.
- plg-dc-globaltv--rows-epf.c002 · code · unknown; прошивка — · AbstractRowsScreen возвращает PluginFolderView с view_kind=PLUGIN_FOLDER_VIEW_ROWS, data=rows-представление, multiple_views_supported=false, archive=null и folder_type из get_folder_type().
-
plg-dc-globaltv--rows-epf.c023 · code · unknown; прошивка — · Для непустой категории TvRowsScreen строит title-строку и regular-строки порциями до семи элементов, с id channels.<индекс>:<категория>, общим group_id channels:<категория> и шаблоном common. ↩
-
- plg-dc-globaltv--rows-epf.c044 · code · unknown; прошивка — · ActionFactory::update_rows_info строит PluginRowsInfo с folder_key, item_id, info_defs, bg_url, nl_bg_url, mask_url и playback_urls.
- plg-dc-globaltv--rows-epf.c045 · code · unknown; прошивка — · В действии update_rows_info объект PluginRowsInfo вложен в PluginUpdateRowsInfoActionData::info, рядом с post_action; фоновые URL, playback_urls и post_action по умолчанию null.
-
- plg-dc-globaltv--gcomps-controls.c001 · code · unknown; прошивка — · GCompsFactory::get_label_def возвращает компонент LABEL с id, geom_def, margins_def и specific_def из text/max_num_lines/text_color/font_size; defaults: id=null, max_num_lines=1, color=15, font_size=FONT_SIZE_NORMAL.
- plg-dc-globaltv--gcomps-controls.c021 · code · unknown; прошивка — · GCompGeom::geom всегда записывает w/h; role и align_def добавляет только при истинном значении аргумента.
- plg-dc-globaltv--gcomps-controls.c023 · code · unknown; прошивка — · GCompMargins::all всегда записывает четыре переданных аргумента в left/top/right/bottom массива GCompMarginsDef.
- plg-dc-globaltv--gcomps-controls.c039 · code · unknown; прошивка — · GCompList хранит выбор и верхний индекс в свойствах состояния "
.sel"/" .top"; get_sel_state клонирует базовый объект и заменяет эти два свойства.
-
plg-dc-globaltv--gcomps-controls.c027 · code · unknown; прошивка — · AbstractControlsScreen::get_folder_view возвращает PluginFolderView вида CONTROLS с data={defs:get_control_defs(...),initial_sel_ndx:-1,params:пустой массив}, multiple_views_supported=false и archive=null. ↩
-
plg-mydune-home-tv--newui.c040 · code · unknown; прошивка — · TvRowsScreen::get_rows_pane возвращает null без групп EPG; для каждой непустой группы добавляет title-ряд (id и group_id = id группы, цвет #FF6C52CE для избранного и #FFFFFFE0 для прочих) и regular-ряды по 7 каналов (PaneParams::max_items_in_row) с id JSON {row_ndx, row_id}, шаблоном common, title = имя группы и show_all_action = ENTER. ↩
-
plg-mydune-home-tv--newui.c059 · code · unknown; прошивка — · Если родительский get_rows_pane вернул null (нет каналов), HomeTvRowsScreen отдаёт pane из одного GCOMPS-ряда single_row 1920×800: иконка плагина, «СПИСОК КАНАЛОВ ПУСТ!», подсказка «Выберите локацию, запустите поиск каналов.» и две фокусируемые кнопки location_select («Выбор локации») и channels_search («Поиск каналов»). ↩
-
plg-mydune-home-tv--newui.c109 · code · unknown; прошивка — · RowsFactory Домашнего ТВ — копия rows_factory.php shell_ext без поздних аргументов: regular_row не принимает header_id и ui_level (после params сразу title, group_id), add_regular_item не принимает params_id, а pane() — headers; single_list_navigation pane пишет всегда. ↩
-
plg-mydune-home-tv--newui.c115 · code · unknown; прошивка — · AbstractGCompsScreen Домашнего ТВ возвращает handler_id
handler (r24 — gcomps ), не вызывает GlobalActionMap::add_actions, не задаёт folder_type и не имеет custom_action, change_action, invalidate и get_category; sel_state кодирует json_encode/json_decode, как r24. ↩ -
plg-mydune-home-tv--newui.c093 · code · unknown; прошивка — · По комментарию автора (Brigadir, 27-03-2017, обновлён 31-01-2021) DunePalettePatcher исправляет палитру скина Silver и производных, где почти все цвета переназначены на серый 0x797979: патч не трогает цвета, которые использует оболочка, и приводит к базовым значениям неиспользуемый ею диапазон DEF_LABEL_TEXT_COLOR_* (а также цвета текста VOD-плагинов). ↩
-
- plg-mydune-home-tv--newui.c095 · code · unknown; прошивка — · color_palette_check читает <путь активного скина>/dune_skin_config.xml (нет файла — палитра считается верной) и сверяет значения элементов <color index= value=> с таблицей; путь скина get_active_skin_path берёт из /tmp/dune_skin_dir.txt.
- plg-mydune-home-tv--newui.c094 · code · unknown; прошивка — · Таблица эталонных цветов DunePalettePatcher — 16 индексов: WHITE ffffe0, BLUE 0000a0, PALEGREEN c0e0c0, LIGHTBLUE a0c0ff, LIMEGREEN c0ff40, GOLD ffe040, VIOLET 4040c0, TURQUOISE 40ffff, ORANGE ff8040, MAGENTA ff40ff, YELLOW ffff00, LIGHTGREEN 50ff50, SKYBLUE 5080ff, CORAL ff5030, DARKGRAY2 404040, GAINSBORO e0e0e0.
-
plg-mydune-home-tv--newui.c096 · code · unknown; прошивка — · color_palette_patch при пути скина с «firmware» (встроенный скин) очищает каталог
/dune_skin, копирует туда скин с исправленным dune_skin_config.xml и готовит change_settings с gui_skin=custom; иначе перезаписывает dune_skin_config.xml на месте; исходный файл сохраняется в /backup/ . ↩ -
plg-mydune-home-tv--newui.c099 · code · unknown; прошивка — · При удалении плагина DunePalettePatcher ищет в
/backup файл с именем md5 текущего /persistfs|/flashdata/dune_skin/dune_skin_config.xml и при находке предлагает «Восстановить таблицу палитры» (rename резервной копии на место конфига) или «Не восстанавливать и продолжить». ↩ -
plg-mydune-home-tv--newui.c098 · code · unknown; прошивка — · get_skin_palette_check_action проверяет палитру один раз за процесс (static $checked) и при расхождении возвращает диалог «ПРЕДУПРЕЖДЕНИЕ!» с кнопками «Пропатчить таблицу палитры», «Пропустить (оставить без изменений)» и «Пропустить и не проверять в будущем»; вызывается при открытии настроек и запуске ТВ, если cookie customs_control.check_skin_palette включена (по умолчанию — включена), а последняя кнопка выключает её (disable_check_palette). ↩
-
plg-mydune-home-tv--newui.c097 · code · unknown; прошивка — · DunePalettePatcher::init (вызывается в начале plugin_entry) задаёт reboot_action = null при branch_num < 11 и ActionFactorySafe::stb_shell_reboot() начиная с 11; по комментарию автора, для применения патча нужен перезапуск оболочки. ↩
-
plg-mydune-home-tv--newui.c120 · forum · unknown; прошивка — · По словам автора, проверка и патч палитры скина появились в v2.8 (10.12.2017), в v3.1.3 (02.01.2022) патч исправлен для прошивок r20+ (NewGUI), а «действие патча глобально, и отражается на работе всех плагинов». ↩
-
plg-mydune-home-tv--newui.c102 · code · unknown; прошивка — · OSDComponentFactory::init (Brigadir, 04-11-2018) берёт нарезку cut_images/osd_glass и cut_images/weather_glass из активного скина, если там есть osd_glass.txt / weather_glass.txt, иначе из /firmware/skin, и читает эти файлы как ini (ext, has_center_icon, center_color, left/right/top/bottom и *_extent). ↩
-
plg-mydune-home-tv--newui.c105 · code · unknown; прошивка — · add_content_box/add_widget_box рисуют рамку «девятью кусками» (углы, стороны, центр) через ActionFactorySafe::add_osd_image, расширяя прямоугольник на *_extent из манифеста нарезки и не давая ему стать меньше left+right/top+bottom. ↩
-
plg-mydune-home-tv--newui.c103 · code · unknown; прошивка — · Без центральной картинки, но с center_color OSDComponentFactory генерирует в
/osd_components/dots/ файл <0xaarrggbb>.aai: pack("V2C4", 1, 1, B, G, R, A) — два 32-битных числа 1, 1 и четыре байта цвета. ↩ -
plg-mydune-home-tv--newui.c107 · code · unknown; прошивка — · get_caching_osd_images_action(post_action, …картинки) кладёт все куски osd_glass/weather_glass и переданные картинки размером 1×1 в (0,0) и возвращает update_osd с post_action — предзагрузка картинок OSD; ядро не вызывает её на платформах 87xx с комментарием «Фикс зависания на скине "Holography" для соло и дуо4к». ↩
-
doc-sdk-plugins--gui-actions.c068 · doc · any-documented; прошивка — · Данные PluginUpdateFolderAction описаны классом с именем PluginUpdateFolderAction (без суффикса ActionData): range (PluginRegularFolderRange), need_refresh (Boolean), sel_ndx (необязательно, −1 — не менять) ↩
-
fw-tv188b-260827-0003-r24--php-framework.c245 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · dune_api.php определяет класс PluginUpdateFolderActionData с ключами (3): range, need_refresh, sel_ndx ↩
-
- plg-dc-globaltv--gcomps-controls.c024 · code · unknown; прошивка — · AbstractGCompsScreen::get_folder_view_v2 возвращает PluginFolderView вида PLUGIN_FOLDER_VIEW_GCOMPS с data={window_def,sel_state,actions,timer}, multiple_views_supported=false, archive=null и folder_type из get_folder_type().
- plg-dc-globaltv--rows-epf.c002 · code · unknown; прошивка — · AbstractRowsScreen возвращает PluginFolderView с view_kind=PLUGIN_FOLDER_VIEW_ROWS, data=rows-представление, multiple_views_supported=false, archive=null и folder_type из get_folder_type().
-
- plg-mydune-home-tv--newui.c076 · code · unknown; прошивка — · ProgramScreen Домашнего ТВ (addons/ext_epg/program_screen.php, id epg_event_screen) — GComps-экран (AbstractGCompsScreen), который сам регистрируется через DefaultDunePlugin::create_screen в конструкторе.
- plg-mydune-home-tv--newui.c036 · code · unknown; прошивка — · AbstractRowsScreen::get_folder_view_v2 Домашнего ТВ сохраняет sel_state и возвращает PluginFolderView с folder_type из get_folder_type() (null), view_kind=PLUGIN_FOLDER_VIEW_ROWS, multiple_views_supported=false, archive=null и data PluginRowsFolderView {pane, sel_state, actions, timer}; get_folder_view передаёт sel_state=null.
-
fw-tv188b-260827-0003-r24--php-framework.c199 · code · tv188b, android-dune-fw; прошивка 260827_0003_r24 · dune_api.php определяет класс PluginControlsFolderView с ключами (5): defs, actions, timer, initial_sel_ndx, params ↩
-
fw-tv188b-261021-0117-r25--php-framework.c043 · inference · tv188b, android-dune-fw; прошивка 261021_0117_r25 · Вероятно, нативная оболочка ищет эффективную строку DUP в row_dup_map по dup_id из data; отсутствие карты, dup_id или эффективной строки диагностируется предупреждениями. ↩
-
fw-tv188b-261021-0117-r25--php-framework.c051 · inference · tv188b, android-dune-fw; прошивка 261021_0117_r25 · Вероятно, PLUGIN_ROW_OPT_OPTIMIZE_INVISIBLE разрешает оптимизацию невидимых строк; какие операции пропускаются и как определяется невидимость, из PHP/strings не установлено. ↩
-
plg-dc-globaltv--rows-epf.c061 · inference · unknown; прошивка — · Без PluginRowsPane::headers сообщение msg_search_empty, вероятно, не появится даже при отсутствии найденных каналов: rows уже содержит начальный VGAP. ↩
-
fw-tv188b-260827-0003-r24--plugin-loader--manifest.c040 · inference · tv188b, android-dune-fw; прошивка 260827_0003_r24 · embeddable_plugin_folders (во внутренних именах — epfs) — вероятно, объявление «встраиваемых папок плагина» (EPF), которые оболочка кэширует и показывает в своём меню (epf_cache.c, каталоги <хранилище>/epfs и plugins_epfs, действие plugin_update_epf_mapping); поля enabled и update_action подтверждаются встроенными манифестами, а принадлежность topmenu_*, mapping, update_on_location_change разделу epfs или корню не установлена; в SDK раздел не описан ↩
-
fw-tv188b-261021-0117-r25--ext-epg--ui-lib.c004 · inference · tv188b, android-dune-fw; прошивка 261021_0117_r25 · ProgramScreen::get_window_def вызывает GCompsFactory::get_window_def($comp_defs, null, 'rgb(0,0,0)'); в ext_epg/lib это задаёт чёрный background_color, а при подмене на shell_ext/lib r25 строка 'rgb(0,0,0)' попала бы в background_url, а background_color остался бы null. ↩
-
plg-mydune-home-tv--newui.c104 · inference · unknown; прошивка — · Вероятно, .aai — формат картинки оболочки «ширина, высота (LE uint32), затем пиксели BGRA»: так плагин делает одноцветную заливку 1×1 без PNG. ↩
-
plg-mydune-home-tv--newui.c110 · inference · unknown; прошивка — · Вызовы regular_row в TvRowsScreen позиционные и рассчитаны на копию без header_id/ui_level: с rows_factory.php из shell_ext r24 те же аргументы сдвинулись бы (title попал бы в header_id). ↩
-
plg-mydune-home-tv--newui.c112 · inference · unknown; прошивка — · Приглушение подсказок «Вперед»/«Назад» на первом и последнем канале (alpha 99) в Домашнем ТВ, вероятно, не действует: get_image_def копии отбрасывает alpha; заметна только смена цвета текста. ↩
-
- doc-sdk-plugins.c035 · doc, disputed · any-documented; прошивка — · Параметры отображения точки входа: icon_url, icon_margins и icon_fit_scale_factor (120606+), badge_icon_url (120901+), override_default_badge (141005_b9+) — аналоги свойств ViewItemParams
- fw-tv188b-261021-0117-r25.c213 · device · tv188b, android-dune-fw; прошивка 261021_0117_r25 · На tv188b r25 точки входа плагина test_plugin5 (root://applications), заданные без icon_url, в разделе «Приложения» не появлялись.