Mercurial > pidgin
comparison libpurple/protocols/gg/gg.c @ 32280:26ffd7fdba7d
Gadu-Gadu: better handling of invisible and chatty statuses. Fixes #13836
author | tomkiewicz@cpw.pidgin.im |
---|---|
date | Fri, 14 Oct 2011 18:33:52 +0000 |
parents | 318345f39e98 |
children | 326591e64aaa |
comparison
equal
deleted
inserted
replaced
32279:318345f39e98 | 32280:26ffd7fdba7d |
---|---|
1150 case GG_STATUS_NOT_AVAIL_DESCR: | 1150 case GG_STATUS_NOT_AVAIL_DESCR: |
1151 st = purple_primitive_get_id_from_type(PURPLE_STATUS_OFFLINE); | 1151 st = purple_primitive_get_id_from_type(PURPLE_STATUS_OFFLINE); |
1152 break; | 1152 break; |
1153 case GG_STATUS_FFC: | 1153 case GG_STATUS_FFC: |
1154 case GG_STATUS_FFC_DESCR: | 1154 case GG_STATUS_FFC_DESCR: |
1155 st = purple_primitive_get_id_from_type(PURPLE_STATUS_AVAILABLE); | 1155 st = "freeforchat"; |
1156 break; | 1156 break; |
1157 case GG_STATUS_AVAIL: | 1157 case GG_STATUS_AVAIL: |
1158 case GG_STATUS_AVAIL_DESCR: | 1158 case GG_STATUS_AVAIL_DESCR: |
1159 st = purple_primitive_get_id_from_type(PURPLE_STATUS_AVAILABLE); | 1159 st = purple_primitive_get_id_from_type(PURPLE_STATUS_AVAILABLE); |
1160 break; | 1160 break; |
1161 case GG_STATUS_BUSY: | 1161 case GG_STATUS_BUSY: |
1162 case GG_STATUS_BUSY_DESCR: | 1162 case GG_STATUS_BUSY_DESCR: |
1163 st = purple_primitive_get_id_from_type(PURPLE_STATUS_AWAY); | 1163 st = purple_primitive_get_id_from_type(PURPLE_STATUS_AWAY); |
1164 break; | |
1165 case GG_STATUS_INVISIBLE: | |
1166 case GG_STATUS_INVISIBLE_DESCR: | |
1167 st = purple_primitive_get_id_from_type(PURPLE_STATUS_INVISIBLE); | |
1164 break; | 1168 break; |
1165 case GG_STATUS_DND: | 1169 case GG_STATUS_DND: |
1166 case GG_STATUS_DND_DESCR: | 1170 case GG_STATUS_DND_DESCR: |
1167 st = purple_primitive_get_id_from_type(PURPLE_STATUS_UNAVAILABLE); | 1171 st = purple_primitive_get_id_from_type(PURPLE_STATUS_UNAVAILABLE); |
1168 break; | 1172 break; |
2148 static GList *ggp_status_types(PurpleAccount *account) | 2152 static GList *ggp_status_types(PurpleAccount *account) |
2149 { | 2153 { |
2150 PurpleStatusType *type; | 2154 PurpleStatusType *type; |
2151 GList *types = NULL; | 2155 GList *types = NULL; |
2152 | 2156 |
2153 type = purple_status_type_new_with_attrs( | 2157 type = purple_status_type_new_with_attrs(PURPLE_STATUS_AVAILABLE, |
2154 PURPLE_STATUS_AVAILABLE, NULL, NULL, TRUE, TRUE, FALSE, | 2158 NULL, NULL, TRUE, TRUE, FALSE, |
2155 "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING), | 2159 "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING), |
2156 NULL); | 2160 NULL); |
2157 types = g_list_append(types, type); | 2161 types = g_list_append(types, type); |
2158 | 2162 |
2159 /* | 2163 /* |
2160 * Without this selecting Invisible as own status doesn't | 2164 * New status for GG 8.0: PoGGadaj ze mna (chatty). |
2161 * work. It's not used and not needed to show status of buddies. | 2165 * NOTE: at this time, this is used only to set our own status. |
2162 */ | 2166 */ |
2163 type = purple_status_type_new_with_attrs( | 2167 type = purple_status_type_new_with_attrs(PURPLE_STATUS_AVAILABLE, |
2164 PURPLE_STATUS_INVISIBLE, NULL, NULL, TRUE, TRUE, FALSE, | 2168 "freeforchat", _("Chatty"), TRUE, TRUE, FALSE, |
2165 "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING), | 2169 "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING), |
2166 NULL); | 2170 NULL); |
2167 types = g_list_append(types, type); | 2171 types = g_list_append(types, type); |
2168 | 2172 |
2169 type = purple_status_type_new_with_attrs( | 2173 type = purple_status_type_new_with_attrs(PURPLE_STATUS_AWAY, |
2170 PURPLE_STATUS_AWAY, NULL, NULL, TRUE, TRUE, FALSE, | 2174 NULL, NULL, TRUE, TRUE, FALSE, |
2171 "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING), | 2175 "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING), |
2172 NULL); | 2176 NULL); |
2173 types = g_list_append(types, type); | 2177 types = g_list_append(types, type); |
2174 | 2178 |
2175 /* | 2179 /* |
2176 * New statuses for GG 8.0 like PoGGadaj ze mna (not yet because | 2180 * New status for GG 8.0: Nie przeszkadzac (do not disturb). |
2177 * libpurple can't support Chatty status) and Nie przeszkadzac | |
2178 */ | 2181 */ |
2179 type = purple_status_type_new_with_attrs( | 2182 type = purple_status_type_new_with_attrs(PURPLE_STATUS_UNAVAILABLE, |
2180 PURPLE_STATUS_UNAVAILABLE, NULL, NULL, TRUE, TRUE, FALSE, | 2183 NULL, NULL, TRUE, TRUE, FALSE, |
2181 "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING), | 2184 "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING), |
2182 NULL); | 2185 NULL); |
2186 types = g_list_append(types, type); | |
2187 | |
2188 /* | |
2189 * It's used on buddy list if and only if it's showing our own | |
2190 * (invisible) status. | |
2191 */ | |
2192 type = purple_status_type_new_with_attrs(PURPLE_STATUS_INVISIBLE, | |
2193 NULL, NULL, TRUE, TRUE, FALSE, | |
2194 "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING), | |
2195 NULL); | |
2183 types = g_list_append(types, type); | 2196 types = g_list_append(types, type); |
2184 | 2197 |
2185 /* | 2198 /* |
2186 * This status is necessary to display guys who are blocking *us*. | 2199 * This status is necessary to display guys who are blocking *us*. |
2187 */ | 2200 */ |
2188 type = purple_status_type_new_with_attrs( | 2201 type = purple_status_type_new_with_attrs(PURPLE_STATUS_INVISIBLE, |
2189 PURPLE_STATUS_INVISIBLE, "blocked", _("Blocked"), TRUE, FALSE, FALSE, | 2202 "blocked", _("Blocked"), TRUE, FALSE, FALSE, |
2190 "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING), NULL); | 2203 "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING), |
2204 NULL); | |
2191 types = g_list_append(types, type); | 2205 types = g_list_append(types, type); |
2192 | 2206 |
2193 type = purple_status_type_new_with_attrs( | 2207 type = purple_status_type_new_with_attrs(PURPLE_STATUS_OFFLINE, |
2194 PURPLE_STATUS_OFFLINE, NULL, NULL, TRUE, TRUE, FALSE, | 2208 NULL, NULL, TRUE, TRUE, FALSE, |
2195 "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING), | 2209 "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING), |
2196 NULL); | 2210 NULL); |
2197 types = g_list_append(types, type); | 2211 types = g_list_append(types, type); |
2198 | 2212 |
2199 return types; | 2213 return types; |
2200 } | 2214 } |
2201 | 2215 |
2563 status_id); | 2577 status_id); |
2564 | 2578 |
2565 if (strcmp(status_id, "available") == 0) { | 2579 if (strcmp(status_id, "available") == 0) { |
2566 new_status = GG_STATUS_AVAIL; | 2580 new_status = GG_STATUS_AVAIL; |
2567 new_status_descr = GG_STATUS_AVAIL_DESCR; | 2581 new_status_descr = GG_STATUS_AVAIL_DESCR; |
2582 } else if (strcmp(status_id, "freeforchat") == 0) { | |
2583 new_status = GG_STATUS_FFC; | |
2584 new_status_descr = GG_STATUS_FFC_DESCR; | |
2568 } else if (strcmp(status_id, "away") == 0) { | 2585 } else if (strcmp(status_id, "away") == 0) { |
2569 new_status = GG_STATUS_BUSY; | 2586 new_status = GG_STATUS_BUSY; |
2570 new_status_descr = GG_STATUS_BUSY_DESCR; | 2587 new_status_descr = GG_STATUS_BUSY_DESCR; |
2571 } else if (strcmp(status_id, "unavailable") == 0) { | 2588 } else if (strcmp(status_id, "unavailable") == 0) { |
2572 new_status = GG_STATUS_DND; | 2589 new_status = GG_STATUS_DND; |