From 63124f4f68d6fb28c06c36ee8ee5316ff0e1cda8 Mon Sep 17 00:00:00 2001 From: stormdragon2976 Date: Sun, 4 Jun 2023 19:01:21 -0400 Subject: [PATCH] Now, date changes should only be announced at midnight. --- .../commands/onHeartBeat/76000-time.py | 53 +++++++++++-------- 1 file changed, 32 insertions(+), 21 deletions(-) diff --git a/src/fenrirscreenreader/commands/onHeartBeat/76000-time.py b/src/fenrirscreenreader/commands/onHeartBeat/76000-time.py index e5237241..1d114dfd 100755 --- a/src/fenrirscreenreader/commands/onHeartBeat/76000-time.py +++ b/src/fenrirscreenreader/commands/onHeartBeat/76000-time.py @@ -1,5 +1,4 @@ #!/bin/python -import time # -*- coding: utf-8 -*- # Fenrir TTY screen reader @@ -12,63 +11,75 @@ import datetime class command(): def __init__(self): pass + def initialize(self, environment): self.env = environment self.lastTime = datetime.datetime.now() self.lastDateString = '' - self.lastTimeString = '' + self.lastTimeString = '' + def shutdown(self): pass + def getDescription(self): - return 'No Description found' + return 'No Description found' def run(self): if not self.env['runtime']['settingsManager'].getSettingAsBool('time', 'enabled'): return - onMinutes = self.env['runtime']['settingsManager'].getSetting('time', 'onMinutes') + + onMinutes = self.env['runtime']['settingsManager'].getSetting('time', 'onMinutes') delaySec = self.env['runtime']['settingsManager'].getSettingAsInt('time', 'delaySec') + # no need if onMinutes == '' and delaySec <= 0: return + onMinutes = onMinutes.split(',') now = datetime.datetime.now() + # ignore onMinutes if there is a delaySec if delaySec > 0: - if int((now-self.lastTime).total_seconds()) < delaySec: - return + if int((now - self.lastTime).total_seconds()) < delaySec: + return else: - # shoul announce? + # should announce? if not str(now.minute).zfill(2) in onMinutes: return # already announced? if now.hour == self.lastTime.hour: if now.minute == self.lastTime.minute: return + dateFormat = self.env['runtime']['settingsManager'].getSetting('general', 'dateFormat') dateString = datetime.datetime.strftime(now, dateFormat) - + presentDate = self.env['runtime']['settingsManager'].getSettingAsBool('time', 'presentDate') and \ - self.lastDateString != dateString - presentTime = self.env['runtime']['settingsManager'].getSettingAsBool('time', 'presentTime') + self.lastDateString != dateString + presentTime = self.env['runtime']['settingsManager'].getSettingAsBool('time', 'presentTime') + # no changed value to announce if not (presentDate or presentTime): - return + return + timeFormat = self.env['runtime']['settingsManager'].getSetting('general', 'timeFormat') timeString = datetime.datetime.strftime(now, timeFormat) - - if self.env['runtime']['settingsManager'].getSettingAsBool('time', 'interrupt'): + + if self.env['runtime']['settingsManager'].getSettingAsBool('time', 'interrupt'): self.env['runtime']['outputManager'].interruptOutput() - if self.env['runtime']['settingsManager'].getSettingAsBool('time', 'announce'): - self.env['runtime']['outputManager'].playSoundIcon('announce') - + if self.env['runtime']['settingsManager'].getSettingAsBool('time', 'announce'): + self.env['runtime']['outputManager'].playSoundIcon('announce') + if presentTime: # present the time self.env['runtime']['outputManager'].presentText(_("It's {0}").format(timeString.replace(':00', " O'clock ").lstrip('0')), soundIcon='', interrupt=False) - # and date if changes - if presentDate: - self.env['runtime']['outputManager'].presentText(dateString , soundIcon='', interrupt=False) - self.lastDateString = dateString + # Check if it's 12:00 AM + if now.hour == 0 and now.minute == 0: + # present the date + self.env['runtime']['outputManager'].presentText(dateString, soundIcon='', interrupt=False) + self.lastTime = datetime.datetime.now() - self.lastTimeString = timeString + self.lastTimeString = timeString + def setCallback(self, callback): pass