aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDamian Minkov <damencho@jitsi.org>2012-08-15 14:11:23 +0000
committerDamian Minkov <damencho@jitsi.org>2012-08-15 14:11:23 +0000
commit0f3561ce901b977ec12a4acd137deaf87254f902 (patch)
tree4dfac2f64e8099867e9b010f7046132bddd6dbff /src
parente4a6b53cdb6a0f7d31d3a908fb3df5f174746008 (diff)
downloadjitsi-0f3561ce901b977ec12a4acd137deaf87254f902.zip
jitsi-0f3561ce901b977ec12a4acd137deaf87254f902.tar.gz
jitsi-0f3561ce901b977ec12a4acd137deaf87254f902.tar.bz2
Improves NotificationMessage unread messages counting and displaying.
Diffstat (limited to 'src')
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/contactlist/notifsource/NotificationContactSource.java49
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/contactlist/notifsource/NotificationGroup.java28
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));
}