don't make submenus in the Actions menu if we've only got a zeroconf account and a normal account
This commit is contained in:
parent
bb8df6b540
commit
e4aa0de7f7
|
@ -285,6 +285,10 @@ def account_is_connected(account):
|
|||
def account_is_disconnected(account):
|
||||
return not account_is_connected(account)
|
||||
|
||||
def zeroconf_is_connected():
|
||||
return account_is_connected(ZEROCONF_ACC_NAME) and \
|
||||
config.get_per('accounts', ZEROCONF_ACC_NAME, 'is_zeroconf')
|
||||
|
||||
def get_number_of_securely_connected_accounts():
|
||||
'''returns the number of the accounts that are SSL/TLS connected'''
|
||||
num_of_secured = 0
|
||||
|
|
|
@ -4196,14 +4196,13 @@ class RosterWindow:
|
|||
|
||||
connected_accounts_with_private_storage = 0
|
||||
|
||||
if connected_accounts > 1: # 2 or more accounts? make submenus
|
||||
add_sub_menu = gtk.Menu()
|
||||
disco_sub_menu = gtk.Menu()
|
||||
new_chat_sub_menu = gtk.Menu()
|
||||
single_message_sub_menu = gtk.Menu()
|
||||
accounts_list = gajim.contacts.get_accounts()
|
||||
accounts_list.sort()
|
||||
|
||||
# items that get shown whether an account is zeroconf or not
|
||||
if connected_accounts > 1: # 2 or more accounts? make submenus
|
||||
new_chat_sub_menu = gtk.Menu()
|
||||
|
||||
accounts_list = gajim.contacts.get_accounts()
|
||||
accounts_list.sort()
|
||||
for account in accounts_list:
|
||||
if gajim.connections[account].connected <= 1:
|
||||
# if offline or connecting
|
||||
|
@ -4216,7 +4215,68 @@ class RosterWindow:
|
|||
new_chat_item.connect('activate',
|
||||
self.on_new_chat_menuitem_activate, account)
|
||||
|
||||
if gajim.config.get_per('accounts', account, 'is_zeroconf'):
|
||||
new_chat_menuitem.set_submenu(new_chat_sub_menu)
|
||||
new_chat_sub_menu.show_all()
|
||||
|
||||
elif connected_accounts == 1: # user has only one account
|
||||
for account in gajim.connections:
|
||||
if gajim.account_is_connected(account): # THE connected account
|
||||
# new chat
|
||||
if not self.new_chat_menuitem_handler_id:
|
||||
self.new_chat_menuitem_handler_id = new_chat_menuitem.\
|
||||
connect('activate', self.on_new_chat_menuitem_activate,
|
||||
account)
|
||||
|
||||
break
|
||||
|
||||
# menu items that don't apply to zeroconf connections
|
||||
if connected_accounts == 1 or (connected_accounts == 2 and \
|
||||
gajim.zeroconf_is_connected()):
|
||||
# only one 'real' (non-zeroconf) account is connected, don't need submenus
|
||||
|
||||
for account in accounts_list:
|
||||
if gajim.account_is_connected(account) and \
|
||||
not gajim.config.get_per('accounts', account, 'is_zeroconf'):
|
||||
# gc
|
||||
if gajim.connections[account].private_storage_supported:
|
||||
connected_accounts_with_private_storage += 1
|
||||
self.add_bookmarks_list(gc_sub_menu, account)
|
||||
gc_sub_menu.show_all()
|
||||
# add
|
||||
if not self.add_new_contact_handler_id:
|
||||
self.add_new_contact_handler_id =\
|
||||
add_new_contact_menuitem.connect(
|
||||
'activate', self.on_add_new_contact, account)
|
||||
# disco
|
||||
if not self.service_disco_handler_id:
|
||||
self.service_disco_handler_id = service_disco_menuitem.\
|
||||
connect('activate',
|
||||
self.on_service_disco_menuitem_activate, account)
|
||||
|
||||
# single message
|
||||
if not self.single_message_menuitem_handler_id:
|
||||
self.single_message_menuitem_handler_id = \
|
||||
single_message_menuitem.connect('activate', \
|
||||
self.on_send_single_message_menuitem_activate, account)
|
||||
|
||||
# new chat accel
|
||||
if not self.have_new_chat_accel:
|
||||
ag = gtk.accel_groups_from_object(self.window)[0]
|
||||
new_chat_menuitem.add_accelerator('activate', ag,
|
||||
gtk.keysyms.n, gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE)
|
||||
self.have_new_chat_accel = True
|
||||
|
||||
break # No other account connected
|
||||
else:
|
||||
# 2 or more 'real' accounts are connected, make submenus
|
||||
single_message_sub_menu = gtk.Menu()
|
||||
add_sub_menu = gtk.Menu()
|
||||
disco_sub_menu = gtk.Menu()
|
||||
|
||||
for account in accounts_list:
|
||||
if gajim.connections[account].connected <= 1 or \
|
||||
gajim.config.get_per('accounts', account, 'is_zeroconf'):
|
||||
# skip account if it's offline or connecting or is zeroconf
|
||||
continue
|
||||
|
||||
# single message
|
||||
|
@ -4246,54 +4306,13 @@ class RosterWindow:
|
|||
disco_item.connect('activate',
|
||||
self.on_service_disco_menuitem_activate, account)
|
||||
|
||||
single_message_menuitem.set_submenu(single_message_sub_menu)
|
||||
single_message_sub_menu.show_all()
|
||||
gc_sub_menu.show_all()
|
||||
add_new_contact_menuitem.set_submenu(add_sub_menu)
|
||||
add_sub_menu.show_all()
|
||||
service_disco_menuitem.set_submenu(disco_sub_menu)
|
||||
disco_sub_menu.show_all()
|
||||
new_chat_menuitem.set_submenu(new_chat_sub_menu)
|
||||
new_chat_sub_menu.show_all()
|
||||
single_message_menuitem.set_submenu(single_message_sub_menu)
|
||||
single_message_sub_menu.show_all()
|
||||
gc_sub_menu.show_all()
|
||||
|
||||
elif connected_accounts == 1: # user has only one account
|
||||
for account in gajim.connections:
|
||||
if gajim.account_is_connected(account): # THE connected account
|
||||
# gc
|
||||
if gajim.connections[account].private_storage_supported:
|
||||
connected_accounts_with_private_storage += 1
|
||||
self.add_bookmarks_list(gc_sub_menu, account)
|
||||
gc_sub_menu.show_all()
|
||||
# add
|
||||
if not self.add_new_contact_handler_id:
|
||||
self.add_new_contact_handler_id =\
|
||||
add_new_contact_menuitem.connect(
|
||||
'activate', self.on_add_new_contact, account)
|
||||
# disco
|
||||
if not self.service_disco_handler_id:
|
||||
self.service_disco_handler_id = service_disco_menuitem.\
|
||||
connect('activate',
|
||||
self.on_service_disco_menuitem_activate, account)
|
||||
# new chat
|
||||
if not self.new_chat_menuitem_handler_id:
|
||||
self.new_chat_menuitem_handler_id = new_chat_menuitem.\
|
||||
connect('activate', self.on_new_chat_menuitem_activate,
|
||||
account)
|
||||
|
||||
# single message
|
||||
if not self.single_message_menuitem_handler_id:
|
||||
self.single_message_menuitem_handler_id = \
|
||||
single_message_menuitem.connect('activate', \
|
||||
self.on_send_single_message_menuitem_activate, account)
|
||||
|
||||
# new chat accel
|
||||
if not self.have_new_chat_accel:
|
||||
ag = gtk.accel_groups_from_object(self.window)[0]
|
||||
new_chat_menuitem.add_accelerator('activate', ag,
|
||||
gtk.keysyms.n, gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE)
|
||||
self.have_new_chat_accel = True
|
||||
|
||||
break # No other account connected
|
||||
|
||||
if connected_accounts == 0:
|
||||
# no connected accounts, make the menuitems insensitive
|
||||
|
|
Loading…
Reference in New Issue