Display next long break #374

This commit is contained in:
AdamPS 2023-02-02 19:19:41 +00:00
parent 0cce71070b
commit 9d30def057
6 changed files with 41 additions and 6 deletions

View File

@ -77,6 +77,7 @@
"version": "0.0.3",
"settings": {
"show_time_in_tray": false,
"show_long_time_in_tray": false,
"allow_disabling": true,
"disable_options": [{
"time": 30,

View File

@ -131,6 +131,16 @@ class SafeEyesCore:
logging.debug("Postpone the break for %d seconds", self.postpone_duration)
self.context['postponed'] = True
def get_break_time(self, break_type = None):
"""
Returns the next break time
"""
break_obj = self.break_queue.get_break(break_type)
if not break_obj:
return False
time = self.scheduled_next_break_time + datetime.timedelta(minutes=break_obj.time - self.break_queue.get_break().time)
return time
def take_break(self, break_type = None):
"""
Calling this method stops the scheduler and show the next break screen

View File

@ -120,8 +120,12 @@ class BreakQueue:
return self.__current_break
if break_type == BreakType.LONG_BREAK:
if self.__long_queue is None:
return None;
return self.__long_queue[self.__current_long]
if self.__short_queue is None:
return None;
return self.__short_queue[self.__current_short]
def is_long_break(self):

View File

@ -18,6 +18,12 @@
"type": "BOOL",
"default": false
},
{
"id": "show_long_time_in_tray",
"label": "Show only long breaks for tray icon time",
"type": "BOOL",
"default": false
},
{
"id": "allow_disabling",
"label": "Allow disabling Safe Eyes",
@ -48,4 +54,4 @@
]
}
]
}
}

View File

@ -57,6 +57,7 @@ class TrayIcon:
self.on_disable = context['api']['disable_safeeyes']
self.take_break = context['api']['take_break']
self.has_breaks = context['api']['has_breaks']
self.get_break_time = context['api']['get_break_time']
self.plugin_config = plugin_config
self.date_time = None
self.active = True
@ -126,7 +127,7 @@ class TrayIcon:
# Add the sub menu to the enable/disable menu
self.item_disable.set_submenu(self.sub_menu_disable)
# Settings menu item
# Manual break menu item
self.item_manual_break = Gtk.MenuItem()
self.sub_menu_manual_next_break = Gtk.MenuItem()
@ -215,7 +216,7 @@ class TrayIcon:
self.indicator.set_label('', '')
self.indicator.set_icon("io.github.slgobinath.SafeEyes-disabled")
else:
self.item_info.set_label(_('No Breaks Available'))
self.item_info.set_label(_('No breaks available'))
self.indicator.set_label('', '')
self.indicator.set_icon("io.github.slgobinath.SafeEyes-disabled")
self.item_info.set_sensitive(breaks_found and self.active)
@ -282,13 +283,25 @@ class TrayIcon:
"""
A private method to be called within this class to update the next break information using self.dateTime.
"""
formatted_time = utility.format_time(self.date_time)
message = _('Next break at %s') % (formatted_time)
formatted_time = utility.format_time(self.get_break_time())
long_time = self.get_break_time(BreakType.LONG_BREAK)
if long_time:
long_time = utility.format_time(long_time)
if long_time == formatted_time:
message = _('Next long break at %s') % (long_time)
else:
message = _('Next breaks at %s/%s') % (formatted_time, long_time)
else:
message = _('Next break at %s') % (formatted_time)
# Update the menu item label
utility.execute_main_thread(self.item_info.set_label, message)
# Update the tray icon label
if self.plugin_config.get('show_time_in_tray', False):
self.indicator.set_label(formatted_time, '')
show_long = long_time and self.plugin_config.get('show_long_time_in_tray', False)
self.indicator.set_label(long_time if show_long else formatted_time, '')
else:
self.indicator.set_label('', '')

View File

@ -96,6 +96,7 @@ class SafeEyes:
self.context['api']['take_break'] = self.take_break
self.context['api']['has_breaks'] = self.safe_eyes_core.has_breaks
self.context['api']['postpone'] = self.safe_eyes_core.postpone
self.context['api']['get_break_time'] = self.safe_eyes_core.get_break_time
self.plugins_manager.init(self.context, self.config)
atexit.register(self.persist_session)