| 204 |
204 |
| 205 |
205 |
| 206 /* |
206 /* |
| 207 * UI callbacks |
207 * UI callbacks |
| 208 */ |
208 */ |
| 209 static void null_input_user_info(PurpleProtocolAction *action) |
209 static void |
| 210 { |
210 null_input_user_info(G_GNUC_UNUSED GSimpleAction *action, |
| 211 PurpleConnection *gc = action->connection; |
211 GVariant *parameter, |
| 212 PurpleAccount *acct = purple_connection_get_account(gc); |
212 G_GNUC_UNUSED gpointer data) |
| 213 purple_debug_info("nullprpl", "showing 'Set User Info' dialog for %s\n", |
213 { |
| 214 purple_account_get_username(acct)); |
214 const gchar *account_id = NULL; |
| 215 |
215 PurpleAccountManager *manager = NULL; |
| 216 purple_account_request_change_user_info(acct); |
216 PurpleAccount *account = NULL; |
| |
217 |
| |
218 if(!g_variant_is_of_type(parameter, G_VARIANT_TYPE_STRING)) { |
| |
219 g_critical("null set info action parameter is of incorrect type %s", |
| |
220 g_variant_get_type_string(parameter)); |
| |
221 } |
| |
222 |
| |
223 account_id = g_variant_get_string(parameter, NULL); |
| |
224 manager = purple_account_manager_get_default(); |
| |
225 account = purple_account_manager_find_by_id(manager, account_id); |
| |
226 |
| |
227 purple_debug_info("nullprpl", "showing 'Set User Info' dialog for %s", |
| |
228 purple_account_get_username(account)); |
| |
229 |
| |
230 purple_account_request_change_user_info(account); |
| 217 } |
231 } |
| 218 |
232 |
| 219 /* |
233 /* |
| 220 * Protocol functions |
234 * Protocol functions |
| 221 */ |
235 */ |
| 222 static GList * |
236 static const gchar * |
| 223 null_get_actions(PurpleProtocolClient *client, PurpleConnection *gc) { |
237 null_protocol_actions_get_prefix(PurpleProtocolActions *actions) { |
| 224 PurpleProtocolAction *action = purple_protocol_action_new( |
238 return "prpl-null"; |
| 225 _("Set User Info..."), null_input_user_info); |
239 } |
| 226 return g_list_append(NULL, action); |
240 |
| |
241 static GActionGroup * |
| |
242 null_protocol_actions_get_action_group(PurpleProtocolActions *actions, |
| |
243 G_GNUC_UNUSED PurpleConnection *connection) |
| |
244 { |
| |
245 GSimpleActionGroup *group = NULL; |
| |
246 GActionEntry entries[] = { |
| |
247 { |
| |
248 .name = "set-info", |
| |
249 .activate = null_input_user_info, |
| |
250 .parameter_type = "s", |
| |
251 }, |
| |
252 }; |
| |
253 gsize nentries = G_N_ELEMENTS(entries); |
| |
254 |
| |
255 group = g_simple_action_group_new(); |
| |
256 g_action_map_add_action_entries(G_ACTION_MAP(group), entries, nentries, |
| |
257 NULL); |
| |
258 |
| |
259 return G_ACTION_GROUP(group); |
| |
260 } |
| |
261 |
| |
262 static GMenu * |
| |
263 null_protocol_actions_get_menu(PurpleProtocolActions *actions) { |
| |
264 GMenu *menu = g_menu_new(); |
| |
265 GMenuItem *item = NULL; |
| |
266 |
| |
267 item = g_menu_item_new(_("Set User Info..."), "prpl-null.set-info"); |
| |
268 g_menu_item_set_attribute(item, PURPLE_MENU_ATTRIBUTE_DYNAMIC_TARGET, "s", |
| |
269 "account"); |
| |
270 g_menu_append_item(menu, item); |
| |
271 g_object_unref(item); |
| |
272 |
| |
273 return menu; |
| 227 } |
274 } |
| 228 |
275 |
| 229 static const char *null_list_icon(PurpleAccount *acct, PurpleBuddy *buddy) |
276 static const char *null_list_icon(PurpleAccount *acct, PurpleBuddy *buddy) |
| 230 { |
277 { |
| 231 return "null"; |
278 return "null"; |
| 1185 null_protocol_class_finalize(G_GNUC_UNUSED NullProtocolClass *klass) |
1232 null_protocol_class_finalize(G_GNUC_UNUSED NullProtocolClass *klass) |
| 1186 { |
1233 { |
| 1187 } |
1234 } |
| 1188 |
1235 |
| 1189 static void |
1236 static void |
| |
1237 null_protocol_actions_iface_init(PurpleProtocolActionsInterface *iface) |
| |
1238 { |
| |
1239 iface->get_prefix = null_protocol_actions_get_prefix; |
| |
1240 iface->get_action_group = null_protocol_actions_get_action_group; |
| |
1241 iface->get_menu = null_protocol_actions_get_menu; |
| |
1242 } |
| |
1243 |
| |
1244 static void |
| 1190 null_protocol_client_iface_init(PurpleProtocolClientInterface *client_iface) |
1245 null_protocol_client_iface_init(PurpleProtocolClientInterface *client_iface) |
| 1191 { |
1246 { |
| 1192 client_iface->get_actions = null_get_actions; |
|
| 1193 client_iface->status_text = null_status_text; |
1247 client_iface->status_text = null_status_text; |
| 1194 client_iface->tooltip_text = null_tooltip_text; |
1248 client_iface->tooltip_text = null_tooltip_text; |
| 1195 client_iface->blist_node_menu = null_blist_node_menu; |
1249 client_iface->blist_node_menu = null_blist_node_menu; |
| 1196 client_iface->convo_closed = null_convo_closed; |
1250 client_iface->convo_closed = null_convo_closed; |
| 1197 client_iface->normalize = null_normalize; |
1251 client_iface->normalize = null_normalize; |
| 1264 * which returns the registered GType. |
1318 * which returns the registered GType. |
| 1265 */ |
1319 */ |
| 1266 G_DEFINE_DYNAMIC_TYPE_EXTENDED( |
1320 G_DEFINE_DYNAMIC_TYPE_EXTENDED( |
| 1267 NullProtocol, null_protocol, PURPLE_TYPE_PROTOCOL, 0, |
1321 NullProtocol, null_protocol, PURPLE_TYPE_PROTOCOL, 0, |
| 1268 |
1322 |
| |
1323 G_IMPLEMENT_INTERFACE_DYNAMIC(PURPLE_TYPE_PROTOCOL_ACTIONS, |
| |
1324 null_protocol_actions_iface_init) |
| |
1325 |
| 1269 G_IMPLEMENT_INTERFACE_DYNAMIC(PURPLE_TYPE_PROTOCOL_CLIENT, |
1326 G_IMPLEMENT_INTERFACE_DYNAMIC(PURPLE_TYPE_PROTOCOL_CLIENT, |
| 1270 null_protocol_client_iface_init) |
1327 null_protocol_client_iface_init) |
| 1271 |
1328 |
| 1272 G_IMPLEMENT_INTERFACE_DYNAMIC(PURPLE_TYPE_PROTOCOL_SERVER, |
1329 G_IMPLEMENT_INTERFACE_DYNAMIC(PURPLE_TYPE_PROTOCOL_SERVER, |
| 1273 null_protocol_server_iface_init) |
1330 null_protocol_server_iface_init) |