From 66a4f406fab1a00dd37b90689ba7678154684ebf Mon Sep 17 00:00:00 2001
From: Yann Leboulanger <asterix@lagaule.org>
Date: Thu, 30 Mar 2006 21:25:38 +0000
Subject: [PATCH] Observersa in also a special group than can't be renamed /
 can't reveive contacts with DND

---
 src/common/gajim.py  |  1 +
 src/dialogs.py       |  4 ++--
 src/roster_window.py | 15 +++++++--------
 3 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/src/common/gajim.py b/src/common/gajim.py
index 8edf75198d..a61b95de8b 100644
--- a/src/common/gajim.py
+++ b/src/common/gajim.py
@@ -122,6 +122,7 @@ status_before_autoaway = {}
 
 SHOW_LIST = ['offline', 'connecting', 'online', 'chat', 'away', 'xa', 'dnd',
 	'invisible']
+special_groups = (_('Transports'), _('Not in Roster'), _('Observers'))
 
 def get_nick_from_jid(jid):
 	pos = jid.find('@')
diff --git a/src/dialogs.py b/src/dialogs.py
index e67de52082..cef186bf3c 100644
--- a/src/dialogs.py
+++ b/src/dialogs.py
@@ -158,7 +158,7 @@ class EditGroupsDialog:
 		store = gtk.ListStore(str, bool)
 		self.list.set_model(store)
 		for g in gajim.groups[self.account].keys():
-			if g in (_('Transports'), _('Not in Roster')):
+			if g in gajim.special_groups:
 				continue
 			iter = store.append()
 			store.set(iter, 0, g)
@@ -416,7 +416,7 @@ _('Please fill in the data of the contact you want to add in account %s') %accou
 		liststore = gtk.ListStore(str)
 		self.group_comboboxentry.set_model(liststore)
 		for g in gajim.groups[account].keys():
-			if g != _('Not in Roster') and g != _('Transports'):
+			if g not in gajim.special_groups:
 				self.group_comboboxentry.append_text(g)
 
 		if not jid_agents:
diff --git a/src/roster_window.py b/src/roster_window.py
index 96be340ed2..a09eecc03f 100644
--- a/src/roster_window.py
+++ b/src/roster_window.py
@@ -2523,11 +2523,10 @@ _('If "%s" accepts this request you will know his or her status.') % jid)
 		elif type == 'group':
 			# in C_JID column, we hold the group name (which is not escaped)
 			old_name = model[iter][C_JID].decode('utf-8')
-			# Groups may not change name from or to 'Not in Roster' nor Transports
-			if _('Not in Roster') in (new_text, old_name):
-				return
-			if _('Transports') in (new_text, old_name):
-				return
+			# Groups may not change name from or to a special groups
+			for g in gajim.special_groups:
+				if g in (new_text, old_name):
+					return
 			# get all contacts in that group
 			for jid in gajim.contacts.get_jid_list(account):
 				contact = gajim.contacts.get_contact_with_highest_priority(account,
@@ -2991,7 +2990,7 @@ _('If "%s" accepts this request you will know his or her status.') % jid)
 			it = model.iter_parent(it)
 		iter_group_source = it
 		grp_source = model[it][C_JID].decode('utf-8')
-		if grp_source == _('Transports') or grp_source == _('Not in Roster'):
+		if grp_source in gajim.special_groups:
 			return
 		jid_source = data.decode('utf-8')
 		c_source = gajim.contacts.get_contact_with_highest_priority(account,
@@ -2999,7 +2998,7 @@ _('If "%s" accepts this request you will know his or her status.') % jid)
 		# Get destination group
 		if type_dest == 'group':
 			grp_dest = model[iter_dest][C_JID].decode('utf-8')
-			if grp_dest == _('Transports') or grp_dest == _('Not in Roster'):
+			if grp_dest in gajim.special_groups:
 				return
 			if context.action == gtk.gdk.ACTION_COPY:
 				self.on_drop_in_group(None, account, c_source, grp_dest, context,
@@ -3013,7 +3012,7 @@ _('If "%s" accepts this request you will know his or her status.') % jid)
 			while model[it][C_TYPE] != 'group':
 				it = model.iter_parent(it)
 			grp_dest = model[it][C_JID].decode('utf-8')
-		if grp_dest == _('Transports') or grp_dest == _('Not in Roster'):
+		if grp_dest in gajim.special_groups:
 			return
 		if jid_source == jid_dest:
 			if grp_source == grp_dest:
-- 
GitLab