Daniel Brötzmann pushed to branch newcontrol at gajim / gajim
Commits: 3c0101fd by wurstsalat at 2022-07-04T17:14:15+02:00 Add, update, and handler equest-voice action
- - - - -
3 changed files:
- gajim/gtk/chat_banner.py - gajim/gtk/chat_stack.py - gajim/gtk/controls/groupchat.py
Changes:
===================================== gajim/gtk/chat_banner.py ===================================== @@ -17,6 +17,7 @@ from typing import Any from typing import Optional
+from gi.repository import Gio from gi.repository import Gtk
import cairo @@ -72,6 +73,9 @@ def __init__(self) -> None: 'hide_groupchat_occupants_list', self._set_toggle_roster_button_icon)
+ action = Gio.SimpleAction.new('request-voice', None) + app.window.add_action(action) + self.show_all()
def switch_contact(self, @@ -177,8 +181,7 @@ def _on_user_role_changed(self, user_contact: GroupchatParticipant, properties: PresenceProperties ) -> None: - if properties.is_muc_self_presence: - self._ui.visitor_box.set_visible(user_contact.role.is_visitor) + self._update_content()
def _on_user_nickname_changed(self, user_contact: GroupchatParticipant, @@ -269,6 +272,8 @@ def _update_content(self) -> None: self_contact = self._contact.get_self() if self_contact: self._ui.visitor_box.set_visible(self_contact.role.is_visitor) + app.window.get_action('request-voice').set_enabled( + self_contact.role.is_visitor)
def _update_account_badge(self) -> None: if self._account_badge is not None: @@ -282,10 +287,7 @@ def _update_account_badge(self) -> None:
def _on_request_voice_clicked(self, _button: Gtk.Button) -> None: self._ui.visitor_popover.popdown() - control = app.window.get_active_control() - if control is not None: - app.window.activate_action( - f'request-voice-{control.control_id}', None) + app.window.activate_action('request-voice', None)
def _on_toggle_roster_clicked(self, _button: Gtk.Button) -> None: state = app.settings.get('hide_groupchat_occupants_list')
===================================== gajim/gtk/chat_stack.py ===================================== @@ -32,7 +32,7 @@ from gajim.common.modules.contacts import GroupchatContact from gajim.common.modules.contacts import GroupchatParticipant from gajim.common.structs import OutgoingMessage -from gajim.common.types import BareContactT, ChatContactT +from gajim.common.types import ChatContactT
from .chat_banner import ChatBanner from .control_stack import ControlStack @@ -103,6 +103,7 @@ def _connect_actions(self) -> None: 'start-video-call', 'start-voice-call', 'send-message', + 'request-voice', ]
stateful_actions = [ @@ -120,7 +121,7 @@ def _connect_actions(self) -> None: assert action is not None action.connect('change-state', self._on_stateful_action)
- def _update_base_actions(self, contact: ChatContactT): + def _update_base_actions(self, contact: ChatContactT) -> None: client = app.get_client(contact.account) online = app.account_is_connected(contact.account)
@@ -166,7 +167,12 @@ def _update_chat_actions(self, contact: BareContact) -> None: sys.platform != 'win32')
def _update_group_chat_actions(self, contact: GroupchatContact) -> None: - pass + is_visitor = False + if contact.is_joined: + self_contact = contact.get_self() + assert self_contact + is_visitor = self_contact.role.is_visitor + app.window.get_action('request-voice').set_enabled(is_visitor)
def _update_participant_actions(self, contact: GroupchatParticipant) -> None: @@ -180,6 +186,7 @@ def _on_action(self, contact = self._current_contact assert contact is not None account = contact.account + client = app.get_client(account) jid = contact.jid
if action_name == 'send-message': @@ -230,6 +237,8 @@ def _on_action(self, open_window('GroupchatDetails', contact=contact) else: app.window.contact_info(account, jid) + elif action_name == 'request-voice': + client.get_module('MUC').request_voice(contact.jid)
def _on_stateful_action(self, action: Gio.SimpleAction,
===================================== gajim/gtk/controls/groupchat.py ===================================== @@ -216,7 +216,6 @@ def add_actions(self) -> None: actions = [ ('change-nickname-', None, self._on_change_nick), ('destroy-', None, self._on_destroy_room), - ('request-voice-', None, self._on_request_voice), # ('groupchat-details-', None, self._on_details), ('invite-', None, self._on_invite), ('contact-information-', 's', self._on_contact_information), @@ -236,13 +235,7 @@ def add_actions(self) -> None: app.window.add_action(act)
def update_actions(self, *args: Any) -> None: - request_voice = False joined = self.contact.is_joined - if joined: - contact = self.contact.get_self() - request_voice = contact.role.is_visitor - - self._get_action('request-voice-').set_enabled(request_voice)
# Change Nick self._get_action('change-nickname-').set_enabled( @@ -291,7 +284,6 @@ def remove_actions(self) -> None: 'change-nickname-', 'destroy-', 'configure-', - 'request-voice-', 'groupchat-details-', 'invite-', 'contact-information-', @@ -385,19 +377,6 @@ def _on_destroy_confirm(self, _button: Gtk.Button) -> None: self._client.get_module('MUC').destroy(self.room_jid, reason, jid) self._show_page('groupchat')
- def _on_request_voice_clicked(self, _button: Gtk.Button) -> None: - self._request_voice() - self.xml.visitor_popover.popdown() - - def _on_request_voice(self, - _action: Gio.SimpleAction, - _param: Optional[GLib.Variant] - ) -> None: - self._request_voice() - - def _request_voice(self) -> None: - self._client.get_module('MUC').request_voice(self.room_jid) - def _on_execute_command(self, _action: Gio.SimpleAction, param: GLib.Variant
View it on GitLab: https://dev.gajim.org/gajim/gajim/-/commit/3c0101fd66eef81dbea65691646778a4a...