From 055c22d59fe9f450efd9e5299caf8aac9a9bd4d0 Mon Sep 17 00:00:00 2001 From: Alhaziel01 Date: Wed, 30 Sep 2020 11:53:46 +0200 Subject: [PATCH] Fanart in InfoPlus --- platformcode/infoplus.py | 80 +++++++++++------- resources/skins/Default/720p/InfoPlus.xml | 18 +++- .../skins/Default/media/Infoplus/fanart.png | Bin 0 -> 8631 bytes specials/tvmoviedb.py | 8 +- 4 files changed, 69 insertions(+), 37 deletions(-) create mode 100644 resources/skins/Default/media/Infoplus/fanart.png diff --git a/platformcode/infoplus.py b/platformcode/infoplus.py index ee38c076..4d8aaca8 100644 --- a/platformcode/infoplus.py +++ b/platformcode/infoplus.py @@ -32,6 +32,7 @@ NEXT = 30009 PREVIOUS = 30010 LOADING = 30011 COMMANDS = 30012 +IMAGES = 30013 RECOMANDED = TRAILERS = 30500 ACTORS = 30501 CAST = 30502 @@ -67,6 +68,7 @@ class MainWindow(xbmcgui.WindowXMLDialog): self.cast = [] self.actors = [] self.ids = {} + self.tmdb = [] def onInit(self): #### Compatibility with Kodi 18 #### @@ -91,9 +93,9 @@ class MainWindow(xbmcgui.WindowXMLDialog): def onClick(self, control_id): setFocus(self) + title = self.getControl(RECOMANDED).getSelectedItem().getProperty('title') + mode = self.getControl(RECOMANDED).getSelectedItem().getProperty('mediatype') if control_id in [SEARCH]: - title = self.getControl(RECOMANDED).getSelectedItem().getProperty('title') - mode = self.getControl(RECOMANDED).getSelectedItem().getProperty('mediatype') self.close() if self.getControl(RECOMANDED).getSelectedPosition() > 0: Search(ITEM.clone(action='search', search_text=title)) @@ -103,6 +105,12 @@ class MainWindow(xbmcgui.WindowXMLDialog): info = self.getControl(RECOMANDED).getSelectedItem() self.close() Trailer(info) + elif control_id in [IMAGES]: + info = self.getControl(RECOMANDED).getSelectedItem() + images = tmdb.Tmdb(id_Tmdb=info.getProperty('tmdb_id'), tipo='movie' if mode == 'movie' else 'tv').result.get("images", {}) + for key, value in list(images.items()): + if not value: images.pop(key) + ImagesWindow(tmdb = images).doModal() elif control_id in [ACTORS, CAST]: self.close() Main(self.getControl(self.getFocusId()).getSelectedItem()) @@ -346,7 +354,7 @@ class TrailerWindow(xbmcgui.WindowXMLDialog): elif action in [EXIT]: self.close() -class images(xbmcgui.WindowDialog): +class ImagesWindow(xbmcgui.WindowDialog): def __init__(self, *args, **kwargs): self.tmdb = kwargs.get("tmdb", {}) self.imdb = kwargs.get("imdb", {}) @@ -371,47 +379,61 @@ class images(xbmcgui.WindowDialog): self.main_image = xbmcgui.ControlImage(0, 0, 1280, 720, main_image, 2) self.addControl(self.main_image) + if self.image_list: + self.counter = xbmcgui.ControlTextBox(1180, 640, 60, 40, 'font30_title') + self.addControl(self.counter) + self.counter.setText('%s/%s' % (1,len(self.image_list))) + else: + self.text = xbmcgui.ControlLabel(0, 0, 1280, 720, 'NESSUNA IMMAGINE', 'font30_title', alignment=2|4) + self.addControl(self.text) + self.close_btn = xbmcgui.ControlButton(0, 0, 1280, 720, '' ,'', '') self.addControl(self.close_btn) - # BUTTON LEFT - self.btn_left = xbmcgui.ControlButton(0, 330, 60, 60, '', imagepath('previous_focus'), imagepath('previous_nofocus')) - self.addControl(self.btn_left) - self.btn_left.setAnimations([('WindowOpen', 'effect=slide start=-60,0 end=0,0 delay=100 time=200'),('WindowClose', 'effect=slide start=0,0 end=-60,0 delay=100 time=200')]) + if len(self.image_list) > 1: + # BUTTON LEFT + self.btn_left = xbmcgui.ControlButton(0, 330, 60, 60, '', imagepath('previous_focus'), imagepath('previous_nofocus')) + self.addControl(self.btn_left) + self.btn_left.setAnimations([('WindowOpen', 'effect=slide start=-60,0 end=0,0 delay=100 time=200'),('WindowClose', 'effect=slide start=0,0 end=-60,0 delay=100 time=200')]) - # BUTTON RIGHT - self.btn_right = xbmcgui.ControlButton(1220, 330, 60, 60, '', imagepath('next_focus'), imagepath('next_nofocus')) - self.addControl(self.btn_right) - self.btn_right.setAnimations([('WindowOpen', 'effect=slide start=60,0 end=0,0 delay=100 time=200'),('WindowClose', 'effect=slide start=0,0 end=60,0 delay=100 time=200')]) + # BUTTON RIGHT + self.btn_right = xbmcgui.ControlButton(1220, 330, 60, 60, '', imagepath('next_focus'), imagepath('next_nofocus')) + self.addControl(self.btn_right) + self.btn_right.setAnimations([('WindowOpen', 'effect=slide start=60,0 end=0,0 delay=100 time=200'),('WindowClose', 'effect=slide start=0,0 end=60,0 delay=100 time=200')]) - self.count = 0 + self.count = 0 def onAction(self, action): if action in [BACKSPACE, EXIT]: self.close() + if len(self.image_list) > 1: + if action in [RIGHT, DOWN]: + self.count += 1 + if self.count > len(self.image_list) -1: self.count = 0 + self.main_image.setImage(self.image_list[self.count]) + self.counter.setText('%s/%s' % (self.count,len(self.image_list))) - if action in [RIGHT, DOWN]: - self.count += 1 - if self.count > len(self.image_list) -1: self.count = 0 - self.main_image.setImage(self.image_list[self.count]) - - if action in [LEFT, UP]: - self.count -= 1 - if self.count < 0: self.count = len(self.image_list) -1 - self.main_image.setImage(self.image_list[self.count]) + if action in [LEFT, UP]: + self.count -= 1 + if self.count < 0: self.count = len(self.image_list) -1 + self.main_image.setImage(self.image_list[self.count]) + self.counter.setText('%s/%s' % (self.count,len(self.image_list))) def onControl(self, control): - if control.getId() == self.btn_right.getId(): - self.count += 1 - if self.count > len(self.image_list) -1: self.count = 0 - self.main_image.setImage(self.image_list[self.count]) + if len(self.image_list) > 1: + if control.getId() == self.btn_right.getId(): + self.count += 1 + if self.count > len(self.image_list) -1: self.count = 0 + self.main_image.setImage(self.image_list[self.count]) - elif control.getId() == self.btn_left.getId(): - self.count -= 1 - if self.count < 0: self.count = len(self.image_list) -1 - self.main_image.setImage(self.image_list[self.count]) + elif control.getId() == self.btn_left.getId(): + self.count -= 1 + if self.count < 0: self.count = len(self.image_list) -1 + self.main_image.setImage(self.image_list[self.count]) + else: + self.close() else: self.close() diff --git a/resources/skins/Default/720p/InfoPlus.xml b/resources/skins/Default/720p/InfoPlus.xml index 388018fe..89de92d5 100644 --- a/resources/skins/Default/720p/InfoPlus.xml +++ b/resources/skins/Default/720p/InfoPlus.xml @@ -309,8 +309,8 @@ 25 25 50 - 240 - Control.HasFocus(30500) | Control.HasFocus(30006) | Control.HasFocus(30007) | Control.HasFocus(30008) + 300 + Control.HasFocus(30500) | Control.HasFocus(30006) | Control.HasFocus(30007) | Control.HasFocus(30008) | Control.HasFocus(30013) 50 50 @@ -335,16 +335,26 @@ Infoplus/trailer.png 30500 30008 + 30013 + + + 180 + 50 + 50 + Infoplus/fanart.png + Infoplus/fanart.png + 30500 + 30007 30008 - 180 + 240 50 50 Infoplus/search.png Infoplus/search.png 30500 - 30007 + 30013 30007 diff --git a/resources/skins/Default/media/Infoplus/fanart.png b/resources/skins/Default/media/Infoplus/fanart.png new file mode 100644 index 0000000000000000000000000000000000000000..790d1c28cda5d1e492212a881d5f700aeffbc5d9 GIT binary patch literal 8631 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