Mercurial > pidgin
view plugins/timestamp.c @ 4167:7002b6f16bdf
[gaim-migrate @ 4396]
(00:14:20) Robot101: if anyone with CVS would like to choose between the
docklet eating messages if you ask it to queue them, or an occasional crash
when returning from away with queued messages, I have a patch to revert ari's
'fix' at http://people.debian.org/~robot101/silly-ari.diff
(00:15:05) Robot101: Sean and I agreed that keeping the queued messages in a
GSList is better, so if ari could seperate the gtk2ification and the
fixing of the crash, without breaking the generic queueing stuff, that'd be
peachy
(00:15:22) Robot101: in the meantime, the docklet saying it has queued messages,
and not letting you read them, is pretty damn obnoxious.
(00:16:30) LSchiere: i'll do it
committer: Tailor Script <tailor@pidgin.im>
| author | Luke Schierer <lschiere@pidgin.im> |
|---|---|
| date | Thu, 02 Jan 2003 05:18:16 +0000 |
| parents | 74d27aa5b686 |
| children | ebfb80bbe1ed |
line wrap: on
line source
/* iChat-like timestamps by Sean Egan. * <INSERT GPL HERE> */ #define GAIM_PLUGINS #include <time.h> #include "gaim.h" #include "gtkimhtml.h" #define TIMESTAMP_DELAY (5 * 60 * 1000) GModule *handle; GSList *timestamp_timeouts; gboolean do_timestamp (struct conversation *c) { char *buf; char mdate[6]; time_t tim = time(NULL); if (!g_list_find(conversations, c)) return FALSE; strftime(mdate, sizeof(mdate), "%H:%M", localtime(&tim)); buf = g_strdup_printf(" %s", mdate); write_to_conv(c, buf, WFLAG_NOLOG, NULL, tim, -1); g_free(buf); return TRUE; } void timestamp_new_convo(char *name) { struct conversation *c = find_conversation(name); do_timestamp(c); timestamp_timeouts = g_slist_append(timestamp_timeouts, GINT_TO_POINTER(gtk_timeout_add(TIMESTAMP_DELAY, (GtkFunction)do_timestamp, c))); } char *gaim_plugin_init(GModule *h) { GList *cnvs = conversations; struct conversation *c; handle = h; while (cnvs) { c = cnvs->data; timestamp_new_convo(c->name); cnvs = cnvs->next; } gaim_signal_connect(handle, event_new_conversation, timestamp_new_convo, NULL); return NULL; } void gaim_plugin_remove() { GSList *to; to = timestamp_timeouts; while (to) { gtk_timeout_remove(GPOINTER_TO_INT(to->data)); to = to->next; } g_slist_free(timestamp_timeouts); } struct gaim_plugin_description desc; struct gaim_plugin_description *gaim_plugin_desc() { desc.api_version = PLUGIN_API_VERSION; desc.name = g_strdup(_("Timestamp")); desc.version = g_strdup(VERSION); desc.description = g_strdup(_("Adds iChat-style timestamps to conversations every 5 minutes.")); desc.authors = g_strdup("Sean Egan <bj91704@binghamton.edu>"); desc.url = g_strdup(WEBSITE); return &desc; }
