padlock icon in merged accounts mode: show when all connected accounts are connected securely, don't show it when one is not secured, do no care about offline accounts.
This commit is contained in:
parent
39fe7fc4c0
commit
4bb29675a8
|
@ -268,13 +268,14 @@ def account_is_disconnected(account):
|
||||||
def get_number_of_securely_connected_accounts():
|
def get_number_of_securely_connected_accounts():
|
||||||
'''returns the number of the accounts that are SSL/TLS connected'''
|
'''returns the number of the accounts that are SSL/TLS connected'''
|
||||||
num_of_secured = 0
|
num_of_secured = 0
|
||||||
for account in connections:
|
for account in connections.keys():
|
||||||
if account_is_securely_connected(account):
|
if account_is_securely_connected(account):
|
||||||
num_of_secured += 1
|
num_of_secured += 1
|
||||||
return num_of_secured
|
return num_of_secured
|
||||||
|
|
||||||
def account_is_securely_connected(account):
|
def account_is_securely_connected(account):
|
||||||
if account in con_types and con_types[account] in ('tls', 'ssl'):
|
if account_is_connected(account) and \
|
||||||
|
account in con_types and con_types[account] in ('tls', 'ssl'):
|
||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
return False
|
return False
|
||||||
|
|
|
@ -1876,6 +1876,7 @@ class Interface:
|
||||||
# block signed in notifications for 30 seconds
|
# block signed in notifications for 30 seconds
|
||||||
gajim.block_signed_in_notifications[account] = True
|
gajim.block_signed_in_notifications[account] = True
|
||||||
self.roster.set_actions_menu_needs_rebuild()
|
self.roster.set_actions_menu_needs_rebuild()
|
||||||
|
self.roster.draw_account(account)
|
||||||
if self.sleeper.getState() != common.sleepy.STATE_UNKNOWN and \
|
if self.sleeper.getState() != common.sleepy.STATE_UNKNOWN and \
|
||||||
gajim.connections[account].connected in (2, 3):
|
gajim.connections[account].connected in (2, 3):
|
||||||
# we go online or free for chat, so we activate auto status
|
# we go online or free for chat, so we activate auto status
|
||||||
|
|
|
@ -211,34 +211,14 @@ class RosterWindow:
|
||||||
def draw_account(self, account):
|
def draw_account(self, account):
|
||||||
model = self.tree.get_model()
|
model = self.tree.get_model()
|
||||||
iter = self.get_account_iter(account)
|
iter = self.get_account_iter(account)
|
||||||
if self.regroup:
|
|
||||||
accounts = gajim.connections.keys()
|
num_of_accounts = gajim.get_number_of_connected_accounts()
|
||||||
else:
|
|
||||||
accounts = [account]
|
|
||||||
num_of_accounts = len(accounts)
|
|
||||||
num_of_secured = gajim.get_number_of_securely_connected_accounts()
|
num_of_secured = gajim.get_number_of_securely_connected_accounts()
|
||||||
if num_of_secured and gajim.con_types.has_key(account) and \
|
|
||||||
gajim.con_types[account] in ('tls', 'ssl'):
|
if gajim.account_is_securely_connected(account) and not self.regroup or \
|
||||||
|
self.regroup and num_of_secured and num_of_secured == num_of_accounts:
|
||||||
tls_pixbuf = self.window.render_icon(gtk.STOCK_DIALOG_AUTHENTICATION,
|
tls_pixbuf = self.window.render_icon(gtk.STOCK_DIALOG_AUTHENTICATION,
|
||||||
gtk.ICON_SIZE_MENU) # the only way to create a pixbuf from stock
|
gtk.ICON_SIZE_MENU) # the only way to create a pixbuf from stock
|
||||||
if num_of_secured < num_of_accounts:
|
|
||||||
# Make it transparent
|
|
||||||
colorspace = tls_pixbuf.get_colorspace()
|
|
||||||
bps = tls_pixbuf.get_bits_per_sample()
|
|
||||||
rowstride = tls_pixbuf.get_rowstride()
|
|
||||||
pixels = tls_pixbuf.get_pixels()
|
|
||||||
new_pixels = ''
|
|
||||||
width = tls_pixbuf.get_width()
|
|
||||||
height = tls_pixbuf.get_height()
|
|
||||||
for i in range(0, width*height):
|
|
||||||
rgb = pixels[4*i:4*i+3]
|
|
||||||
new_pixels += rgb
|
|
||||||
if rgb == chr(0)*3:
|
|
||||||
new_pixels += chr(0)
|
|
||||||
else:
|
|
||||||
new_pixels += chr(128)
|
|
||||||
tls_pixbuf = gtk.gdk.pixbuf_new_from_data(new_pixels, colorspace,
|
|
||||||
True, bps, width, height, rowstride)
|
|
||||||
model[iter][C_PADLOCK_PIXBUF] = tls_pixbuf
|
model[iter][C_PADLOCK_PIXBUF] = tls_pixbuf
|
||||||
else:
|
else:
|
||||||
model[iter][C_PADLOCK_PIXBUF] = None
|
model[iter][C_PADLOCK_PIXBUF] = None
|
||||||
|
@ -1440,7 +1420,6 @@ class RosterWindow:
|
||||||
return
|
return
|
||||||
info[contact.jid] = vcard.ZeroconfVcardWindow(contact, account)
|
info[contact.jid] = vcard.ZeroconfVcardWindow(contact, account)
|
||||||
|
|
||||||
|
|
||||||
def show_tooltip(self, contact):
|
def show_tooltip(self, contact):
|
||||||
pointer = self.tree.get_pointer()
|
pointer = self.tree.get_pointer()
|
||||||
props = self.tree.get_path_at_pos(pointer[0], pointer[1])
|
props = self.tree.get_path_at_pos(pointer[0], pointer[1])
|
||||||
|
|
Loading…
Reference in New Issue