| 657 primary = g_strdup("New status"); |
657 primary = g_strdup("New status"); |
| 658 } |
658 } |
| 659 else if (account_status) |
659 else if (account_status) |
| 660 primary = g_strdup(purple_status_get_name(purple_account_get_active_status(acct))); |
660 primary = g_strdup(purple_status_get_name(purple_account_get_active_status(acct))); |
| 661 else if (purple_savedstatus_is_transient(saved_status)) |
661 else if (purple_savedstatus_is_transient(saved_status)) |
| 662 primary = g_strdup(purple_primitive_get_name_from_type(purple_savedstatus_get_type(saved_status))); |
662 primary = g_strdup(purple_primitive_get_name_from_type(purple_savedstatus_get_primitive_type(saved_status))); |
| 663 else |
663 else |
| 664 primary = g_markup_escape_text(purple_savedstatus_get_title(saved_status), -1); |
664 primary = g_markup_escape_text(purple_savedstatus_get_title(saved_status), -1); |
| 665 |
665 |
| 666 /* Secondary */ |
666 /* Secondary */ |
| 667 if (status_box->typing != 0) |
667 if (status_box->typing != 0) |
| 699 PurpleStatusPrimitive prim; |
699 PurpleStatusPrimitive prim; |
| 700 if (account_status) { |
700 if (account_status) { |
| 701 status_type = purple_status_get_status_type(purple_account_get_active_status(acct)); |
701 status_type = purple_status_get_status_type(purple_account_get_active_status(acct)); |
| 702 prim = purple_status_type_get_primitive(status_type); |
702 prim = purple_status_type_get_primitive(status_type); |
| 703 } else { |
703 } else { |
| 704 prim = purple_savedstatus_get_type(saved_status); |
704 prim = purple_savedstatus_get_primitive_type(saved_status); |
| 705 } |
705 } |
| 706 |
706 |
| 707 stock = pidgin_stock_id_from_status_primitive(prim); |
707 stock = pidgin_stock_id_from_status_primitive(prim); |
| 708 } |
708 } |
| 709 |
709 |
| 796 |
796 |
| 797 /* |
797 /* |
| 798 * If there is a token-account, then select the primitive from the |
798 * If there is a token-account, then select the primitive from the |
| 799 * dropdown using a loop. Otherwise select from the default list. |
799 * dropdown using a loop. Otherwise select from the default list. |
| 800 */ |
800 */ |
| 801 primitive = purple_savedstatus_get_type(saved_status); |
801 primitive = purple_savedstatus_get_primitive_type(saved_status); |
| 802 if (!status_box->token_status_account && purple_savedstatus_is_transient(saved_status) && |
802 if (!status_box->token_status_account && purple_savedstatus_is_transient(saved_status) && |
| 803 ((primitive == PURPLE_STATUS_AVAILABLE) || (primitive == PURPLE_STATUS_AWAY) || |
803 ((primitive == PURPLE_STATUS_AVAILABLE) || (primitive == PURPLE_STATUS_AWAY) || |
| 804 (primitive == PURPLE_STATUS_INVISIBLE) || (primitive == PURPLE_STATUS_OFFLINE) || |
804 (primitive == PURPLE_STATUS_INVISIBLE) || (primitive == PURPLE_STATUS_OFFLINE) || |
| 805 (primitive == PURPLE_STATUS_UNAVAILABLE)) && |
805 (primitive == PURPLE_STATUS_UNAVAILABLE)) && |
| 806 (!purple_savedstatus_has_substatuses(saved_status))) |
806 (!purple_savedstatus_has_substatuses(saved_status))) |
| 2176 prim = GPOINTER_TO_INT(data); |
2176 prim = GPOINTER_TO_INT(data); |
| 2177 } else if (type == PIDGIN_STATUS_BOX_TYPE_SAVED_POPULAR || |
2177 } else if (type == PIDGIN_STATUS_BOX_TYPE_SAVED_POPULAR || |
| 2178 type == PIDGIN_STATUS_BOX_TYPE_POPULAR) { |
2178 type == PIDGIN_STATUS_BOX_TYPE_POPULAR) { |
| 2179 PurpleSavedStatus *saved = purple_savedstatus_find_by_creation_time(GPOINTER_TO_INT(data)); |
2179 PurpleSavedStatus *saved = purple_savedstatus_find_by_creation_time(GPOINTER_TO_INT(data)); |
| 2180 if (saved) { |
2180 if (saved) { |
| 2181 prim = purple_savedstatus_get_type(saved); |
2181 prim = purple_savedstatus_get_primitive_type(saved); |
| 2182 } |
2182 } |
| 2183 } |
2183 } |
| 2184 |
2184 |
| 2185 stock = pidgin_stock_id_from_status_primitive(prim); |
2185 stock = pidgin_stock_id_from_status_primitive(prim); |
| 2186 } |
2186 } |
| 2424 /* Selected status and previous status is the same */ |
2424 /* Selected status and previous status is the same */ |
| 2425 PurpleSavedStatus *ss = purple_savedstatus_get_current(); |
2425 PurpleSavedStatus *ss = purple_savedstatus_get_current(); |
| 2426 /* Make sure that statusbox displays the correct thing. |
2426 /* Make sure that statusbox displays the correct thing. |
| 2427 * It can get messed up if the previous selection was a |
2427 * It can get messed up if the previous selection was a |
| 2428 * saved status that wasn't supported by this account */ |
2428 * saved status that wasn't supported by this account */ |
| 2429 if ((purple_savedstatus_get_type(ss) == primitive) |
2429 if ((purple_savedstatus_get_primitive_type(ss) == primitive) |
| 2430 && purple_savedstatus_is_transient(ss) |
2430 && purple_savedstatus_is_transient(ss) |
| 2431 && purple_savedstatus_has_substatuses(ss)) |
2431 && purple_savedstatus_has_substatuses(ss)) |
| 2432 changed = FALSE; |
2432 changed = FALSE; |
| 2433 } |
2433 } |
| 2434 } else { |
2434 } else { |
| 2435 saved_status = purple_savedstatus_get_current(); |
2435 saved_status = purple_savedstatus_get_current(); |
| 2436 if (purple_savedstatus_get_type(saved_status) == primitive && |
2436 if (purple_savedstatus_get_primitive_type(saved_status) == primitive && |
| 2437 !purple_savedstatus_has_substatuses(saved_status) && |
2437 !purple_savedstatus_has_substatuses(saved_status) && |
| 2438 purple_strequal(purple_savedstatus_get_message(saved_status), message)) |
2438 purple_strequal(purple_savedstatus_get_message(saved_status), message)) |
| 2439 { |
2439 { |
| 2440 changed = FALSE; |
2440 changed = FALSE; |
| 2441 } |
2441 } |
| 2451 for (; iter != NULL; iter = iter->next) { |
2451 for (; iter != NULL; iter = iter->next) { |
| 2452 PurpleSavedStatus *ss = iter->data; |
2452 PurpleSavedStatus *ss = iter->data; |
| 2453 const char *ss_msg = purple_savedstatus_get_message(ss); |
2453 const char *ss_msg = purple_savedstatus_get_message(ss); |
| 2454 /* find a known transient status that is the same as the |
2454 /* find a known transient status that is the same as the |
| 2455 * new selected one */ |
2455 * new selected one */ |
| 2456 if ((purple_savedstatus_get_type(ss) == primitive) && purple_savedstatus_is_transient(ss) && |
2456 if ((purple_savedstatus_get_primitive_type(ss) == primitive) && purple_savedstatus_is_transient(ss) && |
| 2457 purple_savedstatus_has_substatuses(ss) && /* Must have substatuses */ |
2457 purple_savedstatus_has_substatuses(ss) && /* Must have substatuses */ |
| 2458 purple_strequal(ss_msg, message)) |
2458 purple_strequal(ss_msg, message)) |
| 2459 { |
2459 { |
| 2460 gboolean found = FALSE; |
2460 gboolean found = FALSE; |
| 2461 /* this status must have substatuses for all the active accts */ |
2461 /* this status must have substatuses for all the active accts */ |
| 2462 for(tmp = active_accts; tmp != NULL; tmp = tmp->next) { |
2462 for(tmp = active_accts; tmp != NULL; tmp = tmp->next) { |
| 2463 PurpleAccount *acct = tmp->data; |
2463 PurpleAccount *acct = tmp->data; |
| 2464 PurpleSavedStatusSub *sub = purple_savedstatus_get_substatus(ss, acct); |
2464 PurpleSavedStatusSub *sub = purple_savedstatus_get_substatus(ss, acct); |
| 2465 if (sub) { |
2465 if (sub) { |
| 2466 const PurpleStatusType *sub_type = purple_savedstatus_substatus_get_type(sub); |
2466 const PurpleStatusType *sub_type = |
| |
2467 purple_savedstatus_substatus_get_status_type(sub); |
| 2467 const char *subtype_status_id = purple_status_type_get_id(sub_type); |
2468 const char *subtype_status_id = purple_status_type_get_id(sub_type); |
| 2468 if (purple_strequal(subtype_status_id, id)) { |
2469 if (purple_strequal(subtype_status_id, id)) { |
| 2469 found = TRUE; |
2470 found = TRUE; |
| 2470 break; |
2471 break; |
| 2471 } |
2472 } |
| 2683 |
2684 |
| 2684 if (type == PIDGIN_STATUS_BOX_TYPE_CUSTOM) |
2685 if (type == PIDGIN_STATUS_BOX_TYPE_CUSTOM) |
| 2685 { |
2686 { |
| 2686 PurpleSavedStatus *saved_status; |
2687 PurpleSavedStatus *saved_status; |
| 2687 saved_status = purple_savedstatus_get_current(); |
2688 saved_status = purple_savedstatus_get_current(); |
| 2688 if (purple_savedstatus_get_type(saved_status) == PURPLE_STATUS_AVAILABLE) |
2689 if (purple_savedstatus_get_primitive_type(saved_status) == PURPLE_STATUS_AVAILABLE) |
| 2689 saved_status = purple_savedstatus_new(NULL, PURPLE_STATUS_AWAY); |
2690 saved_status = purple_savedstatus_new(NULL, PURPLE_STATUS_AWAY); |
| 2690 pidgin_status_editor_show(FALSE, |
2691 pidgin_status_editor_show(FALSE, |
| 2691 purple_savedstatus_is_transient(saved_status) |
2692 purple_savedstatus_is_transient(saved_status) |
| 2692 ? saved_status : NULL); |
2693 ? saved_status : NULL); |
| 2693 status_menu_refresh_iter(status_box, wastyping); |
2694 status_menu_refresh_iter(status_box, wastyping); |
| 2759 static gint |
2760 static gint |
| 2760 get_statusbox_index(PidginStatusBox *box, PurpleSavedStatus *saved_status) |
2761 get_statusbox_index(PidginStatusBox *box, PurpleSavedStatus *saved_status) |
| 2761 { |
2762 { |
| 2762 gint index = -1; |
2763 gint index = -1; |
| 2763 |
2764 |
| 2764 switch (purple_savedstatus_get_type(saved_status)) |
2765 switch (purple_savedstatus_get_primitive_type(saved_status)) |
| 2765 { |
2766 { |
| 2766 /* In reverse order */ |
2767 /* In reverse order */ |
| 2767 case PURPLE_STATUS_OFFLINE: |
2768 case PURPLE_STATUS_OFFLINE: |
| 2768 index++; |
2769 index++; |
| 2769 case PURPLE_STATUS_INVISIBLE: |
2770 case PURPLE_STATUS_INVISIBLE: |