void init_account_status_changed_event() { void *handle = gaim_wg_get_handle(); gaim_signal_connect(gaim_accounts_get_handle(), "account-status-changed", handle, GAIM_CALLBACK(update_account_status), NULL); }
void gaym_fetch_thumbnail_cb(void *user_data, const char *pic_data, size_t len) { if (!user_data) return; struct gaym_fetch_thumbnail_data *d = user_data; if (!pic_data) { return; } if (len && !g_strrstr_len(pic_data, len, "Server Error")) { char *dir = g_build_filename(gaim_user_dir(), "icons", "gaym", d->who, NULL); char *filename = g_strdup(d->filename); char *path = g_build_filename(dir, filename, NULL); gaim_debug_misc("gayminfo", "dir: %s\n", dir); gaim_debug_misc("gayminfo", "filename: %s\n", filename); gaim_debug_misc("gayminfo", "path: %s\n", path); if (!g_file_test(dir, G_FILE_TEST_EXISTS)) gaim_build_dir(dir, S_IRUSR | S_IWUSR | S_IXUSR); if (path && !g_file_test(path, G_FILE_TEST_EXISTS)) { FILE *file; if ((file = g_fopen(path, "wb"))) { fwrite(pic_data, 1, len, file); fclose(file); } else { gaim_debug_misc("fetch_thumbnail_cb", "Couldn't write file\n"); } g_free(filename); g_free(path); g_free(dir); } } if (GAIM_CONNECTION_IS_VALID(d->gc) && len) { gaim_signal_emit(gaim_accounts_get_handle(), "info-updated", d->gc, NULL, d->who); if (gaim_find_conversation_with_account(d->who, d->gc->account)) { //gaim_buddy_icons_set_for_user(gaim_connection_get_account // (d->gc), d->who, // (void *) pic_data, len); } } else { gaim_debug_error("gaym", "Fetching buddy icon failed.\n"); } g_free(d->who); g_free(d); }
void gaym_fetch_thumbnail_cb(GaimUtilFetchUrlData *url_data, void *user_data, const gchar *pic_data, gsize len, const gchar* error_message) { if (!user_data) return; struct gaym_fetch_thumbnail_data *d = user_data; if (!pic_data) { return; } if (!d->gc) return; if (len && !g_strrstr_len(pic_data, len, "Server Error")) { gaim_debug_misc("gaym","Setting buddy icon for %s\n",d->who); if(len<1024) { void* new_pic_data=NULL; gaim_debug_misc("gaym","Short icon file, padding to 1024\n"); new_pic_data=g_malloc0(1024); memcpy(new_pic_data, pic_data, len); len=1024; gaim_buddy_icon_new(d->gc->account, d->who, (void*)new_pic_data, len); g_free(new_pic_data); } else { gaim_buddy_icon_new(d->gc->account, d->who, (void*)pic_data, len); } //GaimBuddyIcon *icon=gaim_buddy_icons_find(d->gc->account,d->who); //guint len; //const guchar* data=gaim_buddy_icon_get_data(icon, &len); } if (GAIM_CONNECTION_IS_VALID(d->gc) && len) { gaim_signal_emit(gaim_accounts_get_handle(), "info-updated", d->gc->account, d->who); /* if (gaim_find_conversation_with_account(d->who, d->gc->account)) { gaim_debug_misc("fetch_thumbnail_cb","setting buddy icon\n"); gaim_buddy_icons_set_for_user(gaim_connection_get_account (d->gc), d->who, (void *) pic_data, len); }*/ } else { gaim_debug_error("gaym", "Fetching buddy icon failed.\n"); } g_free(d->who); g_free(d); }
static gboolean plugin_load(GaimPlugin * plugin) { init_chat_icons(); init_popups(); gaim_signal_connect(gaim_conversations_get_handle(), "chat-joined", plugin, GAIM_CALLBACK(redochatwindow), NULL); gaim_signal_connect(gaim_conversations_get_handle(), "conversation-created", plugin, GAIM_CALLBACK(redo_im_window), NULL); gaim_signal_connect(gaim_accounts_get_handle(), "info-updated", plugin, GAIM_CALLBACK(update_info_cb), NULL); gaim_signal_connect(gaim_conversations_get_handle(), "deleting-conversation", plugin, GAIM_CALLBACK(clean_popup_stuff), NULL); return TRUE; }
static gboolean plugin_load(GaimPlugin * plugin) { init_chat_icons(plugin); init_popups(); init_roombrowse(plugin); gaim_signal_connect(gaim_conversations_get_handle(), "conversation-created", plugin, GAIM_CALLBACK(redo_im_window), NULL); gaim_signal_connect(gaim_accounts_get_handle(), "info-updated", plugin, GAIM_CALLBACK(update_info_cb), NULL); gaim_signal_connect(gaim_conversations_get_handle(), "deleting-conversation", plugin, GAIM_CALLBACK(clean_popup_stuff), NULL); gaim_prefs_add_none("/plugins/gaym-extras"); gaim_prefs_add_none("/plugins/gaym-extras/silly"); extras_register_stock(); return TRUE; }
/************************************************************************** * Plugin stuff **************************************************************************/ static gboolean plugin_load(GaimPlugin *plugin) { void *core_handle = gaim_get_core(); void *blist_handle = gaim_blist_get_handle(); void *conn_handle = gaim_connections_get_handle(); void *conv_handle = gaim_conversations_get_handle(); void *accounts_handle = gaim_accounts_get_handle(); void *buddy_icons_handle = gaim_buddy_icons_get_handle(); /* Accounts subsystem signals */ gaim_signal_connect(accounts_handle, "account-connecting", plugin, GAIM_CALLBACK(account_connecting_cb), NULL); gaim_signal_connect(accounts_handle, "account-away", plugin, GAIM_CALLBACK(account_away_cb), NULL); gaim_signal_connect(accounts_handle, "account-setting-info", plugin, GAIM_CALLBACK(account_setting_info_cb), NULL); gaim_signal_connect(accounts_handle, "account-set-info", plugin, GAIM_CALLBACK(account_set_info_cb), NULL); gaim_signal_connect(accounts_handle, "account-warned", plugin, GAIM_CALLBACK(account_warned_cb), NULL); /* Buddy Icon subsystem signals */ gaim_signal_connect(buddy_icons_handle, "buddy-icon-cached", plugin, GAIM_CALLBACK(buddy_icon_cached_cb), NULL); /* Buddy List subsystem signals */ gaim_signal_connect(blist_handle, "buddy-away", plugin, GAIM_CALLBACK(buddy_away_cb), NULL); gaim_signal_connect(blist_handle, "buddy-back", plugin, GAIM_CALLBACK(buddy_back_cb), NULL); gaim_signal_connect(blist_handle, "buddy-idle", plugin, GAIM_CALLBACK(buddy_idle_cb), NULL); gaim_signal_connect(blist_handle, "buddy-unidle", plugin, GAIM_CALLBACK(buddy_unidle_cb), NULL); gaim_signal_connect(blist_handle, "buddy-signed-on", plugin, GAIM_CALLBACK(buddy_signed_on_cb), NULL); gaim_signal_connect(blist_handle, "buddy-signed-off", plugin, GAIM_CALLBACK(buddy_signed_off_cb), NULL); gaim_signal_connect(blist_handle, "blist-node-extended-menu", plugin, GAIM_CALLBACK(blist_node_extended_menu_cb), NULL); /* Connection subsystem signals */ gaim_signal_connect(conn_handle, "signing-on", plugin, GAIM_CALLBACK(signing_on_cb), NULL); gaim_signal_connect(conn_handle, "signed-on", plugin, GAIM_CALLBACK(signed_on_cb), NULL); gaim_signal_connect(conn_handle, "signing-off", plugin, GAIM_CALLBACK(signing_off_cb), NULL); gaim_signal_connect(conn_handle, "signed-off", plugin, GAIM_CALLBACK(signed_off_cb), NULL); /* Conversations subsystem signals */ gaim_signal_connect(conv_handle, "displaying-im-msg", plugin, GAIM_CALLBACK(displaying_im_msg_cb), NULL); gaim_signal_connect(conv_handle, "displayed-im-msg", plugin, GAIM_CALLBACK(displayed_im_msg_cb), NULL); gaim_signal_connect(conv_handle, "writing-im-msg", plugin, GAIM_CALLBACK(writing_im_msg_cb), NULL); gaim_signal_connect(conv_handle, "wrote-im-msg", plugin, GAIM_CALLBACK(wrote_im_msg_cb), NULL); gaim_signal_connect(conv_handle, "sending-im-msg", plugin, GAIM_CALLBACK(sending_im_msg_cb), NULL); gaim_signal_connect(conv_handle, "sent-im-msg", plugin, GAIM_CALLBACK(sent_im_msg_cb), NULL); gaim_signal_connect(conv_handle, "receiving-im-msg", plugin, GAIM_CALLBACK(receiving_im_msg_cb), NULL); gaim_signal_connect(conv_handle, "received-im-msg", plugin, GAIM_CALLBACK(received_im_msg_cb), NULL); gaim_signal_connect(conv_handle, "displaying-chat-msg", plugin, GAIM_CALLBACK(displaying_chat_msg_cb), NULL); gaim_signal_connect(conv_handle, "displayed-chat-msg", plugin, GAIM_CALLBACK(displayed_chat_msg_cb), NULL); gaim_signal_connect(conv_handle, "writing-chat-msg", plugin, GAIM_CALLBACK(writing_chat_msg_cb), NULL); gaim_signal_connect(conv_handle, "wrote-chat-msg", plugin, GAIM_CALLBACK(wrote_chat_msg_cb), NULL); gaim_signal_connect(conv_handle, "sending-chat-msg", plugin, GAIM_CALLBACK(sending_chat_msg_cb), NULL); gaim_signal_connect(conv_handle, "sent-chat-msg", plugin, GAIM_CALLBACK(sent_chat_msg_cb), NULL); gaim_signal_connect(conv_handle, "receiving-chat-msg", plugin, GAIM_CALLBACK(receiving_chat_msg_cb), NULL); gaim_signal_connect(conv_handle, "received-chat-msg", plugin, GAIM_CALLBACK(received_chat_msg_cb), NULL); gaim_signal_connect(conv_handle, "conversation-switching", plugin, GAIM_CALLBACK(conversation_switching_cb), NULL); gaim_signal_connect(conv_handle, "conversation-switched", plugin, GAIM_CALLBACK(conversation_switched_cb), NULL); gaim_signal_connect(conv_handle, "conversation-created", plugin, GAIM_CALLBACK(conversation_created_cb), NULL); gaim_signal_connect(conv_handle, "deleting-conversation", plugin, GAIM_CALLBACK(deleting_conversation_cb), NULL); gaim_signal_connect(conv_handle, "buddy-typing", plugin, GAIM_CALLBACK(buddy_typing_cb), NULL); gaim_signal_connect(conv_handle, "chat-buddy-joining", plugin, GAIM_CALLBACK(chat_buddy_joining_cb), NULL); gaim_signal_connect(conv_handle, "chat-buddy-joined", plugin, GAIM_CALLBACK(chat_buddy_joined_cb), NULL); gaim_signal_connect(conv_handle, "chat-buddy-flags", plugin, GAIM_CALLBACK(chat_buddy_flags_cb), NULL); gaim_signal_connect(conv_handle, "chat-buddy-leaving", plugin, GAIM_CALLBACK(chat_buddy_leaving_cb), NULL); gaim_signal_connect(conv_handle, "chat-buddy-left", plugin, GAIM_CALLBACK(chat_buddy_left_cb), NULL); gaim_signal_connect(conv_handle, "chat-inviting-user", plugin, GAIM_CALLBACK(chat_inviting_user_cb), NULL); gaim_signal_connect(conv_handle, "chat-invited-user", plugin, GAIM_CALLBACK(chat_invited_user_cb), NULL); gaim_signal_connect(conv_handle, "chat-invited", plugin, GAIM_CALLBACK(chat_invited_cb), NULL); gaim_signal_connect(conv_handle, "chat-joined", plugin, GAIM_CALLBACK(chat_joined_cb), NULL); gaim_signal_connect(conv_handle, "chat-left", plugin, GAIM_CALLBACK(chat_left_cb), NULL); gaim_signal_connect(conv_handle, "chat-topic-changed", plugin, GAIM_CALLBACK(chat_topic_changed_cb), NULL); /* Core signals */ gaim_signal_connect(core_handle, "quitting", plugin, GAIM_CALLBACK(quitting_cb), NULL); return TRUE; }
static void _init_plugin(GaimPlugin * plugin) { GaimAccountOption *option; option = gaim_account_option_string_new(_("Bio Line"), "bioline", ""); prpl_info.protocol_options = g_list_prepend(prpl_info.protocol_options, option); option = gaim_account_option_int_new(_("Port"), "port", IRC_DEFAULT_PORT); prpl_info.protocol_options = g_list_prepend(prpl_info.protocol_options, option); option = gaim_account_option_string_new(_("Server"), "server", IRC_DEFAULT_SERVER); prpl_info.protocol_options = g_list_prepend(prpl_info.protocol_options, option); /** * We have to pull thumbnails, since they aren't pushed like with * other protocols. */ gaim_signal_connect(gaim_conversations_get_handle(), "conversation-created", plugin, GAIM_CALLBACK(gaym_get_photo_info), NULL); gaim_signal_connect(gaim_conversations_get_handle(), "deleting-conversation", plugin, GAIM_CALLBACK(gaym_clean_channel_members), NULL); gaim_signal_register(gaim_accounts_get_handle(), "info-updated", gaim_marshal_VOID__POINTER_POINTER, NULL, 2, gaim_value_new(GAIM_TYPE_SUBTYPE, GAIM_SUBTYPE_ACCOUNT), gaim_value_new(GAIM_TYPE_POINTER, GAIM_TYPE_CHAR)); gaim_prefs_add_none("/plugins/prpl/gaym"); gaim_prefs_add_int("/plugins/prpl/gaym/chat_room_instances", 4); gaim_prefs_add_bool("/plugins/prpl/gaym/show_join", TRUE); gaim_prefs_add_bool("/plugins/prpl/gaym/show_part", TRUE); gaim_prefs_add_bool("/plugins/prpl/gaym/show_bio_with_join", TRUE); gaim_prefs_add_bool("/plugins/prpl/gaym/botfilter_enable", FALSE); gaim_prefs_add_bool("/plugins/prpl/gaym/botfilter_ignore_null", FALSE); gaim_prefs_add_string("/plugins/prpl/gaym/botfilter_sep", "|"); gaim_prefs_add_string("/plugins/prpl/gaym/botfilter_patterns", "NULL|MODE * -i|*dantcamboy*|*Free preview*|*epowerchat*|*Live gay sex cam show*|*camboiz*"); gaim_prefs_add_string("/plugins/prpl/gaym/botfilter_url", GAYBOI_SPAM_URL); gaim_prefs_connect_callback("/plugins/prpl/gaym/botfilter_url", botfilter_url_changed_cb, NULL); gaim_prefs_add_string("/plugins/prpl/gaym/botfilter_url_result", ""); gaim_prefs_add_int("/plugins/prpl/gaym/botfilter_url_last_check", 0); _gaym_plugin = plugin; gaym_register_commands(); }
void gaim_connection_new(GaimAccount *account, gboolean regist, const char *password) { GaimConnection *gc; GaimPlugin *prpl; GaimPluginProtocolInfo *prpl_info; g_return_if_fail(account != NULL); if (!gaim_account_is_disconnected(account)) return; prpl = gaim_find_prpl(gaim_account_get_protocol_id(account)); if (prpl != NULL) prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(prpl); else { gchar *message; message = g_strdup_printf(_("Missing protocol plugin for %s"), gaim_account_get_username(account)); gaim_notify_error(NULL, regist ? _("Registration Error") : _("Connection Error"), message, NULL); g_free(message); return; } if (regist) { if (prpl_info->register_user == NULL) return; } else { if (((password == NULL) || (*password == '\0')) && !(prpl_info->options & OPT_PROTO_NO_PASSWORD) && !(prpl_info->options & OPT_PROTO_PASSWORD_OPTIONAL)) { gaim_debug_error("connection", "Can not connect to account %s without " "a password.\n", gaim_account_get_username(account)); return; } } gc = g_new0(GaimConnection, 1); GAIM_DBUS_REGISTER_POINTER(gc, GaimConnection); gc->prpl = prpl; if ((password != NULL) && (*password != '\0')) gc->password = g_strdup(password); gaim_connection_set_account(gc, account); gaim_connection_set_state(gc, GAIM_CONNECTING); connections = g_list_append(connections, gc); gaim_account_set_connection(account, gc); gaim_signal_emit(gaim_connections_get_handle(), "signing-on", gc); if (regist) { gaim_debug_info("connection", "Registering. gc = %p\n", gc); /* set this so we don't auto-reconnect after registering */ gc->wants_to_die = TRUE; prpl_info->register_user(account); } else { gaim_debug_info("connection", "Connecting. gc = %p\n", gc); gaim_signal_emit(gaim_accounts_get_handle(), "account-connecting", account); prpl_info->login(account); } }