|
From: xevuz <xe...@us...> - 2007-07-10 16:49:05
|
Update of /cvsroot/chix/chix_gaim/src In directory sc8-pr-cvs4.sourceforge.net:/tmp/cvs-serv32070/src Modified Files: chix_gaim.c Log Message: status setting should work properly now. still confused how purple handles status. i think status types gets overwritten by other protocols. Index: chix_gaim.c =================================================================== RCS file: /cvsroot/chix/chix_gaim/src/chix_gaim.c,v retrieving revision 1.16 retrieving revision 1.17 diff -u -d -r1.16 -r1.17 --- chix_gaim.c 5 Jul 2007 15:13:03 -0000 1.16 +++ chix_gaim.c 10 Jul 2007 16:48:45 -0000 1.17 @@ -61,9 +61,18 @@ { char buf[16]; - if (!buddy->online) return; - chix_buddy_away_get(buddy, buf, sizeof(buf)); - purple_prpl_got_user_status(account, buddy->id, buf, NULL); + if (chix_buddy_away_get(buddy, buf, sizeof(buf)) == AWAY_AWAY) + purple_prpl_got_user_status(account, buddy->id, "away", NULL); + else if (chix_buddy_away_get(buddy, buf, sizeof(buf)) == AWAY_BUSY) + purple_prpl_got_user_status(account, buddy->id, "busy", NULL); + else if (CHIX_BUDDY_ON_BOTH(buddy)) + purple_prpl_got_user_status(account, buddy->id, "mobile", NULL); + else if (CHIX_BUDDY_ON_MB(buddy)) + purple_prpl_got_user_status_deactive(account, buddy->id, "mobile"); + else if (CHIX_BUDDY_ON_PC(buddy)) + purple_prpl_got_user_status(account, buddy->id, "available", NULL); + else + purple_prpl_got_user_status(account, buddy->id, "offline", NULL); } static int @@ -347,27 +356,16 @@ return "chix"; } -static void -cp_list_emblems(PurpleBuddy *pb, const char **se, const char **sw, - const char **nw, const char **ne) +static const char * +cp_list_emblem(PurpleBuddy *pb) { ChixBuddy *buddy = pb->proto_data; if (!buddy) - *se = "notauthorized"; - else if (buddy->online) - { - int away = chix_buddy_away_get(buddy, NULL, 0); - - if (away == AWAY_AWAY) - *ne = "away"; - else if (away == AWAY_BUSY) - *ne = "unavailable"; - - if (CHIX_BUDDY_ON_MB(buddy)) - *nw = "wireless"; - } - else *se = "offline"; + return "notauthorized"; + if (CHIX_BUDDY_ON_MB(buddy)) + return "mobile"; + return NULL; } static char * @@ -433,23 +431,18 @@ GList *types = NULL; types = g_list_append(types, purple_status_type_new( - PURPLE_STATUS_AVAILABLE, "Available", _("Available"), TRUE)); + PURPLE_STATUS_AVAILABLE, "available", _("Available"), TRUE)); types = g_list_append(types, purple_status_type_new( - PURPLE_STATUS_AWAY, "Away", _("Away"), TRUE)); + PURPLE_STATUS_AWAY, "away", _("Away"), TRUE)); types = g_list_append(types, purple_status_type_new( - PURPLE_STATUS_UNAVAILABLE, "Busy", _("Busy"), TRUE)); + PURPLE_STATUS_UNAVAILABLE, "busy", _("Busy"), TRUE)); types = g_list_append(types, purple_status_type_new( - PURPLE_STATUS_INVISIBLE, "Offline", _("Appear Idle"), TRUE)); -/* - m = g_list_append(m, _("Not in the mood")); - m = g_list_append(m, _("Happy")); - m = g_list_append(m, _("Sad")); - m = g_list_append(m, _("Secretive")); - m = g_list_append(m, _("Playful")); - m = g_list_append(m, _("Surprised")); - m = g_list_append(m, _("Intimate")); - m = g_list_append(m, _("Angry")); -*/ + PURPLE_STATUS_INVISIBLE, "invisible", _("Appear Idle"), TRUE)); + types = g_list_append(types, purple_status_type_new( + PURPLE_STATUS_OFFLINE, "offline", NULL, FALSE)); + types = g_list_append(types, purple_status_type_new( + PURPLE_STATUS_MOBILE, "mobile", NULL, FALSE)); + return types; } @@ -576,10 +569,14 @@ if (!buddy) return __unlisted(client, who, mesg); - if ((CHIX_BUDDY_ON_PC(buddy)) || (!strcmp(buddy->provider, "Chikka"))) + if ((CHIX_BUDDY_ON_PC(buddy)) || (!strcmp(buddy->provider, "Chikka"))) { + printf("Sending to pc\n"); return chix_send_mesg(client, buddy, mesg, MESG_TO_PC); - else + } + else { + printf("Sending to mb\n"); return chix_send_mesg(client, buddy, mesg, MESG_TO_MOBILE); + } } static void @@ -607,16 +604,23 @@ { case PURPLE_STATUS_AVAILABLE: chix_client_away_set(client, AWAY_AVAILABLE); + printf("available\n"); break; case PURPLE_STATUS_AWAY: chix_client_away_set(client, AWAY_AWAY); + printf("away\n"); break; case PURPLE_STATUS_UNAVAILABLE: chix_client_away_set(client, AWAY_BUSY); + printf("busy\n"); break; - case PURPLE_STATUS_OFFLINE: + case PURPLE_STATUS_INVISIBLE: chix_client_away_set(client, AWAY_OFFLINE); + printf("invisible\n"); break; + default: + printf("DEBUG: Unknown Chix status type\n"); + break; } /* @@ -760,9 +764,9 @@ } static void -__action_info_cb(ChixClient *client, PurpleRequestFields *fields) +__info_update_cb(ChixClient *client, PurpleRequestFields *fields) { -#if 0 +#if 1 ChixInfo info; char buf[4]; @@ -793,7 +797,7 @@ static void cp_action_info(PurplePluginAction *action) { -#if 0 +#if 1 PurpleRequestFields *fields; PurpleRequestFieldGroup *g; PurpleRequestField *f; @@ -816,25 +820,30 @@ g = purple_request_field_group_new(_(" Personal")); purple_request_fields_add_group(fields, g); - f = purple_request_field_string_new("first", _("First Name"), info->first, FALSE); + f = purple_request_field_string_new( + "first", _("First Name"), info->first, FALSE); purple_request_field_set_required(f, TRUE); purple_request_field_group_add_field(g, f); - f = purple_request_field_string_new("last", _("Last Name"), info->last, FALSE); + f = purple_request_field_string_new( + "last", _("Last Name"), info->last, FALSE); purple_request_field_set_required(f, TRUE); purple_request_field_group_add_field(g, f); - f = purple_request_field_string_new("age", _("Age"), info->age, FALSE); + f = purple_request_field_string_new( + "age", _("Age"), info->age, FALSE); purple_request_field_group_add_field(g, f); - f = purple_request_field_choice_new("gender", _("Gender"), atoi(info->gender)); + f = purple_request_field_choice_new( + "gender", _("Gender"), atoi(info->gender)); purple_request_field_choice_add(f, _("Female")); purple_request_field_choice_add(f, _("Male")); purple_request_field_choice_add(f, _("Not Disclosed")); purple_request_field_set_required(f, TRUE); purple_request_field_group_add_field(g, f); - f = purple_request_field_string_new("extra", _("User Message"), info->extra, TRUE); + f = purple_request_field_string_new( + "extra", _("User Message"), info->extra, TRUE); purple_request_field_group_add_field(g, f); @@ -844,14 +853,17 @@ g = purple_request_field_group_new(_(" Contact")); purple_request_fields_add_group(fields, g); - f = purple_request_field_string_new("email", _("Email"), info->email, FALSE); + f = purple_request_field_string_new( + "email", _("Email"), info->email, FALSE); purple_request_field_set_required(f, TRUE); purple_request_field_group_add_field(g, f); - f = purple_request_field_string_new("phone", _("Phone"), info->phone, FALSE); + f = purple_request_field_string_new( + "phone", _("Phone"), info->phone, FALSE); purple_request_field_group_add_field(g, f); - f = purple_request_field_string_new("fax", _("Fax"), info->fax, FALSE); + f = purple_request_field_string_new( + "fax", _("Fax"), info->fax, FALSE); purple_request_field_group_add_field(g, f); @@ -861,16 +873,20 @@ g = purple_request_field_group_new(_(" Location")); purple_request_fields_add_group(fields, g); - f = purple_request_field_string_new("address", _("Address"), info->address, FALSE); + f = purple_request_field_string_new( + "address", _("Address"), info->address, FALSE); purple_request_field_group_add_field(g, f); - f = purple_request_field_string_new("city", _("City"), info->city, FALSE); + f = purple_request_field_string_new( + "city", _("City"), info->city, FALSE); purple_request_field_group_add_field(g, f); - f = purple_request_field_string_new("state", _("State"), info->state, FALSE); + f = purple_request_field_string_new( + "state", _("State"), info->state, FALSE); purple_request_field_group_add_field(g, f); - f = purple_request_field_string_new("country", _("Country"), info->country, FALSE); + f = purple_request_field_string_new( + "country", _("Country"), info->country, FALSE); purple_request_field_group_add_field(g, f); @@ -902,9 +918,9 @@ _("<b> Chix ID:</b>\t\t%s\n<b> Provider:</b>\t%s\n"), info->id, info->provider); - purple_request_fields(NULL, _("Chix Info"), buf, buf2, fields, - _("Update"), G_CALLBACK(__action_info_cb), - _("Cancel"), NULL, pc->proto_data); + purple_request_fields(pc, _("Chix Info"), buf, buf2, fields, + _("Update"), G_CALLBACK(__info_update_cb), + _("Cancel"), NULL, NULL, NULL, NULL, pc->proto_data); #endif } @@ -938,7 +954,7 @@ { .icon_spec = NO_BUDDY_ICONS, .list_icon = cp_list_icon, -// .list_emblems = cp_list_emblems, + .list_emblem = cp_list_emblem, .tooltip_text = cp_tooltip_text, .status_text = cp_status_text, .status_types = cp_status_types, |