pidgin: d8015391: Gadu-Gadu: better handling of invisible ...
tomkiewicz at cpw.pidgin.im
tomkiewicz at cpw.pidgin.im
Fri Oct 14 14:38:13 EDT 2011
----------------------------------------------------------------------
Revision: d801539142d65069c01636c0819fd86cb3d268a2
Parent: f9026fae7abc46af7f5f2ab7976b01b01e4c2bc8
Author: tomkiewicz at cpw.pidgin.im
Date: 10/14/11 14:33:52
Branch: im.pidgin.pidgin
URL: http://d.pidgin.im/viewmtn/revision/info/d801539142d65069c01636c0819fd86cb3d268a2
Changelog:
Gadu-Gadu: better handling of invisible and chatty statuses. Fixes #13836
Changes against parent f9026fae7abc46af7f5f2ab7976b01b01e4c2bc8
patched ChangeLog
patched libpurple/protocols/gg/gg.c
-------------- next part --------------
============================================================
--- ChangeLog 4212c8f3910d6d43e6a5b7b2df077818507ded7b
+++ ChangeLog a4787c390b99820e7122331ef5984637baa63f25
@@ -15,6 +15,8 @@ version 3.0.0 (??/??/????):
* Fixed password change dialog and problems with connecting to accounts
with non-ASCII passwords. (Tomasz Wasilczyk) (#14652)
* Option to show links from strangers. (Tomasz Wasilczyk) (#10591)
+ * Better handling of "invisible" and "chatty" statuses. (Tomasz
+ Wasilczyk) (#13836)
MXit:
* Remove all reference to Hidden Number.
============================================================
--- libpurple/protocols/gg/gg.c 119df2eab1b117fc995e57405acd2ae31a7cf418
+++ libpurple/protocols/gg/gg.c 10d65908a48ba6ddb9f583dee1f25a70a3c55b6c
@@ -1152,7 +1152,7 @@ static void ggp_generic_status_handler(P
break;
case GG_STATUS_FFC:
case GG_STATUS_FFC_DESCR:
- st = purple_primitive_get_id_from_type(PURPLE_STATUS_AVAILABLE);
+ st = "freeforchat";
break;
case GG_STATUS_AVAIL:
case GG_STATUS_AVAIL_DESCR:
@@ -1162,6 +1162,10 @@ static void ggp_generic_status_handler(P
case GG_STATUS_BUSY_DESCR:
st = purple_primitive_get_id_from_type(PURPLE_STATUS_AWAY);
break;
+ case GG_STATUS_INVISIBLE:
+ case GG_STATUS_INVISIBLE_DESCR:
+ st = purple_primitive_get_id_from_type(PURPLE_STATUS_INVISIBLE);
+ break;
case GG_STATUS_DND:
case GG_STATUS_DND_DESCR:
st = purple_primitive_get_id_from_type(PURPLE_STATUS_UNAVAILABLE);
@@ -2150,50 +2154,60 @@ static GList *ggp_status_types(PurpleAcc
PurpleStatusType *type;
GList *types = NULL;
- type = purple_status_type_new_with_attrs(
- PURPLE_STATUS_AVAILABLE, NULL, NULL, TRUE, TRUE, FALSE,
- "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING),
- NULL);
+ type = purple_status_type_new_with_attrs(PURPLE_STATUS_AVAILABLE,
+ NULL, NULL, TRUE, TRUE, FALSE,
+ "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING),
+ NULL);
types = g_list_append(types, type);
/*
- * Without this selecting Invisible as own status doesn't
- * work. It's not used and not needed to show status of buddies.
+ * New status for GG 8.0: PoGGadaj ze mna (chatty).
+ * NOTE: at this time, this is used only to set our own status.
*/
- type = purple_status_type_new_with_attrs(
- PURPLE_STATUS_INVISIBLE, NULL, NULL, TRUE, TRUE, FALSE,
- "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING),
- NULL);
+ type = purple_status_type_new_with_attrs(PURPLE_STATUS_AVAILABLE,
+ "freeforchat", _("Chatty"), TRUE, TRUE, FALSE,
+ "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING),
+ NULL);
types = g_list_append(types, type);
- type = purple_status_type_new_with_attrs(
- PURPLE_STATUS_AWAY, NULL, NULL, TRUE, TRUE, FALSE,
- "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING),
- NULL);
+ type = purple_status_type_new_with_attrs(PURPLE_STATUS_AWAY,
+ NULL, NULL, TRUE, TRUE, FALSE,
+ "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING),
+ NULL);
types = g_list_append(types, type);
/*
- * New statuses for GG 8.0 like PoGGadaj ze mna (not yet because
- * libpurple can't support Chatty status) and Nie przeszkadzac
+ * New status for GG 8.0: Nie przeszkadzac (do not disturb).
*/
- type = purple_status_type_new_with_attrs(
- PURPLE_STATUS_UNAVAILABLE, NULL, NULL, TRUE, TRUE, FALSE,
- "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING),
- NULL);
+ type = purple_status_type_new_with_attrs(PURPLE_STATUS_UNAVAILABLE,
+ NULL, NULL, TRUE, TRUE, FALSE,
+ "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING),
+ NULL);
types = g_list_append(types, type);
/*
+ * It's used on buddy list if and only if it's showing our own
+ * (invisible) status.
+ */
+ type = purple_status_type_new_with_attrs(PURPLE_STATUS_INVISIBLE,
+ NULL, NULL, TRUE, TRUE, FALSE,
+ "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING),
+ NULL);
+ types = g_list_append(types, type);
+
+ /*
* This status is necessary to display guys who are blocking *us*.
*/
- type = purple_status_type_new_with_attrs(
- PURPLE_STATUS_INVISIBLE, "blocked", _("Blocked"), TRUE, FALSE, FALSE,
- "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING), NULL);
+ type = purple_status_type_new_with_attrs(PURPLE_STATUS_INVISIBLE,
+ "blocked", _("Blocked"), TRUE, FALSE, FALSE,
+ "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING),
+ NULL);
types = g_list_append(types, type);
- type = purple_status_type_new_with_attrs(
- PURPLE_STATUS_OFFLINE, NULL, NULL, TRUE, TRUE, FALSE,
- "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING),
- NULL);
+ type = purple_status_type_new_with_attrs(PURPLE_STATUS_OFFLINE,
+ NULL, NULL, TRUE, TRUE, FALSE,
+ "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING),
+ NULL);
types = g_list_append(types, type);
return types;
@@ -2565,6 +2579,9 @@ static int ggp_to_gg_status(PurpleStatus
if (strcmp(status_id, "available") == 0) {
new_status = GG_STATUS_AVAIL;
new_status_descr = GG_STATUS_AVAIL_DESCR;
+ } else if (strcmp(status_id, "freeforchat") == 0) {
+ new_status = GG_STATUS_FFC;
+ new_status_descr = GG_STATUS_FFC_DESCR;
} else if (strcmp(status_id, "away") == 0) {
new_status = GG_STATUS_BUSY;
new_status_descr = GG_STATUS_BUSY_DESCR;
More information about the Commits
mailing list