--- a/smartear/smartear.c Sun Jul 01 05:16:22 2007 -0400
+++ b/smartear/smartear.c Mon Jul 02 00:03:26 2007 -0400
@@ -1,13 +1,13 @@
/* SmartEar by Matt Perry
+ * Works for purple 2.0.0 * Plugin to assign different sounds to different buddies and groups.
* TODO: figure out contact support
@@ -20,8 +20,8 @@
@@ -61,7 +61,7 @@
+ PurpleAccount *account; @@ -128,7 +128,7 @@
static void smartear_save(void);
static void smartear_load(void);
-static void play_sound_alias(char *sound, GaimAccount* account);
+static void play_sound_alias(char *sound, PurpleAccount* account); /*** Glade's Support Function ***/
@@ -744,8 +744,8 @@
struct smartear_entry *entry;
- g_snprintf(file, sizeof(file), "%s/smartear.rc", gaim_user_dir());
+ if (purple_user_dir()) { + g_snprintf(file, sizeof(file), "%s/smartear.rc", purple_user_dir()); @@ -783,8 +783,8 @@
gboolean has_default = FALSE;
- g_snprintf(file, sizeof(file), "%s/smartear.rc", gaim_user_dir());
+ if (purple_user_dir()) { + g_snprintf(file, sizeof(file), "%s/smartear.rc", purple_user_dir()); @@ -887,9 +887,9 @@
-/*** Gaim callbacks ***/
+/*** Purple callbacks ***/ -static struct message_data *find_message_by_name(GaimAccount *account, const char *pname)
+static struct message_data *find_message_by_name(PurpleAccount *account, const char *pname) struct message_data *msg = NULL;
@@ -936,7 +936,7 @@
-static void on_smartear_clicked(GaimBlistNode* node, gpointer data)
+static void on_smartear_clicked(PurpleBlistNode* node, gpointer data) struct smartear_entry tmp, *entry;
@@ -953,24 +953,24 @@
- else if (GAIM_BLIST_NODE_IS_BUDDY(node)) {
+ else if (PURPLE_BLIST_NODE_IS_BUDDY(node)) { - tmp.name = ((GaimBuddy*)node)->name;
- gaim_debug(GAIM_DEBUG_INFO, "smartear", "adding buddy %s", tmp.name);
+ tmp.name = ((PurpleBuddy*)node)->name; + purple_debug(PURPLE_DEBUG_INFO, "smartear", "adding buddy %s", tmp.name); - else if (GAIM_BLIST_NODE_IS_CONTACT(node)) {
+ else if (PURPLE_BLIST_NODE_IS_CONTACT(node)) { - tmp.name = ((GaimContact*)node)->alias;
+ tmp.name = ((PurpleContact*)node)->alias; - tmp.name = ((GaimContact*)node)->priority->name;
+ tmp.name = ((PurpleContact*)node)->priority->name; - gaim_debug(GAIM_DEBUG_INFO, "smartear", "adding contact %s", tmp.name);
+ purple_debug(PURPLE_DEBUG_INFO, "smartear", "adding contact %s", tmp.name); - else if (GAIM_BLIST_NODE_IS_GROUP(node)) {
+ else if (PURPLE_BLIST_NODE_IS_GROUP(node)) { - tmp.name = ((GaimGroup*)node)->name;
+ tmp.name = ((PurpleGroup*)node)->name; g_warning("group %p, %p %s", node, tmp.name, tmp.name);
- gaim_debug(GAIM_DEBUG_INFO, "smartear", "adding group %s", tmp.name);
+ purple_debug(PURPLE_DEBUG_INFO, "smartear", "adding group %s", tmp.name); @@ -986,7 +986,7 @@
populate_edit_win(entry);
-static void play_sound_alias(char *sound, GaimAccount* account)
+static void play_sound_alias(char *sound, PurpleAccount* account) struct smartear_entry tmp, *entry;
@@ -1003,17 +1003,17 @@
play_sound_alias(entry->sound[EVENT_M], account);
- gaim_sound_play_file(sound, account);
+ purple_sound_play_file(sound, account); -void play_matching_sound(GaimBuddy *buddy, int event)
+void play_matching_sound(PurpleBuddy *buddy, int event) struct smartear_entry *entry;
char *name = buddy ? g_strdup(my_normalize(buddy->name)) : NULL;
- GaimGroup *g = buddy ? gaim_buddy_get_group(buddy) : NULL;
+ PurpleGroup *g = buddy ? purple_buddy_get_group(buddy) : NULL; for (lp = sounds_list; lp; lp = g_slist_next(lp)) {
entry = (struct smartear_entry*)lp->data;
@@ -1038,12 +1038,12 @@
- gaim_debug(GAIM_DEBUG_INFO, "smartear",
+ purple_debug(PURPLE_DEBUG_INFO, "smartear", "found %s for %s on event %d\n", sound, name, event);
- play_sound_alias(sound, gaim_buddy_get_account(buddy));
+ play_sound_alias(sound, purple_buddy_get_account(buddy)); - gaim_debug(GAIM_DEBUG_INFO, "smartear",
+ purple_debug(PURPLE_DEBUG_INFO, "smartear", "no sound found for %s on event %d\n", name, event);
@@ -1058,7 +1058,7 @@
- play_matching_sound(gaim_find_buddy(msg->account, msg->buddy), msg->timer->event);
+ play_matching_sound(purple_find_buddy(msg->account, msg->buddy), msg->timer->event); @@ -1066,12 +1066,12 @@
-static gboolean on_im_recv(GaimAccount *account, char *who, char *what, gint32 flags, void *junk)
+static gboolean on_im_recv(PurpleAccount *account, char *who, char *what, gint32 flags, void *junk) struct message_data *msg;
- GaimConversation *conv = gaim_find_conversation_with_account(GAIM_CONV_TYPE_ANY, who, account);
- GaimGtkConversation *gtkconv = conv ? GAIM_GTK_CONVERSATION(conv) : NULL;
+ PurpleConversation *conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_ANY, who, account); + PidginConversation *gtkconv = conv ? PIDGIN_CONVERSATION(conv) : NULL; // FIXME: message list is never trimmed. However, if we DO trim it,
// we need to consider race conditions on the msg field of the timer_hook
@@ -1089,7 +1089,7 @@
if (msg->last_active + message_delay > now && conv) {
- gaim_debug(GAIM_DEBUG_INFO, "smartear",
+ purple_debug(PURPLE_DEBUG_INFO, "smartear", "received IM from %s, but only %d/%d seconds passed.\n",
who, now - msg->last_active, message_delay);
@@ -1111,12 +1111,12 @@
if (gtkconv && !gtkconv->make_sound)
- play_matching_sound(gaim_find_buddy(msg->account, msg->buddy), EVENT_M);
+ play_matching_sound(purple_find_buddy(msg->account, msg->buddy), EVENT_M); -static void on_im_send(GaimAccount *account, char *who, char *what, void *junk)
+static void on_im_send(PurpleAccount *account, char *who, char *what, void *junk) struct message_data *msg;
@@ -1137,71 +1137,71 @@
-static void on_buddy_signon(GaimBuddy *buddy, void *data)
+static void on_buddy_signon(PurpleBuddy *buddy, void *data) play_matching_sound(buddy, EVENT_S);
-static void on_buddy_back(GaimBuddy *buddy, void *data)
+static void on_buddy_back(PurpleBuddy *buddy, void *data) play_matching_sound(buddy, EVENT_A);
-static void on_buddy_unidle(GaimBuddy *buddy, void *data)
+static void on_buddy_unidle(PurpleBuddy *buddy, void *data) play_matching_sound(buddy, EVENT_I);
-static void on_signon(GaimConnection *gc, void *m)
+static void on_signon(PurpleConnection *gc, void *m) -static void on_signoff(GaimConnection *gc, void *m)
+static void on_signoff(PurpleConnection *gc, void *m) -static void on_blist_node_extended_menu(GaimBlistNode *node, GList **menu)
+static void on_blist_node_extended_menu(PurpleBlistNode *node, GList **menu) - GaimMenuAction *menu_action;
- menu_action = gaim_menu_action_new(_("Edit SmartEar Entry"),
- GAIM_CALLBACK(on_smartear_clicked), NULL, NULL);
+ PurpleMenuAction *menu_action; + menu_action = purple_menu_action_new(_("Edit SmartEar Entry"), + PURPLE_CALLBACK(on_smartear_clicked), NULL, NULL); *menu = g_list_append(*menu, menu_action);
-static gboolean gaim_plugin_init(GaimPlugin *plugin)
+static gboolean purple_plugin_init(PurplePlugin *plugin) - void *blist_handle = gaim_blist_get_handle();
- void *conv_handle = gaim_conversations_get_handle();
+ void *blist_handle = purple_blist_get_handle(); + void *conv_handle = purple_conversations_get_handle(); - gaim_signal_connect(blist_handle, "blist-node-extended-menu",
- plugin, GAIM_CALLBACK(on_blist_node_extended_menu), NULL);
+ purple_signal_connect(blist_handle, "blist-node-extended-menu", + plugin, PURPLE_CALLBACK(on_blist_node_extended_menu), NULL); - gaim_signal_connect(blist_handle, "buddy-signed-on",
- plugin, GAIM_CALLBACK(on_buddy_signon), NULL);
- gaim_signal_connect(blist_handle, "buddy-back",
- plugin, GAIM_CALLBACK(on_buddy_back), NULL);
- gaim_signal_connect(blist_handle, "buddy-unidle",
- plugin, GAIM_CALLBACK(on_buddy_unidle), NULL);
+ purple_signal_connect(blist_handle, "buddy-signed-on", + plugin, PURPLE_CALLBACK(on_buddy_signon), NULL); + purple_signal_connect(blist_handle, "buddy-back", + plugin, PURPLE_CALLBACK(on_buddy_back), NULL); + purple_signal_connect(blist_handle, "buddy-unidle", + plugin, PURPLE_CALLBACK(on_buddy_unidle), NULL); - gaim_signal_connect(conv_handle, "received-im-msg",
- plugin, GAIM_CALLBACK(on_im_recv), NULL);
- gaim_signal_connect(conv_handle, "sent-im-msg",
- plugin, GAIM_CALLBACK(on_im_send), NULL);
+ purple_signal_connect(conv_handle, "received-im-msg", + plugin, PURPLE_CALLBACK(on_im_recv), NULL); + purple_signal_connect(conv_handle, "sent-im-msg", + plugin, PURPLE_CALLBACK(on_im_send), NULL); - gaim_signal_connect(gaim_connections_get_handle(), "signed-on",
- plugin, GAIM_CALLBACK(on_signon), NULL);
- gaim_signal_connect(gaim_connections_get_handle(), "signed-off",
- plugin, GAIM_CALLBACK(on_signoff), NULL);
+ purple_signal_connect(purple_connections_get_handle(), "signed-on", + plugin, PURPLE_CALLBACK(on_signon), NULL); + purple_signal_connect(purple_connections_get_handle(), "signed-off", + plugin, PURPLE_CALLBACK(on_signoff), NULL); -static gboolean gaim_plugin_remove(GaimPlugin *h)
+static gboolean purple_plugin_remove(PurplePlugin *h) @@ -1211,7 +1211,7 @@
-static GtkWidget *gaim_plugin_config_gtk(GaimPlugin *plugin)
+static GtkWidget *purple_plugin_config_gtk(PurplePlugin *plugin) config = create_config();
@@ -1223,21 +1223,21 @@
-static GaimGtkPluginUiInfo ui_info = {
- gaim_plugin_config_gtk,
+static PurplePluginUiInfo ui_info = { + purple_plugin_config_gtk, 0 /* page_num (reserved) */
-static GaimPluginInfo info =
+static PurplePluginInfo info =
+ PURPLE_PLUGIN_STANDARD,
+ PURPLE_PRIORITY_DEFAULT, @@ -1248,12 +1248,12 @@
"SmartEar allows you to opt to play sounds when a buddy sends you an "
"IM, signs on, returns from away or idle, or any combination of these, so "
"you'll know by the sound what the important people are doing. "),
- "Matt Perry <guy@somewhere.fscked.org>",
+ "Matt Perry <guy@fscked.org>", "http://somewhere.fscked.org/smartear/",
- gaim_plugin_init, // load
- gaim_plugin_remove, // unload
+ purple_plugin_init, // load + purple_plugin_remove, // unload @@ -1262,8 +1262,8 @@
-static void init_plugin(GaimPlugin *plugin)
+static void init_plugin(PurplePlugin *plugin) -GAIM_INIT_PLUGIN(smartear, init_plugin, info);
+PURPLE_INIT_PLUGIN(smartear, init_plugin, info);