[shivan] show nothing in status combobox when status is not unified for all globaly sync'ed accounts. see #3489
This commit is contained in:
parent
f2e5d85b9d
commit
025ef4f3eb
3 changed files with 19 additions and 14 deletions
|
@ -544,6 +544,19 @@ def get_global_status():
|
||||||
status = gajim.connections[account].status
|
status = gajim.connections[account].status
|
||||||
return status
|
return status
|
||||||
|
|
||||||
|
def statuses_unified():
|
||||||
|
'''testing if all statuses are the same.'''
|
||||||
|
reference = None
|
||||||
|
for account in gajim.connections:
|
||||||
|
if not gajim.config.get_per('accounts', account,
|
||||||
|
'sync_with_global_status'):
|
||||||
|
continue
|
||||||
|
if reference == None:
|
||||||
|
reference = gajim.connections[account].connected
|
||||||
|
elif reference != gajim.connections[account].connected:
|
||||||
|
return False
|
||||||
|
return True
|
||||||
|
|
||||||
def get_icon_name_to_show(contact, account = None):
|
def get_icon_name_to_show(contact, account = None):
|
||||||
'''Get the icon name to show in online, away, requested, ...'''
|
'''Get the icon name to show in online, away, requested, ...'''
|
||||||
if account and gajim.events.get_nb_roster_events(account, contact.jid):
|
if account and gajim.events.get_nb_roster_events(account, contact.jid):
|
||||||
|
|
|
@ -3729,7 +3729,10 @@ class RosterWindow:
|
||||||
# temporarily block signal in order not to send status that we show
|
# temporarily block signal in order not to send status that we show
|
||||||
# in the combobox
|
# in the combobox
|
||||||
self.combobox_callback_active = False
|
self.combobox_callback_active = False
|
||||||
self.status_combobox.set_active(table[show])
|
if helpers.statuses_unified():
|
||||||
|
self.status_combobox.set_active(table[show])
|
||||||
|
else:
|
||||||
|
self.status_combobox.set_active(-1)
|
||||||
self._change_awn_icon_status(show)
|
self._change_awn_icon_status(show)
|
||||||
self.combobox_callback_active = True
|
self.combobox_callback_active = True
|
||||||
if gajim.interface.systray_enabled:
|
if gajim.interface.systray_enabled:
|
||||||
|
|
|
@ -330,21 +330,10 @@ class Systray:
|
||||||
current = gajim.interface.roster.status_combobox.get_active()
|
current = gajim.interface.roster.status_combobox.get_active()
|
||||||
if index != current:
|
if index != current:
|
||||||
gajim.interface.roster.status_combobox.set_active(index)
|
gajim.interface.roster.status_combobox.set_active(index)
|
||||||
else:
|
elif not helpers.statuses_unified():
|
||||||
# We maybe need to emit the changed signal if all globaly sync'ed
|
# We maybe need to emit the changed signal if all globaly sync'ed
|
||||||
# account don't have the global status
|
# account don't have the global status
|
||||||
need_to_change = False
|
gajim.interface.roster.status_combobox.emit('changed')
|
||||||
accounts = gajim.connections.keys()
|
|
||||||
for acct in accounts:
|
|
||||||
if not gajim.config.get_per('accounts', acct,
|
|
||||||
'sync_with_global_status'):
|
|
||||||
continue
|
|
||||||
acct_show = gajim.SHOW_LIST[gajim.connections[acct].connected]
|
|
||||||
if acct_show != show:
|
|
||||||
need_to_change = True
|
|
||||||
break
|
|
||||||
if need_to_change:
|
|
||||||
gajim.interface.roster.status_combobox.emit('changed')
|
|
||||||
|
|
||||||
def on_change_status_message_activate(self, widget):
|
def on_change_status_message_activate(self, widget):
|
||||||
model = gajim.interface.roster.status_combobox.get_model()
|
model = gajim.interface.roster.status_combobox.get_model()
|
||||||
|
|
Loading…
Add table
Reference in a new issue