Skip to content

Player: Lampa-style control panel, episode switching - #4

Merged
Langegen merged 1 commit into
mainfrom
feature/lampa-player
Nov 2, 2026
Merged

Langegen merged 1 commit into
mainfrom
feature/lampa-player

Conversation

@Langegen

@Langegen Langegen commented Nov 1, 2026

Copy link
Copy Markdown
Owner

Что сделано

Плеер переделан по образцу Lampa.

Панель управления — сверху: название, серия/файл, часы, «Конец в HH:MM». Снизу: шкала времени (с буфером и подсказкой времени при перемотке) и ряд круглых кнопок: предыдущая серия, назад, пауза, вперёд, следующая серия · серии, аудио, субтитры, настройки, блокировка. Иконки рисуются через nanovg (app/player_widgets.*): Material-глифы для плеера лежат в U+E000–E152, которые перехватывает шрифт Nintendo.

Навигация крестовиной — плеер держит фокус borealis сам и ведёт свой курсор: ←/→ по кнопкам, ↑ на шкалу (там ←/→ перематывают), ↓ обратно. A нажимает кнопку, B скрывает панель, второе B — выход. Без панели ←/→ перематывают по 10 с (при удержании 30/60 с); перемотка выполняется один раз, когда ввод остановился. ZL — список серий.

Серии — многофайловая раздача = плейлист (как в Lampa): пред./след. и список серий переоткрывают тот же торрент на другом файле (движок или TorrServer). Без неё — через каталог или серию Stremio (WatchInfo.prevVideoId). В конце серии — автопереход к следующей. Переход на предыдущую больше не отмечает текущую досмотренной.

Ещё — размер видео (заполнить / растянуть / увеличить), отдельные панели выбора аудио и субтитров, кэш метаданных магнетов (torrent_set_meta_cache, APPDATA_META): повторно открытый магнет не ждёт метаданные от пиров.

Проверка

  • Все изменённые файлы компилируются тулчейном devkitA64 с -Wall без предупреждений (локально, с заглушками заголовков mpv — libmpv для Switch тут нет).
  • Новые тесты: torrent_save + кэш магнетов (test_suite.c), список файлов TorrServer (test_net.cpp). test_net проходит локально; test_suite прогонит CI.
  • На консоли не проверено — нужна проверка .nro из этого PR: вид иконок и отступов, навигация, переключение серий в паке (движок и TorrServer), автопереход в конце серии.

🤖 Generated with Claude Code

The player gets a control panel modelled on Lampa's: a title bar (title,
episode, clock, when it ends) and at the bottom a timeline over a row of
round buttons -- previous / next episode, rewind, play/pause, forward,
episodes, audio, subtitles, settings, lock. The player keeps the borealis
focus and runs its own cursor: D-pad left/right through the buttons, up to
the timeline (where left/right seek) and back down; A runs the button, B
hides the panel, B again leaves. With the panel down, left/right seek in
10 s steps (growing when held); every seek is aimed first and issued once
the input stops. Icons are drawn with nanovg (player_widgets).

Episodes: a torrent with several videos is its own playlist, as in Lampa --
previous/next and the Episodes list (ZL) reopen the same torrent on another
file, through the engine or TorrServer. Without one, previous/next go
through the catalog or the Stremio series (WatchInfo.prevVideoId). An
episode played to its end goes on to the next. Leaving for another episode
no longer records the current one as finished.

Also: video size modes (fill, stretch, zoom) in the settings panel, small
per-button pickers for audio and subtitles, and a magnet metadata cache
(torrent_set_meta_cache): a magnet opened again loads its .torrent from
APPDATA_META instead of asking peers. Tests for the cache, torrent_save
and the TorrServer file list.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Langegen
Langegen merged commit 659a5f9 into main Nov 2, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant