From 18109ff141d5d2ead6f5d8edea4cdb24089196ba Mon Sep 17 00:00:00 2001 From: Damian Minkov Date: Thu, 26 Sep 2013 11:04:55 +0300 Subject: [PATCH] Adds status of contact to chat message button in call panel. --- resources/images/images.properties | 6 ++ .../images/impl/gui/buttons/chatSmallAway.png | Bin 0 -> 1991 bytes .../images/impl/gui/buttons/chatSmallDND.png | Bin 0 -> 1948 bytes .../images/impl/gui/buttons/chatSmallFree.png | Bin 0 -> 2067 bytes .../impl/gui/buttons/chatSmallOffline.png | Bin 0 -> 1865 bytes .../impl/gui/buttons/chatSmallOnline.png | Bin 0 -> 1951 bytes .../impl/gui/buttons/chatSmallPhone.png | Bin 0 -> 1952 bytes .../impl/gui/main/call/CallPanel.java | 49 ++++++++++++++- .../impl/gui/utils/Constants.java | 57 ++++++++++++++++++ .../impl/gui/utils/ImageLoader.java | 36 +++++++++++ 10 files changed, 146 insertions(+), 2 deletions(-) create mode 100644 resources/images/impl/gui/buttons/chatSmallAway.png create mode 100644 resources/images/impl/gui/buttons/chatSmallDND.png create mode 100644 resources/images/impl/gui/buttons/chatSmallFree.png create mode 100644 resources/images/impl/gui/buttons/chatSmallOffline.png create mode 100644 resources/images/impl/gui/buttons/chatSmallOnline.png create mode 100644 resources/images/impl/gui/buttons/chatSmallPhone.png diff --git a/resources/images/images.properties b/resources/images/images.properties index df885dab0..3fbb5ee4f 100644 --- a/resources/images/images.properties +++ b/resources/images/images.properties @@ -151,6 +151,12 @@ service.gui.buttons.CHAT_BUTTON_SMALL=resources/images/impl/gui/buttons/chatSmal service.gui.buttons.CHAT_BUTTON_SMALL_PRESSED=resources/images/impl/gui/buttons/chatSmallPressed.png service.gui.buttons.CHAT_BUTTON_SMALL_ROLLOVER=resources/images/impl/gui/buttons/chatSmallRollover.png service.gui.buttons.CHAT_BUTTON_SMALL_WHITE=resources/images/impl/gui/buttons/chatSmallWhite.png +service.gui.buttons.CHAT_BUTTON_ONLINE_ICON=resources/images/impl/gui/buttons/chatSmallOnline.png +service.gui.buttons.CHAT_BUTTON_OFFLINE_ICON=resources/images/impl/gui/buttons/chatSmallOffline.png +service.gui.buttons.CHAT_BUTTON_AWAY_ICON=resources/images/impl/gui/buttons/chatSmallAway.png +service.gui.buttons.CHAT_BUTTON_DND_ICON=resources/images/impl/gui/buttons/chatSmallDND.png +service.gui.buttons.CHAT_BUTTON_FFC_ICON=resources/images/impl/gui/buttons/chatSmallFree.png +service.gui.buttons.CHAT_BUTTON_ON_THE_PHONE_ICON=resources/images/impl/gui/buttons/chatSmallPhone.png service.gui.buttons.ADD_CONTACT_BUTTON_SMALL=resources/images/impl/gui/buttons/addContactSmall.png service.gui.buttons.ADD_CONTACT_BUTTON_SMALL_PRESSED=resources/images/impl/gui/buttons/addContactSmallPressed.png service.gui.buttons.ADD_CONTACT_BUTTON_SMALL_ROLLOVER=resources/images/impl/gui/buttons/addContactSmallRollover.png diff --git a/resources/images/impl/gui/buttons/chatSmallAway.png b/resources/images/impl/gui/buttons/chatSmallAway.png new file mode 100644 index 0000000000000000000000000000000000000000..d8b035460ff36b8953e4762a1dab649c1536e443 GIT binary patch literal 1991 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 Gx&HwD1Oq$( literal 0 HcmV?d00001 diff --git a/resources/images/impl/gui/buttons/chatSmallFree.png b/resources/images/impl/gui/buttons/chatSmallFree.png new file mode 100644 index 0000000000000000000000000000000000000000..213155fdc4817239e069b7056d084158703f3532 GIT binary patch literal 2067 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 P?Z3?M&?ux@w0+MX=p6^% literal 0 HcmV?d00001 diff --git a/resources/images/impl/gui/buttons/chatSmallPhone.png b/resources/images/impl/gui/buttons/chatSmallPhone.png new file mode 100644 index 0000000000000000000000000000000000000000..ff8c9407a2e7559ca9ef520fcd2d722e353e0757 GIT binary patch literal 1952 zcmbVNdr%X19*^?4)JFj;4;iFuP>)(kcJtiq5j>JjfM^2pP_$BAHk)KC*$ul(NzkK! zMUfk+qT&OgNDEq9lsZPwLxmF+DOyJ42E`(_n1*;T0wBv11?ET^NkK5VZ-|zR` z@8|P<&u&jKC(ND^K0_c7%uY%~Q~7l%|11{z^Y7MI-8O!i$LTYzOw$SkryXLbRW zVn7KNXGkYU(iGrj#Ior;P9x$yeHwzpX)--0rr2kR;!`GZVNMAo1|<%MH?B!-mP;jm zcjJZHY`WV?NKy%w&SP-C9@eNSFrT|WHsn?0y+M*0k}nFDgVK1OgP^!1R3qZQh%KZA z0U?;rqDl^`q@WUpAQ)Dtb)X)FZZQi?DiwL9dhPK`35^LXcjjl^YaVxk3h` z3LUJLKF20eEQe7zF=dzJ?LNh#hCjq2I)=bFnn|bWoT&~-vC|yQ+G!`COH%^TCJZMj zui!Orfu6>T5)An^VKFeY1DMP(LcYKQg+c+w%j8NKER{}14#IpGQiI+gl^I~vAbN(i z{6ATf@XkoQ?eRbDG9}`B(7S!!{QTkh_z)C7GYmf*6+$D;&)nxpXneY>e|Z1k@-!^0 zIH$PX zk_}s`rkkf7DN1X5GOzjFky6pFGEMjn!@Q7c>mk*>J=%Sj-Q9nMBO()2w}1Hg`1b8D zh4)>&v3nv|8Z>B3C<;0qxNYP{S7}*@Hu>zpk6k*QP6iJQ`CR+UqD0FBFnaFNP3)(c zAEbVCH#j)>wcLY??Jw_^w{0nP>-?kZXv0uT=W8+C>rS|aAj`pCql@$q# zmQ?yJ-D~u?c0LR$b`{~hK%j7QE*#NUW4`a%06tdV7>kzOCrdi}&9dt2XKYsMH_m@t z0k7>@^|5F1$qP}g`VXgdS)}zfagQ=QYnu`|4OxmG`HuVN>EYpF>z;*ftJP|&|NcSv z$i*AIy_XiI{QI%7v9+aTBI4!H++W|=Da12Q)>&(l=N_x86I6tT`WOz>oH%~`V)DM3 zv5^7qY7dXBb5{tf<_N#27B;UFZ>y}FQ}?I<&RFGdY^cl{FF0RRJ`Kn54W6~jzD$i? zTkE$=k&})D_D4#<;-;o1KaJk;uQ^fpC(hxs#`4eF7aiOZ;=iBExOH@$)}9bc)^%L1 zUm|#Gq)Or*7`^mJ@a8+N&uVYlL3!@MrNU)^dU;Vw zKK@0{tHp)mQ7*Ej{qy8|iZyH2TsfoBV223@TUdDaPG8@6SV#BSt@`qsL+rkq?xCTf zB2<+0=af69Cgi0f#O1Iic}Uoa1?S7fYt}~$d4B1<5WilOdaBER%#@rwh?WIT>%VoY zEVrPhcuW!g)=yM3`(rV>nX0vaDP$vmy-zAtSs{OK$YYqE+>bqDuQ!^5;{@=)s&7@T zCEQ2T*PWWbhgb>n0uVx&981(cBJhs?Vq^* zFsSgT0VqM7r?mmA-y8T->%Ij6!nj_`sR|#zD}4wIf=-$shy!i)C-5hu{(Bn`mFi4G zj)g@ zXN&IG!H7houX;>KKd}sA=Qpo!0fNlGJ>1RD(oFmv-!MU>dGvyV8`|&vXC~>*=yC0a GlK%pd2le^@ literal 0 HcmV?d00001 diff --git a/src/net/java/sip/communicator/impl/gui/main/call/CallPanel.java b/src/net/java/sip/communicator/impl/gui/main/call/CallPanel.java index 16851ce49..d37d2d741 100644 --- a/src/net/java/sip/communicator/impl/gui/main/call/CallPanel.java +++ b/src/net/java/sip/communicator/impl/gui/main/call/CallPanel.java @@ -20,6 +20,7 @@ import net.java.sip.communicator.impl.gui.event.*; import net.java.sip.communicator.impl.gui.main.call.conference.*; import net.java.sip.communicator.impl.gui.utils.*; +import net.java.sip.communicator.impl.gui.utils.Constants; import net.java.sip.communicator.plugin.desktoputil.*; import net.java.sip.communicator.service.contactlist.*; import net.java.sip.communicator.service.gui.*; @@ -67,7 +68,8 @@ public class CallPanel implements ActionListener, PluginComponentListener, Skinnable, - ConferencePeerViewListener + ConferencePeerViewListener, + ContactPresenceStatusListener { /** * The chat button name. @@ -685,6 +687,17 @@ void dispose() ((CallRenderer) callPanel).dispose(); } + // clears the contact status listener + List imContacts = getIMCapableCallPeers(1); + if(imContacts.size() == 1) + { + Contact contact = imContacts.get(0); + OperationSetPresence operationSetPresence = + contact.getProtocolProvider() + .getOperationSet(OperationSetPresence.class); + if(operationSetPresence != null) + operationSetPresence.removeContactPresenceStatusListener(this); + } } /** @@ -746,8 +759,22 @@ private void doUpdateSettingsPanelInEventDispatchThread( * telephony conference at this time so we do not want the chatButton * visible in such a scenario. */ + List imContacts = getIMCapableCallPeers(1); chatButton.setVisible( - !isConference && (getIMCapableCallPeers(1).size() == 1)); + !isConference && (imContacts.size() == 1)); + if(chatButton.isVisible()) + { + Contact contact = imContacts.get(0); + OperationSetPresence operationSetPresence = + contact.getProtocolProvider() + .getOperationSet(OperationSetPresence.class); + if(operationSetPresence != null) + operationSetPresence.addContactPresenceStatusListener(this); + + chatButton.setIconImage( + Constants.getMessageStatusIcon(contact.getPresenceStatus())); + chatButton.repaint(); + } updateHoldButtonState(); updateMergeButtonState(); @@ -2173,6 +2200,24 @@ private void updateViewFromModelInEventDispatchThread() } } + /** + * Listens for contact status changes and updates the image of the + * chat message button. + * @param evt the ContactPresenceStatusChangeEvent describing the status + */ + @Override + public void contactPresenceStatusChanged(ContactPresenceStatusChangeEvent evt) + { + Contact contact = getIMCapableCallPeers(1).get(0); + + if(contact.equals(evt.getSourceContact())) + { + chatButton.setIconImage( + Constants.getMessageStatusIcon(contact.getPresenceStatus())); + chatButton.repaint(); + } + } + /** * Implements the listener which listens to events fired by the * CallConference depicted by this instance, the Calls diff --git a/src/net/java/sip/communicator/impl/gui/utils/Constants.java b/src/net/java/sip/communicator/impl/gui/utils/Constants.java index bc7e2dae5..f19514852 100755 --- a/src/net/java/sip/communicator/impl/gui/utils/Constants.java +++ b/src/net/java/sip/communicator/impl/gui/utils/Constants.java @@ -307,6 +307,63 @@ else if(connectivity < PresenceStatus.MAX_STATUS_VALUE) } } + /** + * Returns the image corresponding to the given presence status. + * @param status The presence status. + * @return the image corresponding to the given presence status. + */ + public static BufferedImage getMessageStatusIcon(PresenceStatus status) + { + if(status != null) + { + int connectivity = status.getStatus(); + + if(connectivity < PresenceStatus.ONLINE_THRESHOLD) + { + return ImageLoader + .getImage(ImageLoader.CHAT_BUTTON_OFFLINE_ICON); + } + else if(connectivity < PresenceStatus.AWAY_THRESHOLD) + { + return ImageLoader + .getImage(ImageLoader.CHAT_BUTTON_DND_ICON); + } + else if(connectivity == PresenceStatus.AWAY_THRESHOLD) + { + // the special status On The Phone is state + // between DND and AWAY states. + return ImageLoader + .getImage(ImageLoader.CHAT_BUTTON_ON_THE_PHONE_ICON); + } + else if(connectivity < PresenceStatus.AVAILABLE_THRESHOLD) + { + return ImageLoader + .getImage(ImageLoader.CHAT_BUTTON_AWAY_ICON); + } + else if(connectivity + < PresenceStatus.EAGER_TO_COMMUNICATE_THRESHOLD) + { + return ImageLoader + .getImage(ImageLoader.CHAT_BUTTON_ONLINE_ICON); + } + else if(connectivity < PresenceStatus.MAX_STATUS_VALUE) + { + return ImageLoader + .getImage(ImageLoader.CHAT_BUTTON_FFC_ICON); + } + else + { + return ImageLoader + .getImage(ImageLoader.CHAT_BUTTON_OFFLINE_ICON); + } + } + else + { + return ImageLoader + .getImage(ImageLoader.CHAT_BUTTON_SMALL_WHITE); + } + } + /** * Loads a chat window style. */ diff --git a/src/net/java/sip/communicator/impl/gui/utils/ImageLoader.java b/src/net/java/sip/communicator/impl/gui/utils/ImageLoader.java index eb4e82485..7802329be 100644 --- a/src/net/java/sip/communicator/impl/gui/utils/ImageLoader.java +++ b/src/net/java/sip/communicator/impl/gui/utils/ImageLoader.java @@ -1306,6 +1306,42 @@ public class ImageLoader public static final ImageID USER_USER_ON_THE_PHONE_ICON = new ImageID("service.gui.statusicons.USER_ON_THE_PHONE_ICON"); + /** + * Chat button "online" icon. + */ + public static final ImageID CHAT_BUTTON_ONLINE_ICON + = new ImageID("service.gui.buttons.CHAT_BUTTON_ONLINE_ICON"); + + /** + * Chat button "offline" icon. + */ + public static final ImageID CHAT_BUTTON_OFFLINE_ICON + = new ImageID("service.gui.buttons.CHAT_BUTTON_OFFLINE_ICON"); + + /** + * Chat button "away" icon. + */ + public static final ImageID CHAT_BUTTON_AWAY_ICON + = new ImageID("service.gui.buttons.CHAT_BUTTON_AWAY_ICON"); + + /** + * Chat button "free for chat" icon. + */ + public static final ImageID CHAT_BUTTON_FFC_ICON + = new ImageID("service.gui.buttons.CHAT_BUTTON_FFC_ICON"); + + /** + * Chat button "do not disturb" icon. + */ + public static final ImageID CHAT_BUTTON_DND_ICON + = new ImageID("service.gui.buttons.CHAT_BUTTON_DND_ICON"); + + /** + * Chat button "on the phone" icon. + */ + public static final ImageID CHAT_BUTTON_ON_THE_PHONE_ICON + = new ImageID("service.gui.buttons.CHAT_BUTTON_ON_THE_PHONE_ICON"); + /** * Owner chatroom member. */