Mercurial > pidgin
comparison libpurple/server.c @ 19454:a650c8294bd2
merge of '0bf01031d132e0c8d3ab091041ec704fcfc2b152'
and '5b0dfe36f723f3de64d94f962693b9df13b36a40'
| author | Kevin Stange <kevin@simguy.net> |
|---|---|
| date | Sun, 26 Aug 2007 19:08:29 +0000 |
| parents | 6395c2e96bc2 |
| children | 3ad938b84843 |
comparison
equal
deleted
inserted
replaced
| 19383:90a41215bcb1 | 19454:a650c8294bd2 |
|---|---|
| 240 g_free(tmp); | 240 g_free(tmp); |
| 241 } | 241 } |
| 242 } | 242 } |
| 243 } | 243 } |
| 244 | 244 |
| 245 /** Indicate that an attention message was sent or received. */ | |
| 246 void | |
| 247 serv_got_attention(PurpleConnection *gc, const char *who, PurpleAttentionType *attn, gboolean incoming) | |
| 248 { | |
| 249 PurpleConversation *conv; | |
| 250 PurpleMessageFlags flags; | |
| 251 gchar *description; | |
| 252 int plugin_return; | |
| 253 | |
| 254 | |
| 255 /* For incoming messages, block the attention message if requested (privacy) */ | |
| 256 if (incoming) { | |
| 257 gchar *who_copy; | |
| 258 | |
| 259 if (PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl)->set_permit_deny == NULL) | |
| 260 if (!purple_privacy_check(gc->account, who)) | |
| 261 return; | |
| 262 | |
| 263 conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, who, gc->account); | |
| 264 | |
| 265 who_copy = g_strdup(who); | |
| 266 | |
| 267 plugin_return = GPOINTER_TO_INT( | |
| 268 purple_signal_emit_return_1(purple_conversations_get_handle(), | |
| 269 "receiving-im-msg", gc->account, | |
| 270 &who_copy, &attn, conv)); | |
| 271 | |
| 272 if (!attn || !who_copy || plugin_return) { | |
| 273 g_free(who_copy); | |
| 274 return; | |
| 275 } | |
| 276 | |
| 277 purple_signal_emit(purple_conversations_get_handle(), "received-im-msg", gc->account, | |
| 278 who, attn, conv); | |
| 279 } | |
| 280 | |
| 281 /* The attention message was allowed. Create a string representing the message. */ | |
| 282 flags = PURPLE_MESSAGE_SYSTEM; | |
| 283 | |
| 284 /* TODO: if (attn->icon_name) is non-null, use it to lookup an emoticon and display | |
| 285 * it next to the attention command. And if it is null, display a generic icon. */ | |
| 286 | |
| 287 if (incoming) { | |
| 288 if (attn->incoming_description) { | |
| 289 description = g_strdup_printf(_("Attention! You have been %s."), attn->incoming_description); | |
| 290 } else { | |
| 291 description = g_strdup(_("Attention!")); | |
| 292 } | |
| 293 flags |= PURPLE_MESSAGE_RECV; | |
| 294 } else { | |
| 295 if (attn->outgoing_description) { | |
| 296 description = g_strdup_printf(_("Attention! %s %s."), attn->outgoing_description, who); | |
| 297 } else { | |
| 298 description = g_strdup(_("Attention!")); | |
| 299 } | |
| 300 flags |= PURPLE_MESSAGE_SEND; | |
| 301 } | |
| 302 | |
| 303 /* Display it in the conversation window to the user. */ | |
| 304 conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, who, gc->account); | |
| 305 if (!conv) | |
| 306 conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, gc->account, who); | |
| 307 | |
| 308 purple_conv_im_write(PURPLE_CONV_IM(conv), NULL, description, flags, time(NULL)); | |
| 309 | |
| 310 g_free(description); | |
| 311 } | |
| 312 | |
| 313 | |
| 245 /* | 314 /* |
| 246 * Move a buddy from one group to another on server. | 315 * Move a buddy from one group to another on server. |
| 247 * | 316 * |
| 248 * Note: For now we'll not deal with changing gc's at the same time, but | 317 * Note: For now we'll not deal with changing gc's at the same time, but |
| 249 * it should be possible. Probably needs to be done, someday. Although, | 318 * it should be possible. Probably needs to be done, someday. Although, |
