Mercurial > pidgin.yaz
comparison libpurple/pounce.c @ 26003:983311560ef9
merge of 'b7c7f0f5daca252711952e60e283dd18a1983d33'
and 'e878814dfc99f1f0a681a2263488c75a068c7c8e'
author | Peter Hjalmarsson <xake@rymdraket.net> |
---|---|
date | Wed, 04 Mar 2009 16:52:47 +0000 |
parents | a6e3cb32cdd2 |
children | 32a707746454 |
comparison
equal
deleted
inserted
replaced
25922:d03177395ae0 | 26003:983311560ef9 |
---|---|
324 if (data->buffer != NULL) { | 324 if (data->buffer != NULL) { |
325 g_string_free(data->buffer, TRUE); | 325 g_string_free(data->buffer, TRUE); |
326 data->buffer = NULL; | 326 data->buffer = NULL; |
327 } | 327 } |
328 | 328 |
329 if (!strcmp(element_name, "pounce")) { | 329 if (purple_strequal(element_name, "pounce")) { |
330 const char *ui = g_hash_table_lookup(atts, "ui"); | 330 const char *ui = g_hash_table_lookup(atts, "ui"); |
331 | 331 |
332 if (ui == NULL) { | 332 if (ui == NULL) { |
333 purple_debug(PURPLE_DEBUG_ERROR, "pounce", | 333 purple_debug(PURPLE_DEBUG_ERROR, "pounce", |
334 "Unset 'ui' parameter for pounce!\n"); | 334 "Unset 'ui' parameter for pounce!\n"); |
336 else | 336 else |
337 data->ui_name = g_strdup(ui); | 337 data->ui_name = g_strdup(ui); |
338 | 338 |
339 data->events = 0; | 339 data->events = 0; |
340 } | 340 } |
341 else if (!strcmp(element_name, "account")) { | 341 else if (purple_strequal(element_name, "account")) { |
342 const char *protocol_id = g_hash_table_lookup(atts, "protocol"); | 342 const char *protocol_id = g_hash_table_lookup(atts, "protocol"); |
343 | 343 |
344 if (protocol_id == NULL) { | 344 if (protocol_id == NULL) { |
345 purple_debug(PURPLE_DEBUG_ERROR, "pounce", | 345 purple_debug(PURPLE_DEBUG_ERROR, "pounce", |
346 "Unset 'protocol' parameter for account!\n"); | 346 "Unset 'protocol' parameter for account!\n"); |
347 } | 347 } |
348 else | 348 else |
349 data->protocol_id = g_strdup(protocol_id); | 349 data->protocol_id = g_strdup(protocol_id); |
350 } | 350 } |
351 else if (!strcmp(element_name, "option")) { | 351 else if (purple_strequal(element_name, "option")) { |
352 const char *type = g_hash_table_lookup(atts, "type"); | 352 const char *type = g_hash_table_lookup(atts, "type"); |
353 | 353 |
354 if (type == NULL) { | 354 if (type == NULL) { |
355 purple_debug(PURPLE_DEBUG_ERROR, "pounce", | 355 purple_debug(PURPLE_DEBUG_ERROR, "pounce", |
356 "Unset 'type' parameter for option!\n"); | 356 "Unset 'type' parameter for option!\n"); |
357 } | 357 } |
358 else | 358 else |
359 data->option_type = g_strdup(type); | 359 data->option_type = g_strdup(type); |
360 } | 360 } |
361 else if (!strcmp(element_name, "event")) { | 361 else if (purple_strequal(element_name, "event")) { |
362 const char *type = g_hash_table_lookup(atts, "type"); | 362 const char *type = g_hash_table_lookup(atts, "type"); |
363 | 363 |
364 if (type == NULL) { | 364 if (type == NULL) { |
365 purple_debug(PURPLE_DEBUG_ERROR, "pounce", | 365 purple_debug(PURPLE_DEBUG_ERROR, "pounce", |
366 "Unset 'type' parameter for event!\n"); | 366 "Unset 'type' parameter for event!\n"); |
367 } | 367 } |
368 else | 368 else |
369 data->event_type = g_strdup(type); | 369 data->event_type = g_strdup(type); |
370 } | 370 } |
371 else if (!strcmp(element_name, "action")) { | 371 else if (purple_strequal(element_name, "action")) { |
372 const char *type = g_hash_table_lookup(atts, "type"); | 372 const char *type = g_hash_table_lookup(atts, "type"); |
373 | 373 |
374 if (type == NULL) { | 374 if (type == NULL) { |
375 purple_debug(PURPLE_DEBUG_ERROR, "pounce", | 375 purple_debug(PURPLE_DEBUG_ERROR, "pounce", |
376 "Unset 'type' parameter for action!\n"); | 376 "Unset 'type' parameter for action!\n"); |
377 } | 377 } |
378 else | 378 else |
379 data->action_name = g_strdup(type); | 379 data->action_name = g_strdup(type); |
380 } | 380 } |
381 else if (!strcmp(element_name, "param")) { | 381 else if (purple_strequal(element_name, "param")) { |
382 const char *param_name = g_hash_table_lookup(atts, "name"); | 382 const char *param_name = g_hash_table_lookup(atts, "name"); |
383 | 383 |
384 if (param_name == NULL) { | 384 if (param_name == NULL) { |
385 purple_debug(PURPLE_DEBUG_ERROR, "pounce", | 385 purple_debug(PURPLE_DEBUG_ERROR, "pounce", |
386 "Unset 'name' parameter for param!\n"); | 386 "Unset 'name' parameter for param!\n"); |
402 if (data->buffer != NULL) { | 402 if (data->buffer != NULL) { |
403 buffer = g_string_free(data->buffer, FALSE); | 403 buffer = g_string_free(data->buffer, FALSE); |
404 data->buffer = NULL; | 404 data->buffer = NULL; |
405 } | 405 } |
406 | 406 |
407 if (!strcmp(element_name, "account")) { | 407 if (purple_strequal(element_name, "account")) { |
408 char *tmp; | 408 char *tmp; |
409 g_free(data->account_name); | 409 g_free(data->account_name); |
410 data->account_name = g_strdup(buffer); | 410 data->account_name = g_strdup(buffer); |
411 tmp = data->protocol_id; | 411 tmp = data->protocol_id; |
412 data->protocol_id = g_strdup(_purple_oscar_convert(buffer, tmp)); | 412 data->protocol_id = g_strdup(_purple_oscar_convert(buffer, tmp)); |
413 g_free(tmp); | 413 g_free(tmp); |
414 } | 414 } |
415 else if (!strcmp(element_name, "pouncee")) { | 415 else if (purple_strequal(element_name, "pouncee")) { |
416 g_free(data->pouncee); | 416 g_free(data->pouncee); |
417 data->pouncee = g_strdup(buffer); | 417 data->pouncee = g_strdup(buffer); |
418 } | 418 } |
419 else if (!strcmp(element_name, "option")) { | 419 else if (purple_strequal(element_name, "option")) { |
420 if (!strcmp(data->option_type, "on-away")) | 420 if (purple_strequal(data->option_type, "on-away")) |
421 data->options |= PURPLE_POUNCE_OPTION_AWAY; | 421 data->options |= PURPLE_POUNCE_OPTION_AWAY; |
422 | 422 |
423 g_free(data->option_type); | 423 g_free(data->option_type); |
424 data->option_type = NULL; | 424 data->option_type = NULL; |
425 } | 425 } |
426 else if (!strcmp(element_name, "event")) { | 426 else if (purple_strequal(element_name, "event")) { |
427 if (!strcmp(data->event_type, "sign-on")) | 427 if (purple_strequal(data->event_type, "sign-on")) |
428 data->events |= PURPLE_POUNCE_SIGNON; | 428 data->events |= PURPLE_POUNCE_SIGNON; |
429 else if (!strcmp(data->event_type, "sign-off")) | 429 else if (purple_strequal(data->event_type, "sign-off")) |
430 data->events |= PURPLE_POUNCE_SIGNOFF; | 430 data->events |= PURPLE_POUNCE_SIGNOFF; |
431 else if (!strcmp(data->event_type, "away")) | 431 else if (purple_strequal(data->event_type, "away")) |
432 data->events |= PURPLE_POUNCE_AWAY; | 432 data->events |= PURPLE_POUNCE_AWAY; |
433 else if (!strcmp(data->event_type, "return-from-away")) | 433 else if (purple_strequal(data->event_type, "return-from-away")) |
434 data->events |= PURPLE_POUNCE_AWAY_RETURN; | 434 data->events |= PURPLE_POUNCE_AWAY_RETURN; |
435 else if (!strcmp(data->event_type, "idle")) | 435 else if (purple_strequal(data->event_type, "idle")) |
436 data->events |= PURPLE_POUNCE_IDLE; | 436 data->events |= PURPLE_POUNCE_IDLE; |
437 else if (!strcmp(data->event_type, "return-from-idle")) | 437 else if (purple_strequal(data->event_type, "return-from-idle")) |
438 data->events |= PURPLE_POUNCE_IDLE_RETURN; | 438 data->events |= PURPLE_POUNCE_IDLE_RETURN; |
439 else if (!strcmp(data->event_type, "start-typing")) | 439 else if (purple_strequal(data->event_type, "start-typing")) |
440 data->events |= PURPLE_POUNCE_TYPING; | 440 data->events |= PURPLE_POUNCE_TYPING; |
441 else if (!strcmp(data->event_type, "typed")) | 441 else if (purple_strequal(data->event_type, "typed")) |
442 data->events |= PURPLE_POUNCE_TYPED; | 442 data->events |= PURPLE_POUNCE_TYPED; |
443 else if (!strcmp(data->event_type, "stop-typing")) | 443 else if (purple_strequal(data->event_type, "stop-typing")) |
444 data->events |= PURPLE_POUNCE_TYPING_STOPPED; | 444 data->events |= PURPLE_POUNCE_TYPING_STOPPED; |
445 else if (!strcmp(data->event_type, "message-received")) | 445 else if (purple_strequal(data->event_type, "message-received")) |
446 data->events |= PURPLE_POUNCE_MESSAGE_RECEIVED; | 446 data->events |= PURPLE_POUNCE_MESSAGE_RECEIVED; |
447 | 447 |
448 g_free(data->event_type); | 448 g_free(data->event_type); |
449 data->event_type = NULL; | 449 data->event_type = NULL; |
450 } | 450 } |
451 else if (!strcmp(element_name, "action")) { | 451 else if (purple_strequal(element_name, "action")) { |
452 if (data->pounce != NULL) { | 452 if (data->pounce != NULL) { |
453 purple_pounce_action_register(data->pounce, data->action_name); | 453 purple_pounce_action_register(data->pounce, data->action_name); |
454 purple_pounce_action_set_enabled(data->pounce, data->action_name, TRUE); | 454 purple_pounce_action_set_enabled(data->pounce, data->action_name, TRUE); |
455 } | 455 } |
456 | 456 |
457 g_free(data->action_name); | 457 g_free(data->action_name); |
458 data->action_name = NULL; | 458 data->action_name = NULL; |
459 } | 459 } |
460 else if (!strcmp(element_name, "param")) { | 460 else if (purple_strequal(element_name, "param")) { |
461 if (data->pounce != NULL) { | 461 if (data->pounce != NULL) { |
462 purple_pounce_action_set_attribute(data->pounce, data->action_name, | 462 purple_pounce_action_set_attribute(data->pounce, data->action_name, |
463 data->param_name, buffer); | 463 data->param_name, buffer); |
464 } | 464 } |
465 | 465 |
466 g_free(data->param_name); | 466 g_free(data->param_name); |
467 data->param_name = NULL; | 467 data->param_name = NULL; |
468 } | 468 } |
469 else if (!strcmp(element_name, "events")) { | 469 else if (purple_strequal(element_name, "events")) { |
470 PurpleAccount *account; | 470 PurpleAccount *account; |
471 | 471 |
472 account = purple_accounts_find(data->account_name, data->protocol_id); | 472 account = purple_accounts_find(data->account_name, data->protocol_id); |
473 | 473 |
474 g_free(data->account_name); | 474 g_free(data->account_name); |
497 } | 497 } |
498 | 498 |
499 g_free(data->pouncee); | 499 g_free(data->pouncee); |
500 data->pouncee = NULL; | 500 data->pouncee = NULL; |
501 } | 501 } |
502 else if (!strcmp(element_name, "save")) { | 502 else if (purple_strequal(element_name, "save")) { |
503 if (data->pounce != NULL) | 503 if (data->pounce != NULL) |
504 purple_pounce_set_save(data->pounce, TRUE); | 504 purple_pounce_set_save(data->pounce, TRUE); |
505 } | 505 } |
506 else if (!strcmp(element_name, "pounce")) { | 506 else if (purple_strequal(element_name, "pounce")) { |
507 data->pounce = NULL; | 507 data->pounce = NULL; |
508 data->events = 0; | 508 data->events = 0; |
509 data->options = 0; | 509 data->options = 0; |
510 | 510 |
511 g_free(data->ui_name); | 511 g_free(data->ui_name); |
1021 GList *list = NULL, *iter; | 1021 GList *list = NULL, *iter; |
1022 g_return_val_if_fail(ui != NULL, NULL); | 1022 g_return_val_if_fail(ui != NULL, NULL); |
1023 | 1023 |
1024 for (iter = pounces; iter; iter = iter->next) { | 1024 for (iter = pounces; iter; iter = iter->next) { |
1025 PurplePounce *pounce = iter->data; | 1025 PurplePounce *pounce = iter->data; |
1026 if (pounce->ui_type && strcmp(pounce->ui_type, ui) == 0) | 1026 if (purple_strequal(pounce->ui_type, ui)) |
1027 list = g_list_prepend(list, pounce); | 1027 list = g_list_prepend(list, pounce); |
1028 } | 1028 } |
1029 list = g_list_reverse(list); | 1029 list = g_list_reverse(list); |
1030 return list; | 1030 return list; |
1031 } | 1031 } |
1040 } | 1040 } |
1041 | 1041 |
1042 static void | 1042 static void |
1043 buddy_state_cb(PurpleBuddy *buddy, PurplePounceEvent event) | 1043 buddy_state_cb(PurpleBuddy *buddy, PurplePounceEvent event) |
1044 { | 1044 { |
1045 purple_pounce_execute(buddy->account, buddy->name, event); | 1045 PurpleAccount *account = purple_buddy_get_account(buddy); |
1046 const gchar *name = purple_buddy_get_name(buddy); | |
1047 | |
1048 purple_pounce_execute(account, name, event); | |
1046 } | 1049 } |
1047 | 1050 |
1048 static void | 1051 static void |
1049 buddy_status_changed_cb(PurpleBuddy *buddy, PurpleStatus *old_status, | 1052 buddy_status_changed_cb(PurpleBuddy *buddy, PurpleStatus *old_status, |
1050 PurpleStatus *status) | 1053 PurpleStatus *status) |
1051 { | 1054 { |
1055 PurpleAccount *account = purple_buddy_get_account(buddy); | |
1056 const gchar *name = purple_buddy_get_name(buddy); | |
1052 gboolean old_available, available; | 1057 gboolean old_available, available; |
1053 | 1058 |
1054 available = purple_status_is_available(status); | 1059 available = purple_status_is_available(status); |
1055 old_available = purple_status_is_available(old_status); | 1060 old_available = purple_status_is_available(old_status); |
1056 | 1061 |
1057 if (available && !old_available) | 1062 if (available && !old_available) |
1058 purple_pounce_execute(buddy->account, buddy->name, | 1063 purple_pounce_execute(account, name, PURPLE_POUNCE_AWAY_RETURN); |
1059 PURPLE_POUNCE_AWAY_RETURN); | |
1060 else if (!available && old_available) | 1064 else if (!available && old_available) |
1061 purple_pounce_execute(buddy->account, buddy->name, | 1065 purple_pounce_execute(account, name, PURPLE_POUNCE_AWAY); |
1062 PURPLE_POUNCE_AWAY); | |
1063 } | 1066 } |
1064 | 1067 |
1065 static void | 1068 static void |
1066 buddy_idle_changed_cb(PurpleBuddy *buddy, gboolean old_idle, gboolean idle) | 1069 buddy_idle_changed_cb(PurpleBuddy *buddy, gboolean old_idle, gboolean idle) |
1067 { | 1070 { |
1071 PurpleAccount *account = purple_buddy_get_account(buddy); | |
1072 const gchar *name = purple_buddy_get_name(buddy); | |
1073 | |
1068 if (idle && !old_idle) | 1074 if (idle && !old_idle) |
1069 purple_pounce_execute(buddy->account, buddy->name, | 1075 purple_pounce_execute(account, name, PURPLE_POUNCE_IDLE); |
1070 PURPLE_POUNCE_IDLE); | |
1071 else if (!idle && old_idle) | 1076 else if (!idle && old_idle) |
1072 purple_pounce_execute(buddy->account, buddy->name, | 1077 purple_pounce_execute(account, name, PURPLE_POUNCE_IDLE_RETURN); |
1073 PURPLE_POUNCE_IDLE_RETURN); | |
1074 } | 1078 } |
1075 | 1079 |
1076 static void | 1080 static void |
1077 buddy_typing_cb(PurpleAccount *account, const char *name, void *data) | 1081 buddy_typing_cb(PurpleAccount *account, const char *name, void *data) |
1078 { | 1082 { |