From 099de944a4ef9adf1a0f033fe7a250847f61eeb9 Mon Sep 17 00:00:00 2001 From: 1hitsong <3330318+1hitsong@users.noreply.github.com> Date: Thu, 9 Jun 2022 19:50:05 -0400 Subject: [PATCH 1/8] Rework Artist layout. Use square cover art --- components/ItemGrid/GridItem.brs | 11 ++++++++++ components/ItemGrid/ItemGrid.brs | 2 ++ components/ListPoster.brs | 4 ++++ components/music/MusicArtistAlbumRow.brs | 6 +++--- components/music/MusicArtistDetails.brs | 27 ++++++++++++++++++++++++ components/music/MusicArtistDetails.xml | 9 +++++--- 6 files changed, 53 insertions(+), 6 deletions(-) diff --git a/components/ItemGrid/GridItem.brs b/components/ItemGrid/GridItem.brs index 3ab3b714..0183a1f4 100644 --- a/components/ItemGrid/GridItem.brs +++ b/components/ItemGrid/GridItem.brs @@ -60,6 +60,17 @@ sub itemContentChanged() else if itemData.type = "MusicArtist" m.itemPoster.uri = itemData.PosterUrl m.itemText.text = itemData.Title + + m.itemPoster.height = 300 + m.itemPoster.width = 300 + + m.itemText.translation = [0, m.itemPoster.height + 7] + + m.backdrop.height = 300 + m.backdrop.width = 300 + + m.posterText.height = 200 + m.posterText.width = 290 else print "Unhandled Grid Item Type: " + itemData.type end if diff --git a/components/ItemGrid/ItemGrid.brs b/components/ItemGrid/ItemGrid.brs index a2592154..21dc8014 100644 --- a/components/ItemGrid/ItemGrid.brs +++ b/components/ItemGrid/ItemGrid.brs @@ -104,6 +104,8 @@ sub loadInitialItems() m.loadItemsTask.itemType = "MusicArtist,MusicAlbum" m.loadItemsTask.fallbackType = "MusicAlbum" m.loadItemsTask.recursive = false + m.itemGrid.itemSize = "[300, 300]" + m.itemGrid.itemSpacing = "[ 0, 20 ]" else if m.top.parentItem.collectionType = "livetv" m.loadItemsTask.itemType = "LiveTV" diff --git a/components/ListPoster.brs b/components/ListPoster.brs index 170693c3..dd24713f 100644 --- a/components/ListPoster.brs +++ b/components/ListPoster.brs @@ -51,8 +51,12 @@ sub itemContentChanged() as void m.poster = m.top.findNode("poster") itemData = m.top.itemContent m.title.text = itemData.title + if itemData.json.lookup("Type") = "Episode" and itemData.json.IndexNumber <> invalid m.title.text = StrI(itemData.json.IndexNumber) + ". " + m.title.text + else if itemData.json.lookup("Type") = "MusicAlbum" + m.title.font = "font:SmallestSystemFont" + m.staticTitle.font = "font:SmallestSystemFont" end if m.staticTitle.text = m.title.text diff --git a/components/music/MusicArtistAlbumRow.brs b/components/music/MusicArtistAlbumRow.brs index 7f29d2c6..9da3156d 100644 --- a/components/music/MusicArtistAlbumRow.brs +++ b/components/music/MusicArtistAlbumRow.brs @@ -11,13 +11,13 @@ sub init() end sub sub updateSize() - itemWidth = 200 - itemHeight = 320 ' width * 1.5 + text + itemWidth = 250 + itemHeight = 250 m.top.visible = true ' size of the whole row - m.top.itemSize = [1700, (itemHeight + 40)] + m.top.itemSize = [1650, 290] ' spacing between rows m.top.itemSpacing = [0, 0] diff --git a/components/music/MusicArtistDetails.brs b/components/music/MusicArtistDetails.brs index 82967c43..24faecac 100644 --- a/components/music/MusicArtistDetails.brs +++ b/components/music/MusicArtistDetails.brs @@ -2,6 +2,11 @@ sub init() m.top.optionsAvailable = false setupMainNode() + ' Load background image + m.LoadBackdropImageTask = CreateObject("roSGNode", "LoadItemsTask") + m.LoadBackdropImageTask.itemsToLoad = "backdropImage" + + m.backDrop = m.top.findNode("backdrop") m.artistImage = m.top.findNode("artistImage") m.dscr = m.top.findNode("overview") m.dscr.observeField("isTextEllipsized", "onEllipsisChanged") @@ -17,6 +22,11 @@ end sub sub pageContentChanged() item = m.top.pageContent + ' Use metadata to load backdrop image + m.LoadBackdropImageTask.itemId = item.json.id + m.LoadBackdropImageTask.observeField("content", "onBackdropImageLoaded") + m.LoadBackdropImageTask.control = "RUN" + ' Populate scene data setScreenTitle(item.json) setPosterImage(item.posterURL) @@ -35,6 +45,23 @@ sub setPosterImage(posterURL) end if end sub +sub onBackdropImageLoaded() + data = m.LoadBackdropImageTask.content[0] + m.LoadBackdropImageTask.unobserveField("content") + if isValid(data) and data <> "" + setBackdropImage(data) + end if +end sub + +' Add backdrop image to screen +sub setBackdropImage(data) + if isValid(data) + if m.backDrop.uri <> data + m.backDrop.uri = data + end if + end if +end sub + ' Populate on screen text variables sub setOnScreenTextValues(json) if isValid(json) diff --git a/components/music/MusicArtistDetails.xml b/components/music/MusicArtistDetails.xml index 0b2140f4..94276861 100644 --- a/components/music/MusicArtistDetails.xml +++ b/components/music/MusicArtistDetails.xml @@ -1,12 +1,15 @@ - + + - - + + + From 3c326d02fc385b74dacb3812d4ca25faf7bead0a Mon Sep 17 00:00:00 2001 From: 1hitsong <3330318+1hitsong@users.noreply.github.com> Date: Thu, 9 Jun 2022 19:56:40 -0400 Subject: [PATCH 2/8] Adjust size to safe zone --- components/ItemGrid/GridItem.brs | 10 +++++----- components/ItemGrid/ItemGrid.brs | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/components/ItemGrid/GridItem.brs b/components/ItemGrid/GridItem.brs index 0183a1f4..4c4a6178 100644 --- a/components/ItemGrid/GridItem.brs +++ b/components/ItemGrid/GridItem.brs @@ -61,16 +61,16 @@ sub itemContentChanged() m.itemPoster.uri = itemData.PosterUrl m.itemText.text = itemData.Title - m.itemPoster.height = 300 - m.itemPoster.width = 300 + m.itemPoster.height = 290 + m.itemPoster.width = 290 m.itemText.translation = [0, m.itemPoster.height + 7] - m.backdrop.height = 300 - m.backdrop.width = 300 + m.backdrop.height = 290 + m.backdrop.width = 290 m.posterText.height = 200 - m.posterText.width = 290 + m.posterText.width = 280 else print "Unhandled Grid Item Type: " + itemData.type end if diff --git a/components/ItemGrid/ItemGrid.brs b/components/ItemGrid/ItemGrid.brs index 21dc8014..56a790b4 100644 --- a/components/ItemGrid/ItemGrid.brs +++ b/components/ItemGrid/ItemGrid.brs @@ -104,8 +104,8 @@ sub loadInitialItems() m.loadItemsTask.itemType = "MusicArtist,MusicAlbum" m.loadItemsTask.fallbackType = "MusicAlbum" m.loadItemsTask.recursive = false - m.itemGrid.itemSize = "[300, 300]" - m.itemGrid.itemSpacing = "[ 0, 20 ]" + m.itemGrid.itemSize = "[290, 290]" + m.itemGrid.itemSpacing = "[ 0, 20]" else if m.top.parentItem.collectionType = "livetv" m.loadItemsTask.itemType = "LiveTV" From 52aa47265cac86e2cd88a4b6e732b287bcb397cc Mon Sep 17 00:00:00 2001 From: 1hitsong <3330318+1hitsong@users.noreply.github.com> Date: Sat, 11 Jun 2022 19:32:24 -0400 Subject: [PATCH 3/8] Remove tag param from music images --- components/data/MusicAlbumSongListData.brs | 8 ++++---- components/data/MusicArtistData.brs | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/components/data/MusicAlbumSongListData.brs b/components/data/MusicAlbumSongListData.brs index 1e03bd8f..3c7742e2 100644 --- a/components/data/MusicAlbumSongListData.brs +++ b/components/data/MusicAlbumSongListData.brs @@ -12,19 +12,19 @@ sub setPoster() else if m.top.json.ImageTags.Primary <> invalid - imgParams = { "maxHeight": 440, "maxWidth": 295, "Tag": m.top.json.ImageTags.Primary } + imgParams = { "maxHeight": 440, "maxWidth": 295 } m.top.posterURL = ImageURL(m.top.json.id, "Primary", imgParams) else if m.top.json.BackdropImageTags[0] <> invalid - imgParams = { "maxHeight": 440, "Tag": m.top.json.BackdropImageTags[0] } + imgParams = { "maxHeight": 440 } m.top.posterURL = ImageURL(m.top.json.id, "Backdrop", imgParams) else if m.top.json.ParentThumbImageTag <> invalid and m.top.json.ParentThumbItemId <> invalid - imgParams = { "maxHeight": 440, "maxWidth": 295, "Tag": m.top.json.ParentThumbImageTag } + imgParams = { "maxHeight": 440, "maxWidth": 295 } m.top.posterURL = ImageURL(m.top.json.ParentThumbItemId, "Thumb", imgParams) end if ' Add Backdrop Image if m.top.json.BackdropImageTags[0] <> invalid - imgParams = { "maxHeight": 720, "maxWidth": 1280, "Tag": m.top.json.BackdropImageTags[0] } + imgParams = { "maxHeight": 720, "maxWidth": 1280 } m.top.backdropURL = ImageURL(m.top.json.id, "Backdrop", imgParams) end if diff --git a/components/data/MusicArtistData.brs b/components/data/MusicArtistData.brs index 893bf7dc..505a1ac2 100644 --- a/components/data/MusicArtistData.brs +++ b/components/data/MusicArtistData.brs @@ -15,19 +15,19 @@ sub setPoster() ' Add Artist Image if m.top.json.ImageTags.Primary <> invalid - imgParams = { "maxHeight": 440, "maxWidth": 440, "Tag": m.top.json.ImageTags.Primary } + imgParams = { "maxHeight": 440, "maxWidth": 440 } m.top.posterURL = ImageURL(m.top.json.id, "Primary", imgParams) else if m.top.json.BackdropImageTags[0] <> invalid - imgParams = { "maxHeight": 440, "Tag": m.top.json.BackdropImageTags[0] } + imgParams = { "maxHeight": 440 } m.top.posterURL = ImageURL(m.top.json.id, "Backdrop", imgParams) else if m.top.json.ParentThumbImageTag <> invalid and m.top.json.ParentThumbItemId <> invalid - imgParams = { "maxHeight": 440, "maxWidth": 440, "Tag": m.top.json.ParentThumbImageTag } + imgParams = { "maxHeight": 440, "maxWidth": 440 } m.top.posterURL = ImageURL(m.top.json.ParentThumbItemId, "Thumb", imgParams) end if ' Add Backdrop Image if m.top.json.BackdropImageTags[0] <> invalid - imgParams = { "maxHeight": 720, "maxWidth": 1280, "Tag": m.top.json.BackdropImageTags[0] } + imgParams = { "maxHeight": 720, "maxWidth": 1280 } m.top.backdropURL = ImageURL(m.top.json.id, "Backdrop", imgParams) end if From 58eb9f2f1a525ca436b097bee8d74807dc30830b Mon Sep 17 00:00:00 2001 From: Jimi Date: Sat, 25 Jun 2022 15:29:24 -0600 Subject: [PATCH 4/8] Jump to start of row when user hits replay. --- components/home/HomeRows.brs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/components/home/HomeRows.brs b/components/home/HomeRows.brs index 30b8a355..d3e10e6e 100644 --- a/components/home/HomeRows.brs +++ b/components/home/HomeRows.brs @@ -892,6 +892,10 @@ function onKeyEvent(key as string, press as boolean) as boolean end if handled = true end if + + if key = "replay" + m.top.jumpToRowItem = [m.top.rowItemFocused[0], 0] + end if end if return handled end function From b736401f69a88f7f48020e57fbec4c3031dba562 Mon Sep 17 00:00:00 2001 From: DJSweder Date: Mon, 27 Jun 2022 08:00:13 +0000 Subject: [PATCH 5/8] Translated using Weblate (Czech) Currently translated at 100.0% (131 of 131 strings) Translation: Jellyfin/Jellyfin Roku Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-roku/cs/ --- locale/cs/translations.ts | 391 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 391 insertions(+) diff --git a/locale/cs/translations.ts b/locale/cs/translations.ts index 75e2edb3..bd6eae98 100644 --- a/locale/cs/translations.ts +++ b/locale/cs/translations.ts @@ -1932,6 +1932,397 @@ Movies Filmy + + Special Features + Speciální funkce + + Press 'OK' to Close + Pro zavření stiskněte 'OK' + + + + More Like This + Více podobných + + + Cast & Crew + Obsazení & štáb + + + Age + Věk + + + Died + Úmrtí + + + Born + Narozen + + + Title of Tab for options to filter library content + TAB_FILTER + Filtr + + + Title of Tab for options to sort library content + TAB_SORT + Třídit + + + Title of Tab for switching "views" when looking at a library + TAB_VIEW + Pohled + + + RUNTIME + Délka + + + RELEASE_DATE + Datum vydání + + + PLAY_COUNT + Počet přehrání + + + OFFICIAL_RATING + Rodičovské hodnocení + + + DATE_PLAYED + Datum přehrání + + + DATE_ADDED + Datum přidání + + + CRITIC_RATING + Honocení kritiků + + + IMDB_RATING + Hodnocení IMDb + + + Name or Title field of media item + TITLE + Název + + + Message displayed in Item Grid when no item to display. %1 is container type (e.g. Boxset, Collection, Folder, etc) + NO_ITEMS + Tato %1 neobsahuje žádné položky + + + On Now + Nyní + + + Delete Saved + Smazat uložené + + + Save Credentials? + Uložit přihlašovací údaje? + + + Use the replay button to slowly animate to the first item in the folder. (If disabled, The folder will reset to the first item immediately) + Pro pomalý posung na první položku složky použijte tlačítko pro znovupřehrávání. (Pokud není povoleno, složka se nastaví hned na první položku) + Description for option in Setting Screen + + + Return to Top + Návrat nahoru + UI -> Media Grid -> Item Title in user setting screen. + + + There was an error authenticating via Quick Connect. + Při ověřování přes rychlé připojení se vyskytla chyba. + + + (Dialog will close automatically) + (Dialog se automaticky zavře) + + + Here is your Quick Connect code: + Zde je Váš kód pro rychlé připojení: + + + Quick Connect + Rychle připojit + + + %1 of %2 + %1 z %2 + Item position and count. %1 = current item. %2 = total number of items + + + Go to episode + Přejít k epizodě + Continue Watching Popup Menu - Navigate to the Episode Detail Page + + + Go to season + Přejít k sérii + Continue Watching Popup Menu - Navigate to the Season Page + + + Go to series + Přejít k seriálům + Continue Watching Popup Menu - Navigate to the Series Detail Page + + + Set Watched + Označit jako shlédnuté + Button Text - When pressed, marks item as Warched + + + Set Favorite + Nastavit jako oblíbené + Button Text - When pressed, sets item as Favorite + + + Show item count in the library, and index of selected item. + Zobrazit počet položek v knihovně a index vybrané položky. + Description for option in Setting Screen + + + Item Count + Počet položek + UI -> Media Grid -> Item Count in user setting screen. + + + Always show the titles below the poster images. (If disabled, title will be shown under hilighted item only) + Vždy zobrazovat názvy pod obrázkem plakátu. (Pokud je vypnuto, název bude zobrazen pouze pod zvýrazněnou položkou) + Description for option in Setting Screen + + + Item Titles + Názvy položek + UI -> Media Grid -> Item Title in user setting screen. + + + Media Grid Options + Možnosti mřížky s médii + + + Media Grid + Mřížka s médii + UI -> Media Grid section in user setting screen. + + + User Interface + Uživatelské prostředí + Title for User Interface section in user setting screen. + + + Disabled + Zakázáno + + + Enabled + Povoleno + + + Support direct play of MPEG 2 content (e.g. Live TV). This will prevent transcoding of MPEG 2 content, but uses significantly more bandwidth + Podpora přímého přehrávání obsahu MPEG 2 (např. živá TV). Tím je sice zabráněno překódování MPEG 2 obsahu, ale je využito větší šířky pásma + Settings Menu - Description for option + + + MPEG 2 Support + MPEG 2 podpora + Settings Menu - Title for option + + + Playback + Přehrávání + Title for Playback section in user setting screen. + + + Version + Verze + + + An error was encountered while playing this item. Server did not provide required transcoding data. + Při přehrávání této položky došlo k chybě. Server neposkytl požadovaná data o překódování. + Content of message box when trying to play an item which requires transcoding, and the server did not provide transcode url + + + Error Getting Playback Information + Nepodařilo se získat informace o přehrávání + Dialog Title: Received error from server when trying to get information about the selected item for playback + + + ...or enter server URL manually: + …nebo zadejte URL serveru ručně: + Instructions on initial app launch when the user is asked to manually enter a server URL + + + Pick a Jellyfin server from the local network + Vyberte server Jellyfin z místní sítě + Instructions on initial app launch when the user is asked to pick a server from a list + + + Enter the server name or ip address + Zadejte název nebo IP adresu serveru + Title of KeyboardDialog when manually entering a server URL + + + The requested content does not exist on the server + Požadovaný obsah na serveru neexistuje + Content of message box when the requested content is not found on the server + + + Unknown + Neznámý + Title for a cast member for which we have no information for + + + Not found + Nenalezeno + Title of message box when the requested content is not found on the server + + + Connecting to Server + Připojování k serveru + Message to display to user while client is attempting to connect to the server + + + Close + Zavřít + + + Cancel Series Recording + Zrušit nahrávání řad + + + Cancel Recording + Zrušit nahrávání + + + Record Series + Nahrávat řady + + + Record + Nahrávat + + + View Channel + Zobrazit kanál + + + TV Guide + Programový průvodce + Menu option for showing Live TV Guide / Schedule + + + Channels + Kanály + Menu option for showing Live TV Channel List + + + Repeat + Opakovat + If TV Shows has previously been broadcasted + + + Live + Živě + If TV Show is being broadcast live (not pre-recorded) + + + Ends at + Skončilo v + (Past Tense) For defining a day and time when a program ended (e.g. Ended Wednesday, 08:00) + + + Ended at + Skončilo v + (Past Tense) For defining time when a program will ended (e.g. Ended at 08:00) + + + Starts + Začíná + (Future Tense) For defining a day and time when a program will start (e.g. Starts Wednesday, 08:00) + + + Starts at + Začíná v + (Future Tense) For defining time when a program will start today (e.g. Starts at 08:00) + + + Started + Začalo + (Past Tense) For defining a day and time when a program started (e.g. Started Wednesday, 08:00) + + + Started at + Začátek v + (Past Tense) For defining time when a program started today (e.g. Started at 08:00) + + + Saturday + Sobota + Day of Week + + + Friday + Pátek + Day of Week + + + Thursday + Čtvrtek + Day of Week + + + Wednesday + Středa + Day of Week + + + Tuesday + Úterý + Day of Week + + + Monday + Pondělí + Day of Week + + + Sunday + Neděle + Day of Week + + + tomorrow + zítra + Next day + + + yesterday + včera + Previous day + + + today + dnes + Current day + + + TV Shows + TV pořady + + + Movies + Filmy + Special Features Speciální funkce From e0206fe2e056265dbd374a1acb7b81e68e2e1720 Mon Sep 17 00:00:00 2001 From: Csaba Date: Thu, 30 Jun 2022 05:28:59 +0000 Subject: [PATCH 6/8] Translated using Weblate (Hungarian) Currently translated at 28.7% (42 of 146 strings) Translation: Jellyfin/Jellyfin Roku Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-roku/hu/ --- locale/hu/translations.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/locale/hu/translations.ts b/locale/hu/translations.ts index a67c7b7d..97fb743c 100644 --- a/locale/hu/translations.ts +++ b/locale/hu/translations.ts @@ -4267,5 +4267,13 @@ elemeket Save Credentials? Hitelesítő adatok mentése? + + Delete Saved + Mentettek Törlése + + + Save Credentials? + Hitelesítő adatok mentése? + From 040d0449c45df35c4287bfcaea517978cb45900c Mon Sep 17 00:00:00 2001 From: Csaba Date: Thu, 30 Jun 2022 11:57:17 +0000 Subject: [PATCH 7/8] Translated using Weblate (Hungarian) Currently translated at 30.1% (44 of 146 strings) Translation: Jellyfin/Jellyfin Roku Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-roku/hu/ --- locale/hu/translations.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/locale/hu/translations.ts b/locale/hu/translations.ts index 97fb743c..2e4b71d8 100644 --- a/locale/hu/translations.ts +++ b/locale/hu/translations.ts @@ -4275,5 +4275,14 @@ elemeket Save Credentials? Hitelesítő adatok mentése? + + Error Retrieving Content + Hiba a tartalom lekérésekor + Dialog title when unable to load Content from Server + + + On Now + Most + From 1dbb15957d6f538e1cc2f721515078f5b5807e05 Mon Sep 17 00:00:00 2001 From: Pedro Date: Thu, 30 Jun 2022 19:05:58 +0000 Subject: [PATCH 8/8] Translated using Weblate (Portuguese (Brazil)) Currently translated at 30.8% (45 of 146 strings) Translation: Jellyfin/Jellyfin Roku Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-roku/pt_BR/ --- locale/pt_BR/translations.ts | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/locale/pt_BR/translations.ts b/locale/pt_BR/translations.ts index ff9919f4..1e1358e4 100644 --- a/locale/pt_BR/translations.ts +++ b/locale/pt_BR/translations.ts @@ -2389,5 +2389,36 @@ não contém itens Change Server Alterar Servidor + + There was an error retrieving the data for this item from the server. + Houve um erro ao coletar dados do servidor para este item + Dialog detail when unable to load Content from Server + + + Error During Playback + Erro na reprodução + Dialog title when error occurs during playback + + + Error Retrieving Content + Erro ao buscar conteúdo + Dialog title when unable to load Content from Server + + + Delete Saved + Deletar Salvo(a) + + + Save Credentials? + Salvar Credenciais? + + + Sign Out + Sair + + + Change Server + Alterar Servidor +