diff --git a/src/net/java/sip/communicator/impl/protocol/icq/ContactGroupIcqImpl.java b/src/net/java/sip/communicator/impl/protocol/icq/ContactGroupIcqImpl.java index b428763db..faee22f82 100644 --- a/src/net/java/sip/communicator/impl/protocol/icq/ContactGroupIcqImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/icq/ContactGroupIcqImpl.java @@ -58,6 +58,11 @@ public class ContactGroupIcqImpl private ServerStoredContactListIcqImpl ssclCallback = null; + /** + * Whether current group is persistent. + */ + private boolean isPersistent; + /** * Creates an ICQ group using the specified joustSimGroup as * a source. The newly created group will always return the name of the @@ -81,10 +86,12 @@ public class ContactGroupIcqImpl ContactGroupIcqImpl(MutableGroup joustSimGroup, Iterable groupMembers, ServerStoredContactListIcqImpl ssclCallback, - boolean isResolved) + boolean isResolved, + boolean isPersistent) { this.joustSimSourceGroup = joustSimGroup; this.isResolved = isResolved; + this.isPersistent = isPersistent; this.ssclCallback = ssclCallback; //store a copy of the name now so that we can detect changes in the @@ -420,7 +427,7 @@ String getNameCopy() */ public boolean isPersistent() { - return !(joustSimSourceGroup instanceof VolatileGroup); + return isPersistent; } /** @@ -459,6 +466,7 @@ public boolean isResolved() void setResolved(boolean resolved) { this.isResolved = resolved; + this.isPersistent = true; } /** diff --git a/src/net/java/sip/communicator/impl/protocol/icq/ServerStoredContactListIcqImpl.java b/src/net/java/sip/communicator/impl/protocol/icq/ServerStoredContactListIcqImpl.java index 2d63c2106..f55fb93c6 100644 --- a/src/net/java/sip/communicator/impl/protocol/icq/ServerStoredContactListIcqImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/icq/ServerStoredContactListIcqImpl.java @@ -511,7 +511,7 @@ ContactIcqImpl createVolatileContact(Screenname screenname) { List emptyBuddies = new LinkedList(); theVolatileGroup = new ContactGroupIcqImpl( - new VolatileGroup(), emptyBuddies, this, false); + new VolatileGroup(), emptyBuddies, this, false, false); theVolatileGroup.addContact(newVolatileContact); this.rootGroup.addSubGroup(theVolatileGroup); @@ -575,7 +575,7 @@ ContactGroupIcqImpl createUnresolvedContactGroup(String groupName) //First create the new volatile contact; List emptyBuddies = new LinkedList(); ContactGroupIcqImpl newUnresolvedGroup = new ContactGroupIcqImpl( - new VolatileGroup(groupName), emptyBuddies, this, false); + new VolatileGroup(groupName), emptyBuddies, this, false, true); this.rootGroup.addSubGroup(newUnresolvedGroup); @@ -816,7 +816,7 @@ public void groupAdded(BuddyList list, newGroup = new ContactGroupIcqImpl( (MutableGroup) group , buddies - , ServerStoredContactListIcqImpl.this, true); + , ServerStoredContactListIcqImpl.this, true, true); //this is the first group so insert at 0. rootGroup.addSubGroup(newGroup); diff --git a/src/net/java/sip/communicator/impl/protocol/msn/ContactGroupMsnImpl.java b/src/net/java/sip/communicator/impl/protocol/msn/ContactGroupMsnImpl.java index 41122142c..519d1d58f 100644 --- a/src/net/java/sip/communicator/impl/protocol/msn/ContactGroupMsnImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/msn/ContactGroupMsnImpl.java @@ -56,6 +56,11 @@ public class ContactGroupMsnImpl private final ServerStoredContactListMsnImpl ssclCallback; + /** + * Whether this group is persistent. + */ + private boolean isPersistent; + /** * Creates an Msn group using the specified RosterGroup as * a source. The newly created group will always return the name of the @@ -75,10 +80,12 @@ public class ContactGroupMsnImpl ContactGroupMsnImpl(MsnGroup msnGroup, MsnContact[] groupMembers, ServerStoredContactListMsnImpl ssclCallback, - boolean isResolved) + boolean isResolved, + boolean isPersistent) { this.msnGroup = msnGroup; this.isResolved = isResolved; + this.isPersistent = isPersistent; this.ssclCallback = ssclCallback; for (MsnContact groupMember : groupMembers) @@ -320,7 +327,7 @@ ContactMsnImpl findContact(String id) */ public boolean isPersistent() { - return !(msnGroup instanceof VolatileGroup); + return isPersistent; } /** @@ -359,6 +366,7 @@ void setResolved(MsnGroup msnGroup) return; this.isResolved = true; + this.isPersistent = true; this.msnGroup = msnGroup; diff --git a/src/net/java/sip/communicator/impl/protocol/msn/ServerStoredContactListMsnImpl.java b/src/net/java/sip/communicator/impl/protocol/msn/ServerStoredContactListMsnImpl.java index 8987e3a97..59fe6f2ed 100644 --- a/src/net/java/sip/communicator/impl/protocol/msn/ServerStoredContactListMsnImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/msn/ServerStoredContactListMsnImpl.java @@ -454,7 +454,7 @@ ContactMsnImpl createVolatileContact( MsnContact[] emptyBuddies = new MsnContact[]{}; theVolatileGroup = new ContactGroupMsnImpl( - new VolatileGroup(), emptyBuddies, this, false); + new VolatileGroup(), emptyBuddies, this, false, false); theVolatileGroup.addContact(newVolatileContact); this.rootGroup.addSubGroup(theVolatileGroup); @@ -521,7 +521,7 @@ ContactGroupMsnImpl createUnresolvedContactGroup(String groupName) //First create the new volatile contact; MsnContact[] emptyBuddies = new MsnContact[]{}; ContactGroupMsnImpl newUnresolvedGroup = new ContactGroupMsnImpl( - new VolatileGroup(groupName), emptyBuddies, this, false); + new VolatileGroup(groupName), emptyBuddies, this, false, true); this.rootGroup.addSubGroup(newUnresolvedGroup); @@ -627,7 +627,7 @@ void removeContact(ContactMsnImpl contactToRemove) */ public void renameGroup(ContactGroupMsnImpl groupToRename, String newName) { - printList(); + //printList(); msnProvider.getMessenger(). renameGroup(groupToRename.getSourceGroup().getGroupId(), newName); } @@ -892,6 +892,7 @@ public void contactListInitCompleted(MsnMessenger messenger) item, item.getContacts(), ServerStoredContactListMsnImpl.this, + true, true); rootGroup.addSubGroup(newGroup); @@ -1094,6 +1095,7 @@ public void groupAddCompleted(MsnMessenger messenger, MsnGroup group) new ContactGroupMsnImpl(group, new MsnContact[]{}, ServerStoredContactListMsnImpl.this, + true, true); rootGroup.addSubGroup(newGroup);