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 self.available_transports = {} # list of available transports on this
# server {'icq': ['icq.server.com', 'icq2.server.com'], } # server {'icq': ['icq.server.com', 'icq2.server.com'], }
self.vcard_supported = True self.vcard_supported = True
self.metacontacts_supported = True self.private_storage_supported = True
# END __init__ # END __init__
def put_event(self, ev): def put_event(self, ev):

View File

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

View File

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

View File

@ -1289,6 +1289,9 @@ class JoinGroupchatWindow:
if len(self._empty_required_widgets): if len(self._empty_required_widgets):
self.xml.get_widget('join_button').set_sensitive(False) 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() self.window.show_all()
def on_join_groupchat_window_destroy(self, widget): def on_join_groupchat_window_destroy(self, widget):

View File

@ -221,10 +221,10 @@ class GroupchatControl(ChatControlBase):
# connect the menuitems to their respective functions # connect the menuitems to their respective functions
xm = gtkgui_helpers.get_glade('gc_control_popup_menu.glade') xm = gtkgui_helpers.get_glade('gc_control_popup_menu.glade')
widget = xm.get_widget('bookmark_room_menuitem') self.bookmark_room_menuitem = xm.get_widget('bookmark_room_menuitem')
id = widget.connect('activate', id = self.bookmark_room_menuitem.connect('activate',
self._on_bookmark_room_menuitem_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') self.change_nick_menuitem = xm.get_widget('change_nick_menuitem')
id = self.change_nick_menuitem.connect('activate', 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, if self.contact.jid in gajim.config.get_per('accounts', self.account,
'minimized_gc').split(' '): 'minimized_gc').split(' '):
self.minimize_menuitem.set_active(True) 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]: if gajim.gc_connected[self.account][self.room_jid]:
c = gajim.contacts.get_gc_contact(self.account, self.room_jid, c = gajim.contacts.get_gc_contact(self.account, self.room_jid,
self.nick) self.nick)

View File

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