libpurple/protocols/null/nullprpl.c

changeset 41466
557aad2bc415
parent 41349
15aeaa1e84ec
child 41517
5bafe75d3907
equal deleted inserted replaced
41465:fc9819029e9d 41466:557aad2bc415
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)

mercurial