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", "version": "0.0.3",
"settings": { "settings": {
"show_time_in_tray": false, "show_time_in_tray": false,
"show_long_time_in_tray": false,
"allow_disabling": true, "allow_disabling": true,
"disable_options": [{ "disable_options": [{
"time": 30, "time": 30,

View File

@ -131,6 +131,16 @@ class SafeEyesCore:
logging.debug("Postpone the break for %d seconds", self.postpone_duration) logging.debug("Postpone the break for %d seconds", self.postpone_duration)
self.context['postponed'] = True 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): def take_break(self, break_type = None):
""" """
Calling this method stops the scheduler and show the next break screen Calling this method stops the scheduler and show the next break screen

View File

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

View File

@ -18,6 +18,12 @@
"type": "BOOL", "type": "BOOL",
"default": false "default": false
}, },
{
"id": "show_long_time_in_tray",
"label": "Show only long breaks for tray icon time",
"type": "BOOL",
"default": false
},
{ {
"id": "allow_disabling", "id": "allow_disabling",
"label": "Allow disabling Safe Eyes", "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.on_disable = context['api']['disable_safeeyes']
self.take_break = context['api']['take_break'] self.take_break = context['api']['take_break']
self.has_breaks = context['api']['has_breaks'] self.has_breaks = context['api']['has_breaks']
self.get_break_time = context['api']['get_break_time']
self.plugin_config = plugin_config self.plugin_config = plugin_config
self.date_time = None self.date_time = None
self.active = True self.active = True
@ -126,7 +127,7 @@ class TrayIcon:
# Add the sub menu to the enable/disable menu # Add the sub menu to the enable/disable menu
self.item_disable.set_submenu(self.sub_menu_disable) self.item_disable.set_submenu(self.sub_menu_disable)
# Settings menu item # Manual break menu item
self.item_manual_break = Gtk.MenuItem() self.item_manual_break = Gtk.MenuItem()
self.sub_menu_manual_next_break = Gtk.MenuItem() self.sub_menu_manual_next_break = Gtk.MenuItem()
@ -215,7 +216,7 @@ class TrayIcon:
self.indicator.set_label('', '') self.indicator.set_label('', '')
self.indicator.set_icon("io.github.slgobinath.SafeEyes-disabled") self.indicator.set_icon("io.github.slgobinath.SafeEyes-disabled")
else: else:
self.item_info.set_label(_('No Breaks Available')) self.item_info.set_label(_('No breaks available'))
self.indicator.set_label('', '') self.indicator.set_label('', '')
self.indicator.set_icon("io.github.slgobinath.SafeEyes-disabled") self.indicator.set_icon("io.github.slgobinath.SafeEyes-disabled")
self.item_info.set_sensitive(breaks_found and self.active) 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. 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) formatted_time = utility.format_time(self.get_break_time())
message = _('Next break at %s') % (formatted_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 # Update the menu item label
utility.execute_main_thread(self.item_info.set_label, message) utility.execute_main_thread(self.item_info.set_label, message)
# Update the tray icon label # Update the tray icon label
if self.plugin_config.get('show_time_in_tray', False): 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: else:
self.indicator.set_label('', '') self.indicator.set_label('', '')

View File

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