diff --git a/data/glade/privacy_list_window.glade b/data/glade/privacy_list_window.glade
index d2d527c76..78704da07 100644
--- a/data/glade/privacy_list_window.glade
+++ b/data/glade/privacy_list_window.glade
@@ -165,6 +165,7 @@
True
+ False
5
@@ -422,6 +423,19 @@ to
3
+
+
+ True
+ True
+ All (including subscription)
+ 0
+ True
+
+
+
+ 4
+
+
2
diff --git a/src/dialogs.py b/src/dialogs.py
index fd60111b8..61447bdab 100644
--- a/src/dialogs.py
+++ b/src/dialogs.py
@@ -3066,20 +3066,20 @@ class PrivacyListWindow:
# Add Widgets
for widget_to_add in ('title_hbox', 'privacy_lists_title_label',
- 'list_of_rules_label', 'add_edit_rule_label', 'delete_open_buttons_hbox',
- 'privacy_list_active_checkbutton', 'privacy_list_default_checkbutton',
- 'list_of_rules_combobox', 'delete_open_buttons_hbox',
- 'delete_rule_button', 'open_rule_button', 'edit_allow_radiobutton',
- 'edit_deny_radiobutton', 'edit_type_jabberid_radiobutton',
- 'edit_type_jabberid_entry', 'edit_type_group_radiobutton',
- 'edit_type_group_combobox', 'edit_type_subscription_radiobutton',
- 'edit_type_subscription_combobox', 'edit_type_select_all_radiobutton',
- 'edit_queries_send_checkbutton', 'edit_send_messages_checkbutton',
- 'edit_view_status_checkbutton', 'edit_order_spinbutton',
- 'new_rule_button', 'save_rule_button', 'privacy_list_refresh_button',
- 'privacy_list_close_button', 'edit_send_status_checkbutton',
- 'add_edit_vbox', 'privacy_list_active_checkbutton',
- 'privacy_list_default_checkbutton'):
+ 'list_of_rules_label', 'add_edit_rule_label', 'delete_open_buttons_hbox',
+ 'privacy_list_active_checkbutton', 'privacy_list_default_checkbutton',
+ 'list_of_rules_combobox', 'delete_open_buttons_hbox',
+ 'delete_rule_button', 'open_rule_button', 'edit_allow_radiobutton',
+ 'edit_deny_radiobutton', 'edit_type_jabberid_radiobutton',
+ 'edit_type_jabberid_entry', 'edit_type_group_radiobutton',
+ 'edit_type_group_combobox', 'edit_type_subscription_radiobutton',
+ 'edit_type_subscription_combobox', 'edit_type_select_all_radiobutton',
+ 'edit_queries_send_checkbutton', 'edit_send_messages_checkbutton',
+ 'edit_view_status_checkbutton', 'edit_all_checkbutton',
+ 'edit_order_spinbutton', 'new_rule_button', 'save_rule_button',
+ 'privacy_list_refresh_button', 'privacy_list_close_button',
+ 'edit_send_status_checkbutton', 'add_edit_vbox',
+ 'privacy_list_active_checkbutton', 'privacy_list_default_checkbutton'):
self.__dict__[widget_to_add] = self.xml.get_widget(widget_to_add)
self.privacy_lists_title_label.set_label(
@@ -3144,12 +3144,12 @@ class PrivacyListWindow:
for rule in rules:
if 'type' in rule:
text_item = _('Order: %(order)s, action: %(action)s, type: %(type)s'
- ', value: %(value)s') % {'order': rule['order'],
- 'action': rule['action'], 'type': rule['type'],
- 'value': rule['value']}
+ ', value: %(value)s') % {'order': rule['order'],
+ 'action': rule['action'], 'type': rule['type'],
+ 'value': rule['value']}
else:
text_item = _('Order: %(order)s, action: %(action)s') % \
- {'order': rule['order'], 'action': rule['action']}
+ {'order': rule['order'], 'action': rule['action']}
self.global_rules[text_item] = rule
self.list_of_rules_combobox.append_text(text_item)
if len(rules) == 0:
@@ -3230,14 +3230,17 @@ class PrivacyListWindow:
self.edit_queries_send_checkbutton.set_active(False)
self.edit_view_status_checkbutton.set_active(False)
self.edit_send_status_checkbutton.set_active(False)
- for child in rule_info['child']:
- if child == 'presence-out':
+ self.edit_all_checkbutton.set_active(False)
+ if not rule_info['child']:
+ self.edit_all_checkbutton.set_active(True)
+ else:
+ if 'presence-out' in rule_info['child']:
self.edit_send_status_checkbutton.set_active(True)
- elif child == 'presence-in':
+ if 'presence-in' in rule_info['child']:
self.edit_view_status_checkbutton.set_active(True)
- elif child == 'iq':
+ if 'iq' in rule_info['child']:
self.edit_queries_send_checkbutton.set_active(True)
- elif child == 'message':
+ if 'message' in rule_info['child']:
self.edit_send_messages_checkbutton.set_active(True)
if rule_info['action'] == 'allow':
@@ -3246,6 +3249,26 @@ class PrivacyListWindow:
self.edit_deny_radiobutton.set_active(True)
self.add_edit_vbox.show()
+ def on_edit_all_checkbutton_toggled(self, widget):
+ if widget.get_active():
+ self.edit_send_messages_checkbutton.set_active(True)
+ self.edit_queries_send_checkbutton.set_active(True)
+ self.edit_view_status_checkbutton.set_active(True)
+ self.edit_send_status_checkbutton.set_active(True)
+ self.edit_send_messages_checkbutton.set_sensitive(False)
+ self.edit_queries_send_checkbutton.set_sensitive(False)
+ self.edit_view_status_checkbutton.set_sensitive(False)
+ self.edit_send_status_checkbutton.set_sensitive(False)
+ else:
+ self.edit_send_messages_checkbutton.set_active(False)
+ self.edit_queries_send_checkbutton.set_active(False)
+ self.edit_view_status_checkbutton.set_active(False)
+ self.edit_send_status_checkbutton.set_active(False)
+ self.edit_send_messages_checkbutton.set_sensitive(True)
+ self.edit_queries_send_checkbutton.set_sensitive(True)
+ self.edit_view_status_checkbutton.set_sensitive(True)
+ self.edit_send_status_checkbutton.set_sensitive(True)
+
def on_privacy_list_active_checkbutton_toggled(self, widget):
if widget.get_active():
gajim.connections[self.account].set_active_list(
@@ -3273,6 +3296,7 @@ class PrivacyListWindow:
self.edit_queries_send_checkbutton.set_active(False)
self.edit_view_status_checkbutton.set_active(False)
self.edit_send_status_checkbutton.set_active(False)
+ self.edit_all_checkbutton.set_active(False)
self.edit_order_spinbutton.set_value(1)
self.edit_type_group_combobox.set_active(0)
self.edit_type_subscription_combobox.set_active(0)
@@ -3299,14 +3323,15 @@ class PrivacyListWindow:
else:
edit_deny = 'deny'
child = []
- if self.edit_send_messages_checkbutton.get_active():
- child.append('message')
- if self.edit_queries_send_checkbutton.get_active():
- child.append('iq')
- if self.edit_send_status_checkbutton.get_active():
- child.append('presence-out')
- if self.edit_view_status_checkbutton.get_active():
- child.append('presence-in')
+ if not self.edit_all_checkbutton.get_active():
+ if self.edit_send_messages_checkbutton.get_active():
+ child.append('message')
+ if self.edit_queries_send_checkbutton.get_active():
+ child.append('iq')
+ if self.edit_send_status_checkbutton.get_active():
+ child.append('presence-out')
+ if self.edit_view_status_checkbutton.get_active():
+ child.append('presence-in')
if edit_type != '':
return {'order': edit_order, 'action': edit_deny,
'type': edit_type, 'value': edit_value, 'child': child}