From c6db18cb92bc37bbcbe2a6122275ae5915518445 Mon Sep 17 00:00:00 2001 From: Damian Minkov Date: Tue, 14 Feb 2012 11:40:31 +0000 Subject: [PATCH] Shows newly created groups when using 'Hide offline contacts' filter. --- .../gui/main/contactlist/PresenceFilter.java | 3 ++- .../contactsource/MetaContactListSource.java | 24 +++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/PresenceFilter.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/PresenceFilter.java index 76abdc965..55fc78081 100644 --- a/src/net/java/sip/communicator/impl/gui/main/contactlist/PresenceFilter.java +++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/PresenceFilter.java @@ -146,7 +146,8 @@ private boolean isMatching(MetaContact metaContact) */ private boolean isMatching(MetaContactGroup metaGroup) { - return (isShowOffline || metaGroup.countOnlineChildContacts() > 0) + return (isShowOffline || metaGroup.countOnlineChildContacts() > 0 + || MetaContactListSource.isNewGroup(metaGroup)) ? true : false; } diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/MetaContactListSource.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/MetaContactListSource.java index cea43d162..915632ddd 100644 --- a/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/MetaContactListSource.java +++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/MetaContactListSource.java @@ -46,6 +46,13 @@ public class MetaContactListSource public static final String UI_GROUP_DATA_KEY = MetaUIGroup.class.getName() + ".uiGroupDescriptor"; + /** + * The data key of the MetaGroupDescriptor object used to store whether + * the group is newly created by user. + */ + private static final String GROUP_IS_NEW_KEY + = MetaUIGroup.class.getName() + ".groupIsNew"; + /** * The initial result count below which we insert all filter results * directly to the contact list without firing events. @@ -84,6 +91,17 @@ public static UIGroup getUIGroup(MetaContactGroup metaGroup) return (UIGroup) metaGroup.getData(UI_GROUP_DATA_KEY); } + /** + * Returns whether MetaContactGroup is newly created. + * @param metaGroup the MetaContactGroup, which we will check. + * @return whether the MetaContactGroup is newly created. + */ + public static boolean isNewGroup(MetaContactGroup metaGroup) + { + Object data = metaGroup.getData(GROUP_IS_NEW_KEY); + return data == null ? false : (Boolean)data; + } + /** * Creates a UIContact for the given metaContact. * @param metaContact the MetaContact for which we would like to @@ -508,6 +526,12 @@ public void metaContactGroupAdded(MetaContactGroupEvent evt) uiGroup = MetaContactListSource.createUIGroup(metaGroup); } + // mark group as newly created + if(metaGroup.countChildContacts() == 0) + { + metaGroup.setData(GROUP_IS_NEW_KEY, Boolean.TRUE); + } + ContactListFilter currentFilter = GuiActivator.getContactList().getCurrentFilter();