Add per-page element customization and panel settings polish

Phase 5 of the player panels redesign:
- Per-page element toggles now rendered and editable for every page:
  comments (author avatars), related (thumbnails), chapters (thumbnails),
  queue (previously played section), tracks (video/audio/subtitles/speed
  sections)
- Page bar labels toggle (icons-only bar shows the selected page's name)
- Layout mode schematic diagram in the details panel settings
- NEW badge machinery for future page types (versionAdded on PanelPageType)
- Typed per-page settings accessors on PanelPageConfiguration and VM update
  helpers for each page kind
- Unit tests for per-page settings round-trip and accessor fallbacks

The standalone quality selector sheet is unaffected: section gating defaults
to everything visible and only the embedded tracks page passes preset
settings through.
This commit is contained in:
Arkadiusz Fal
2026-09-22 09:37:10 +02:00
parent 052cb76702
commit c289e7576e
19 changed files with 618 additions and 68 deletions

View File

@@ -1494,6 +1494,17 @@
}
}
},
"common.badge.new" : {
"comment" : "Badge shown next to recently added items",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "NEW"
}
}
}
},
"common.cancel" : {
"localizations" : {
"en" : {
@@ -7588,6 +7599,17 @@
}
}
},
"panel.settings.comments.showAvatars" : {
"comment" : "Comments page element toggle",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Author Avatars"
}
}
}
},
"panel.settings.elements.header" : {
"comment" : "Details panel page editor section header",
"localizations" : {
@@ -7676,6 +7698,28 @@
}
}
},
"panel.settings.pageBarLabels" : {
"comment" : "Details panel page bar labels toggle",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Page Bar Labels"
}
}
}
},
"panel.settings.pageBarLabels.footer" : {
"comment" : "Details panel page bar labels footer",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Show a name next to each page icon. With labels off, only the selected page shows its name."
}
}
}
},
"panel.settings.page.enabled" : {
"comment" : "Details panel page editor toggle",
"localizations" : {
@@ -7720,6 +7764,39 @@
}
}
},
"panel.settings.queue.showHistory" : {
"comment" : "Queue page element toggle",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Previously Played"
}
}
}
},
"panel.settings.queue.showHistory.footer" : {
"comment" : "Queue page element toggle footer",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Show videos played earlier in this session above the queue."
}
}
}
},
"panel.settings.showThumbnails" : {
"comment" : "Details panel page element toggle",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Thumbnails"
}
}
}
},
"panel.settings.pages.header" : {
"comment" : "Details panel settings section header",
"localizations" : {