--- a/buddytime/buddyedit.c Sat Nov 08 21:50:28 2008 -0500
+++ b/buddytime/buddyedit.c Tue Nov 11 15:57:52 2008 -0500
@@ -1,7 +1,7 @@
/*************************************************************************
- * A Gaim plugin that adds an edit to to buddies allowing you to change
+ * A Purple plugin that adds an edit to to buddies allowing you to change * various details you can't normally change. It also provides a mechanism
* for subsequent plugins to add themselves to that dialog.
@@ -24,14 +24,12 @@
*************************************************************************/
#define PLUGIN "core-kleptog-buddyedit"
-#include "gaim-compat.h"
@@ -40,77 +38,75 @@
#include "debug.h" /* Debug output functions */
#include "request.h" /* Requests stuff */
-static GaimPlugin *plugin_self;
+static PurplePlugin *plugin_self; -buddyedit_editcomplete_cb(GaimBlistNode * data, GaimRequestFields * fields)
+buddyedit_editcomplete_cb(PurpleBlistNode * data, PurpleRequestFields * fields) gboolean blist_destroy = FALSE;
- GaimBlistNode *olddata = data; /* Keep pointer in case we need to destroy it */
+ PurpleBlistNode *olddata = data; /* Keep pointer in case we need to destroy it */ /* Account detail stuff */
- case GAIM_BLIST_BUDDY_NODE:
+ case PURPLE_BLIST_BUDDY_NODE: - GaimBuddy *buddy = (GaimBuddy *) data;
- GaimAccount *account = gaim_request_fields_get_account(fields, "account");
- const char *name = gaim_request_fields_get_string(fields, "name");
- const char *alias = gaim_request_fields_get_string(fields, "alias");
+ PurpleBuddy *buddy = (PurpleBuddy *) data; + PurpleAccount *account = purple_request_fields_get_account(fields, "account"); + const char *name = purple_request_fields_get_string(fields, "name"); + const char *alias = purple_request_fields_get_string(fields, "alias"); /* If any details changes, create the buddy */
if((account != buddy->account) || strcmp(name, buddy->name))
- GaimBuddy *newbuddy = gaim_buddy_new(account, name, alias);
- gaim_blist_add_buddy(newbuddy, NULL, NULL, data); /* Copy it to correct location */
+ PurpleBuddy *newbuddy = purple_buddy_new(account, name, alias); + purple_blist_add_buddy(newbuddy, NULL, NULL, data); /* Copy it to correct location */ /* Now this is ugly, but we want to copy the settings and avoid issues with memory management */
- tmp = ((GaimBlistNode *) buddy)->settings;
- ((GaimBlistNode *) buddy)->settings = ((GaimBlistNode *) newbuddy)->settings;
- ((GaimBlistNode *) newbuddy)->settings = tmp;
+ tmp = ((PurpleBlistNode *) buddy)->settings; + ((PurpleBlistNode *) buddy)->settings = ((PurpleBlistNode *) newbuddy)->settings; + ((PurpleBlistNode *) newbuddy)->settings = tmp; - data = (GaimBlistNode *) newbuddy;
+ data = (PurpleBlistNode *) newbuddy; - gaim_blist_alias_buddy(buddy, alias);
+ purple_blist_alias_buddy(buddy, alias); - case GAIM_BLIST_CONTACT_NODE:
+ case PURPLE_BLIST_CONTACT_NODE: - GaimContact *contact = (GaimContact *) data;
- const char *alias = gaim_request_fields_get_string(fields, "alias");
- gaim_contact_set_alias(contact, alias);
+ PurpleContact *contact = (PurpleContact *) data; + const char *alias = purple_request_fields_get_string(fields, "alias"); + purple_contact_set_alias(contact, alias); - case GAIM_BLIST_GROUP_NODE:
+ case PURPLE_BLIST_GROUP_NODE: - GaimGroup *group = (GaimGroup *) data;
- const char *alias = gaim_request_fields_get_string(fields, "alias");
- gaim_blist_rename_group(group, alias);
+ PurpleGroup *group = (PurpleGroup *) data; + const char *alias = purple_request_fields_get_string(fields, "alias"); + purple_blist_rename_group(group, alias); - case GAIM_BLIST_CHAT_NODE:
+ case PURPLE_BLIST_CHAT_NODE: - GaimChat *chat = (GaimChat *) data;
+ PurpleChat *chat = (PurpleChat *) data; gboolean new_chat = FALSE;
GList *list = NULL, *tmp;
- gc = gaim_account_get_connection(chat->account);
- if(GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info != NULL)
- list = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info(gc);
+ gc = purple_account_get_connection(chat->account); + if(PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info != NULL) + list = PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info(gc); - GaimAccount *newaccount = gaim_request_fields_get_account(fields, "account");
+ PurpleAccount *newaccount = purple_request_fields_get_account(fields, "account"); - /* In Gaim2 each prot_chat_entry has a field "required". We use
+ /* In Purple2 each prot_chat_entry has a field "required". We use * this to determine if a field is important enough to recreate
- * the chat if it changes. Non-required fields we jsut change
- * in-situ. In Gaim1.5 this field doesn't exist so we always
-#if GAIM_MAJOR_VERSION >= 2
+ * the chat if it changes. Non-required fields we just change if(newaccount != chat->account)
@@ -125,7 +121,7 @@
oldvalue = g_hash_table_lookup(chat->components, pce->identifier);
- newvalue = gaim_request_fields_get_string(fields, pce->identifier);
+ newvalue = purple_request_fields_get_string(fields, pce->identifier); @@ -135,9 +131,6 @@
@@ -157,14 +150,14 @@
- newvalue = gaim_request_fields_get_string(fields, pce->identifier);
+ newvalue = purple_request_fields_get_string(fields, pce->identifier); g_hash_table_replace(components, g_strdup(pce->identifier),
- GaimChat *newchat = gaim_chat_new(newaccount, NULL, components);
- gaim_blist_add_chat(newchat, NULL, data); /* Copy it to correct location */
- data = (GaimBlistNode *) newchat;
+ PurpleChat *newchat = purple_chat_new(newaccount, NULL, components); + purple_blist_add_chat(newchat, NULL, data); /* Copy it to correct location */ + data = (PurpleBlistNode *) newchat; else /* Just updating values in old chat */
@@ -173,54 +166,52 @@
for (tmp = g_list_first(list); tmp; tmp = g_list_next(tmp))
struct proto_chat_entry *pce = tmp->data;
-#if GAIM_MAJOR_VERSION >= 2
- newvalue = gaim_request_fields_get_string(fields, pce->identifier);
+ newvalue = purple_request_fields_get_string(fields, pce->identifier); g_hash_table_replace(chat->components, g_strdup(pce->identifier),
- const char *alias = gaim_request_fields_get_string(fields, "alias");
- gaim_blist_alias_chat(chat, alias);
+ const char *alias = purple_request_fields_get_string(fields, "alias"); + purple_blist_alias_chat(chat, alias); - case GAIM_BLIST_OTHER_NODE:
+ case PURPLE_BLIST_OTHER_NODE: - gaim_signal_emit(gaim_blist_get_handle(), PLUGIN "-submit-fields", fields, data);
+ purple_signal_emit(purple_blist_get_handle(), PLUGIN "-submit-fields", fields, data); - if(olddata->type == GAIM_BLIST_BUDDY_NODE)
- gaim_blist_remove_buddy((GaimBuddy *) olddata);
- else if(olddata->type == GAIM_BLIST_CHAT_NODE)
- gaim_blist_remove_chat((GaimChat *) olddata);
+ if(olddata->type == PURPLE_BLIST_BUDDY_NODE) + purple_blist_remove_buddy((PurpleBuddy *) olddata); + else if(olddata->type == PURPLE_BLIST_CHAT_NODE) + purple_blist_remove_chat((PurpleChat *) olddata); - gaim_blist_schedule_save();
+ purple_blist_schedule_save(); -static GaimAccount *buddyedit_account_filter_func_data;
+static PurpleAccount *buddyedit_account_filter_func_data; -buddyedit_account_filter_func(GaimAccount * account)
+buddyedit_account_filter_func(PurpleAccount * account) - GaimPluginProtocolInfo *gppi1 =
- GAIM_PLUGIN_PROTOCOL_INFO(gaim_account_get_connection(account)->prpl);
- GaimPluginProtocolInfo *gppi2 =
- GAIM_PLUGIN_PROTOCOL_INFO(gaim_account_get_connection(buddyedit_account_filter_func_data)->
+ PurplePluginProtocolInfo *gppi1 = + PURPLE_PLUGIN_PROTOCOL_INFO(purple_account_get_connection(account)->prpl); + PurplePluginProtocolInfo *gppi2 = + PURPLE_PLUGIN_PROTOCOL_INFO(purple_account_get_connection(buddyedit_account_filter_func_data)-> @@ -228,97 +219,95 @@
/* Node is either a contact or a buddy */
-buddy_edit_cb(GaimBlistNode * node, gpointer data)
+buddy_edit_cb(PurpleBlistNode * node, gpointer data) - gaim_debug(GAIM_DEBUG_INFO, PLUGIN, "buddy_edit_cb(%p)\n", node);
- GaimRequestFields *fields;
- GaimRequestField *field;
- GaimRequestFieldGroup *group;
+ purple_debug(PURPLE_DEBUG_INFO, PLUGIN, "buddy_edit_cb(%p)\n", node); + PurpleRequestFields *fields; + PurpleRequestField *field; + PurpleRequestFieldGroup *group; char *request_title = NULL;
- fields = gaim_request_fields_new();
+ fields = purple_request_fields_new(); - case GAIM_BLIST_BUDDY_NODE:
+ case PURPLE_BLIST_BUDDY_NODE: - GaimBuddy *buddy = (GaimBuddy *) node;
- group = gaim_request_field_group_new("Buddy Details");
- gaim_request_fields_add_group(fields, group);
+ PurpleBuddy *buddy = (PurpleBuddy *) node; + group = purple_request_field_group_new("Buddy Details"); + purple_request_fields_add_group(fields, group); - field = gaim_request_field_account_new("account", "Account", buddy->account);
- gaim_request_field_account_set_show_all(field, TRUE);
- gaim_request_field_group_add_field(group, field);
+ field = purple_request_field_account_new("account", "Account", buddy->account); + purple_request_field_account_set_show_all(field, TRUE); + purple_request_field_group_add_field(group, field); - field = gaim_request_field_string_new("name", "Name", buddy->name, FALSE);
- gaim_request_field_group_add_field(group, field);
+ field = purple_request_field_string_new("name", "Name", buddy->name, FALSE); + purple_request_field_group_add_field(group, field); - field = gaim_request_field_string_new("alias", "Alias", buddy->alias, FALSE);
- gaim_request_field_group_add_field(group, field);
+ field = purple_request_field_string_new("alias", "Alias", buddy->alias, FALSE); + purple_request_field_group_add_field(group, field); request_title = "Edit Buddy";
- case GAIM_BLIST_CONTACT_NODE:
+ case PURPLE_BLIST_CONTACT_NODE: - GaimContact *contact = (GaimContact *) node;
- group = gaim_request_field_group_new("Contact Details");
- gaim_request_fields_add_group(fields, group);
+ PurpleContact *contact = (PurpleContact *) node; + group = purple_request_field_group_new("Contact Details"); + purple_request_fields_add_group(fields, group); - field = gaim_request_field_string_new("alias", "Alias", contact->alias, FALSE);
- gaim_request_field_group_add_field(group, field);
+ field = purple_request_field_string_new("alias", "Alias", contact->alias, FALSE); + purple_request_field_group_add_field(group, field); request_title = "Edit Contact";
- case GAIM_BLIST_GROUP_NODE:
+ case PURPLE_BLIST_GROUP_NODE: - GaimGroup *grp = (GaimGroup *) node;
- group = gaim_request_field_group_new("Group Details");
- gaim_request_fields_add_group(fields, group);
+ PurpleGroup *grp = (PurpleGroup *) node; + group = purple_request_field_group_new("Group Details"); + purple_request_fields_add_group(fields, group); - field = gaim_request_field_string_new("alias", "Name", grp->name, FALSE);
- gaim_request_field_group_add_field(group, field);
+ field = purple_request_field_string_new("alias", "Name", grp->name, FALSE); + purple_request_field_group_add_field(group, field); request_title = "Edit Group";
- case GAIM_BLIST_CHAT_NODE:
+ case PURPLE_BLIST_CHAT_NODE: - GaimChat *chat = (GaimChat *) node;
- group = gaim_request_field_group_new("Chat Details");
- gaim_request_fields_add_group(fields, group);
+ PurpleChat *chat = (PurpleChat *) node; + GList *list = NULL, *tmp; + group = purple_request_field_group_new("Chat Details"); + purple_request_fields_add_group(fields, group); - field = gaim_request_field_account_new("account", "Account", chat->account);
- gaim_request_field_account_set_filter(field, buddyedit_account_filter_func);
+ field = purple_request_field_account_new("account", "Account", chat->account); + purple_request_field_account_set_filter(field, buddyedit_account_filter_func); buddyedit_account_filter_func_data = chat->account;
- gaim_request_field_group_add_field(group, field);
- GList *list = NULL, *tmp;
- gc = gaim_account_get_connection(chat->account);
- if(GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info != NULL)
- list = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info(gc);
+ purple_request_field_group_add_field(group, field); + gc = purple_account_get_connection(chat->account); + if(PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info != NULL) + list = PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info(gc); for (tmp = g_list_first(list); tmp; tmp = g_list_next(tmp))
struct proto_chat_entry *pce = tmp->data;
-#if GAIM_MAJOR_VERSION >= 2
- gaim_debug(GAIM_DEBUG_INFO, PLUGIN,
+ purple_debug(PURPLE_DEBUG_INFO, PLUGIN, "identifier=%s, label=%s, is_int=%d, required=%d\n", pce->identifier,
pce->label, pce->is_int, pce->required);
value = g_hash_table_lookup(chat->components, pce->identifier);
- field = gaim_request_field_string_new(pce->identifier, pce->label, value, FALSE);
-#if GAIM_MAJOR_VERSION >= 2
- gaim_request_field_set_required(field, pce->required);
- gaim_request_field_group_add_field(group, field);
+ field = purple_request_field_string_new(pce->identifier, pce->label, value, FALSE); + purple_request_field_set_required(field, pce->required); + purple_request_field_group_add_field(group, field); - field = gaim_request_field_string_new("alias", "Alias", chat->alias, FALSE);
- gaim_request_field_group_add_field(group, field);
+ field = purple_request_field_string_new("alias", "Alias", chat->alias, FALSE); + purple_request_field_group_add_field(group, field); request_title = "Edit Chat";
@@ -328,78 +317,72 @@
- gaim_signal_emit(gaim_blist_get_handle(), PLUGIN "-create-fields", fields, node);
+ purple_signal_emit(purple_blist_get_handle(), PLUGIN "-create-fields", fields, node); - gaim_request_fields(plugin_self,
- request_title, NULL, NULL,
- fields, "OK", G_CALLBACK(buddyedit_editcomplete_cb), "Cancel", NULL, node);
+ purple_request_fields(plugin_self, request_title, NULL, NULL, fields, + "OK", G_CALLBACK(buddyedit_editcomplete_cb), + NULL, NULL, NULL, /* XXX: These should be set. */ -buddy_menu_cb(GaimBlistNode * node, GList ** menu, void *data)
+buddy_menu_cb(PurpleBlistNode * node, GList ** menu, void *data) -#if GAIM_MAJOR_VERSION < 2
- GaimBlistNodeAction *action;
- GaimMenuAction *action;
+ PurpleMenuAction *action; /* These are the types we handle */
- case GAIM_BLIST_BUDDY_NODE:
- case GAIM_BLIST_CONTACT_NODE:
- case GAIM_BLIST_GROUP_NODE:
- case GAIM_BLIST_CHAT_NODE:
+ case PURPLE_BLIST_BUDDY_NODE: + case PURPLE_BLIST_CONTACT_NODE: + case PURPLE_BLIST_GROUP_NODE: + case PURPLE_BLIST_CHAT_NODE: - case GAIM_BLIST_OTHER_NODE:
+ case PURPLE_BLIST_OTHER_NODE: -#if GAIM_MAJOR_VERSION < 2
- action = gaim_blist_node_action_new("Edit...", buddy_edit_cb, NULL);
- action = gaim_menu_action_new("Edit...", GAIM_CALLBACK(buddy_edit_cb), NULL, NULL);
+ action = purple_menu_action_new("Edit...", PURPLE_CALLBACK(buddy_edit_cb), NULL, NULL); *menu = g_list_append(*menu, action);
-plugin_load(GaimPlugin * plugin)
+plugin_load(PurplePlugin * plugin) - void *blist_handle = gaim_blist_get_handle();
+ void *blist_handle = purple_blist_get_handle(); - gaim_signal_register(blist_handle, PLUGIN "-create-fields", /* Called when about to create dialog */
- gaim_marshal_VOID__POINTER_POINTER, NULL, 2, /* (FieldList*,BlistNode*) */
- gaim_value_new(GAIM_TYPE_SUBTYPE, GAIM_TYPE_POINTER), /* FieldList */
- gaim_value_new(GAIM_TYPE_SUBTYPE, GAIM_SUBTYPE_BLIST));
+ purple_signal_register(blist_handle, PLUGIN "-create-fields", /* Called when about to create dialog */ + purple_marshal_VOID__POINTER_POINTER, NULL, 2, /* (FieldList*,BlistNode*) */ + purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_TYPE_POINTER), /* FieldList */ + purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_BLIST)); - gaim_signal_register(blist_handle, PLUGIN "-submit-fields", /* Called when dialog submitted */
- gaim_marshal_VOID__POINTER_POINTER, NULL, 2, /* (FieldList*,BlistNode*) */
- gaim_value_new(GAIM_TYPE_SUBTYPE, GAIM_TYPE_POINTER), /* FieldList */
- gaim_value_new(GAIM_TYPE_SUBTYPE, GAIM_SUBTYPE_BLIST));
+ purple_signal_register(blist_handle, PLUGIN "-submit-fields", /* Called when dialog submitted */ + purple_marshal_VOID__POINTER_POINTER, NULL, 2, /* (FieldList*,BlistNode*) */ + purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_TYPE_POINTER), /* FieldList */ + purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_BLIST)); - gaim_signal_connect(blist_handle, "blist-node-extended-menu", plugin,
- GAIM_CALLBACK(buddy_menu_cb), NULL);
+ purple_signal_connect(blist_handle, "blist-node-extended-menu", plugin, + PURPLE_CALLBACK(buddy_menu_cb), NULL); -static GaimPluginInfo info = {
+static PurplePluginInfo info = { + PURPLE_PLUGIN_STANDARD,
+ PURPLE_PRIORITY_DEFAULT, @@ -409,7 +392,7 @@
"A plugin that adds an edit to to buddies allowing you to change various details you can't normally change. "
"It also provides a mechanism for subsequent plugins to add themselves to that dialog. ",
"Martijn van Oosterhout <kleptog@svana.org>",
- "http://svana.org/kleptog/gaim/",
+ "http://svana.org/kleptog/purple/", @@ -422,7 +405,7 @@
-init_plugin(GaimPlugin * plugin)
+init_plugin(PurplePlugin * plugin)