diff --git a/safeeyes/config/safeeyes.json b/safeeyes/config/safeeyes.json index 5774c8b..dfa4819 100644 --- a/safeeyes/config/safeeyes.json +++ b/safeeyes/config/safeeyes.json @@ -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, diff --git a/safeeyes/core.py b/safeeyes/core.py index 00a7f98..a73592c 100644 --- a/safeeyes/core.py +++ b/safeeyes/core.py @@ -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 diff --git a/safeeyes/model.py b/safeeyes/model.py index 34d5150..fe8e026 100644 --- a/safeeyes/model.py +++ b/safeeyes/model.py @@ -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): diff --git a/safeeyes/plugins/trayicon/config.json b/safeeyes/plugins/trayicon/config.json index 28d1b35..5ed2e5b 100644 --- a/safeeyes/plugins/trayicon/config.json +++ b/safeeyes/plugins/trayicon/config.json @@ -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 @@ ] } ] -} \ No newline at end of file +} diff --git a/safeeyes/plugins/trayicon/plugin.py b/safeeyes/plugins/trayicon/plugin.py index 061535a..9970afe 100644 --- a/safeeyes/plugins/trayicon/plugin.py +++ b/safeeyes/plugins/trayicon/plugin.py @@ -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('', '') diff --git a/safeeyes/safeeyes.py b/safeeyes/safeeyes.py index 7b88553..ea9330f 100644 --- a/safeeyes/safeeyes.py +++ b/safeeyes/safeeyes.py @@ -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)