| 166 } |
166 } |
| 167 |
167 |
| 168 void |
168 void |
| 169 purple_e2ee_provider_unregister(PurpleE2eeProvider *provider) |
169 purple_e2ee_provider_unregister(PurpleE2eeProvider *provider) |
| 170 { |
170 { |
| 171 GList *it; |
171 GList *it, *clear_states = NULL; |
| 172 g_return_if_fail(provider != NULL); |
172 g_return_if_fail(provider != NULL); |
| 173 |
173 |
| 174 if (main_provider != provider) { |
174 if (main_provider != provider) { |
| 175 purple_debug_warning("e2ee", "This provider is not registered"); |
175 purple_debug_warning("e2ee", "This provider is not registered"); |
| 176 return; |
176 return; |
| 182 |
182 |
| 183 state = purple_conversation_get_e2ee_state(conv); |
183 state = purple_conversation_get_e2ee_state(conv); |
| 184 if (!state) |
184 if (!state) |
| 185 continue; |
185 continue; |
| 186 if (provider == purple_e2ee_state_get_provider(state)) |
186 if (provider == purple_e2ee_state_get_provider(state)) |
| 187 purple_conversation_set_e2ee_state(conv, NULL); |
187 clear_states = g_list_prepend(clear_states, conv); |
| 188 } |
188 } |
| 189 |
189 |
| 190 main_provider = NULL; |
190 main_provider = NULL; |
| |
191 |
| |
192 for (it = clear_states; it; it = g_list_next(it)) |
| |
193 purple_conversation_set_e2ee_state(it->data, NULL); |
| |
194 g_list_free(clear_states); |
| 191 } |
195 } |
| 192 |
196 |
| 193 PurpleE2eeProvider * |
197 PurpleE2eeProvider * |
| 194 purple_e2ee_provider_get_main(void) |
198 purple_e2ee_provider_get_main(void) |
| 195 { |
199 { |
| 228 { |
232 { |
| 229 g_return_val_if_fail(provider != NULL, NULL); |
233 g_return_val_if_fail(provider != NULL, NULL); |
| 230 |
234 |
| 231 return provider->conv_menu_cb; |
235 return provider->conv_menu_cb; |
| 232 } |
236 } |
| |
237 |
| |
238 GList * |
| |
239 purple_e2ee_provider_get_conv_menu_actions(PurpleE2eeProvider *provider, |
| |
240 PurpleConversation *conv) |
| |
241 { |
| |
242 PurpleE2eeConvMenuCallback cb; |
| |
243 |
| |
244 g_return_val_if_fail(provider, NULL); |
| |
245 g_return_val_if_fail(conv, NULL); |
| |
246 |
| |
247 cb = purple_e2ee_provider_get_conv_menu_cb(provider); |
| |
248 if (cb == NULL) |
| |
249 return NULL; |
| |
250 |
| |
251 return cb(conv); |
| |
252 } |