示例#1
0
    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)
示例#2
0
    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)
示例#3
0
            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)
示例#4
0
    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)