From 9a76aa4211a37f73d7cc976925308a3f0770ae1f Mon Sep 17 00:00:00 2001 From: AdamPS <5490095+AdamPS@users.noreply.github.com> Date: Tue, 24 Jan 2023 16:49:30 +0000 Subject: [PATCH] #347 Take short or long breaks from tray Correction: get_break() should not alter the break queue. --- safeeyes/core.py | 13 ++++++++----- safeeyes/model.py | 14 +++++++++----- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/safeeyes/core.py b/safeeyes/core.py index 178bb9f..00a7f98 100644 --- a/safeeyes/core.py +++ b/safeeyes/core.py @@ -167,7 +167,9 @@ class SafeEyesCore: time.sleep(1) # Wait for 1 sec to ensure the sceduler is dead self.running = True - utility.execute_main_thread(self.__fire_start_break, break_type) + if break_type is not None and self.break_queue.get_break().type != break_type: + self.break_queue.next(break_type) + utility.execute_main_thread(self.__fire_start_break) def __scheduler_job(self): """ @@ -243,8 +245,8 @@ class SafeEyesCore: self.__wait_for(self.postpone_duration) utility.execute_main_thread(self.__fire_start_break) - def __fire_start_break(self, break_type = None): - break_obj = self.break_queue.get_break(break_type) + def __fire_start_break(self): + break_obj = self.break_queue.get_break() # Show the break screen if not self.on_start_break.fire(break_obj): # Plugins want to ignore this break @@ -260,13 +262,14 @@ class SafeEyesCore: utility.start_thread(self.__postpone_break) else: self.start_break.fire(break_obj) - utility.start_thread(self.__start_break, break_obj = break_obj) + utility.start_thread(self.__start_break) - def __start_break(self, break_obj): + def __start_break(self): """ Start the break screen. """ self.context['state'] = State.BREAK + break_obj = self.break_queue.get_break() countdown = break_obj.duration total_break_time = countdown diff --git a/safeeyes/model.py b/safeeyes/model.py index 888b3f7..5dd3ee8 100644 --- a/safeeyes/model.py +++ b/safeeyes/model.py @@ -114,11 +114,15 @@ class BreakQueue: def get_break(self, break_type = None): if self.__current_break is None: - self.__current_break = self.next(break_type) - elif break_type is not None and self.__current_break.type != break_type: - self.__current_break = self.next(break_type) + self.__current_break = self.next() - return self.__current_break + if break_type is None or self.__current_break.type == break_type: + return self.__current_break + + if break_type == BreakType.LONG_BREAK: + return self.__long_queue[self.__current_long] + + return self.__short_queue[self.__current_short] def is_long_break(self): return self.__current_break is not None and self.__current_break.type == BreakType.LONG_BREAK @@ -153,7 +157,7 @@ class BreakQueue: def reset(self): for break_object in self.__short_queue: break_object.time = self.__short_break_time - + for break_object in self.__long_queue: break_object.time = self.__long_break_time