static void new_pounce(PurplePounce *pounce) { purple_pounce_action_register(pounce, "open-window"); purple_pounce_action_register(pounce, "popup-notify"); purple_pounce_action_register(pounce, "send-message"); purple_pounce_action_register(pounce, "execute-command"); purple_pounce_action_register(pounce, "play-beep"); update_pounces(); }
static void end_element_handler(GMarkupParseContext *context, const gchar *element_name, gpointer user_data, GError **error) { PounceParserData *data = user_data; gchar *buffer = NULL; if (data->buffer != NULL) { buffer = g_string_free(data->buffer, FALSE); data->buffer = NULL; } if (purple_strequal(element_name, "account")) { g_free(data->account_name); data->account_name = g_strdup(buffer); } else if (purple_strequal(element_name, "pouncee")) { g_free(data->pouncee); data->pouncee = g_strdup(buffer); } else if (purple_strequal(element_name, "option")) { if (purple_strequal(data->option_type, "on-away")) data->options |= PURPLE_POUNCE_OPTION_AWAY; g_free(data->option_type); data->option_type = NULL; } else if (purple_strequal(element_name, "event")) { if (purple_strequal(data->event_type, "sign-on")) data->events |= PURPLE_POUNCE_SIGNON; else if (purple_strequal(data->event_type, "sign-off")) data->events |= PURPLE_POUNCE_SIGNOFF; else if (purple_strequal(data->event_type, "away")) data->events |= PURPLE_POUNCE_AWAY; else if (purple_strequal(data->event_type, "return-from-away")) data->events |= PURPLE_POUNCE_AWAY_RETURN; else if (purple_strequal(data->event_type, "idle")) data->events |= PURPLE_POUNCE_IDLE; else if (purple_strequal(data->event_type, "return-from-idle")) data->events |= PURPLE_POUNCE_IDLE_RETURN; else if (purple_strequal(data->event_type, "start-typing")) data->events |= PURPLE_POUNCE_TYPING; else if (purple_strequal(data->event_type, "typed")) data->events |= PURPLE_POUNCE_TYPED; else if (purple_strequal(data->event_type, "stop-typing")) data->events |= PURPLE_POUNCE_TYPING_STOPPED; else if (purple_strequal(data->event_type, "message-received")) data->events |= PURPLE_POUNCE_MESSAGE_RECEIVED; g_free(data->event_type); data->event_type = NULL; } else if (purple_strequal(element_name, "action")) { if (data->pounce != NULL) { purple_pounce_action_register(data->pounce, data->action_name); purple_pounce_action_set_enabled(data->pounce, data->action_name, TRUE); } g_free(data->action_name); data->action_name = NULL; } else if (purple_strequal(element_name, "param")) { if (data->pounce != NULL) { purple_pounce_action_set_attribute(data->pounce, data->action_name, data->param_name, buffer); } g_free(data->param_name); data->param_name = NULL; } else if (purple_strequal(element_name, "events")) { PurpleAccount *account; account = purple_accounts_find(data->account_name, data->protocol_id); g_free(data->account_name); g_free(data->protocol_id); data->account_name = NULL; data->protocol_id = NULL; if (account == NULL) { purple_debug(PURPLE_DEBUG_ERROR, "pounce", "Account for pounce not found!\n"); /* * This pounce has effectively been removed, so make * sure that we save the changes to pounces.xml */ schedule_pounces_save(); } else { purple_debug(PURPLE_DEBUG_INFO, "pounce", "Creating pounce: %s, %s\n", data->ui_name, data->pouncee); data->pounce = purple_pounce_new(data->ui_name, account, data->pouncee, data->events, data->options); } g_free(data->pouncee); data->pouncee = NULL; } else if (purple_strequal(element_name, "save")) { if (data->pounce != NULL) purple_pounce_set_save(data->pounce, TRUE); } else if (purple_strequal(element_name, "pounce")) { data->pounce = NULL; data->events = 0; data->options = 0; g_free(data->ui_name); g_free(data->pouncee); g_free(data->protocol_id); g_free(data->event_type); g_free(data->option_type); g_free(data->action_name); g_free(data->param_name); g_free(data->account_name); data->ui_name = NULL; data->pounce = NULL; data->protocol_id = NULL; data->event_type = NULL; data->option_type = NULL; data->action_name = NULL; data->param_name = NULL; data->account_name = NULL; } g_free(buffer); }