Browse Source

XMPP Parser now fires composition events

Change-Id: Ia622bcbdb8cf9b27140edf24cfb36b7c80fe5940
Reviewed-on: http://gerrit.dmdirc.com/2128
Automatic-Compile: DMDirc Build Manager
Reviewed-by: Greg Holmes <greg@dmdirc.com>
tags/0.7rc1
Chris Smith 13 years ago
parent
commit
fcd1b64588
1 changed files with 32 additions and 2 deletions
  1. 32
    2
      src/com/dmdirc/addons/parser_xmpp/XmppParser.java

+ 32
- 2
src/com/dmdirc/addons/parser_xmpp/XmppParser.java View File

@@ -26,6 +26,7 @@ import com.dmdirc.parser.common.AwayState;
26 26
 import com.dmdirc.parser.common.BaseSocketAwareParser;
27 27
 import com.dmdirc.parser.common.ChannelJoinRequest;
28 28
 import com.dmdirc.parser.common.ChildImplementations;
29
+import com.dmdirc.parser.common.CompositionState;
29 30
 import com.dmdirc.parser.common.DefaultStringConverter;
30 31
 import com.dmdirc.parser.common.ParserError;
31 32
 import com.dmdirc.parser.common.QueuePriority;
@@ -35,6 +36,7 @@ import com.dmdirc.parser.interfaces.StringConverter;
35 36
 import com.dmdirc.parser.interfaces.callbacks.AwayStateListener;
36 37
 import com.dmdirc.parser.interfaces.callbacks.CallbackInterface;
37 38
 import com.dmdirc.parser.interfaces.callbacks.ChannelSelfJoinListener;
39
+import com.dmdirc.parser.interfaces.callbacks.CompositionStateChangeListener;
38 40
 import com.dmdirc.parser.interfaces.callbacks.ConnectErrorListener;
39 41
 import com.dmdirc.parser.interfaces.callbacks.DataInListener;
40 42
 import com.dmdirc.parser.interfaces.callbacks.DataOutListener;
@@ -58,7 +60,6 @@ import org.jivesoftware.smack.Chat;
58 60
 import org.jivesoftware.smack.ChatManagerListener;
59 61
 import org.jivesoftware.smack.ConnectionConfiguration;
60 62
 import org.jivesoftware.smack.ConnectionListener;
61
-import org.jivesoftware.smack.MessageListener;
62 63
 import org.jivesoftware.smack.PacketListener;
63 64
 import org.jivesoftware.smack.RosterEntry;
64 65
 import org.jivesoftware.smack.RosterListener;
@@ -68,6 +69,9 @@ import org.jivesoftware.smack.filter.PacketFilter;
68 69
 import org.jivesoftware.smack.packet.Message;
69 70
 import org.jivesoftware.smack.packet.Packet;
70 71
 import org.jivesoftware.smack.packet.Presence;
72
+import org.jivesoftware.smackx.ChatState;
73
+import org.jivesoftware.smackx.ChatStateListener;
74
+import org.jivesoftware.smackx.ChatStateManager;
71 75
 import org.jivesoftware.smackx.muc.MultiUserChat;
72 76
 
73 77
 /**
@@ -447,6 +451,8 @@ public class XmppParser extends BaseSocketAwareParser {
447 451
             connection.sendPacket(new Presence(Presence.Type.available, null, priority, Presence.Mode.available));
448 452
             connection.getRoster().addRosterListener(new RosterListenerImpl());
449 453
 
454
+            ChatStateManager.getInstance(connection);
455
+
450 456
             setServerName(connection.getServiceName());
451 457
 
452 458
             getCallback(ServerReadyListener.class).onServerReady(null, null);
@@ -593,7 +599,7 @@ public class XmppParser extends BaseSocketAwareParser {
593 599
 
594 600
     }
595 601
 
596
-    private class MessageListenerImpl implements MessageListener {
602
+    private class MessageListenerImpl implements ChatStateListener {
597 603
 
598 604
         /** {@inheritDoc} */
599 605
         @Override
@@ -605,6 +611,30 @@ public class XmppParser extends BaseSocketAwareParser {
605 611
             }
606 612
         }
607 613
 
614
+        /** {@inheritDoc} */
615
+        @Override
616
+        public void stateChanged(final Chat chat, final ChatState cs) {
617
+            CompositionState state;
618
+
619
+            switch (cs) {
620
+                case paused:
621
+                    state = CompositionState.ENTERED_TEXT;
622
+                    break;
623
+                case composing:
624
+                    state = CompositionState.TYPING;
625
+                    break;
626
+                case active:
627
+                case gone:
628
+                case inactive:
629
+                default:
630
+                    state = CompositionState.IDLE;
631
+                    break;
632
+            }
633
+
634
+            getCallback(CompositionStateChangeListener.class)
635
+                    .onCompositionStateCanged(null, null, state, chat.getParticipant());
636
+        }
637
+
608 638
     }
609 639
 
610 640
     private class PacketListenerImpl implements PacketListener {

Loading…
Cancel
Save