def checkVolumeChange(self): # Check to see if the Sonos Volume Redirect is Enabled if not Settings.redirectVolumeControls(): return self.volumeChangeNotification = self.volumeChangeNotification - 1 redirect = xbmcgui.Window(10000).getProperty("SonosVolumeRedirect") while redirect not in [None, ""]: xbmcgui.Window(10000).clearProperty("SonosVolumeRedirect") volumeChange = 0 isMute = False if redirect.lower() == "up": volumeChange = Settings.getVolumeChangeIncrements() elif redirect.lower() == "down": volumeChange = Settings.getVolumeChangeIncrements() * -1 elif redirect.lower() == "mute": isMute = True log("SonosVolumeRedirect: Changing by %d" % volumeChange) # Check to see if it has changed, and if we need to change the sonos value if isMute: # Check the current muted state if sonosDevice.mute: sonosDevice.fullMute(False) else: sonosDevice.fullMute(True) self.volumeChangeNotification = Settings.getChecksPerSecond( ) * 2 elif volumeChange != 0: sonosDevice.setGroupVolume(sonosDevice.volume + volumeChange, True) self.volumeChangeNotification = Settings.getChecksPerSecond( ) * 2 redirect = xbmcgui.Window(10000).getProperty("SonosVolumeRedirect") # Check if we have started changing the volume and have now stopped # for a little while if self.volumeChangeNotification == 0: self.volumeChangeNotification = -1 if sonosDevice.mute: xbmcgui.Dialog().notification(ADDON.getLocalizedString(32074), ADDON.getLocalizedString(32075), ICON, 2000, False) else: displayMsg = "%d" % sonosDevice.volume xbmcgui.Dialog().notification(ADDON.getLocalizedString(32074), displayMsg, ICON, 2000, False)
def checkVolumeChange(self): # Check to see if the Sonos Volume Redirect is Enabled if not Settings.redirectVolumeControls(): return self.volumeChangeNotification = self.volumeChangeNotification - 1 redirect = xbmcgui.Window(10000).getProperty("SonosVolumeRedirect") while redirect not in [None, ""]: xbmcgui.Window(10000).clearProperty("SonosVolumeRedirect") volumeChange = 0 isMute = False if redirect.lower() == "up": volumeChange = Settings.getVolumeChangeIncrements() elif redirect.lower() == "down": volumeChange = Settings.getVolumeChangeIncrements() * -1 elif redirect.lower() == "mute": isMute = True log("SonosVolumeRedirect: Changing by %d" % volumeChange) # Check to see if it has changed, and if we need to change the sonos value if isMute: # Check the current muted state if sonosDevice.mute: sonosDevice.fullMute(False) else: sonosDevice.fullMute(True) self.volumeChangeNotification = Settings.getChecksPerSecond() * 2 elif volumeChange != 0: sonosDevice.setGroupVolume(sonosDevice.volume + volumeChange, True) self.volumeChangeNotification = Settings.getChecksPerSecond() * 2 redirect = xbmcgui.Window(10000).getProperty("SonosVolumeRedirect") # Check if we have started changing the volume and have now stopped # for a little while if self.volumeChangeNotification == 0: self.volumeChangeNotification = -1 if sonosDevice.mute: xbmcgui.Dialog().notification(ADDON.getLocalizedString(32074), ADDON.getLocalizedString(32075), ICON, 2000, False) else: displayMsg = "%d" % sonosDevice.volume xbmcgui.Dialog().notification(ADDON.getLocalizedString(32074), displayMsg, ICON, 2000, False)
log("SonosService: Launching controller on startup") xbmc.executebuiltin( 'RunScript(%s)' % (os.path.join(CWD, "default.py")), False) if (not Settings.isNotificationEnabled()) and (not audioChanges) and ( not Settings.autoPauseSonos()) and ( not Settings.redirectVolumeControls()): log("SonosService: Notifications, Volume Link and Auto Pause are disabled, exiting service" ) else: sonosDevice = Sonos.createSonosDevice() # Make sure a Sonos speaker was found if sonosDevice is not None: timeUntilNextCheck = Settings.getNotificationCheckFrequency( ) * Settings.getChecksPerSecond() log("SonosService: Notification Check Frequency = %d" % timeUntilNextCheck) lastDisplayedTrack = None # Need to only display the popup when the service starts if there is # currently something playing justStartedService = True # Class to deal with sync of the volume volumeLink = SonosVolumeLink(sonosDevice) # Class to deal with redirecting the volume redirectVolume = SonosVolumeRedirect(sonosDevice)
audioChanges = Settings.linkAudioWithSonos() or Settings.switchSonosToLineIn() or Settings.switchSonosToLineInOnMediaStart() # Check to see if we need to launch the Sonos Controller as soon as Kodi starts if Settings.autoLaunchControllerOnStartup(): # Launch the Sonos controller, but do not block as we have more to do as a service log("SonosService: Launching controller on startup") xbmc.executebuiltin('RunScript(%s)' % (os.path.join(CWD, "default.py")), False) if (not Settings.isNotificationEnabled()) and (not audioChanges) and (not Settings.autoPauseSonos()) and (not Settings.redirectVolumeControls()): log("SonosService: Notifications, Volume Link and Auto Pause are disabled, exiting service") else: sonosDevice = Sonos.createSonosDevice() # Make sure a Sonos speaker was found if sonosDevice is not None: timeUntilNextCheck = Settings.getNotificationCheckFrequency() * Settings.getChecksPerSecond() log("SonosService: Notification Check Frequency = %d" % timeUntilNextCheck) lastDisplayedTrack = None # Need to only display the popup when the service starts if there is # currently something playing justStartedService = True # Class to deal with sync of the volume volumeLink = SonosVolumeLink(sonosDevice) # Class to deal with redirecting the volume redirectVolume = SonosVolumeRedirect(sonosDevice)