Add a View menu option to show time in the episode released column.

This commit is contained in:
auouymous 2023-04-29 21:10:33 -06:00
parent 43eb6ca5f5
commit b0ce535ca9
5 changed files with 32 additions and 5 deletions

View File

@ -241,6 +241,10 @@
<attribute name="label" translatable="yes">Episode descriptions</attribute>
<attribute name="accel">&lt;Primary&gt;d</attribute>
</item>
<item>
<attribute name="action">win.viewShowEpisodeReleasedTime</attribute>
<attribute name="label" translatable="yes">Show episode released time</attribute>
</item>
<item>
<attribute name="action">win.viewCtrlClickToSortEpisodes</attribute>
<attribute name="label" translatable="yes">Require control click to sort episodes</attribute>

View File

@ -171,6 +171,7 @@ defaults = {
'always_show_new': True,
'trim_title_prefix': True,
'descriptions': True,
'show_released_time': False,
'ctrl_click_to_sort': False,
'columns': int('110', 2), # bitfield of visible columns
},

View File

@ -319,6 +319,11 @@ class gPodder(BuilderWidget, dbus.service.Object):
action.connect('activate', self.on_item_view_show_episode_description_toggled)
g.add_action(action)
action = Gio.SimpleAction.new_stateful(
'viewShowEpisodeReleasedTime', None, GLib.Variant.new_boolean(self.config.ui.gtk.episode_list.show_released_time))
action.connect('activate', self.on_item_view_show_episode_released_time_toggled)
g.add_action(action)
action = Gio.SimpleAction.new_stateful(
'viewCtrlClickToSortEpisodes', None, GLib.Variant.new_boolean(self.config.ui.gtk.episode_list.ctrl_click_to_sort))
action.connect('activate', self.on_item_view_ctrl_click_to_sort_episodes_toggled)
@ -926,7 +931,9 @@ class gPodder(BuilderWidget, dbus.service.Object):
timecolumn.set_sort_column_id(EpisodeListModel.C_TOTAL_TIME)
releasecell = Gtk.CellRendererText()
releasecolumn = Gtk.TreeViewColumn(_('Released'), releasecell, text=EpisodeListModel.C_PUBLISHED_TEXT)
releasecolumn = Gtk.TreeViewColumn(_('Released'))
releasecolumn.pack_start(releasecell, True)
releasecolumn.add_attribute(releasecell, 'markup', EpisodeListModel.C_PUBLISHED_TEXT)
releasecolumn.set_sort_column_id(EpisodeListModel.C_PUBLISHED)
sizetimecell = Gtk.CellRendererText()
@ -1365,7 +1372,8 @@ class gPodder(BuilderWidget, dbus.service.Object):
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',
elif name in ('ui.gtk.episode_list.show_released_time',
'ui.gtk.episode_list.descriptions',
'ui.gtk.episode_list.trim_title_prefix',
'ui.gtk.episode_list.always_show_new'):
self.update_episode_list_model()
@ -3507,6 +3515,11 @@ class gPodder(BuilderWidget, dbus.service.Object):
self.config.ui.gtk.episode_list.descriptions = not state
action.set_state(GLib.Variant.new_boolean(not state))
def on_item_view_show_episode_released_time_toggled(self, action, param):
state = action.get_state()
self.config.ui.gtk.episode_list.show_released_time = not state
action.set_state(GLib.Variant.new_boolean(not state))
def on_item_view_ctrl_click_to_sort_episodes_toggled(self, action, param):
state = action.get_state()
self.config.ui.gtk.episode_list.ctrl_click_to_sort = not state

View File

@ -128,7 +128,7 @@ class BackgroundUpdate(object):
model.C_URL, episode.url,
model.C_TITLE, episode.title,
model.C_EPISODE, episode,
model.C_PUBLISHED_TEXT, episode.cute_pubdate(),
model.C_PUBLISHED_TEXT, episode.cute_pubdate(show_time=self.model._config_ui_gtk_episode_list_show_released_time),
model.C_PUBLISHED, episode.published,
)
update_fields = model.get_update_fields(episode)
@ -215,11 +215,13 @@ class EpisodeListModel(Gtk.ListStore):
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
self._config_ui_gtk_episode_list_show_released_time = 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
self._config_ui_gtk_episode_list_show_released_time = config.ui.gtk.episode_list.show_released_time
def _format_filesize(self, episode):
if episode.file_size > 0:

View File

@ -842,11 +842,18 @@ class PodcastEpisode(PodcastModelObject):
self.title,
self.cute_pubdate())
def cute_pubdate(self):
def cute_pubdate(self, show_time=False):
result = util.format_date(self.published)
if result is None:
return '(%s)' % _('unknown')
else:
try:
if show_time:
timestamp = datetime.datetime.fromtimestamp(self.published)
return '<small>{}</small>\n{}'.format(timestamp.strftime('%H:%M'), result)
else:
return result
except:
return result
pubdate_prop = property(fget=cute_pubdate)