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))