From 891a7580d571dba3ae7ea71292c90daf18f4ed01 Mon Sep 17 00:00:00 2001 From: Wolf Posdorfer Date: Mon, 30 May 2011 10:57:45 +0000 Subject: [PATCH] Roar updates: - When joining a groupchat, old messages will no longer popup - import cleanups in RosterDialog.java and PluginManager.java git-svn-id: http://svn.igniterealtime.org/svn/repos/spark/trunk@12430 b35dd754-fafc-0310-a699-88a17e54d16e --- src/commercial/roar.jar | Bin 27299 -> 28871 bytes .../org/jivesoftware/spark/PluginManager.java | 3 - .../jivesoftware/spark/ui/RosterDialog.java | 2 - src/plugins/roar/build/build.xml | 136 ++++++++++-------- .../spark/roar/RoarMessageListener.java | 104 +++++++++++++- 5 files changed, 177 insertions(+), 68 deletions(-) diff --git a/src/commercial/roar.jar b/src/commercial/roar.jar index 5553519b188f8f275c35eb4b650d365a3bfe7f98..d8fbec858a16de4008638edb38b52a047ba42d1e 100644 GIT binary patch delta 28574 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 pwXx0k000220RR9B00000000000001_fvj$mfodEE%x?ey007lqQse*t delta 27035 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 - - - + + + - - - + + + - - - + + + - - - + + + - - - - - + + + + + - - - - - + + + + + - - - + + - - - - - - - - - + + + + + + + + + - - - + + + - - - + + + - - - + + + - + - + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - diff --git a/src/plugins/roar/src/java/org/jivesoftware/spark/roar/RoarMessageListener.java b/src/plugins/roar/src/java/org/jivesoftware/spark/roar/RoarMessageListener.java index 732c38ab..7adbba02 100644 --- a/src/plugins/roar/src/java/org/jivesoftware/spark/roar/RoarMessageListener.java +++ b/src/plugins/roar/src/java/org/jivesoftware/spark/roar/RoarMessageListener.java @@ -19,9 +19,13 @@ */ package org.jivesoftware.spark.roar; +import java.util.Calendar; +import javax.swing.JFrame; import org.jivesoftware.smack.packet.Message; +import org.jivesoftware.spark.SparkManager; import org.jivesoftware.spark.roar.displaytype.RoarDisplayType; import org.jivesoftware.spark.ui.ChatRoom; +import org.jivesoftware.spark.ui.ChatRoomNotFoundException; import org.jivesoftware.spark.ui.GlobalMessageListener; /** @@ -42,14 +46,110 @@ public class RoarMessageListener implements GlobalMessageListener { @Override public void messageReceived(ChatRoom room, Message message) { - _displaytype.messageReceived(room, message); + try { + ChatRoom activeroom = SparkManager.getChatManager() + .getChatContainer().getActiveChatRoom(); + + int framestate = SparkManager.getChatManager().getChatContainer() + .getChatFrame().getState(); + + boolean isoldgroupchat = isOldGroupchat(message); + + if (framestate == JFrame.NORMAL && activeroom.equals(room) + && room.isShowing() && isoldgroupchat) { + // Do Nothing + } else { + _displaytype.messageReceived(room, message); + } + + } catch (ChatRoomNotFoundException e) { + // i dont care + } + + } + + /** + * Checks if the Messages come from a time prior entering the groupchat + * + * @param message + * @return true if this is an old Message + */ + private boolean isOldGroupchat(Message message) { + Calendar cal = Calendar.getInstance(); + + int day = cal.get(Calendar.DATE); + int month = cal.get(Calendar.MONTH) + 1; + int year = cal.get(Calendar.YEAR); + + StringBuilder build = new StringBuilder(); + // Append leading 0's to hour,minute,seconds + build.append(year); + build.append(month < 10 ? "0" + month : month); + build.append(day < 10 ? "0" + day : day); + + int todaysDate = Integer.parseInt(build.toString()); + + // Append leading 0's to hour,minute,seconds + String hour = cal.get(Calendar.HOUR_OF_DAY) < 10 ? "0" + + cal.get(Calendar.HOUR_OF_DAY) : "" + + cal.get(Calendar.HOUR_OF_DAY); + String minute = cal.get(Calendar.MINUTE) < 10 ? "0" + + cal.get(Calendar.MINUTE) : "" + cal.get(Calendar.MINUTE); + String second = cal.get(Calendar.SECOND) < 10 ? "0" + + cal.get(Calendar.SECOND) : "" + cal.get(Calendar.SECOND); + + int todaysHour = Integer.parseInt(hour + minute + second); + + String stamp = ""; + + // get String with timestamp + // 20110526T08:27:18 + if (message.toXML().contains("stamp=")) { + stamp = extractDate(message.toXML()); + } + + boolean isoldgroupchat = false; + + if (stamp.length() > 0) { + // 20110526T08:27:18 + // split into 20110526 + // and 08:27:18 + String[] split = stamp.split("T"); + int dateFromMessage = Integer.parseInt(split[0]); + + int hourFromMessage = Integer.parseInt(split[1].replace(":", "")); + + // if dateFromMessage < todaysDate it is an old Chat + isoldgroupchat = dateFromMessage < todaysDate; + + // if is still not old chat + if (!isoldgroupchat) { + // check if the time from Message < time now + isoldgroupchat = hourFromMessage < todaysHour; + } + + } + return isoldgroupchat; } @Override public void messageSent(ChatRoom room, Message message) { _displaytype.messageSent(room, message); } - + + /** + * Extracts the time stamp from a given xmpp packet + * + * @param xmlstring + * @return String like 20110526T08:27:18, split at "T" + */ + public String extractDate(String xmlstring) { + int indexofstamp = xmlstring.indexOf("stamp="); + String result = xmlstring + .substring(indexofstamp + 7, indexofstamp + 24); + return result; + + } }