Mercurial > pidgin.yaz
comparison src/protocols/irc/irc.c @ 9944:e4a27c9aec4c
[gaim-migrate @ 10838]
with much rejoicing, and massive thanks to the efforts of Christian, and
all who have helped him, I present to you the incomplete status
rewrite!
committer: Tailor Script <tailor@pidgin.im>
author | Luke Schierer <lschiere@pidgin.im> |
---|---|
date | Fri, 03 Sep 2004 21:35:52 +0000 |
parents | f8e395a054e2 |
children | 42cdec4f639b |
comparison
equal
deleted
inserted
replaced
9943:f8e395a054e2 | 9944:e4a27c9aec4c |
---|---|
143 { | 143 { |
144 if (b->present == GAIM_BUDDY_OFFLINE) | 144 if (b->present == GAIM_BUDDY_OFFLINE) |
145 *se = "offline"; | 145 *se = "offline"; |
146 } | 146 } |
147 | 147 |
148 static GList *irc_away_states(GaimConnection *gc) | 148 static GList *irc_status_types(GaimAccount *account) |
149 { | 149 { |
150 return g_list_append(NULL, (gpointer)GAIM_AWAY_CUSTOM); | 150 GaimStatusType *type; |
151 GList *types = NULL; | |
152 | |
153 type = gaim_status_type_new(GAIM_STATUS_OFFLINE, "offline", | |
154 _("Offline"), FALSE); | |
155 types = g_list_append(types, type); | |
156 | |
157 type = gaim_status_type_new(GAIM_STATUS_ONLINE, "online", | |
158 _("Online"), FALSE); | |
159 types = g_list_append(types, type); | |
160 | |
161 type = gaim_status_type_new(GAIM_STATUS_AVAILABLE, "available", | |
162 _("Available"), TRUE); | |
163 types = g_list_append(types, type); | |
164 | |
165 type = gaim_status_type_new_with_attrs( | |
166 GAIM_STATUS_AWAY, "away", _("Away"), TRUE, TRUE, FALSE, | |
167 "message", _("Message"), gaim_value_new(GAIM_TYPE_STRING)); | |
168 | |
169 types = g_list_append(types, type); | |
170 | |
171 return types; | |
151 } | 172 } |
152 | 173 |
153 static GList *irc_actions(GaimPlugin *plugin, gpointer context) | 174 static GList *irc_actions(GaimPlugin *plugin, gpointer context) |
154 { | 175 { |
155 GList *list = NULL; | 176 GList *list = NULL; |
342 const char *args[1]; | 363 const char *args[1]; |
343 args[0] = who; | 364 args[0] = who; |
344 irc_cmd_whois(irc, "whois", NULL, args); | 365 irc_cmd_whois(irc, "whois", NULL, args); |
345 } | 366 } |
346 | 367 |
347 static void irc_set_away(GaimConnection *gc, const char *state, const char *msg) | 368 static void irc_set_status(GaimAccount *account, GaimStatus *status) |
348 { | 369 { |
370 GaimConnection *gc = gaim_account_get_connection(account); | |
349 struct irc_conn *irc = gc->proto_data; | 371 struct irc_conn *irc = gc->proto_data; |
350 const char *args[1]; | 372 const char *args[1]; |
351 | 373 const char *status_id = gaim_status_get_id(status); |
352 if (gc->away) { | 374 |
353 g_free(gc->away); | 375 if (!strcmp(status_id, "away")) |
354 gc->away = NULL; | 376 args[0] = gaim_status_get_attr_string(status, "message"); |
355 } | 377 else if (!strcmp(status_id, "available")) |
356 | 378 args[0] = NULL; |
357 if (msg) | 379 |
358 gc->away = g_strdup(msg); | |
359 | |
360 args[0] = msg; | |
361 irc_cmd_away(irc, "away", NULL, args); | 380 irc_cmd_away(irc, "away", NULL, args); |
362 } | 381 } |
363 | 382 |
364 static void irc_add_buddy(GaimConnection *gc, GaimBuddy *buddy, GaimGroup *group) | 383 static void irc_add_buddy(GaimConnection *gc, GaimBuddy *buddy, GaimGroup *group) |
365 { | 384 { |