don't allow to bookmark a room on server that don't support private storage.

This commit is contained in:
Yann Leboulanger 2007-08-19 15:32:41 +00:00
parent 45046024aa
commit 176593db97
6 changed files with 34 additions and 21 deletions

View File

@ -151,7 +151,7 @@ class Connection(ConnectionHandlers):
self.available_transports = {} # list of available transports on this
# server {'icq': ['icq.server.com', 'icq2.server.com'], }
self.vcard_supported = True
self.metacontacts_supported = True
self.private_storage_supported = True
# END __init__
def put_event(self, ev):

View File

@ -1072,7 +1072,7 @@ class ConnectionVcard:
meta_list[tag] = [data]
self.dispatch('METACONTACTS', meta_list)
else:
self.metacontacts_supported = False
self.private_storage_supported = False
# We can now continue connection by requesting the roster
self.connection.initRoster()
elif self.awaiting_answers[id][0] == PRIVACY_ARRIVED:
@ -1286,7 +1286,7 @@ class ConnectionHandlers(ConnectionVcard, ConnectionBytestream, ConnectionDisco,
if storage_tag:
ns = storage_tag.getNamespace()
if ns == 'storage:metacontacts':
self.metacontacts_supported = False
self.private_storage_supported = False
# Private XML Storage (XEP49) is not supported by server
# Continue connecting
self.connection.initRoster()

View File

@ -2676,6 +2676,8 @@ class ManageBookmarksWindow:
continue
if gajim.connections[account].is_zeroconf:
continue
if not gajim.connections[account].private_storage_supported:
continue
iter = self.treestore.append(None, [None, account, None, None,
None, None, None, None])

View File

@ -1289,6 +1289,9 @@ class JoinGroupchatWindow:
if len(self._empty_required_widgets):
self.xml.get_widget('join_button').set_sensitive(False)
if not gajim.connections[account].private_storage_supported:
self.xml.get_widget('auto_join_checkbutton').set_sensitive(False)
self.window.show_all()
def on_join_groupchat_window_destroy(self, widget):

View File

@ -221,10 +221,10 @@ class GroupchatControl(ChatControlBase):
# connect the menuitems to their respective functions
xm = gtkgui_helpers.get_glade('gc_control_popup_menu.glade')
widget = xm.get_widget('bookmark_room_menuitem')
id = widget.connect('activate',
self.bookmark_room_menuitem = xm.get_widget('bookmark_room_menuitem')
id = self.bookmark_room_menuitem.connect('activate',
self._on_bookmark_room_menuitem_activate)
self.handlers[id] = widget
self.handlers[id] = self.bookmark_room_menuitem
self.change_nick_menuitem = xm.get_widget('change_nick_menuitem')
id = self.change_nick_menuitem.connect('activate',
@ -494,6 +494,8 @@ class GroupchatControl(ChatControlBase):
if self.contact.jid in gajim.config.get_per('accounts', self.account,
'minimized_gc').split(' '):
self.minimize_menuitem.set_active(True)
if not gajim.connections[self.account].private_storage_supported:
self.bookmark_room_menuitem.set_sensitive(False)
if gajim.gc_connected[self.account][self.room_jid]:
c = gajim.contacts.get_gc_contact(self.account, self.room_jid,
self.nick)

View File

@ -970,6 +970,9 @@ class RosterWindow:
join_gc_menuitem.set_submenu(gc_sub_menu)
connected_accounts = gajim.get_number_of_connected_accounts()
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()
@ -993,15 +996,14 @@ class RosterWindow:
continue
# join gc
if gajim.connections[account].private_storage_supported:
connected_accounts_with_private_storage += 1
gc_item = gtk.MenuItem(_('using account %s') % account, False)
gc_sub_menu.append(gc_item)
gc_menuitem_menu = gtk.Menu()
self.add_bookmarks_list(gc_menuitem_menu, account)
gc_item.set_submenu(gc_menuitem_menu)
# the 'manage gc bookmarks' item is shown
# below to avoid duplicate code
# add
add_item = gtk.MenuItem(_('to %s account') % account, False)
add_sub_menu.append(add_item)
@ -1013,7 +1015,6 @@ class RosterWindow:
disco_item.connect('activate',
self.on_service_disco_menuitem_activate, account)
add_new_contact_menuitem.set_submenu(add_sub_menu)
add_sub_menu.show_all()
service_disco_menuitem.set_submenu(disco_sub_menu)
@ -1026,7 +1027,10 @@ class RosterWindow:
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 =\
@ -1070,10 +1074,21 @@ class RosterWindow:
add_new_contact_menuitem, service_disco_menuitem]:
item.set_sensitive(False)
if connected_accounts_with_private_storage > 0:
# At least one account with private storage support
# show the 'manage gc bookmarks' item
newitem = gtk.SeparatorMenuItem() # separator
gc_sub_menu.append(newitem)
newitem = gtk.ImageMenuItem(_('_Manage Bookmarks...'))
img = gtk.image_new_from_stock(gtk.STOCK_PREFERENCES,
gtk.ICON_SIZE_MENU)
newitem.set_image(img)
newitem.connect('activate',
self.on_manage_bookmarks_menuitem_activate)
gc_sub_menu.append(newitem)
gc_sub_menu.show_all()
connected_accounts_with_vcard = []
for account in gajim.connections:
if gajim.account_is_connected(account) and \
@ -1104,15 +1119,6 @@ class RosterWindow:
else:
profile_avatar_menuitem.set_sensitive(True)
newitem = gtk.ImageMenuItem(_('_Manage Bookmarks...'))
img = gtk.image_new_from_stock(gtk.STOCK_PREFERENCES,
gtk.ICON_SIZE_MENU)
newitem.set_image(img)
newitem.connect('activate',
self.on_manage_bookmarks_menuitem_activate)
gc_sub_menu.append(newitem)
gc_sub_menu.show_all()
# Advanced Actions
if len(gajim.connections) == 0: # user has no accounts
advanced_menuitem.set_sensitive(False)
@ -4691,8 +4697,8 @@ class RosterWindow:
def on_drop_in_contact(self, widget, account_source, c_source, account_dest,
c_dest, was_big_brother, context, etime):
if not gajim.connections[account_source].metacontacts_supported or not \
gajim.connections[account_dest].metacontacts_supported:
if not gajim.connections[account_source].private_storage_supported or not\
gajim.connections[account_dest].private_storage_supported:
dialogs.WarningDialog(_('Metacontacts storage not supported by your '
'server'),
_('Your server does not support storing metacontacts information. '