GroupchatControl: Add a is_connected property
This commit is contained in:
parent
7c45943d20
commit
8e28ca08d4
|
@ -518,7 +518,7 @@ class GroupchatControl(ChatControlBase):
|
||||||
self._nec_decrypted_message_received)
|
self._nec_decrypted_message_received)
|
||||||
app.ged.register_event_handler('gc-stanza-message-outgoing', ged.OUT_POSTCORE,
|
app.ged.register_event_handler('gc-stanza-message-outgoing', ged.OUT_POSTCORE,
|
||||||
self._message_sent)
|
self._message_sent)
|
||||||
app.gc_connected[self.account][self.room_jid] = False
|
self.is_connected = False
|
||||||
# disable win, we are not connected yet
|
# disable win, we are not connected yet
|
||||||
ChatControlBase.got_disconnected(self)
|
ChatControlBase.got_disconnected(self)
|
||||||
|
|
||||||
|
@ -578,28 +578,27 @@ class GroupchatControl(ChatControlBase):
|
||||||
win = self.parent_win.window
|
win = self.parent_win.window
|
||||||
contact = app.contacts.get_gc_contact(
|
contact = app.contacts.get_gc_contact(
|
||||||
self.account, self.room_jid, self.nick)
|
self.account, self.room_jid, self.nick)
|
||||||
online = app.gc_connected[self.account][self.room_jid]
|
|
||||||
con = app.connections[self.account]
|
con = app.connections[self.account]
|
||||||
|
|
||||||
# Destroy Room
|
# Destroy Room
|
||||||
win.lookup_action('destroy-' + self.control_id).set_enabled(
|
win.lookup_action('destroy-' + self.control_id).set_enabled(
|
||||||
online and contact.affiliation == 'owner')
|
self.is_connected and contact.affiliation == 'owner')
|
||||||
|
|
||||||
# Configure Room
|
# Configure Room
|
||||||
win.lookup_action('configure-' + self.control_id).set_enabled(
|
win.lookup_action('configure-' + self.control_id).set_enabled(
|
||||||
online and contact.affiliation in ('admin', 'owner'))
|
self.is_connected and contact.affiliation in ('admin', 'owner'))
|
||||||
|
|
||||||
# Bookmarks
|
# Bookmarks
|
||||||
con = app.connections[self.account]
|
con = app.connections[self.account]
|
||||||
bookmark_support = con.get_module('Bookmarks').available
|
bookmark_support = con.get_module('Bookmarks').available
|
||||||
bookmarked = self.room_jid in con.get_module('Bookmarks').bookmarks
|
bookmarked = self.room_jid in con.get_module('Bookmarks').bookmarks
|
||||||
win.lookup_action('bookmark-' + self.control_id).set_enabled(
|
win.lookup_action('bookmark-' + self.control_id).set_enabled(
|
||||||
online and bookmark_support and not bookmarked)
|
self.is_connected and bookmark_support and not bookmarked)
|
||||||
|
|
||||||
# Request Voice
|
# Request Voice
|
||||||
role = self.get_role(self.nick)
|
role = self.get_role(self.nick)
|
||||||
win.lookup_action('request-voice-' + self.control_id).set_enabled(
|
win.lookup_action('request-voice-' + self.control_id).set_enabled(
|
||||||
online and role == 'visitor')
|
self.is_connected and role == 'visitor')
|
||||||
|
|
||||||
# Change Subject
|
# Change Subject
|
||||||
subject = False
|
subject = False
|
||||||
|
@ -607,25 +606,25 @@ class GroupchatControl(ChatControlBase):
|
||||||
subject = muc_caps_cache.is_subject_change_allowed(
|
subject = muc_caps_cache.is_subject_change_allowed(
|
||||||
self.room_jid, contact.affiliation)
|
self.room_jid, contact.affiliation)
|
||||||
win.lookup_action('change-subject-' + self.control_id).set_enabled(
|
win.lookup_action('change-subject-' + self.control_id).set_enabled(
|
||||||
online and subject)
|
self.is_connected and subject)
|
||||||
|
|
||||||
# Change Nick
|
# Change Nick
|
||||||
win.lookup_action('change-nick-' + self.control_id).set_enabled(
|
win.lookup_action('change-nick-' + self.control_id).set_enabled(
|
||||||
online)
|
self.is_connected)
|
||||||
|
|
||||||
# Execute command
|
# Execute command
|
||||||
win.lookup_action('execute-command-' + self.control_id).set_enabled(
|
win.lookup_action('execute-command-' + self.control_id).set_enabled(
|
||||||
online)
|
self.is_connected)
|
||||||
|
|
||||||
# Send file (HTTP File Upload)
|
# Send file (HTTP File Upload)
|
||||||
httpupload = win.lookup_action(
|
httpupload = win.lookup_action(
|
||||||
'send-file-httpupload-' + self.control_id)
|
'send-file-httpupload-' + self.control_id)
|
||||||
httpupload.set_enabled(
|
httpupload.set_enabled(
|
||||||
online and con.get_module('HTTPUpload').available)
|
self.is_connected and con.get_module('HTTPUpload').available)
|
||||||
win.lookup_action('send-file-' + self.control_id).set_enabled(
|
win.lookup_action('send-file-' + self.control_id).set_enabled(
|
||||||
httpupload.get_enabled())
|
httpupload.get_enabled())
|
||||||
|
|
||||||
if online and httpupload.get_enabled():
|
if self.is_connected and httpupload.get_enabled():
|
||||||
tooltip_text = _('Send File…')
|
tooltip_text = _('Send File…')
|
||||||
else:
|
else:
|
||||||
tooltip_text = _('No File Transfer available')
|
tooltip_text = _('No File Transfer available')
|
||||||
|
@ -634,7 +633,7 @@ class GroupchatControl(ChatControlBase):
|
||||||
# Upload Avatar
|
# Upload Avatar
|
||||||
vcard_support = muc_caps_cache.supports(self.room_jid, nbxmpp.NS_VCARD)
|
vcard_support = muc_caps_cache.supports(self.room_jid, nbxmpp.NS_VCARD)
|
||||||
win.lookup_action('upload-avatar-' + self.control_id).set_enabled(
|
win.lookup_action('upload-avatar-' + self.control_id).set_enabled(
|
||||||
online and vcard_support and contact.affiliation == 'owner')
|
self.is_connected and vcard_support and contact.affiliation == 'owner')
|
||||||
|
|
||||||
def _connect_window_state_change(self, parent_win):
|
def _connect_window_state_change(self, parent_win):
|
||||||
if self._state_change_handler_id is None:
|
if self._state_change_handler_id is None:
|
||||||
|
@ -1053,7 +1052,7 @@ class GroupchatControl(ChatControlBase):
|
||||||
|
|
||||||
def get_tab_image(self, count_unread=True):
|
def get_tab_image(self, count_unread=True):
|
||||||
tab_image = None
|
tab_image = None
|
||||||
if app.gc_connected[self.account][self.room_jid]:
|
if self.is_connected:
|
||||||
tab_image = gtkgui_helpers.get_iconset_name_for('muc-active')
|
tab_image = gtkgui_helpers.get_iconset_name_for('muc-active')
|
||||||
else:
|
else:
|
||||||
tab_image = gtkgui_helpers.get_iconset_name_for('muc-inactive')
|
tab_image = gtkgui_helpers.get_iconset_name_for('muc-inactive')
|
||||||
|
@ -1111,8 +1110,7 @@ class GroupchatControl(ChatControlBase):
|
||||||
|
|
||||||
def _update_banner_state_image(self):
|
def _update_banner_state_image(self):
|
||||||
banner_status_img = self.xml.get_object('gc_banner_status_image')
|
banner_status_img = self.xml.get_object('gc_banner_status_image')
|
||||||
if self.room_jid in app.gc_connected[self.account] and \
|
if self.is_connected:
|
||||||
app.gc_connected[self.account][self.room_jid]:
|
|
||||||
if self.contact.avatar_sha:
|
if self.contact.avatar_sha:
|
||||||
surface = app.interface.get_avatar(self.contact.avatar_sha,
|
surface = app.interface.get_avatar(self.contact.avatar_sha,
|
||||||
AvatarSize.ROSTER,
|
AvatarSize.ROSTER,
|
||||||
|
@ -1596,6 +1594,14 @@ class GroupchatControl(ChatControlBase):
|
||||||
elif obj.name == 'ping-error':
|
elif obj.name == 'ping-error':
|
||||||
self.print_conversation(_('Error.'))
|
self.print_conversation(_('Error.'))
|
||||||
|
|
||||||
|
@property
|
||||||
|
def is_connected(self) -> bool:
|
||||||
|
return app.gc_connected[self.account][self.room_jid]
|
||||||
|
|
||||||
|
@is_connected.setter
|
||||||
|
def is_connected(self, value: bool) -> None:
|
||||||
|
app.gc_connected[self.account][self.room_jid] = value
|
||||||
|
|
||||||
def got_connected(self):
|
def got_connected(self):
|
||||||
# Make autorejoin stop.
|
# Make autorejoin stop.
|
||||||
if self.autorejoin:
|
if self.autorejoin:
|
||||||
|
@ -1608,7 +1614,8 @@ class GroupchatControl(ChatControlBase):
|
||||||
con.get_module('MAM').request_archive_on_muc_join(
|
con.get_module('MAM').request_archive_on_muc_join(
|
||||||
self.room_jid)
|
self.room_jid)
|
||||||
|
|
||||||
app.gc_connected[self.account][self.room_jid] = True
|
|
||||||
|
self.is_connected = True
|
||||||
ChatControlBase.got_connected(self)
|
ChatControlBase.got_connected(self)
|
||||||
|
|
||||||
# Sort model and assign it to treeview
|
# Sort model and assign it to treeview
|
||||||
|
@ -1651,7 +1658,7 @@ class GroupchatControl(ChatControlBase):
|
||||||
ctrl.parent_win.redraw_tab(ctrl)
|
ctrl.parent_win.redraw_tab(ctrl)
|
||||||
|
|
||||||
app.contacts.remove_gc_contact(self.account, gc_contact)
|
app.contacts.remove_gc_contact(self.account, gc_contact)
|
||||||
app.gc_connected[self.account][self.room_jid] = False
|
self.is_connected = False
|
||||||
ChatControlBase.got_disconnected(self)
|
ChatControlBase.got_disconnected(self)
|
||||||
# We don't redraw the whole banner here, because only icon change
|
# We don't redraw the whole banner here, because only icon change
|
||||||
self._update_banner_state_image()
|
self._update_banner_state_image()
|
||||||
|
@ -2317,8 +2324,7 @@ class GroupchatControl(ChatControlBase):
|
||||||
app.ged.remove_event_handler('gc-stanza-message-outgoing', ged.OUT_POSTCORE,
|
app.ged.remove_event_handler('gc-stanza-message-outgoing', ged.OUT_POSTCORE,
|
||||||
self._message_sent)
|
self._message_sent)
|
||||||
|
|
||||||
if self.room_jid in app.gc_connected[self.account] and \
|
if self.is_connected:
|
||||||
app.gc_connected[self.account][self.room_jid]:
|
|
||||||
app.connections[self.account].send_gc_status(self.nick,
|
app.connections[self.account].send_gc_status(self.nick,
|
||||||
self.room_jid, show='offline', status=status)
|
self.room_jid, show='offline', status=status)
|
||||||
nick_list = app.contacts.get_nick_list(self.account, self.room_jid)
|
nick_list = app.contacts.get_nick_list(self.account, self.room_jid)
|
||||||
|
@ -2356,8 +2362,7 @@ class GroupchatControl(ChatControlBase):
|
||||||
excludes = app.config.get('noconfirm_close_muc_rooms').split(' ')
|
excludes = app.config.get('noconfirm_close_muc_rooms').split(' ')
|
||||||
# whether to ask for confirmation before closing muc
|
# whether to ask for confirmation before closing muc
|
||||||
if (app.config.get('confirm_close_muc') or self.room_jid in includes)\
|
if (app.config.get('confirm_close_muc') or self.room_jid in includes)\
|
||||||
and app.gc_connected[self.account][self.room_jid] and self.room_jid \
|
and self.is_connected and self.room_jid not in excludes:
|
||||||
not in excludes:
|
|
||||||
return False
|
return False
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
@ -2375,7 +2380,7 @@ class GroupchatControl(ChatControlBase):
|
||||||
excludes = app.config.get('noconfirm_close_muc_rooms').split(' ')
|
excludes = app.config.get('noconfirm_close_muc_rooms').split(' ')
|
||||||
# whether to ask for confirmation before closing muc
|
# whether to ask for confirmation before closing muc
|
||||||
if (app.config.get('confirm_close_muc') or self.room_jid in includes)\
|
if (app.config.get('confirm_close_muc') or self.room_jid in includes)\
|
||||||
and app.gc_connected[self.account][self.room_jid] and self.room_jid \
|
and self.is_connected and self.room_jid \
|
||||||
not in excludes:
|
not in excludes:
|
||||||
|
|
||||||
def on_ok(clicked):
|
def on_ok(clicked):
|
||||||
|
|
Loading…
Reference in New Issue