From: Stu T. <nos...@us...> - 2005-04-09 14:28:55
|
Update of /cvsroot/gaim/gaim/src/protocols/silc In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23810 Modified Files: silc.c silcgaim.h Log Message: Make SILC able to connect with the new status stuff Index: silc.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/protocols/silc/silc.c,v retrieving revision 1.36 retrieving revision 1.37 diff -u -d -p -r1.36 -r1.37 --- silc.c 27 Mar 2005 17:50:33 -0000 1.36 +++ silc.c 9 Apr 2005 14:28:47 -0000 1.37 @@ -43,9 +43,11 @@ silcgaim_away_states(GaimAccount *accoun GaimStatusType *type; GList *types = NULL; - type = gaim_status_type_new(GAIM_STATUS_OFFLINE, SILCGAIM_STATUS_ID_OFFLINE, _("Offline"), FALSE); + type = gaim_status_type_new_full(GAIM_STATUS_OFFLINE, SILCGAIM_STATUS_ID_OFFLINE, _("Offline"), FALSE, FALSE, FALSE); types = g_list_append(types, type); - type = gaim_status_type_new(GAIM_STATUS_ONLINE, SILCGAIM_STATUS_ID_ONLINE, _("Online"), FALSE); + type = gaim_status_type_new_full(GAIM_STATUS_ONLINE, SILCGAIM_STATUS_ID_ONLINE, _("Online"), FALSE, FALSE, FALSE); + types = g_list_append(types, type); + type = gaim_status_type_new_full(GAIM_STATUS_AVAILABLE, SILCGAIM_STATUS_ID_AVAILABLE, _("Available"), FALSE, TRUE, FALSE); types = g_list_append(types, type); type = gaim_status_type_new_full(GAIM_STATUS_AVAILABLE, SILCGAIM_STATUS_ID_HYPER, _("Hyper Active"), FALSE, TRUE, FALSE); types = g_list_append(types, type); @@ -65,17 +67,29 @@ static void silcgaim_set_status(GaimAccount *account, GaimStatus *status) { GaimConnection *gc = gaim_account_get_connection(account); - SilcGaim sg; + SilcGaim sg = NULL; SilcUInt32 mode; SilcBuffer idp; unsigned char mb[4]; const char *state; - g_return_if_fail(gc != NULL); + if (gc != NULL) + sg = gc->proto_data; - sg = gc->proto_data; + if (status == NULL) + return; - if ((status == NULL) || (sg->conn == NULL)) + state = gaim_status_get_id(status); + + if (state == NULL) + return; + + if (strcmp(state, "offline") && !gc) { + gaim_account_connect(account); + return; + } + + if ((sg == NULL) || (sg->conn == NULL)) return; mode = sg->conn->local_entry->mode; @@ -85,11 +99,6 @@ silcgaim_set_status(GaimAccount *account SILC_UMODE_INDISPOSED | SILC_UMODE_PAGE); - state = gaim_status_get_id(status); - - if (state == NULL) - return; - if (!strcmp(state, "hyper")) mode |= SILC_UMODE_HYPER; else if (!strcmp(state, "away")) Index: silcgaim.h =================================================================== RCS file: /cvsroot/gaim/gaim/src/protocols/silc/silcgaim.h,v retrieving revision 1.13 retrieving revision 1.14 diff -u -d -p -r1.13 -r1.14 --- silcgaim.h 9 Dec 2004 23:03:13 -0000 1.13 +++ silcgaim.h 9 Apr 2005 14:28:47 -0000 1.14 @@ -48,6 +48,7 @@ /* Status IDs */ #define SILCGAIM_STATUS_ID_OFFLINE "offline" #define SILCGAIM_STATUS_ID_ONLINE "online" +#define SILCGAIM_STATUS_ID_AVAILABLE "available" #define SILCGAIM_STATUS_ID_HYPER "hyper" #define SILCGAIM_STATUS_ID_AWAY "away" #define SILCGAIM_STATUS_ID_BUSY "busy" |