Mercurial > pidgin.yaz
annotate plugins/statenotify.c @ 6982:083d1e4a9c78
[gaim-migrate @ 7538]
This is Mr. Holland's Opus. And by Mr. Holland I mean Robot101. He
rewrote the coreish IM image support so that the binary data gets
ripped out in the prpl and put in an imgstore instead of just being
passed in the same huge as char string as the actual message. This
is good because it's prpl agnostic, or something. It also means
we don't have a silly length of "-1" with pretty much every send or
receive IM function.
It should be crash free, bug free, and memleak free, but additional
testing is always a good thing.
If you like good stuff then you'll love this patch. But don't take
my word for it--ba dun dunt!
committer: Tailor Script <tailor@pidgin.im>
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Sat, 27 Sep 2003 19:17:21 +0000 |
parents | 0c5637b5462e |
children | d7b8eb1f0a18 |
rev | line source |
---|---|
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
1 #include "internal.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
2 |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
3 #include "blist.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
4 #include "conversation.h" |
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
5 #include "debug.h" |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6441
diff
changeset
|
6 #include "signals.h" |
5872
059d95c67cda
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
7 |
5267 | 8 static void |
6695 | 9 write_status(GaimBuddy *buddy, const char *message) |
5267 | 10 { |
5676
dae79aefac8d
[gaim-migrate @ 6094]
Christian Hammond <chipx86@chipx86.com>
parents:
5587
diff
changeset
|
11 GaimConversation *conv; |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6441
diff
changeset
|
12 const char *who; |
5267 | 13 char buf[256]; |
14 | |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6441
diff
changeset
|
15 conv = gaim_find_conversation_with_account(buddy->name, buddy->account); |
5267 | 16 |
17 if (conv == NULL) | |
18 return; | |
19 | |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6441
diff
changeset
|
20 who = gaim_get_buddy_alias(buddy); |
5267 | 21 |
6489 | 22 g_snprintf(buf, sizeof(buf), message, who); |
5267 | 23 |
6982 | 24 gaim_conversation_write(conv, NULL, buf, GAIM_MESSAGE_SYSTEM, time(NULL)); |
5267 | 25 } |
26 | |
27 static void | |
6695 | 28 buddy_away_cb(GaimBuddy *buddy, void *data) |
5267 | 29 { |
6489 | 30 write_status(buddy, _("%s has gone away.")); |
5267 | 31 } |
32 | |
33 static void | |
6695 | 34 buddy_unaway_cb(GaimBuddy *buddy, void *data) |
5267 | 35 { |
6489 | 36 write_status(buddy, _("%s is no longer away.")); |
5267 | 37 } |
38 | |
39 static void | |
6695 | 40 buddy_idle_cb(GaimBuddy *buddy, void *data) |
5267 | 41 { |
6489 | 42 write_status(buddy, _("%s has become idle.")); |
5267 | 43 } |
44 | |
45 static void | |
6695 | 46 buddy_unidle_cb(GaimBuddy *buddy, void *data) |
5267 | 47 { |
6489 | 48 write_status(buddy, _("%s is no longer idle.")); |
5267 | 49 } |
50 | |
51 static gboolean | |
52 plugin_load(GaimPlugin *plugin) | |
53 { | |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6441
diff
changeset
|
54 void *blist_handle = gaim_blist_get_handle(); |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6441
diff
changeset
|
55 |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6441
diff
changeset
|
56 gaim_signal_connect(blist_handle, "buddy-away", |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6441
diff
changeset
|
57 plugin, GAIM_CALLBACK(buddy_away_cb), NULL); |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6441
diff
changeset
|
58 gaim_signal_connect(blist_handle, "buddy-back", |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6441
diff
changeset
|
59 plugin, GAIM_CALLBACK(buddy_unaway_cb), NULL); |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6441
diff
changeset
|
60 gaim_signal_connect(blist_handle, "buddy-idle", |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6441
diff
changeset
|
61 plugin, GAIM_CALLBACK(buddy_idle_cb), NULL); |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6441
diff
changeset
|
62 gaim_signal_connect(blist_handle, "buddy-unidle", |
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6441
diff
changeset
|
63 plugin, GAIM_CALLBACK(buddy_unidle_cb), NULL); |
5267 | 64 |
65 return TRUE; | |
66 } | |
67 | |
68 static GaimPluginInfo info = | |
69 { | |
70 2, /**< api_version */ | |
71 GAIM_PLUGIN_STANDARD, /**< type */ | |
72 NULL, /**< ui_requirement */ | |
73 0, /**< flags */ | |
74 NULL, /**< dependencies */ | |
75 GAIM_PRIORITY_DEFAULT, /**< priority */ | |
76 | |
77 NULL, /**< id */ | |
78 N_("Buddy State Notification"), /**< name */ | |
79 VERSION, /**< version */ | |
80 /** summary */ | |
81 N_("Notifies in a conversation window when a buddy goes or returns from " | |
82 "away or idle."), | |
83 /** description */ | |
84 N_("Notifies in a conversation window when a buddy goes or returns from " | |
85 "away or idle."), | |
86 "Christian Hammond <chipx86@gnupdate.org>", /**< author */ | |
6485
70d5122bc3ff
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6441
diff
changeset
|
87 GAIM_WEBSITE, /**< homepage */ |
5267 | 88 |
89 plugin_load, /**< load */ | |
90 NULL, /**< unload */ | |
91 NULL, /**< destroy */ | |
92 | |
93 NULL, /**< ui_info */ | |
94 NULL /**< extra_info */ | |
95 }; | |
96 | |
97 static void | |
5920
7d385de2f9cd
[gaim-migrate @ 6360]
Christian Hammond <chipx86@chipx86.com>
parents:
5873
diff
changeset
|
98 init_plugin(GaimPlugin *plugin) |
5267 | 99 { |
100 } | |
101 | |
6063 | 102 GAIM_INIT_PLUGIN(statenotify, init_plugin, info) |