Skip to content

Commit 4b4178c

Browse files
authored
Merge pull request slgobinath#741 from deltragon/skip-long-break-fix
BreakQueue: skip upcoming long break right away
2 parents a1b375f + f54317d commit 4b4178c

File tree

5 files changed

+595
-30
lines changed

5 files changed

+595
-30
lines changed

safeeyes/core.py

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -95,16 +95,13 @@ def initialize(self, config: Config):
9595

9696
self.postpone_duration = self.default_postpone_duration
9797

98-
def start(self, next_break_time=-1, reset_breaks=False) -> None:
98+
def start(self, next_break_time=-1) -> None:
9999
"""Start Safe Eyes is it is not running already."""
100100
if self._break_queue is None:
101101
logging.info("No breaks defined, not starting the core")
102102
return
103103
if not self.running:
104104
logging.info("Start Safe Eyes core")
105-
if reset_breaks:
106-
logging.info("Reset breaks to start from the beginning")
107-
self._break_queue.reset()
108105

109106
self.running = True
110107
self.scheduled_next_break_timestamp = int(next_break_time)
@@ -204,7 +201,7 @@ def __scheduler_job(self) -> None:
204201
paused_duration,
205202
)
206203
# Skip the next long break
207-
self._break_queue.reset()
204+
self._break_queue.skip_long_break()
208205

209206
if self.context["postponed"]:
210207
# Previous break was postponed

safeeyes/model.py

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -249,14 +249,23 @@ def __set_next_break(self, break_type: typing.Optional[BreakType] = None) -> Non
249249
self.__current_break = break_obj
250250
self.context["session"]["break"] = self.__current_break.name
251251

252-
def reset(self) -> None:
253-
if self.__short_queue:
254-
for break_object in self.__short_queue:
255-
break_object.time = self.__short_break_time
256-
257-
if self.__long_queue:
258-
for break_object in self.__long_queue:
259-
break_object.time = self.__long_break_time
252+
def skip_long_break(self) -> None:
253+
if not (self.__short_queue and self.__long_queue):
254+
return
255+
256+
for break_object in self.__short_queue:
257+
break_object.time = self.__short_break_time
258+
259+
for break_object in self.__long_queue:
260+
break_object.time = self.__long_break_time
261+
262+
if self.__current_break.type == BreakType.LONG_BREAK:
263+
# Note: this skips the long break, meaning the following long break
264+
# won't be the current one, but the next one after
265+
# we could decrement the __current_long counter, but then we'd need to
266+
# handle wraparound and possibly randomizing, which seems complicated
267+
self.__current_break = self.__next_short()
268+
self.context["session"]["break"] = self.__current_break.name
260269

261270
def is_empty(self, break_type: BreakType) -> bool:
262271
"""Check if the given break type is empty or not."""

safeeyes/safeeyes.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -237,8 +237,8 @@ def do_startup(self):
237237
self.show_about
238238
)
239239
self.context["api"]["enable_safeeyes"] = (
240-
lambda next_break_time=-1, reset_breaks=False: utility.execute_main_thread(
241-
self.enable_safeeyes, next_break_time, reset_breaks
240+
lambda next_break_time=-1: utility.execute_main_thread(
241+
self.enable_safeeyes, next_break_time
242242
)
243243
)
244244
self.context["api"]["disable_safeeyes"] = (
@@ -494,15 +494,15 @@ def restart(self, config, set_active=False):
494494
self.safe_eyes_core.start()
495495
self.plugins_manager.start()
496496

497-
def enable_safeeyes(self, scheduled_next_break_time=-1, reset_breaks=False):
497+
def enable_safeeyes(self, scheduled_next_break_time=-1):
498498
"""Listen to tray icon enable action and send the signal to core."""
499499
if (
500500
not self.required_plugin_dialog_active
501501
and not self.active
502502
and self.safe_eyes_core.has_breaks()
503503
):
504504
self.active = True
505-
self.safe_eyes_core.start(scheduled_next_break_time, reset_breaks)
505+
self.safe_eyes_core.start(scheduled_next_break_time)
506506
self.plugins_manager.start()
507507

508508
def disable_safeeyes(self, status=None, is_resting=False):

0 commit comments

Comments
 (0)