2626import xbmc
2727from PIL import Image
2828
29+ from resources .lib .gui import GuiHandler
2930from resources .lib .hyperion .hyperion import Hyperion
30- from resources .lib .misc import MessageHandler
31- from resources .lib .settings import Settings
31+ from resources .lib .logger import Logger
32+ from resources .lib .settings import SettingsManager
3233
3334State = Callable [[], "State" ]
3435
@@ -37,11 +38,16 @@ class HyperionMonitor(xbmc.Monitor):
3738 """Class to capture changes in settings and screensaver state."""
3839
3940 def __init__ (
40- self , settings : Settings , player : xbmc .Player , output_handler : MessageHandler
41+ self ,
42+ settings : SettingsManager ,
43+ player : xbmc .Player ,
44+ output_handler : GuiHandler ,
45+ logger : Logger ,
4146 ) -> None :
4247 super ().__init__ ()
4348 self .settings = settings
4449 self .output_handler = output_handler
50+ self ._logger = logger
4551 self ._screensaver = xbmc .getCondVisibility ("System.ScreenSaverActive" )
4652 self ._player = player
4753 self .show_error_message = True
@@ -50,7 +56,7 @@ def __init__(
5056
5157 def onSettingsChanged (self ) -> None :
5258 self .settings .read_settings ()
53- if self .settings . needs_reconnection and self . grabbing :
59+ if self .grabbing :
5460 self .connect ()
5561
5662 def onScreensaverDeactivated (self ) -> None :
@@ -72,7 +78,7 @@ def grabbing(self) -> bool:
7278
7379 def notify_error (self , label_id : int ) -> None :
7480 if self .show_error_message :
75- self .output_handler .notify (label_id )
81+ self .output_handler .notify_label (label_id )
7682 self .show_error_message = False
7783
7884 def main_loop (self ) -> None :
@@ -101,8 +107,10 @@ def error_state(self) -> State:
101107 return self .disconnected_state
102108
103109 def connect (self ) -> None :
104- self .output_handler .log ("Establishing connection to hyperion" )
105110 settings = self .settings
111+ self ._logger .info (
112+ f"Establishing connection to hyperion at { settings .address } :{ settings .port } "
113+ )
106114 self ._hyperion = Hyperion (settings .address , settings .port )
107115 self ._capture = xbmc .RenderCapture ()
108116
@@ -123,7 +131,7 @@ def connected_state(self) -> State:
123131 self ._capture .capture (* capture_size )
124132 cap_image = self ._capture .getImage (self .settings .sleep_time )
125133 if cap_image is None or len (cap_image ) < expected_capture_size :
126- self .output_handler . log (
134+ self ._logger . debug (
127135 f"Captured image is none or < expected. "
128136 f"captured: { len (cap_image ) if cap_image is not None else 'None' } , "
129137 f"expected: { expected_capture_size } "
@@ -145,7 +153,7 @@ def connected_state(self) -> State:
145153 )
146154 except Exception :
147155 # unable to send image. notify and go to the error state
148- self .output_handler .notify (32101 )
156+ self .output_handler .notify_label (32101 )
149157 return self .error_state
150158
151159 return self .connected_state
0 commit comments