diff --git a/share/gpodder/ui/gtk/menus.ui b/share/gpodder/ui/gtk/menus.ui index a327a9be2..a252619f2 100644 --- a/share/gpodder/ui/gtk/menus.ui +++ b/share/gpodder/ui/gtk/menus.ui @@ -228,6 +228,10 @@ win.viewAlwaysShowNewEpisodes Always show New Episodes + + win.viewTrimEpisodeTitlePrefix + Trim episode title prefix + win.viewShowEpisodeDescription Episode descriptions diff --git a/src/gpodder/config.py b/src/gpodder/config.py index 1535d95bc..8a93f0556 100644 --- a/src/gpodder/config.py +++ b/src/gpodder/config.py @@ -168,6 +168,7 @@ 'episode_list': { 'view_mode': 1, 'always_show_new': True, + 'trim_title_prefix': True, 'descriptions': True, 'ctrl_click_to_sort': False, 'columns': int('110', 2), # bitfield of visible columns diff --git a/src/gpodder/gtkui/main.py b/src/gpodder/gtkui/main.py index ad68ac9b9..cd53766b8 100644 --- a/src/gpodder/gtkui/main.py +++ b/src/gpodder/gtkui/main.py @@ -307,6 +307,11 @@ def create_actions(self): action.connect('activate', self.on_item_view_always_show_new_episodes_toggled) g.add_action(action) + action = Gio.SimpleAction.new_stateful( + 'viewTrimEpisodeTitlePrefix', None, GLib.Variant.new_boolean(self.config.ui.gtk.episode_list.trim_title_prefix)) + action.connect('activate', self.on_item_view_trim_episode_title_prefix_toggled) + g.add_action(action) + action = Gio.SimpleAction.new_stateful( 'viewShowEpisodeDescription', None, GLib.Variant.new_boolean(self.config.ui.gtk.episode_list.descriptions)) action.connect('activate', self.on_item_view_show_episode_description_toggled) @@ -1341,6 +1346,7 @@ def _on_config_changed(self, name, old_value, new_value): if name == 'ui.gtk.toolbar': self.toolbar.set_property('visible', new_value) elif name in ('ui.gtk.episode_list.descriptions', + 'ui.gtk.episode_list.trim_title_prefix', 'ui.gtk.episode_list.always_show_new'): self.update_episode_list_model() elif name in ('auto.update.enabled', 'auto.update.frequency'): @@ -3426,6 +3432,11 @@ def on_item_view_always_show_new_episodes_toggled(self, action, param): self.config.ui.gtk.episode_list.always_show_new = not state action.set_state(GLib.Variant.new_boolean(not state)) + def on_item_view_trim_episode_title_prefix_toggled(self, action, param): + state = action.get_state() + self.config.ui.gtk.episode_list.trim_title_prefix = not state + action.set_state(GLib.Variant.new_boolean(not state)) + def on_item_view_show_episode_description_toggled(self, action, param): state = action.get_state() self.config.ui.gtk.episode_list.descriptions = not state diff --git a/src/gpodder/gtkui/model.py b/src/gpodder/gtkui/model.py index 72dd06fdb..df2d4c225 100644 --- a/src/gpodder/gtkui/model.py +++ b/src/gpodder/gtkui/model.py @@ -213,10 +213,12 @@ def __init__(self, on_filter_changed=lambda has_episodes: None): # Caching config values is faster than accessing them directly from config.ui.gtk.episode_list.* # and is easier to maintain then threading them through every method call. self._config_ui_gtk_episode_list_always_show_new = False + self._config_ui_gtk_episode_list_trim_title_prefix = False self._config_ui_gtk_episode_list_descriptions = False def cache_config(self, config): self._config_ui_gtk_episode_list_always_show_new = config.ui.gtk.episode_list.always_show_new + self._config_ui_gtk_episode_list_trim_title_prefix = config.ui.gtk.episode_list.trim_title_prefix self._config_ui_gtk_episode_list_descriptions = config.ui.gtk.episode_list.descriptions def _format_filesize(self, episode): @@ -292,7 +294,7 @@ def get_search_term(self): def _format_description(self, episode): d = [] - title = episode.trimmed_title + title = episode.trimmed_title if self._config_ui_gtk_episode_list_trim_title_prefix else episode.title if episode.state != gpodder.STATE_DELETED and episode.is_new: d.append('') d.append(html.escape(title))