* Purple is the legal property of its developers, whose names are too numerous * to list here. Please refer to the COPYRIGHT file distributed with this * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA PurpleE2eeProvider *provider; struct _PurpleE2eeProvider PurpleE2eeConvMenuCallback conv_menu_cb; static PurpleE2eeProvider *main_provider = NULL; /*** Encryption states for conversations. *************************************/ purple_e2ee_state_new(PurpleE2eeProvider *provider) g_return_val_if_fail(provider != NULL, NULL); state = g_new0(PurpleE2eeState, 1); state->provider = provider; purple_e2ee_state_ref(PurpleE2eeState *state) g_return_if_fail(state != NULL); purple_e2ee_state_unref(PurpleE2eeState *state) if (state->ref_count > 0) g_free(state->stock_icon); purple_e2ee_state_get_provider(PurpleE2eeState *state) g_return_val_if_fail(state != NULL, NULL); purple_e2ee_state_set_name(PurpleE2eeState *state, const gchar *name) g_return_if_fail(state != NULL); g_return_if_fail(name != NULL); state->name = g_strdup(name); purple_e2ee_state_get_name(PurpleE2eeState *state) g_return_val_if_fail(state != NULL, NULL); purple_e2ee_state_set_stock_icon(PurpleE2eeState *state, g_return_if_fail(state != NULL); g_return_if_fail(stock_icon != NULL); g_free(state->stock_icon); state->stock_icon = g_strdup(stock_icon); purple_e2ee_state_get_stock_icon(PurpleE2eeState *state) g_return_val_if_fail(state, NULL); return state->stock_icon; /*** Encryption providers API. ************************************************/ purple_e2ee_provider_new(void) PurpleE2eeProvider *provider; provider = g_new0(PurpleE2eeProvider, 1); purple_e2ee_provider_free(PurpleE2eeProvider *provider) g_return_if_fail(provider != NULL); if (provider == main_provider) { purple_debug_error("e2ee", "This provider is still registered"); purple_e2ee_provider_register(PurpleE2eeProvider *provider) g_return_val_if_fail(provider != NULL, FALSE); if (main_provider != NULL) main_provider = provider; purple_e2ee_provider_unregister(PurpleE2eeProvider *provider) GList *it, *clear_states = NULL; g_return_if_fail(provider != NULL); if (main_provider != provider) { purple_debug_warning("e2ee", "This provider is not registered"); for (it = purple_conversations_get_all(); it; it = g_list_next(it)) { PurpleConversation *conv = it->data; state = purple_conversation_get_e2ee_state(conv); if (provider == purple_e2ee_state_get_provider(state)) clear_states = g_list_prepend(clear_states, conv); g_list_foreach(clear_states, (GFunc)purple_conversation_set_e2ee_state, NULL); g_list_free(clear_states); purple_e2ee_provider_get_main(void) purple_e2ee_provider_set_name(PurpleE2eeProvider *provider, const gchar *name) g_return_if_fail(provider != NULL); g_return_if_fail(name != NULL); provider->name = g_strdup(name); purple_e2ee_provider_get_name(PurpleE2eeProvider *provider) g_return_val_if_fail(provider != NULL, NULL); purple_e2ee_provider_set_conv_menu_cb(PurpleE2eeProvider *provider, PurpleE2eeConvMenuCallback conv_menu_cb) g_return_if_fail(provider != NULL); provider->conv_menu_cb = conv_menu_cb; PurpleE2eeConvMenuCallback purple_e2ee_provider_get_conv_menu_cb(PurpleE2eeProvider *provider) g_return_val_if_fail(provider != NULL, NULL); return provider->conv_menu_cb; purple_e2ee_provider_get_conv_menu_actions(PurpleE2eeProvider *provider, PurpleConversation *conv) PurpleE2eeConvMenuCallback cb; g_return_val_if_fail(provider, NULL); g_return_val_if_fail(conv, NULL); cb = purple_e2ee_provider_get_conv_menu_cb(provider);