pidgin/gtkstatusbox.c

branch
soc.2013.gobjectification.plugins
changeset 37075
cf3f735b09b7
parent 37067
809519566f2e
parent 35475
ec0d44434ba8
child 37102
63a5361c11a1
equal deleted inserted replaced
37074:1e7b4b3741a0 37075:cf3f735b09b7
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:

mercurial