aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWilmer van der Gaast <wilmer@gaast.net>2010-05-24 22:24:53 +0100
committerWilmer van der Gaast <wilmer@gaast.net>2010-05-24 22:24:53 +0100
commitf85e9d6846d7b4ec0109180e62ae8677e2421fa3 (patch)
tree03415bc8255f417a013912dd114ed639fd186112
parentc3caa46bc5c5ac0a372a13c5fe0de79845a7dabf (diff)
Read display names. Setting them is going to be an awesome hack.
-rw-r--r--protocols/purple/purple.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/protocols/purple/purple.c b/protocols/purple/purple.c
index b91b7aca..98cd2241 100644
--- a/protocols/purple/purple.c
+++ b/protocols/purple/purple.c
@@ -36,6 +36,8 @@ GSList *purple_connections;
libpurple in daemon mode anyway. */
static irc_t *local_irc;
+static char *set_eval_display_name( set_t *set, char *value );
+
struct im_connection *purple_ic_by_pa( PurpleAccount *pa )
{
GSList *i;
@@ -172,6 +174,9 @@ static void purple_init( account_t *acc )
help_add_mem( &global.help, help_title, help->str );
g_string_free( help, TRUE );
+ s = set_add( &acc->set, "display_name", NULL, set_eval_display_name, acc );
+ s->flags |= ACC_SET_ONLINE_ONLY;
+
if( pi->options & OPT_PROTO_MAIL_CHECK )
{
s = set_add( &acc->set, "mail_notifications", "false", set_eval_bool, acc );
@@ -337,6 +342,14 @@ static void purple_set_away( struct im_connection *ic, char *state_txt, char *me
g_list_free( args );
}
+static char *set_eval_display_name( set_t *set, char *value )
+{
+ account_t *acc = set->data;
+ struct im_connection *ic = acc->ic;
+
+ return NULL;
+}
+
static void purple_add_buddy( struct im_connection *ic, char *who, char *group )
{
PurpleBuddy *pb;
@@ -570,9 +583,18 @@ static void prplcb_conn_progress( PurpleConnection *gc, const char *text, size_t
static void prplcb_conn_connected( PurpleConnection *gc )
{
struct im_connection *ic = purple_ic_by_gc( gc );
+ const char *dn;
+ set_t *s;
imcb_connected( ic );
+ if( ( dn = purple_connection_get_display_name( gc ) ) &&
+ ( s = set_find( &ic->acc->set, "display_name" ) ) )
+ {
+ g_free( s->value );
+ s->value = g_strdup( dn );
+ }
+
if( gc->flags & PURPLE_CONNECTION_HTML )
ic->flags |= OPT_DOES_HTML;
}