ability to block all contacts (from privacy list editor). Fixes

This commit is contained in:
Yann Leboulanger 2009-02-20 10:15:16 +00:00
parent d6095b6bab
commit 5834a2ae82
5 changed files with 28 additions and 16 deletions

View file

@ -154,6 +154,7 @@ class Connection(ConnectionHandlers):
self.blocked_list = []
self.blocked_contacts = []
self.blocked_groups = []
self.blocked_all = False
self.music_track_info = 0
self.pep_supported = False
self.mood = {}

View file

@ -1287,4 +1287,12 @@ def update_optional_features(account = None):
gajim.connections[a].change_status(gajim.SHOW_LIST[connected],
gajim.connections[a].status)
def jid_is_blocked(account, jid):
return ((jid in gajim.connections[account].blocked_contacts) or \
gajim.connections[account].blocked_all)
def group_is_blocked(account, group):
return ((group in gajim.connections[account].blocked_groups) or \
gajim.connections[account].blocked_all)
# vim: se ts=3:

View file

@ -1948,7 +1948,7 @@ class Interface:
self.instances[account]['privacy_lists'].privacy_lists_received(data)
def handle_event_privacy_list_received(self, account, data):
# ('PRIVACY_LISTS_RECEIVED', account, (name, rules))
# ('PRIVACY_LIST_RECEIVED', account, (name, rules))
if account not in self.instances:
return
name = data[0]
@ -1960,10 +1960,13 @@ class Interface:
gajim.connections[account].blocked_contacts = []
gajim.connections[account].blocked_groups = []
gajim.connections[account].blocked_list = []
gajim.connections[account].blocked_all = False
for rule in rules:
if rule['type'] == 'jid' and rule['action'] == 'deny':
if not 'type' in rule:
gajim.connections[account].blocked_all = True
elif rule['type'] == 'jid' and rule['action'] == 'deny':
gajim.connections[account].blocked_contacts.append(rule['value'])
if rule['type'] == 'group' and rule['action'] == 'deny':
elif rule['type'] == 'group' and rule['action'] == 'deny':
gajim.connections[account].blocked_groups.append(rule['value'])
gajim.connections[account].blocked_list.append(rule)
#elif rule['type'] == "group" and action == "deny":

View file

@ -1017,7 +1017,7 @@ class RosterWindow:
else:
accounts = [account]
text = gobject.markup_escape_text(group)
if group in gajim.connections[account].blocked_groups:
if helpers.group_is_blocked(account, group):
text = '<span strikethrough="true">%s</span>' % text
if gajim.config.get('show_contacts_number'):
nbr_on, nbr_total = gajim.contacts.get_nb_online_total_contacts(
@ -1070,11 +1070,11 @@ class RosterWindow:
# Strike name if blocked
strike = False
if jid in gajim.connections[account].blocked_contacts:
if helpers.jid_is_blocked(account, jid):
strike = True
else:
for group in contact.get_shown_groups():
if group in gajim.connections[account].blocked_groups:
if helpers.group_is_blocked(account, group):
strike = True
break
if strike:
@ -5109,7 +5109,7 @@ class RosterWindow:
send_custom_status_menuitem = gtk.ImageMenuItem(
_('Send Cus_tom Status'))
# add a special img for this menuitem
if group in gajim.connections[account].blocked_groups:
if helpers.group_is_blocked(account, group):
send_custom_status_menuitem.set_image(gtkgui_helpers.load_icon(
'offline'))
send_custom_status_menuitem.set_sensitive(False)
@ -5157,10 +5157,10 @@ class RosterWindow:
is_blocked = False
if self.regroup:
for g_account in gajim.connections:
if group in gajim.connections[g_account].blocked_groups:
if helpers.group_is_blocked(g_account, group):
is_blocked = True
else:
if group in gajim.connections[account].blocked_groups:
if helpers.group_is_blocked(account, group):
is_blocked = True
if is_blocked and gajim.connections[account].privacy_rules_supported:
@ -5366,11 +5366,11 @@ class RosterWindow:
# send custom status icon
blocked = False
if jid in gajim.connections[account].blocked_contacts:
if helpers.jid_is_blocked(account, jid):
blocked = True
else:
for group in contact.get_shown_groups():
if group in gajim.connections[account].blocked_groups:
if helpers.group_is_blocked(account, group):
blocked = True
break
if gajim.get_transport_name_from_jid(jid, use_config_setting=False):
@ -5535,7 +5535,7 @@ class RosterWindow:
if gajim.connections[account] and gajim.connections[account].\
privacy_rules_supported:
if jid in gajim.connections[account].blocked_contacts:
if helpers.jid_is_blocked(account, jid):
block_menuitem.set_no_show_all(True)
block_menuitem.hide()
if gajim.get_transport_name_from_jid(jid, use_config_setting=False):
@ -5589,7 +5589,7 @@ class RosterWindow:
privacy_rules_supported = False
contact = gajim.contacts.get_contact_with_highest_priority(account,
jid)
if jid not in gajim.connections[account].blocked_contacts:
if helpers.jid_is_blocked(account, jid):
is_blocked = False
list_.append((contact, account))
@ -5691,7 +5691,7 @@ class RosterWindow:
menu.append(item)
blocked = False
if jid in gajim.connections[account].blocked_contacts:
if helpers.jid_is_blocked(account, jid):
blocked = True
# Send Custom Status

View file

@ -427,8 +427,8 @@ class RosterTooltip(NotificationAreaTooltip):
name_markup = u'<span weight="bold">' + \
gobject.markup_escape_text(prim_contact.get_shown_name())\
+ '</span>'
if self.account and prim_contact.jid in gajim.connections[
self.account].blocked_contacts:
if self.account and helpers.jid_is_blocked(self.account,
prim_contact.jid):
name_markup += _(' [blocked]')
if self.account and \
self.account in gajim.interface.minimized_controls and \