def __init__(self, *args): self.scheduleDetails = [] self.idOffset = 0 self.lastScheduleModified = 0 if Settings.getScheduleSetting() == Settings.SCHEDULE_SETTINGS: self._loadFromSettings() elif Settings.getScheduleSetting() == Settings.SCHEDULE_FILE: self._loadFromFile()
def getScheduleEntry(self): # Get the current time that we are checking the schedule for localTime = time.localtime() currentTime = (localTime.tm_hour * 60) + localTime.tm_min # Get the current day of the week # 0 = Monday 6 = Sunday today = localTime.tm_wday # Make sure that the day returned is within our expected list if today not in Settings.DAY_TYPE: log("Schedule: Unknown day today %d, setting to everyday" % today) today = Settings.EVERY_DAY # Check if we need to refresh the schedule details from the file # in case they have changed if Settings.getScheduleSetting() == Settings.SCHEDULE_FILE: # Check if the file has changed scheduleFileName = Settings.getScheduleFile() if scheduleFileName not in [None, ""]: if xbmcvfs.exists(scheduleFileName): statFile = xbmcvfs.Stat(scheduleFileName) modified = statFile.st_mtime() if modified != self.lastScheduleModified: log("Schedule: Schedule file has changed (%s)" % str(modified)) # We use the offset to work out if the data has changed if self.idOffset > 0: self.idOffset = 0 else: self.idOffset = 1000 # Clear the existing schedule items self.scheduleDetails = [] # Load the new schedule items self._loadFromFile() # Check the scheduled items to see if any cover the current time for item in self.scheduleDetails: if (item['start'] <= currentTime) and (item['end'] >= currentTime): # Make sure this is for the current day if (today == Settings.EVERY_DAY) or (item['day'] in [Settings.EVERY_DAY, today]): return item['id'] # Check for the case where the time laps over midnight if item['start'] > item['end']: if (currentTime >= item['start']) or (currentTime <= item['end']): # Check to see if we are restricting to day if (today == Settings.EVERY_DAY) or (item['day'] == Settings.EVERY_DAY): return item['id'] else: if (currentTime >= item['start']) and (item['day'] in [Settings.EVERY_DAY, today]): return item['id'] else: # The day is set for the start of the time interval # so if we go over to the next day we need to update # what the expected day is nextDay = Settings.getNextDay(item['day']) if (currentTime <= item['end']) and (item['day'] in [Settings.EVERY_DAY, nextDay]): return item['id'] return -1
if weatherAddon not in ["", None]: log("Using weather addon %s" % weatherAddon) xbmc.executebuiltin('RunScript(%s,0)' % weatherAddon, False) # Before we start, make sure that the settings have been updated correctly Settings.cleanAddonSettings() screenWindow = ScreensaverWindow.createScreensaverWindow() xbmcgui.Window(10000).setProperty("VideoScreensaverRunning", "true") didScreensaverTimeout = False try: # Now show the window and block until we exit screensaverTimeout = Settings.screensaverTimeout() scheduleSetting = Settings.getScheduleSetting() if (screensaverTimeout < 1) and (scheduleSetting == Settings.SCHEDULE_OFF): log("Starting Screensaver in Modal Mode") screenWindow.doModal() else: log("Starting Screensaver in Show Mode") screenWindow.show() # The timeout is in minutes, and the sleep is in msec, so convert the # countdown into the correct "sleep units" which will be every 0.1 seconds checkInterval = 100 countdown = screensaverTimeout * 60 * (1000 / checkInterval) # Now wait until the screensaver is closed while not screenWindow.isComplete():
def getScheduleEntry(self): # Get the current time that we are checking the schedule for localTime = time.localtime() currentTime = (localTime.tm_hour * 60) + localTime.tm_min # Get the current day of the week # 0 = Monday 6 = Sunday today = localTime.tm_wday # Make sure that the day returned is within our expected list if today not in Settings.DAY_TYPE: log("Schedule: Unknown day today %d, setting to everyday" % today) today = Settings.EVERY_DAY # Check if we need to refresh the schedule details from the file # in case they have changed if Settings.getScheduleSetting() == Settings.SCHEDULE_FILE: # Check if the file has changed scheduleFileName = Settings.getScheduleFile() if scheduleFileName not in [None, ""]: if xbmcvfs.exists(scheduleFileName): statFile = xbmcvfs.Stat(scheduleFileName) modified = statFile.st_mtime() if modified != self.lastScheduleModified: log("Schedule: Schedule file has changed (%s)" % str(modified)) # We use the offset to work out if the data has changed if self.idOffset > 0: self.idOffset = 0 else: self.idOffset = 1000 # Clear the existing schedule items self.scheduleDetails = [] # Load the new schedule items self._loadFromFile() # Check the scheduled items to see if any cover the current time for item in self.scheduleDetails: if (item['start'] <= currentTime) and (item['end'] >= currentTime): # Make sure this is for the current day if (today == Settings.EVERY_DAY) or (item['day'] in [ Settings.EVERY_DAY, today ]): return item['id'] # Check for the case where the time laps over midnight if item['start'] > item['end']: if (currentTime >= item['start']) or (currentTime <= item['end']): # Check to see if we are restricting to day if (today == Settings.EVERY_DAY) or (item['day'] == Settings.EVERY_DAY): return item['id'] else: if (currentTime >= item['start']) and (item['day'] in [ Settings.EVERY_DAY, today ]): return item['id'] else: # The day is set for the start of the time interval # so if we go over to the next day we need to update # what the expected day is nextDay = Settings.getNextDay(item['day']) if (currentTime <= item['end']) and ( item['day'] in [Settings.EVERY_DAY, nextDay]): return item['id'] return -1
if weatherAddon not in ["", None]: log("Using weather addon %s" % weatherAddon) xbmc.executebuiltin('RunScript(%s,0)' % weatherAddon, False) # Before we start, make sure that the settings have been updated correctly Settings.cleanAddonSettings() screenWindow = ScreensaverWindow.createScreensaverWindow() xbmcgui.Window(10000).setProperty("VideoScreensaverRunning", "true") didScreensaverTimeout = False try: # Now show the window and block until we exit screensaverTimeout = Settings.screensaverTimeout() scheduleSetting = Settings.getScheduleSetting() if (screensaverTimeout < 1) and (scheduleSetting == Settings.SCHEDULE_OFF): log("Starting Screensaver in Modal Mode") screenWindow.doModal() else: log("Starting Screensaver in Show Mode") screenWindow.show() # The timeout is in minutes, and the sleep is in msec, so convert the # countdown into the correct "sleep units" which will be every 0.1 seconds checkInterval = 100 countdown = screensaverTimeout * 60 * (1000 / checkInterval) # Now wait until the screensaver is closed