Mercurial > pidgin.yaz
comparison src/protocols/simple/simple.c @ 13842:a9ff4499d9ce
[gaim-migrate @ 16295]
Hopefully improve the typing notification code so it's a lot easier
to understand. This also creates a distinction between the signals
emitted when receiving GAIM_TYPED and GAIM_NOT_TYPING messages
(by adding a gaim-typed signal). And the gaim-not-typing signal
should work in all cases.
Most of this is stuff I changed last week during work, thanks to
Meebo
committer: Tailor Script <tailor@pidgin.im>
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Tue, 20 Jun 2006 08:17:49 +0000 |
parents | e4a4983752a9 |
children | 91a4cc3ee221 |
comparison
equal
deleted
inserted
replaced
13841:f3d4a9902ead | 13842:a9ff4499d9ce |
---|---|
1051 | 1051 |
1052 g_free(from); | 1052 g_free(from); |
1053 send_sip_response(sip->gc, msg, 200, "OK", NULL); | 1053 send_sip_response(sip->gc, msg, 200, "OK", NULL); |
1054 } | 1054 } |
1055 | 1055 |
1056 static int simple_typing(GaimConnection *gc, const char *name, int typing) { | 1056 static unsigned int simple_typing(GaimConnection *gc, const char *name, GaimTypingState state) { |
1057 struct simple_account_data *sip = gc->proto_data; | 1057 struct simple_account_data *sip = gc->proto_data; |
1058 | 1058 |
1059 gchar *xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" | 1059 gchar *xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" |
1060 "<isComposing xmlns=\"urn:ietf:params:xml:ns:im-iscomposing\"\n" | 1060 "<isComposing xmlns=\"urn:ietf:params:xml:ns:im-iscomposing\"\n" |
1061 "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n" | 1061 "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n" |
1063 "<state>%s</state>\n" | 1063 "<state>%s</state>\n" |
1064 "<contenttype>text/plain</contenttype>\n" | 1064 "<contenttype>text/plain</contenttype>\n" |
1065 "<refresh>60</refresh>\n" | 1065 "<refresh>60</refresh>\n" |
1066 "</isComposing>"; | 1066 "</isComposing>"; |
1067 gchar *recv = g_strdup(name); | 1067 gchar *recv = g_strdup(name); |
1068 if(typing == GAIM_TYPING) { | 1068 if(state == GAIM_TYPING) { |
1069 gchar *msg = g_strdup_printf(xml, "active"); | 1069 gchar *msg = g_strdup_printf(xml, "active"); |
1070 simple_send_message(sip, recv, msg, "application/im-iscomposing+xml"); | 1070 simple_send_message(sip, recv, msg, "application/im-iscomposing+xml"); |
1071 g_free(msg); | 1071 g_free(msg); |
1072 } else { | 1072 } else /* TODO: Only if (state == GAIM_TYPED) ? */ { |
1073 gchar *msg = g_strdup_printf(xml, "idle"); | 1073 gchar *msg = g_strdup_printf(xml, "idle"); |
1074 simple_send_message(sip, recv, msg, "application/im-iscomposing+xml"); | 1074 simple_send_message(sip, recv, msg, "application/im-iscomposing+xml"); |
1075 g_free(msg); | 1075 g_free(msg); |
1076 } | 1076 } |
1077 g_free(recv); | 1077 g_free(recv); |
1078 /* | |
1079 * TODO: Is this right? It will cause the core to call | |
1080 * serv_send_typing(gc, who, GAIM_TYPING) once every second | |
1081 * until the user stops typing. If that's not desired, | |
1082 * then return 0 instead. | |
1083 */ | |
1078 return 1; | 1084 return 1; |
1079 } | 1085 } |
1080 | 1086 |
1081 static gchar *find_tag(gchar *hdr) { | 1087 static gchar *find_tag(gchar *hdr) { |
1082 gchar *tmp = strstr(hdr, ";tag="); | 1088 gchar *tmp = strstr(hdr, ";tag="); |