diff --git a/.gitignore b/.gitignore index 6f2c50c..096cc3e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ *.pyc settings.json -mycroft \ No newline at end of file +mycroft + +# Pycharm project files +.idea/ diff --git a/__init__.py b/__init__.py index fbda1f5..a02bc77 100644 --- a/__init__.py +++ b/__init__.py @@ -161,14 +161,28 @@ def initialize(self): self._schedule() - # Support query for active alarms from other skills + # TODO: remove the "private.mycroftai.has_alarm" event in favor of the + # "skill.alarm.query-active" event. self.add_event("private.mycroftai.has_alarm", self.on_has_alarm) + self.add_event("skill.alarm.query-active", self.handle_active_alarm_query) + # TODO: remove the "private.mycroftai.has_alarm" event in favor of the + # "skill.alarm.query-active" event. def on_has_alarm(self, message): """Reply to requests for alarm on/off status.""" total = len(self.settings["alarm"]) self.bus.emit(message.response(data={"active_alarms": total})) + def handle_active_alarm_query(self, message): + """Emits an event indicating whether or not there are any active alarms. + + In this case, an "active alarm" is defined as any alarms that exist for a time + in the future. + """ + event_data = {"active_alarms": bool(self.settings["alarm"])} + event = message.response(data=event_data) + self.bus.emit(event) + def set_alarm(self, when, name=None, repeat=None): """Set an alarm at the specified datetime.""" requested_time = when.replace(second=0, microsecond=0) @@ -206,6 +220,9 @@ def _schedule(self): self.schedule_event( self._alarm_expired, to_system(alarm_dt), name="NextAlarm" ) + event_data = {"active_alarms": bool(self.settings["alarm"])} + event = Message("skill.alarm.scheduled", data=event_data) + self.bus.emit(event) def _get_recurrence(self, utterance: str): """Get recurrence pattern from user utterance."""