episodeselector: Add a Stream button

This commit is contained in:
Teemu Ikonen 2022-03-31 22:52:00 +03:00
parent 03a6aabf96
commit 40e524b8ab
3 changed files with 34 additions and 1 deletions

View File

@ -218,6 +218,18 @@
<property name="can-focus">False</property>
<property name="title" translatable="yes">Episode details</property>
<property name="has-subtitle">False</property>
<child>
<object class="GtkButton" id="stream_button">
<property name="label" translatable="yes">Stream</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<signal name="clicked" handler="on_stream_button_clicked" swapped="no"/>
</object>
<packing>
<property name="pack-type">end</property>
</packing>
</child>
<child>
<object class="GtkButton" id="notes_back">
<property name="visible">True</property>
@ -232,6 +244,9 @@
</object>
</child>
</object>
<packing>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>

View File

@ -90,6 +90,7 @@ class gPodderEpisodeSelector(BuilderWidget):
the supplied episode objects that holds
the text for the tooltips when hovering
over an episode (default is 'description')
- gPodder: Main gPodder instance
"""
COLUMN_INDEX = 0
COLUMN_TOOLTIP = 1
@ -277,6 +278,8 @@ class gPodderEpisodeSelector(BuilderWidget):
if event.keyval in (Gdk.KEY_Escape, Gdk.KEY_BackSpace, Gdk.KEY_Left, Gdk.KEY_h):
self.new_deck.navigate(Handy.NavigationDirection.BACK)
self.treeviewEpisodes.grab_focus()
elif event.keyval in (Gdk.KEY_s, Gdk.KEY_p):
self.stream_button.emit("clicked")
else:
return False
return True
@ -299,6 +302,8 @@ class gPodderEpisodeSelector(BuilderWidget):
# Hardcode non-HTML shownotes because of webkit2gtk crashing with multiple instances
self.shownotes_object = shownotes.get_shownotes(False, self.shownotes_box)
self.activated_episode = None
self.calculate_total_size()
def treeview_episodes_query_tooltip(self, treeview, x, y, keyboard_tooltip, tooltip):
@ -454,6 +459,10 @@ class gPodderEpisodeSelector(BuilderWidget):
if model.get_iter_first() is None:
self.on_btnCancel_clicked(None)
def on_stream_button_clicked(self, *args):
if hasattr(self, 'gPodder') and self.activated_episode is not None:
self.gPodder.playback_episodes((self.activated_episode,))
def on_row_activated(self, treeview, path, view_column):
if self.toggled:
self.toggled = False
@ -464,11 +473,18 @@ class gPodderEpisodeSelector(BuilderWidget):
episodes = [self.episodes[epind]]
assert episodes
if isinstance(episodes[0], GEpisode): # No notes for channels
self.activated_episode = episodes[0]
if episodes[0].can_stream(self._config) and hasattr(self, 'gPodder'):
self.stream_button.set_sensitive(True)
else:
self.stream_button.set_sensitive(False)
self.shownotes_object.show_pane(episodes)
self.shownotes_box.show()
self.new_deck.set_can_swipe_forward(True)
self.notes_back.grab_focus()
self.new_deck.navigate(Handy.NavigationDirection.FORWARD)
else:
self.activated_episode = None
self.calculate_total_size()

View File

@ -3242,7 +3242,8 @@ class gPodder(BuilderWidget, dbus.service.Object):
instructions=instructions,
episodes=episodes, selected=selected, columns=columns,
ok_button=_('_Delete'), callback=self.delete_episode_list,
selection_buttons=selection_buttons, _config=self.config)
selection_buttons=selection_buttons, _config=self.config,
gPodder=self)
def on_selected_episodes_status_changed(self):
# The order of the updates here is important! When "All episodes" is
@ -3457,6 +3458,7 @@ class gPodder(BuilderWidget, dbus.service.Object):
remove_action=_('_Mark as old'),
remove_finished=self.episode_new_status_changed,
_config=self.config,
gPodder=self,
show_notification=False)
def on_itemDownloadAllNew_activate(self, action, param):