Mercurial > pidgin
comparison libpurple/protocols/jabber/google.c @ 20169:575d8c84ccba
Show when Gmail count falls, instead of only when it rises. Fixes #1462
author | Sean Egan <seanegan@gmail.com> |
---|---|
date | Wed, 19 Sep 2007 20:35:00 +0000 |
parents | 44b4e8bd759b |
children | a5d366d614f5 |
comparison
equal
deleted
inserted
replaced
20162:181bcc9a2888 | 20169:575d8c84ccba |
---|---|
37 xmlnode *message, *sender_node, *subject_node; | 37 xmlnode *message, *sender_node, *subject_node; |
38 const char *from, *to, *url, *tid; | 38 const char *from, *to, *url, *tid; |
39 char *subject; | 39 char *subject; |
40 const char *in_str; | 40 const char *in_str; |
41 char *to_name; | 41 char *to_name; |
42 char *default_tos[1]; | |
43 | |
42 int i, count = 1, returned_count; | 44 int i, count = 1, returned_count; |
43 | 45 |
44 const char **tos, **froms, **urls; | 46 const char **tos, **froms, **urls; |
45 char **subjects; | 47 char **subjects; |
46 | 48 |
53 | 55 |
54 in_str = xmlnode_get_attrib(child, "total-matched"); | 56 in_str = xmlnode_get_attrib(child, "total-matched"); |
55 if (in_str && *in_str) | 57 if (in_str && *in_str) |
56 count = atoi(in_str); | 58 count = atoi(in_str); |
57 | 59 |
58 if (count == 0) | 60 /* If Gmail doesn't tell us who the mail is to, let's use our JID */ |
59 return; | 61 to = xmlnode_get_attrib(packet, "to"); |
62 default_tos[0] = jabber_get_bare_jid(to); | |
63 | |
64 if (count == 0) { | |
65 purple_notify_emails(js->gc, count, FALSE, NULL, NULL, default_tos, NULL, NULL, NULL); | |
66 g_free(default_tos[0]); | |
67 return; | |
68 } | |
60 | 69 |
61 message = xmlnode_get_child(child, "mail-thread-info"); | 70 message = xmlnode_get_child(child, "mail-thread-info"); |
71 if (!message) { | |
72 purple_notify_emails(js->gc, count, FALSE, NULL, NULL, default_tos, NULL, NULL, NULL); | |
73 g_free(default_tos[0]); | |
74 return; | |
75 } | |
62 | 76 |
63 /* Loop once to see how many messages were returned so we can allocate arrays | 77 /* Loop once to see how many messages were returned so we can allocate arrays |
64 * accordingly */ | 78 * accordingly */ |
65 if (!message) | |
66 return; | |
67 for (returned_count = 0; message; returned_count++, message=xmlnode_get_next_twin(message)); | 79 for (returned_count = 0; message; returned_count++, message=xmlnode_get_next_twin(message)); |
68 | 80 |
69 froms = g_new0(const char* , returned_count); | 81 froms = g_new0(const char* , returned_count); |
70 tos = g_new0(const char* , returned_count); | 82 tos = g_new0(const char* , returned_count); |
71 subjects = g_new0(char* , returned_count); | 83 subjects = g_new0(char* , returned_count); |
113 } | 125 } |
114 | 126 |
115 if (i>0) | 127 if (i>0) |
116 purple_notify_emails(js->gc, count, count == i, (const char**) subjects, froms, tos, | 128 purple_notify_emails(js->gc, count, count == i, (const char**) subjects, froms, tos, |
117 urls, NULL, NULL); | 129 urls, NULL, NULL); |
130 else | |
131 purple_notify_emails(js->gc, count, FALSE, NULL, NULL, default_tos, NULL, NULL, NULL); | |
132 | |
118 | 133 |
119 g_free(to_name); | 134 g_free(to_name); |
120 g_free(tos); | 135 g_free(tos); |
136 g_free(default_tos[0]); | |
121 g_free(froms); | 137 g_free(froms); |
122 for (; i > 0; i--) | 138 for (; i > 0; i--) |
123 g_free(subjects[i - 1]); | 139 g_free(subjects[i - 1]); |
124 g_free(subjects); | 140 g_free(subjects); |
125 g_free(urls); | 141 g_free(urls); |