/* * 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.service.protocol.globalstatus; import java.util.*; import net.java.sip.communicator.service.protocol.*; import net.java.sip.communicator.util.*; /** * The global statuses available to the system. * @author Damian Minkov */ public class GlobalStatusEnum extends PresenceStatus { /** * Indicates that the user is connected and ready to communicate. */ public static final String ONLINE_STATUS = "Online"; /** * Indicates that the user is disconnected. */ public static final String OFFLINE_STATUS = "Offline"; /** * Indicates that the user is away. */ public static final String AWAY_STATUS = "Away"; /** * Indicates that the user is extended away. */ public static final String EXTENDED_AWAY_STATUS = "Extended Away"; /** * Indicates that the user is connected and eager to communicate. */ public static final String FREE_FOR_CHAT_STATUS = "Free For Chat"; /** * Indicates that the user is connected and eager to communicate. */ public static final String DO_NOT_DISTURB_STATUS = "Do Not Disturb"; /** * The Online status. Indicate that the user is able and willing to * communicate. */ public static final GlobalStatusEnum ONLINE = new GlobalStatusEnum( 65, ONLINE_STATUS, loadIcon("service.gui.statusicons.USER_ONLINE_ICON"), "service.gui.ONLINE"); /** * The Free For Chat status. Indicates that the user is eager to * communicate. */ public static final GlobalStatusEnum FREE_FOR_CHAT = new GlobalStatusEnum( 85, FREE_FOR_CHAT_STATUS, loadIcon("service.gui.statusicons.USER_FFC_ICON"), "service.gui.FFC_STATUS"); /** * The Away status. Indicates that the user has connectivity but might * not be able to immediately act upon initiation of communication. */ public static final GlobalStatusEnum AWAY = new GlobalStatusEnum( 48, AWAY_STATUS, loadIcon("service.gui.statusicons.USER_AWAY_ICON"), "service.gui.AWAY_STATUS"); /** * The Away status. Indicates that the user has connectivity but might * not be able to immediately act upon initiation of communication. */ public static final GlobalStatusEnum EXTENDED_AWAY = new GlobalStatusEnum( 35, EXTENDED_AWAY_STATUS, loadIcon("service.gui.statusicons.USER_EXTENDED_AWAY_ICON"), "service.gui.EXTENDED_AWAY_STATUS"); /** * The DND status. Indicates that the user has connectivity but prefers * not to be contacted. */ public static final GlobalStatusEnum DO_NOT_DISTURB = new GlobalStatusEnum( 30, DO_NOT_DISTURB_STATUS, loadIcon("service.gui.statusicons.USER_DND_ICON"), "service.gui.DND_STATUS"); /** * The Offline status. Indicates the user does not seem to be connected * to any network. */ public static final GlobalStatusEnum OFFLINE = new GlobalStatusEnum( 0, OFFLINE_STATUS, loadIcon("service.gui.statusicons.USER_OFFLINE_ICON"), "service.gui.OFFLINE"); /** * The set of states currently supported. */ public static final ArrayList<GlobalStatusEnum> globalStatusSet = new ArrayList<GlobalStatusEnum>(); static { globalStatusSet.add(ONLINE); globalStatusSet.add(FREE_FOR_CHAT); globalStatusSet.add(AWAY); if(!ConfigurationUtils.isHideExtendedAwayStatus()) globalStatusSet.add(EXTENDED_AWAY); globalStatusSet.add(DO_NOT_DISTURB); globalStatusSet.add(OFFLINE); } private String i18NKey; /** * Creates a status with the specified connectivity coeff, name and icon. * @param status the connectivity coefficient for the specified status * @param statusName String * @param statusIcon the icon associated with this status */ protected GlobalStatusEnum( int status, String statusName, byte[] statusIcon, String i18NKey) { super(status, statusName, statusIcon); this.i18NKey = i18NKey; } /** * Loads an image from a given image path. * @param imagePath The identifier of the image. * @return The image for the given identifier. */ public static byte[] loadIcon(String imagePath) { return ProtocolProviderActivator.getResourceService() .getImageInBytes(imagePath); } /** * Returns the i18n name of the status. * @param status the status. * @return the i18n name of the status. */ public static String getI18NStatusName(GlobalStatusEnum status) { return ProtocolProviderActivator.getResourceService() .getI18NString(status.i18NKey); } /** * Finds the status with appropriate name and return it. * @param name the name we search for. * @return the global status. */ public static GlobalStatusEnum getStatusByName(String name) { for(GlobalStatusEnum gs : globalStatusSet) { if(gs.getStatusName().equals(name)) return gs; } return null; } }