diff options
author | Damian Minkov <damencho@jitsi.org> | 2012-08-15 14:11:23 +0000 |
---|---|---|
committer | Damian Minkov <damencho@jitsi.org> | 2012-08-15 14:11:23 +0000 |
commit | 0f3561ce901b977ec12a4acd137deaf87254f902 (patch) | |
tree | 4dfac2f64e8099867e9b010f7046132bddd6dbff /src | |
parent | e4a6b53cdb6a0f7d31d3a908fb3df5f174746008 (diff) | |
download | jitsi-0f3561ce901b977ec12a4acd137deaf87254f902.zip jitsi-0f3561ce901b977ec12a4acd137deaf87254f902.tar.gz jitsi-0f3561ce901b977ec12a4acd137deaf87254f902.tar.bz2 |
Improves NotificationMessage unread messages counting and displaying.
Diffstat (limited to 'src')
2 files changed, 51 insertions, 26 deletions
diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/notifsource/NotificationContactSource.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/notifsource/NotificationContactSource.java index 6ab138c..1e20505 100644 --- a/src/net/java/sip/communicator/impl/gui/main/contactlist/notifsource/NotificationContactSource.java +++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/notifsource/NotificationContactSource.java @@ -15,7 +15,6 @@ import org.osgi.framework.*; import net.java.sip.communicator.impl.gui.*; import net.java.sip.communicator.impl.gui.main.contactlist.*; -import net.java.sip.communicator.impl.gui.main.contactlist.contactsource.MetaContactListSource.*; import net.java.sip.communicator.service.customcontactactions.*; import net.java.sip.communicator.service.protocol.*; import net.java.sip.communicator.service.protocol.OperationSetMessageWaiting.MessageType; @@ -64,6 +63,33 @@ public class NotificationContactSource */ public void messageWaitingNotify(MessageWaitingEvent evt) { + MessageType type = evt.getMessageType(); + + NotificationGroup group = groups.get(type.toString()); + + if (group == null) + { + String displayName; + if (type.equals(MessageType.VOICE)) + displayName = GuiActivator.getResources() + .getI18NString("service.gui.VOICEMAIL_TITLE"); + else + displayName = type.toString(); + + group = new NotificationGroup(displayName); + groups.put(type.toString(), group); + } + + // mark it as global box by not providing list of messages. + group.messageWaitingNotify( + new MessageWaitingEvent(evt.getSourceProvider(), + evt.getMessageType(), + evt.getAccount(), + evt.getUnreadMessages(), + evt.getReadMessages(), + evt.getUnreadUrgentMessages(), + evt.getReadUrgentMessages())); + Iterator<NotificationMessage> messages = evt.getMessages(); if (messages != null) @@ -87,27 +113,6 @@ public class NotificationContactSource messageGroup.messageWaitingNotify(evt); } } - else - { - MessageType type = evt.getMessageType(); - - NotificationGroup group = groups.get(type.toString()); - - if (group == null) - { - String displayName; - if (type.equals(MessageType.VOICE)) - displayName = GuiActivator.getResources() - .getI18NString("service.gui.VOICEMAIL_TITLE"); - else - displayName = type.toString(); - - group = new NotificationGroup(displayName); - groups.put(type.toString(), group); - } - - group.messageWaitingNotify(evt); - } } /** diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/notifsource/NotificationGroup.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/notifsource/NotificationGroup.java index 1d585a8..669d966 100644 --- a/src/net/java/sip/communicator/impl/gui/main/contactlist/notifsource/NotificationGroup.java +++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/notifsource/NotificationGroup.java @@ -54,7 +54,7 @@ public class NotificationGroup * Creates an instance of <tt>NotificationGroup</tt> by specifying the * message type. * - * @param type the type of messages that this group would contain + * @param groupName the group name. */ public NotificationGroup(String groupName) { @@ -201,6 +201,28 @@ public class NotificationGroup if (messages != null) { + // find messages that need to be removed + Hashtable<String, NotificationContact> contactToRemove = + (Hashtable<String, NotificationContact>)contacts.clone(); + while (messages.hasNext()) + { + NotificationMessage message = messages.next(); + + if (message.getMessageGroup().equals(groupName)) + { + String messageIdentifier + = message.getFromContact() + message.getMessageDetails(); + contactToRemove.remove(messageIdentifier); + } + } + // now remove what needs to be removed + TreeContactList contactList = GuiActivator.getContactList(); + for(NotificationContact c : contactToRemove.values()) + { + contactList.removeContact(c); + } + + messages = event.getMessages(); while (messages.hasNext()) { NotificationMessage message = messages.next(); @@ -225,8 +247,6 @@ public class NotificationGroup } contact.setMessageAccount(event.getAccount()); - contact.setUnreadMessageCount(event.getUnreadMessages()); - contact.setReadMessageCount(event.getReadMessages()); addNotificationContact(contact, isNew); } @@ -288,7 +308,7 @@ public class NotificationGroup UINotificationManager.addNotification( new UINotification( contact.getDisplayName() - + " : " + contact.getDisplayDetails() , + + " : " + contact.getDisplayDetails(), new Date(), uiNotificationGroup)); } |