/*
* Jitsi, the OpenSource Java VoIP and Instant Messaging client.
*
* Copyright @ 2015 Atlassian Pty Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package net.java.sip.communicator.impl.gui.main;
import java.util.*;
/**
* The UINotificationGroup class represents a group of notifications.
*
* @author Yana Stamcheva
*/
public class UINotificationGroup
{
/**
* A list of all unread notifications.
*/
private Collection unreadNotifications
= new ArrayList();
/**
* The name of the group to which this notification belongs.
*/
private final String groupName;
/**
* The display name of the group to which this notification belongs.
*/
private final String groupDisplayName;
/**
*
* @param groupName the name of the group to which this notification belongs
* @param groupDisplayName the display name of the group to which this
*/
public UINotificationGroup(String groupName, String groupDisplayName)
{
this.groupName = groupName;
this.groupDisplayName = groupDisplayName;
}
/**
* Returns the name of the group, to which this notification belongs.
*
* @return the name of the group, to which this notification belongs
*/
public String getGroupName()
{
return groupName;
}
/**
* Returns the display name of the group, to which this notification
* belongs.
*
* @return the display name of the group, to which this notification
* belongs
*/
public String getGroupDisplayName()
{
return groupDisplayName;
}
/**
* Adds the given notification to the list of unread notifications and
* notifies interested listeners.
*
* @param notification the UINotification to add
*/
public void addNotification(UINotification notification)
{
synchronized (unreadNotifications)
{
// make sure we override it if we have the same
unreadNotifications.remove(notification);
unreadNotifications.add(notification);
}
}
/**
* Removes all unread notifications.
*/
public void removeAllNotifications()
{
synchronized (unreadNotifications)
{
List copy = new ArrayList<>(unreadNotifications);
unreadNotifications.clear();
for (UINotification n : copy)
{
UINotificationManager.fireClearedEvent(n);
}
}
}
/**
* Returns a list of all unread notifications.
*
* @return a list of all unread notifications
*/
public Iterator getUnreadNotifications()
{
return new ArrayList(unreadNotifications).iterator();
}
/**
* Returns the count of unread notifications for this group.
*
* @return the count of unread notifications for this group
*/
public int getUnreadNotificationsCount()
{
synchronized (unreadNotifications)
{
int count = 0;
for(UINotification n : unreadNotifications)
count += n.getUnreadObjects();
return count;
}
}
}