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
 import com.dmdirc.parser.common.BaseSocketAwareParser;
26
 import com.dmdirc.parser.common.BaseSocketAwareParser;
27
 import com.dmdirc.parser.common.ChannelJoinRequest;
27
 import com.dmdirc.parser.common.ChannelJoinRequest;
28
 import com.dmdirc.parser.common.ChildImplementations;
28
 import com.dmdirc.parser.common.ChildImplementations;
29
+import com.dmdirc.parser.common.CompositionState;
29
 import com.dmdirc.parser.common.DefaultStringConverter;
30
 import com.dmdirc.parser.common.DefaultStringConverter;
30
 import com.dmdirc.parser.common.ParserError;
31
 import com.dmdirc.parser.common.ParserError;
31
 import com.dmdirc.parser.common.QueuePriority;
32
 import com.dmdirc.parser.common.QueuePriority;
35
 import com.dmdirc.parser.interfaces.callbacks.AwayStateListener;
36
 import com.dmdirc.parser.interfaces.callbacks.AwayStateListener;
36
 import com.dmdirc.parser.interfaces.callbacks.CallbackInterface;
37
 import com.dmdirc.parser.interfaces.callbacks.CallbackInterface;
37
 import com.dmdirc.parser.interfaces.callbacks.ChannelSelfJoinListener;
38
 import com.dmdirc.parser.interfaces.callbacks.ChannelSelfJoinListener;
39
+import com.dmdirc.parser.interfaces.callbacks.CompositionStateChangeListener;
38
 import com.dmdirc.parser.interfaces.callbacks.ConnectErrorListener;
40
 import com.dmdirc.parser.interfaces.callbacks.ConnectErrorListener;
39
 import com.dmdirc.parser.interfaces.callbacks.DataInListener;
41
 import com.dmdirc.parser.interfaces.callbacks.DataInListener;
40
 import com.dmdirc.parser.interfaces.callbacks.DataOutListener;
42
 import com.dmdirc.parser.interfaces.callbacks.DataOutListener;
58
 import org.jivesoftware.smack.ChatManagerListener;
60
 import org.jivesoftware.smack.ChatManagerListener;
59
 import org.jivesoftware.smack.ConnectionConfiguration;
61
 import org.jivesoftware.smack.ConnectionConfiguration;
60
 import org.jivesoftware.smack.ConnectionListener;
62
 import org.jivesoftware.smack.ConnectionListener;
61
-import org.jivesoftware.smack.MessageListener;
62
 import org.jivesoftware.smack.PacketListener;
63
 import org.jivesoftware.smack.PacketListener;
63
 import org.jivesoftware.smack.RosterEntry;
64
 import org.jivesoftware.smack.RosterEntry;
64
 import org.jivesoftware.smack.RosterListener;
65
 import org.jivesoftware.smack.RosterListener;
68
 import org.jivesoftware.smack.packet.Message;
69
 import org.jivesoftware.smack.packet.Message;
69
 import org.jivesoftware.smack.packet.Packet;
70
 import org.jivesoftware.smack.packet.Packet;
70
 import org.jivesoftware.smack.packet.Presence;
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
 import org.jivesoftware.smackx.muc.MultiUserChat;
75
 import org.jivesoftware.smackx.muc.MultiUserChat;
72
 
76
 
73
 /**
77
 /**
447
             connection.sendPacket(new Presence(Presence.Type.available, null, priority, Presence.Mode.available));
451
             connection.sendPacket(new Presence(Presence.Type.available, null, priority, Presence.Mode.available));
448
             connection.getRoster().addRosterListener(new RosterListenerImpl());
452
             connection.getRoster().addRosterListener(new RosterListenerImpl());
449
 
453
 
454
+            ChatStateManager.getInstance(connection);
455
+
450
             setServerName(connection.getServiceName());
456
             setServerName(connection.getServiceName());
451
 
457
 
452
             getCallback(ServerReadyListener.class).onServerReady(null, null);
458
             getCallback(ServerReadyListener.class).onServerReady(null, null);
593
 
599
 
594
     }
600
     }
595
 
601
 
596
-    private class MessageListenerImpl implements MessageListener {
602
+    private class MessageListenerImpl implements ChatStateListener {
597
 
603
 
598
         /** {@inheritDoc} */
604
         /** {@inheritDoc} */
599
         @Override
605
         @Override
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
     private class PacketListenerImpl implements PacketListener {
640
     private class PacketListenerImpl implements PacketListener {

Loading…
Cancel
Save