diff --git a/components/ItemGrid/GridItem.brs b/components/ItemGrid/GridItem.brs index 3ab3b714..4c4a6178 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 = 290 + m.itemPoster.width = 290 + + m.itemText.translation = [0, m.itemPoster.height + 7] + + m.backdrop.height = 290 + m.backdrop.width = 290 + + m.posterText.height = 200 + 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 a7a58d8e..7c8bd48e 100644 --- a/components/ItemGrid/ItemGrid.brs +++ b/components/ItemGrid/ItemGrid.brs @@ -111,6 +111,8 @@ sub loadInitialItems() else if m.top.parentItem.collectionType = "music" ' Default Settings m.loadItemsTask.recursive = false + m.itemGrid.itemSize = "[290, 290]" + m.itemGrid.itemSpacing = "[ 0, 20]" m.loadItemsTask.itemType = "MusicArtist,MusicAlbum" m.view = get_user_setting("display.music.view") @@ -122,7 +124,6 @@ sub loadInitialItems() m.loadItemsTask.itemType = "MusicAlbum" m.loadItemsTask.recursive = true end if - else if m.top.parentItem.collectionType = "livetv" m.loadItemsTask.itemType = "LiveTV" diff --git a/components/ListPoster.brs b/components/ListPoster.brs index 53d0c370..e9be86cf 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/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 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 @@ - + + - - + + + 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