Add actions for episode context menu items

Disable 'bluetoothEpisodes' action when Bluetooth is not available.
Add episodeNew and episodeLock to set_episode_actions().
This commit is contained in:
Teemu Ikonen 2022-07-31 19:59:06 +03:00
parent f9ecbaddc6
commit b165447426
1 changed files with 36 additions and 1 deletions

View File

@ -348,6 +348,16 @@ class gPodder(BuilderWidget, dbus.service.Object):
action.connect('activate', self.on_item_view_search_always_visible_toggled)
g.add_action(action)
action = Gio.SimpleAction.new_stateful(
'episodeNew', None, GLib.Variant.new_boolean(False))
action.connect('activate', self.on_episode_new_activate)
g.add_action(action)
action = Gio.SimpleAction.new_stateful(
'episodeLock', None, GLib.Variant.new_boolean(False))
action.connect('activate', self.on_episode_lock_activate)
g.add_action(action)
action = Gio.SimpleAction.new_stateful(
'channelAutoArchive', None, GLib.Variant.new_boolean(False))
action.connect('activate', self.on_channel_toggle_lock_activate)
@ -433,8 +443,12 @@ class gPodder(BuilderWidget, dbus.service.Object):
self.episode_new_action = g.lookup_action('episodeNew')
self.open_episode_download_folder_action = g.lookup_action('openEpisodeDownloadFolder')
self.auto_archive_action = g.lookup_action('channelAutoArchive')
self.bluetooth_episodes_action = g.lookup_action('bluetoothEpisodes')
self.episode_new_action = g.lookup_action('episodeNew')
self.episode_lock_action = g.lookup_action('episodeLock')
self.bluetooth_episodes_action.set_enabled(self.bluetooth_available)
action = Gio.SimpleAction.new_stateful(
'showToolbar', None, GLib.Variant.new_boolean(self.config.show_toolbar))
action.connect('activate', self.on_itemShowToolbar_activate)
@ -2314,6 +2328,10 @@ class gPodder(BuilderWidget, dbus.service.Object):
self.episode_lock_action.set_enabled(can_play)
self.open_episode_download_folder_action.set_enabled(len(episodes) == 1)
# Episodes context menu
self.episode_new_action.set_enabled(is_episode_selected)
self.episode_lock_action.set_enabled(can_lock)
def set_title(self, new_title):
self.default_title = new_title
self.gPodder.set_title(new_title)
@ -3314,7 +3332,14 @@ class gPodder(BuilderWidget, dbus.service.Object):
self.episodes_popover.popdown()
return True
def on_channel_toggle_lock_activate(self, widget, toggle=True, new_value=False):
def on_episode_lock_activate(self, action, *params):
new_value = not action.get_state().get_boolean()
self.on_item_toggle_lock_activate(None, toggle=False, new_value=new_value)
action.change_state(GLib.Variant.new_boolean(new_value))
self.episodes_popover.popdown()
return True
def on_channel_toggle_lock_activate(self, action, *params):
if self.active_channel is None:
return
@ -3920,6 +3945,16 @@ class gPodder(BuilderWidget, dbus.service.Object):
def on_playback_selected_episodes(self, *params):
self.playback_episodes(self.get_selected_episodes())
def on_episode_new_activate(self, action, *params):
state = not action.get_state().get_boolean()
if state:
self.mark_selected_episodes_new()
else:
self.mark_selected_episodes_old()
action.change_state(GLib.Variant.new_boolean(state))
self.episodes_popover.popdown()
return True
def on_new_toggled(self, button, *params):
self.episode_new_action.activate()
return True