Mercurial > pidgin
view plugins/gaiminc.c @ 5351:2aa7e4237142
[gaim-migrate @ 5727]
Buddy icon support!
The MSN protocol does not support this, but it does allow for different
content-types, which no client (except a couple broken ones I can name)
will see. So, I managed to extend the protocol a bit to do buddy icons.
It should work like AIM. Setup your icon in your account editor, and
message somebody. If they change their icon, however, you will have to
close the conversation window, re-open it, and send another message. That's
just how it has to work for now, I'm afraid.
Oh, and another thing. MSNP7 (P6 as well? Not sure) times out inactive
conversations after 5 minutes. Right now, you're seeing "User has closed
the conversation window" messages, but they're really not. So, we now print
out a message saying it timed out. Ugly, yes, but unless we have both
messages, there's confusion. Oh well! Kick the hay!
committer: Tailor Script <tailor@pidgin.im>
author | Christian Hammond <chipx86@chipx86.com> |
---|---|
date | Sat, 10 May 2003 23:55:18 +0000 |
parents | c0baa01cdeda |
children | 7d385de2f9cd |
line wrap: on
line source
//#include <gtk/gtk.h> #include <time.h> #include <stdio.h> #include <fcntl.h> #include <string.h> #include "gaim.h" #define GAIMINC_PLUGIN_ID "core-gaiminc" void echo_hi(void *m) { /* this doesn't do much, just lets you know who we are :) */ show_about(NULL, NULL); } void reverse(struct gaim_connection *gc, char **who, char **message, void *m) { /* this will drive you insane. whenever you receive a message, * the text of the message (HTML and all) will be reversed. */ int i, l; char tmp; /* this check is necessary in case bad plugins do bad things */ if (message == NULL || *message == NULL) return; l = strlen(*message); if (!strcmp(*who, gc->username)) return; for (i = 0; i < l/2; i++) { tmp = (*message)[i]; (*message)[i] = (*message)[l - i - 1]; (*message)[l - i - 1] = tmp; } } void bud(struct gaim_connection *gc, char *who, void *m) { /* whenever someone comes online, it sends them a message. if i * cared more, i'd make it so it popped up on your screen too */ serv_send_im(gc, who, "Hello!", -1, 0); } /* * EXPORTED FUNCTIONS */ static gboolean plugin_load(GaimPlugin *plugin) { /* this is for doing something fun when we sign on */ gaim_signal_connect(plugin, event_signon, echo_hi, NULL); /* this is for doing something fun when we get a message */ gaim_signal_connect(plugin, event_im_recv, reverse, NULL); /* this is for doing something fun when a buddy comes online */ gaim_signal_connect(plugin, event_buddy_signon, bud, NULL); return TRUE; } static GaimPluginInfo info = { 2, /**< api_version */ GAIM_PLUGIN_STANDARD, /**< type */ NULL, /**< ui_requirement */ 0, /**< flags */ NULL, /**< dependencies */ GAIM_PRIORITY_DEFAULT, /**< priority */ GAIMINC_PLUGIN_ID, /**< id */ N_("Gaim Demonstration Plugin"), /**< name */ VERSION, /**< version */ /** summary */ N_("An example plugin that does stuff - see the description."), /** description */ N_("This is a really cool plugin that does a lot of stuff:\n" "- It tells you who wrote the program when you log in\n" "- It reverses all incoming text\n" "- It sends a message to people on your list immediately" " when they sign on"), "Eric Warmenhoven <eric@warmenhoven.org>", /**< author */ WEBSITE, /**< homepage */ plugin_load, /**< load */ NULL, /**< unload */ NULL, /**< destroy */ NULL, /**< ui_info */ NULL /**< extra_info */ }; static void __init_plugin(GaimPlugin *plugin) { } GAIM_INIT_PLUGIN(gaiminc, __init_plugin, info);