Fixes contact list issue with duplicated contacts.

cusax-fix
hristoterezov 12 years ago
parent 79214016b4
commit dfac8a056e

@ -311,20 +311,36 @@ private void addMatching( MetaContactGroup metaGroup,
UIContact newUIContact;
synchronized (metaContact)
{
newUIContact = MetaContactListSource
.createUIContact(metaContact);
}
newUIContact
= MetaContactListSource.getUIContact(metaContact);
GuiActivator.getContactList().addContact(
newUIContact,
uiGroup,
true,
true);
if (newUIContact == null)
{
newUIContact = MetaContactListSource
.createUIContact(metaContact);
GuiActivator.getContactList().addContact(
newUIContact,
uiGroup,
true,
true);
}
}
query.setInitialResultCount(resultCount);
}
else
query.fireQueryEvent(metaContact);
{
synchronized (metaContact)
{
if (MetaContactListSource.getUIContact(metaContact)
== null)
{
query.fireQueryEvent(metaContact);
}
}
}
}
}

@ -569,24 +569,34 @@ private void createMetaUIRootGroup()
{
MetaContactGroup rootGroup
= GuiActivator.getContactListService().getRoot();
UIGroup uiGroup = MetaContactListSource
.getUIGroup(rootGroup);
UIGroup uiGroup;
synchronized (rootGroup)
{
uiGroup = MetaContactListSource
.getUIGroup(rootGroup);
if (uiGroup != null)
return;
if (uiGroup != null)
return;
uiGroup = MetaContactListSource
.createUIGroup(rootGroup);
uiGroup = MetaContactListSource
.createUIGroup(rootGroup);
}
treeModel.getRoot().sortedAddContactGroup((UIGroupImpl)uiGroup);
Iterator<MetaContact> i = rootGroup.getChildContacts();
while (i.hasNext())
{
MetaContact contact = i.next();
UIContact uiContact = MetaContactListSource.getUIContact(contact);
removeContact(uiContact);
uiContact = MetaContactListSource.createUIContact(contact);
UIContact uiContact;
synchronized (contact)
{
uiContact
= MetaContactListSource.getUIContact(contact);
if(uiContact == null)
continue;
removeContact(uiContact);
uiContact = MetaContactListSource.createUIContact(contact);
}
if (currentFilter.isMatching(uiContact))
addContact(uiContact, uiGroup, true, true);
else
@ -602,11 +612,15 @@ private void removeMetaUIRootGroup()
MetaContactGroup rootGroup
= GuiActivator.getContactListService().getRoot();
UIGroup uiGroup = MetaContactListSource
.getUIGroup(rootGroup);
UIGroup uiGroup;
synchronized (rootGroup)
{
uiGroup = MetaContactListSource
.getUIGroup(rootGroup);
if (uiGroup == null)
return;
if (uiGroup == null)
return;
}
GroupNode parentNode = treeModel.getRoot();
@ -614,10 +628,16 @@ private void removeMetaUIRootGroup()
while (i.hasNext())
{
MetaContact contact = i.next();
UIContact uiContact
= MetaContactListSource.getUIContact(contact);
removeContact(uiContact);
uiContact = MetaContactListSource.createUIContact(contact);
UIContact uiContact;
synchronized (contact)
{
uiContact
= MetaContactListSource.getUIContact(contact);
if(uiContact == null)
continue;
removeContact(uiContact);
uiContact = MetaContactListSource.createUIContact(contact);
}
if (currentFilter.isMatching(uiContact))
addContact(uiContact, treeModel.getRoot().getGroupDescriptor(),
true, true);

@ -258,22 +258,40 @@ public void queryMetaContactSource(Pattern filterPattern,
}
UIContact newUIContact;
boolean uiContactCreated = false;
synchronized (metaContact)
{
newUIContact
= MetaContactListSource.createUIContact(metaContact);
newUIContact
= MetaContactListSource.getUIContact(metaContact);
if (newUIContact == null)
{
newUIContact
= MetaContactListSource
.createUIContact(metaContact);
GuiActivator.getContactList().addContact(
newUIContact,
uiGroup,
true,
true);
}
}
GuiActivator.getContactList().addContact(
newUIContact,
uiGroup,
true,
true);
query.setInitialResultCount(resultCount);
}
else
query.fireQueryEvent(metaContact);
{
synchronized (metaContact)
{
if (MetaContactListSource.getUIContact(metaContact)
== null)
{
query.fireQueryEvent(metaContact);
}
}
}
}
}

Loading…
Cancel
Save