diff options
| author | Wilmer van der Gaast <wilmer@gaast.net> | 2010-03-08 01:21:08 +0000 | 
|---|---|---|
| committer | Wilmer van der Gaast <wilmer@gaast.net> | 2010-03-08 01:21:08 +0000 | 
| commit | bab1c86e9e07553f58ab4ebdaad7f74018052b5e (patch) | |
| tree | e27d15f500fd9fe8381b137bfb7a0348adba7fac /protocols | |
| parent | 52cae01137057f2cc3def802a661fef92cedbcae (diff) | |
Mail notifications, partially from http://irc.nfx.cz/patches/notify.patch
written by sd@ircnet.
Diffstat (limited to 'protocols')
| -rw-r--r-- | protocols/purple/purple.c | 40 | 
1 files changed, 36 insertions, 4 deletions
| diff --git a/protocols/purple/purple.c b/protocols/purple/purple.c index 6a9472dc..3c1f505c 100644 --- a/protocols/purple/purple.c +++ b/protocols/purple/purple.c @@ -3,7 +3,7 @@  *  BitlBee - An IRC to IM gateway                                           *  *  libpurple module - Main file                                             *  *                                                                           * -*  Copyright 2010 Wilmer van der Gaast <wilmer@gaast.net>                   * +*  Copyright 2009-2010 Wilmer van der Gaast <wilmer@gaast.net>              *  *                                                                           *  *  This program is free software; you can redistribute it and/or modify     *  *  it under the terms of the GNU General Public License as published by     * @@ -58,6 +58,7 @@ static void purple_init( account_t *acc )  	PurplePluginProtocolInfo *pi = prpl->info->extra_info;  	PurpleAccount *pa;  	GList *i, *st; +	set_t *s;  	/* Convert all protocol_options into per-account setting variables. */  	for( i = pi->protocol_options; i; i = i->next ) @@ -66,7 +67,6 @@ static void purple_init( account_t *acc )  		const char *name;  		char *def = NULL;  		set_eval eval = NULL; -		set_t *s;  		name = purple_account_option_get_setting( o ); @@ -102,6 +102,12 @@ static void purple_init( account_t *acc )  		}  	} +	if( pi->options & OPT_PROTO_MAIL_CHECK ) +	{ +		s = set_add( &acc->set, "mail_notifications", "false", set_eval_bool, acc ); +		s->flags |= ACC_SET_OFFLINE_ONLY; +	} +	  	/* Go through all away states to figure out if away/status messages  	   are possible. */  	pa = purple_account_new( acc->user, (char*) acc->prpl->data ); @@ -158,6 +164,9 @@ static void purple_sync_settings( account_t *acc, PurpleAccount *pa )  			break;  		}  	} +	 +	if( pi->options & OPT_PROTO_MAIL_CHECK ) +		purple_account_set_check_mail( pa, set_getbool( &acc->set, "mail_notifications" ) );  }  static void purple_login( account_t *acc ) @@ -237,7 +246,7 @@ static void purple_set_away( struct im_connection *ic, char *state_txt, char *me  		pst = st->data;  		if( state_txt == NULL && -		    purple_status_type_get_primitive( st->data ) == PURPLE_STATUS_AVAILABLE ) +		    purple_status_type_get_primitive( pst ) == PURPLE_STATUS_AVAILABLE )  			break;  		if( state_txt != NULL && @@ -245,7 +254,7 @@ static void purple_set_away( struct im_connection *ic, char *state_txt, char *me  			break;  	} -	if( message && purple_status_type_get_attr( st, "message" ) ) +	if( message && purple_status_type_get_attr( pst, "message" ) )  	{  		args = g_list_append( args, "message" );  		args = g_list_append( args, message ); @@ -588,12 +597,29 @@ static PurpleEventLoopUiOps glib_eventloops =  	prplcb_ev_remove,  }; +static void *prplcb_notify_email( PurpleConnection *gc, const char *subject, const char *from, +                                  const char *to, const char *url ) +{ +	struct im_connection *ic = purple_ic_by_gc( gc ); +	 +	imcb_log( ic, "Received e-mail from %s for %s: %s <%s>", from, to, subject, url ); +	 +	return NULL; +} + +static	PurpleNotifyUiOps bee_notify_uiops = +{ +        NULL, +        prplcb_notify_email, +}; +  static void purple_ui_init()  {  	purple_blist_set_ui_ops( &bee_blist_uiops );  	purple_connections_set_ui_ops( &bee_conn_uiops );  	purple_conversations_set_ui_ops( &bee_conv_uiops );  	purple_request_set_ui_ops( &bee_request_uiops ); +	purple_notify_set_ui_ops(&bee_notify_uiops);  	//purple_debug_set_ui_ops( &bee_debug_uiops );  } @@ -643,6 +669,8 @@ void purple_initmodule()  	help = g_string_new("BitlBee libpurple module supports the following IM protocols:\n"); +	/* Add a protocol entry to BitlBee's structures for every protocol +	   supported by this libpurple instance. */	  	for( prots = purple_plugins_get_protocols(); prots; prots = prots->next )  	{  		PurplePlugin *prot = prots->data; @@ -656,6 +684,8 @@ void purple_initmodule()  		g_string_append_printf( help, "\n* %s (%s)", ret->name, prot->info->name ); +		/* libpurple doesn't define a protocol called OSCAR, but we +		   need it to be compatible with normal BitlBee. */  		if( g_strcasecmp( prot->info->id, "prpl-aim" ) == 0 )  		{  			ret = g_memdup( &funcs, sizeof( funcs ) ); @@ -665,6 +695,8 @@ void purple_initmodule()  		}  	} +	/* Add a simple dynamically-generated help item listing all +	   the supported protocols. */  	help_add_mem( &global.help, "purple", help->str );  	g_string_free( help, TRUE );  } | 
