|
@@ -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 {
|