aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDamian Minkov <damencho@jitsi.org>2007-11-27 16:27:51 +0000
committerDamian Minkov <damencho@jitsi.org>2007-11-27 16:27:51 +0000
commit0d4c6b51a68e82b1f79f90f9e5560973d9839339 (patch)
treeec2c771cf34124cdce6524a7a07c1a9de13bb8b8 /src
parentdaf20bc6252e41aa95d4a0b8b782157a8ad8e417 (diff)
downloadjitsi-0d4c6b51a68e82b1f79f90f9e5560973d9839339.zip
jitsi-0d4c6b51a68e82b1f79f90f9e5560973d9839339.tar.gz
jitsi-0d4c6b51a68e82b1f79f90f9e5560973d9839339.tar.bz2
1. Improve status messages (incoming and outgoing)
2. Fix systrayservice not to throw an exception if not initialized
Diffstat (limited to 'src')
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/contactlist/ContactListCellRenderer.java5
-rw-r--r--src/net/java/sip/communicator/impl/protocol/gibberish/ContactGibberishImpl.java10
-rw-r--r--src/net/java/sip/communicator/impl/protocol/icq/ContactIcqImpl.java20
-rw-r--r--src/net/java/sip/communicator/impl/protocol/icq/OperationSetPersistentPresenceIcqImpl.java75
-rw-r--r--src/net/java/sip/communicator/impl/protocol/jabber/ContactJabberImpl.java20
-rw-r--r--src/net/java/sip/communicator/impl/protocol/jabber/OperationSetPersistentPresenceJabberImpl.java4
-rw-r--r--src/net/java/sip/communicator/impl/protocol/mock/MockContact.java10
-rw-r--r--src/net/java/sip/communicator/impl/protocol/msn/ContactMsnImpl.java10
-rw-r--r--src/net/java/sip/communicator/impl/protocol/rss/ContactRssImpl.java10
-rw-r--r--src/net/java/sip/communicator/impl/protocol/sip/ContactSipImpl.java10
-rw-r--r--src/net/java/sip/communicator/impl/protocol/ssh/ContactSSHImpl.java10
-rw-r--r--src/net/java/sip/communicator/impl/protocol/yahoo/ContactYahooImpl.java24
-rw-r--r--src/net/java/sip/communicator/impl/protocol/yahoo/OperationSetPersistentPresenceYahooImpl.java35
-rw-r--r--src/net/java/sip/communicator/impl/protocol/zeroconf/ContactZeroconfImpl.java10
-rw-r--r--src/net/java/sip/communicator/impl/systray/jdic/SystrayServiceJdicImpl.java21
-rw-r--r--src/net/java/sip/communicator/service/protocol/Contact.java7
16 files changed, 257 insertions, 24 deletions
diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/ContactListCellRenderer.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/ContactListCellRenderer.java
index a7510eb..aa47bd8 100644
--- a/src/net/java/sip/communicator/impl/gui/main/contactlist/ContactListCellRenderer.java
+++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/ContactListCellRenderer.java
@@ -143,12 +143,15 @@ public class ContactListCellRenderer extends JPanel
String contactDisplayName = protocolContact.getDisplayName();
String contactAddress = protocolContact.getAddress();
+ String statusMessage = protocolContact.getStatusMessage();
toolTipText
+= "<br>"
+ ((!contactDisplayName
.equals(contactAddress))
? contactDisplayName + " ("+contactAddress + ")"
- : contactDisplayName);
+ : contactDisplayName)
+ + ((statusMessage != null && statusMessage.length() > 0)
+ ? " - " + statusMessage : "");
}
this.buttonsPanel.setPreferredSize(
new Dimension(buttonsPanelWidth, 16));
diff --git a/src/net/java/sip/communicator/impl/protocol/gibberish/ContactGibberishImpl.java b/src/net/java/sip/communicator/impl/protocol/gibberish/ContactGibberishImpl.java
index 218a91f..e82df97 100644
--- a/src/net/java/sip/communicator/impl/protocol/gibberish/ContactGibberishImpl.java
+++ b/src/net/java/sip/communicator/impl/protocol/gibberish/ContactGibberishImpl.java
@@ -246,6 +246,16 @@ public class ContactGibberishImpl
{
return isResolved;
}
+
+ /**
+ * Return the current status message of this contact.
+ *
+ * @return null as the protocol has currently no support of status messages
+ */
+ public String getStatusMessage()
+ {
+ return null;
+ }
/**
* Makes the contact resolved or unresolved.
diff --git a/src/net/java/sip/communicator/impl/protocol/icq/ContactIcqImpl.java b/src/net/java/sip/communicator/impl/protocol/icq/ContactIcqImpl.java
index 126b68d..a8d7d3f 100644
--- a/src/net/java/sip/communicator/impl/protocol/icq/ContactIcqImpl.java
+++ b/src/net/java/sip/communicator/impl/protocol/icq/ContactIcqImpl.java
@@ -23,6 +23,7 @@ public class ContactIcqImpl
private boolean isResolved = false;
private String nickName = null;
+ private String statusMessage = null;
/**
* Creates an IcqContactImpl
@@ -339,4 +340,23 @@ public class ContactIcqImpl
{
this.image = image;
}
+
+ /**
+ * Return the current status message of this contact.
+ *
+ * @return the current status message
+ */
+ public String getStatusMessage()
+ {
+ return statusMessage;
+ }
+
+ /**
+ * Sets the current status message for this contact
+ * @param statusMessage the message
+ */
+ protected void setStatusMessage(String statusMessage)
+ {
+ this.statusMessage = statusMessage;
+ }
}
diff --git a/src/net/java/sip/communicator/impl/protocol/icq/OperationSetPersistentPresenceIcqImpl.java b/src/net/java/sip/communicator/impl/protocol/icq/OperationSetPersistentPresenceIcqImpl.java
index d3fd16f..464e2a8 100644
--- a/src/net/java/sip/communicator/impl/protocol/icq/OperationSetPersistentPresenceIcqImpl.java
+++ b/src/net/java/sip/communicator/impl/protocol/icq/OperationSetPersistentPresenceIcqImpl.java
@@ -26,8 +26,10 @@ import net.kano.joustsim.*;
import net.kano.joustsim.oscar.*;
import net.kano.joustsim.oscar.oscar.service.bos.*;
import net.kano.joustsim.oscar.oscar.service.buddy.*;
+import net.kano.joustsim.oscar.oscar.service.info.*;
import net.kano.joustsim.oscar.oscar.service.ssi.*;
import net.kano.joustsim.oscar.oscar.service.icon.*;
+import net.kano.joustsim.trust.*;
/**
@@ -738,7 +740,12 @@ public class OperationSetPersistentPresenceIcqImpl
logger.debug("Will set status: " + status + " long=" + icqStatus);
bosService.getOscarConnection().sendSnac(new SetExtraInfoCmd(icqStatus));
- bosService.setStatusMessage(statusMessage);
+
+ if(status.equals(IcqStatusEnum.AWAY))
+ icqProvider.getAimConnection().getInfoService().
+ setAwayMessage(statusMessage);
+ else
+ bosService.setStatusMessage(statusMessage);
}
//so that everyone sees the change.
@@ -866,7 +873,7 @@ public class OperationSetPersistentPresenceIcqImpl
ContactGroupIcqImpl theAwaitingAuthorizationGroup =
ssContactList.findContactGroup(
- ssContactList.awaitingAuthorizationGroupName);
+ ServerStoredContactListIcqImpl.awaitingAuthorizationGroupName);
if(newParent.equals(theAwaitingAuthorizationGroup))
throw new IllegalArgumentException(
@@ -1390,6 +1397,9 @@ public class OperationSetPersistentPresenceIcqImpl
getIconServiceArbiter().addIconRequestListener(
new IconUpdateListener());
+ icqProvider.getAimConnection().getInfoService().
+ addInfoListener(new AwayMessageListener());
+
if(icqProvider.USING_ICQ)
{
opSetExtendedAuthorizations =
@@ -1625,10 +1635,6 @@ public class OperationSetPersistentPresenceIcqImpl
ContactGroupIcqImpl parent
= ssContactList.findContactGroup(sourceContact);
- logger.debug("Will Dispatch the contact status event.");
- fireContactPresenceStatusChangeEvent(sourceContact, parent,
- oldStatus, newStatus);
-
List extraInfoBlocks = info.getExtraInfoBlocks();
if(extraInfoBlocks != null){
for (int i = 0; i < extraInfoBlocks.size(); i++)
@@ -1640,9 +1646,14 @@ public class OperationSetPersistentPresenceIcqImpl
String status = ExtraInfoData.readAvailableMessage(
block.getExtraData());
logger.info("Status Message is: " + status + ".");
+ sourceContact.setStatusMessage(status);
}
}
}
+
+ logger.debug("Will Dispatch the contact status event.");
+ fireContactPresenceStatusChangeEvent(sourceContact, parent,
+ oldStatus, newStatus);
}
/**
@@ -1689,10 +1700,21 @@ public class OperationSetPersistentPresenceIcqImpl
public void receivedStatusUpdate(BuddyInfoManager manager,
Screenname buddy, BuddyInfo info)
{
+ String statusMessage = info.getStatusMessage();
logger.debug("buddy=" + buddy);
logger.debug("info.getAwayMessage()=" + info.getAwayMessage());
logger.debug("info.getOnlineSince()=" + info.getOnlineSince());
- logger.debug("info.getStatusMessage()=" + info.getStatusMessage());
+ logger.debug("info.getStatusMessage()=" + statusMessage);
+
+ ContactIcqImpl sourceContact
+ = ssContactList.findContactByScreenName(buddy.getFormatted());
+
+ if(sourceContact != null)
+ {
+ if(statusMessage != null)
+ sourceContact.setStatusMessage(statusMessage);
+ }
+
}
}
@@ -1777,15 +1799,17 @@ public class OperationSetPersistentPresenceIcqImpl
((VolatileBuddy)buddy).setAwaitingAuthorization(true);
ContactGroupIcqImpl theAwaitingAuthorizationGroup =
- ssContactList.findContactGroup(ssContactList.awaitingAuthorizationGroupName);
+ ssContactList.findContactGroup(
+ ServerStoredContactListIcqImpl.awaitingAuthorizationGroupName);
if(theAwaitingAuthorizationGroup == null)
{
List emptyBuddies = new LinkedList();
theAwaitingAuthorizationGroup = new ContactGroupIcqImpl(
- new VolatileGroup(ssContactList.awaitingAuthorizationGroupName),
- emptyBuddies, ssContactList, false);
+ new VolatileGroup(
+ ServerStoredContactListIcqImpl.awaitingAuthorizationGroupName),
+ emptyBuddies, ssContactList, false);
((RootContactGroupIcqImpl)ssContactList.getRootGroup()).
addSubGroup(theAwaitingAuthorizationGroup);
@@ -1801,7 +1825,7 @@ public class OperationSetPersistentPresenceIcqImpl
Object lock = new Object();
synchronized(lock){
try{ lock.wait(500); }catch(Exception e){}
- };
+ }
fireSubscriptionMovedEvent(srcContact,
parent, theAwaitingAuthorizationGroup);
@@ -1876,7 +1900,7 @@ public class OperationSetPersistentPresenceIcqImpl
ContactGroupIcqImpl theAwaitingAuthorizationGroup =
ssContactList.findContactGroup(
- ssContactList.awaitingAuthorizationGroupName);
+ ServerStoredContactListIcqImpl.awaitingAuthorizationGroupName);
if(theAwaitingAuthorizationGroup == null)
return;
@@ -1920,4 +1944,31 @@ public class OperationSetPersistentPresenceIcqImpl
}
}
}
+
+ /**
+ * Notifies for changes in away message
+ */
+ private class AwayMessageListener
+ implements InfoServiceListener
+ {
+ public void handleAwayMessage(
+ InfoService service, Screenname buddy, String awayMessage)
+ {
+ ContactIcqImpl sourceContact
+ = ssContactList.findContactByScreenName(buddy.getFormatted());
+
+ if(sourceContact != null)
+ {
+ sourceContact.setStatusMessage(awayMessage);
+ }
+ }
+ public void handleUserProfile(InfoService service, Screenname buddy,
+ String userInfo){}
+ public void handleCertificateInfo(InfoService service, Screenname buddy,
+ BuddyCertificateInfo certInfo){}
+ public void handleInvalidCertificates(InfoService service, Screenname buddy,
+ CertificateInfo origCertInfo, Throwable ex){}
+ public void handleDirectoryInfo(InfoService service, Screenname buddy,
+ DirInfo dirInfo){}
+ }
} \ No newline at end of file
diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/ContactJabberImpl.java b/src/net/java/sip/communicator/impl/protocol/jabber/ContactJabberImpl.java
index f84113e..7ce5350 100644
--- a/src/net/java/sip/communicator/impl/protocol/jabber/ContactJabberImpl.java
+++ b/src/net/java/sip/communicator/impl/protocol/jabber/ContactJabberImpl.java
@@ -30,6 +30,7 @@ public class ContactJabberImpl
private boolean isResolved = false;
private String tempId = null;
+ private String statusMessage = null;
/**
* Creates an JabberContactImpl
@@ -302,4 +303,23 @@ public class ContactJabberImpl
{
return rosterEntry;
}
+
+ /**
+ * Return the current status message of this contact.
+ *
+ * @return the current status message
+ */
+ public String getStatusMessage()
+ {
+ return statusMessage;
+ }
+
+ /**
+ * Sets the current status message for this contact
+ * @param statusMessage the message
+ */
+ protected void setStatusMessage(String statusMessage)
+ {
+ this.statusMessage = statusMessage;
+ }
}
diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/OperationSetPersistentPresenceJabberImpl.java b/src/net/java/sip/communicator/impl/protocol/jabber/OperationSetPersistentPresenceJabberImpl.java
index d59cbaa..1c0e180 100644
--- a/src/net/java/sip/communicator/impl/protocol/jabber/OperationSetPersistentPresenceJabberImpl.java
+++ b/src/net/java/sip/communicator/impl/protocol/jabber/OperationSetPersistentPresenceJabberImpl.java
@@ -1075,6 +1075,10 @@ public class OperationSetPersistentPresenceJabberImpl
logger.warn("No source contact found for id=" + userID);
return;
}
+
+ // statuses maybe the same and only change in status message
+ sourceContact.setStatusMessage(presence.getStatus());
+
PresenceStatus oldStatus
= sourceContact.getPresenceStatus();
diff --git a/src/net/java/sip/communicator/impl/protocol/mock/MockContact.java b/src/net/java/sip/communicator/impl/protocol/mock/MockContact.java
index 0ebcd40..0a3f2e2 100644
--- a/src/net/java/sip/communicator/impl/protocol/mock/MockContact.java
+++ b/src/net/java/sip/communicator/impl/protocol/mock/MockContact.java
@@ -235,4 +235,14 @@ public class MockContact
return this.getAddress().equals(mockContact.getAddress());
}
+
+ /**
+ * Return the current status message of this contact.
+ *
+ * @return null as the protocol has currently no support of status messages
+ */
+ public String getStatusMessage()
+ {
+ return null;
+ }
}
diff --git a/src/net/java/sip/communicator/impl/protocol/msn/ContactMsnImpl.java b/src/net/java/sip/communicator/impl/protocol/msn/ContactMsnImpl.java
index 99b946f..3cdd329 100644
--- a/src/net/java/sip/communicator/impl/protocol/msn/ContactMsnImpl.java
+++ b/src/net/java/sip/communicator/impl/protocol/msn/ContactMsnImpl.java
@@ -273,4 +273,14 @@ public class ContactMsnImpl
{
return contact;
}
+
+ /**
+ * Return the current status message of this contact.
+ *
+ * @return null as the protocol has currently no support of status messages
+ */
+ public String getStatusMessage()
+ {
+ return null;
+ }
}
diff --git a/src/net/java/sip/communicator/impl/protocol/rss/ContactRssImpl.java b/src/net/java/sip/communicator/impl/protocol/rss/ContactRssImpl.java
index f455b3d..0e2ab4c 100644
--- a/src/net/java/sip/communicator/impl/protocol/rss/ContactRssImpl.java
+++ b/src/net/java/sip/communicator/impl/protocol/rss/ContactRssImpl.java
@@ -539,4 +539,14 @@ public class ContactRssImpl
{
return rssFeedReader;
}
+
+ /**
+ * Return the current status message of this contact.
+ *
+ * @return null as the protocol has no support of status messages
+ */
+ public String getStatusMessage()
+ {
+ return null;
+ }
}
diff --git a/src/net/java/sip/communicator/impl/protocol/sip/ContactSipImpl.java b/src/net/java/sip/communicator/impl/protocol/sip/ContactSipImpl.java
index 27e7ca7..0526f2b 100644
--- a/src/net/java/sip/communicator/impl/protocol/sip/ContactSipImpl.java
+++ b/src/net/java/sip/communicator/impl/protocol/sip/ContactSipImpl.java
@@ -428,4 +428,14 @@ public class ContactSipImpl
return (OperationSetPresenceSipImpl) parentProvider
.getOperationSet(OperationSetPresence.class);
}
+
+ /**
+ * Return the current status message of this contact.
+ *
+ * @return null as the protocol has currently no support of status messages
+ */
+ public String getStatusMessage()
+ {
+ return null;
+ }
}
diff --git a/src/net/java/sip/communicator/impl/protocol/ssh/ContactSSHImpl.java b/src/net/java/sip/communicator/impl/protocol/ssh/ContactSSHImpl.java
index 83c54bb..41f0574 100644
--- a/src/net/java/sip/communicator/impl/protocol/ssh/ContactSSHImpl.java
+++ b/src/net/java/sip/communicator/impl/protocol/ssh/ContactSSHImpl.java
@@ -882,6 +882,16 @@ public class ContactSSHImpl
this.sshConfigurationForm.setPasswordField(password);
savePersistentDetails();
}
+
+ /**
+ * Return the current status message of this contact.
+ *
+ * @return null as the protocol has no support of status messages
+ */
+ public String getStatusMessage()
+ {
+ return null;
+ }
// /**
// * Sets the PS1 prompt of the current shell of Contact
diff --git a/src/net/java/sip/communicator/impl/protocol/yahoo/ContactYahooImpl.java b/src/net/java/sip/communicator/impl/protocol/yahoo/ContactYahooImpl.java
index 591219d..6a3bd6c 100644
--- a/src/net/java/sip/communicator/impl/protocol/yahoo/ContactYahooImpl.java
+++ b/src/net/java/sip/communicator/impl/protocol/yahoo/ContactYahooImpl.java
@@ -31,6 +31,8 @@ public class ContactYahooImpl
private String yahooID = null;
private String id = null;
+
+ private String statusMessage = null;
/**
* Creates an YahooContactImpl with custom yahooID
@@ -152,7 +154,7 @@ public class ContactYahooImpl
{
logger.warn("Error requesting image!", e);
}
-
+logger.info("returning picture " + image);
return image;
}
@@ -163,6 +165,7 @@ public class ContactYahooImpl
*/
protected void setImage(byte[] image)
{
+logger.info("setting image " + image);
this.image = image;
}
@@ -349,4 +352,23 @@ public class ContactYahooImpl
{
return contact;
}
+
+ /**
+ * Return the current status message of this contact.
+ *
+ * @return the current status message
+ */
+ public String getStatusMessage()
+ {
+ return statusMessage;
+ }
+
+ /**
+ * Sets the current status message for this contact
+ * @param statusMessage the message
+ */
+ protected void setStatusMessage(String statusMessage)
+ {
+ this.statusMessage = statusMessage;
+ }
}
diff --git a/src/net/java/sip/communicator/impl/protocol/yahoo/OperationSetPersistentPresenceYahooImpl.java b/src/net/java/sip/communicator/impl/protocol/yahoo/OperationSetPersistentPresenceYahooImpl.java
index 144cbfd..d7af988 100644
--- a/src/net/java/sip/communicator/impl/protocol/yahoo/OperationSetPersistentPresenceYahooImpl.java
+++ b/src/net/java/sip/communicator/impl/protocol/yahoo/OperationSetPersistentPresenceYahooImpl.java
@@ -446,9 +446,22 @@ public class OperationSetPersistentPresenceYahooImpl
try
{
- yahooProvider.getYahooSession().setStatus(
- ((Long)scToYahooModesMappings.get(status)).longValue());
-
+ if(statusMessage != null)
+ {
+ boolean isAvailable = false;
+
+ if(status.equals(YahooStatusEnum.AVAILABLE))
+ isAvailable = true;
+
+ // false - away
+ // true - available
+ yahooProvider.getYahooSession().
+ setStatus(statusMessage, isAvailable);
+ }
+ else
+ yahooProvider.getYahooSession().setStatus(
+ ((Long)scToYahooModesMappings.get(status)).longValue());
+
fireProviderPresenceStatusChangeEvent(currentStatus, status);
}
catch(IOException ex)
@@ -820,7 +833,7 @@ public class OperationSetPersistentPresenceYahooImpl
ssContactList.findContactById(user.getId());
if(sourceContact != null)
- handleContactStatusChange(sourceContact, user.getStatus());
+ handleContactStatusChange(sourceContact, user);
}
}
}
@@ -1084,17 +1097,20 @@ public class OperationSetPersistentPresenceYahooImpl
else
return;
}
-
- handleContactStatusChange(sourceContact, yFriend.getStatus());
+
+ handleContactStatusChange(sourceContact, yFriend);
}
- void handleContactStatusChange(ContactYahooImpl sourceContact, long newStat)
+ void handleContactStatusChange(ContactYahooImpl sourceContact, YahooUser yFriend)
{
PresenceStatus oldStatus
= sourceContact.getPresenceStatus();
- PresenceStatus newStatus = yahooStatusToPresenceStatus(newStat);
+ PresenceStatus newStatus = yahooStatusToPresenceStatus(yFriend.getStatus());
+ // statuses maybe the same and only change in status message
+ sourceContact.setStatusMessage(yFriend.getCustomStatusMessage());
+
// when old and new status are the same do nothing - no change
if(oldStatus.equals(newStatus))
{
@@ -1145,8 +1161,7 @@ public class OperationSetPersistentPresenceYahooImpl
if(!contact.isPersistent() || !contact.isResolved())
return;
- handleContactStatusChange(contact,
- contact.getSourceContact().getStatus());
+ handleContactStatusChange(contact, contact.getSourceContact());
}
public void subscriptionFailed(SubscriptionEvent evt) {}
diff --git a/src/net/java/sip/communicator/impl/protocol/zeroconf/ContactZeroconfImpl.java b/src/net/java/sip/communicator/impl/protocol/zeroconf/ContactZeroconfImpl.java
index df1854f..be4a022 100644
--- a/src/net/java/sip/communicator/impl/protocol/zeroconf/ContactZeroconfImpl.java
+++ b/src/net/java/sip/communicator/impl/protocol/zeroconf/ContactZeroconfImpl.java
@@ -464,4 +464,14 @@ public class ContactZeroconfImpl
return (OperationSetPersistentPresenceZeroconfImpl)parentProvider
.getOperationSet(OperationSetPersistentPresence.class);
}
+
+ /**
+ * Return the current status message of this contact.
+ *
+ * @return null as the protocol has currently no support of status messages
+ */
+ public String getStatusMessage()
+ {
+ return null;
+ }
}
diff --git a/src/net/java/sip/communicator/impl/systray/jdic/SystrayServiceJdicImpl.java b/src/net/java/sip/communicator/impl/systray/jdic/SystrayServiceJdicImpl.java
index 4e81346..7e60c83 100644
--- a/src/net/java/sip/communicator/impl/systray/jdic/SystrayServiceJdicImpl.java
+++ b/src/net/java/sip/communicator/impl/systray/jdic/SystrayServiceJdicImpl.java
@@ -84,6 +84,8 @@ public class SystrayServiceJdicImpl
private ImageIcon logoIconWhite;
private ImageIcon envelopeIcon;
private ImageIcon envelopeIconWhite;
+
+ private boolean initialized = false;
/**
* Creates an instance of <tt>Systray</tt>.
@@ -238,6 +240,8 @@ public class SystrayServiceJdicImpl
});
systray.addTrayIcon(trayIcon);
+
+ initialized = true;
}
/**
@@ -315,6 +319,9 @@ public class SystrayServiceJdicImpl
String messageContent,
int messageType)
{
+ if(!checkInitialized())
+ return;
+
int trayMsgType = TrayIcon.NONE_MESSAGE_TYPE;
if (messageType == SystrayService.ERROR_MESSAGE_TYPE)
@@ -391,6 +398,9 @@ public class SystrayServiceJdicImpl
*/
public void setSystrayIcon(int imageType)
{
+ if(!checkInitialized())
+ return;
+
String osName = System.getProperty("os.name");
if (imageType == SystrayService.SC_IMG_TYPE)
@@ -420,6 +430,17 @@ public class SystrayServiceJdicImpl
}
}
}
+
+ private boolean checkInitialized()
+ {
+ if(!initialized)
+ {
+ logger.error("Systray not init");
+ return false;
+ }
+ else
+ return true;
+ }
/**
* Shows the oldest message in the message queue and then removes it from
diff --git a/src/net/java/sip/communicator/service/protocol/Contact.java b/src/net/java/sip/communicator/service/protocol/Contact.java
index 7cc896c..0faa5d2 100644
--- a/src/net/java/sip/communicator/service/protocol/Contact.java
+++ b/src/net/java/sip/communicator/service/protocol/Contact.java
@@ -110,4 +110,11 @@ public interface Contact
* establishing network connectivity or null if no such data is required.
*/
public String getPersistentData();
+
+ /**
+ * Return the current status message of this contact.
+ *
+ * @return the current status message
+ */
+ public String getStatusMessage();
}