Ejemplo n.º 1
0
void
gaim_pounces_init(void)
{
	void *blist_handle = gaim_blist_get_handle();
	void *conv_handle  = gaim_conversations_get_handle();
	void *handle       = gaim_pounces_get_handle();

	pounce_handlers = g_hash_table_new_full(g_str_hash, g_str_equal,
											g_free, free_pounce_handler);

	gaim_signal_connect(blist_handle, "buddy-idle",
						handle, GAIM_CALLBACK(buddy_state_cb),
						GINT_TO_POINTER(GAIM_POUNCE_IDLE));
	gaim_signal_connect(blist_handle, "buddy-unidle",
						handle, GAIM_CALLBACK(buddy_state_cb),
						GINT_TO_POINTER(GAIM_POUNCE_IDLE_RETURN));
	gaim_signal_connect(blist_handle, "buddy-away",
						handle, GAIM_CALLBACK(buddy_state_cb),
						GINT_TO_POINTER(GAIM_POUNCE_AWAY));
	gaim_signal_connect(blist_handle, "buddy-back",
						handle, GAIM_CALLBACK(buddy_state_cb),
						GINT_TO_POINTER(GAIM_POUNCE_AWAY_RETURN));
	gaim_signal_connect(blist_handle, "buddy-signed-on",
						handle, GAIM_CALLBACK(buddy_state_cb),
						GINT_TO_POINTER(GAIM_POUNCE_SIGNON));
	gaim_signal_connect(blist_handle, "buddy-signed-off",
						handle, GAIM_CALLBACK(buddy_state_cb),
						GINT_TO_POINTER(GAIM_POUNCE_SIGNOFF));

	gaim_signal_connect(conv_handle, "buddy-typing",
						handle, GAIM_CALLBACK(buddy_typing_cb), NULL);
	gaim_signal_connect(conv_handle, "buddy-typing-stopped",
						handle, GAIM_CALLBACK(buddy_typing_cb), NULL);
}
Ejemplo n.º 2
0
static gboolean
plugin_load(GaimPlugin *plugin)
{
	gaim_signal_connect(gaim_xfers_get_handle(), "file-recv-request", plugin,
						GAIM_CALLBACK(file_recv_request_cb), plugin);
	gaim_signal_connect(gaim_blist_get_handle(), "blist-node-extended-menu", plugin,
						GAIM_CALLBACK(context_menu), plugin);
	return TRUE;
}
Ejemplo n.º 3
0
Archivo: status.c Proyecto: VoxOx/VoxOx
static void
update_buddy_idle(GaimBuddy *buddy, GaimPresence *presence,
		time_t current_time, gboolean old_idle, gboolean idle)
{
	GaimBlistUiOps *ops = gaim_blist_get_ui_ops();

	if (!old_idle && idle)
	{
		if (gaim_prefs_get_bool("/core/logging/log_system"))
		{
			GaimLog *log = gaim_account_get_log(buddy->account, FALSE);

			if (log != NULL)
			{
				char *tmp = g_strdup_printf(_("%s became idle"),
				gaim_buddy_get_alias(buddy));

				gaim_log_write(log, GAIM_MESSAGE_SYSTEM,
				gaim_buddy_get_alias(buddy), current_time, tmp);
				g_free(tmp);
			}
		}
	}
	else if (old_idle && !idle)
	{
		if (gaim_prefs_get_bool("/core/logging/log_system"))
		{
			GaimLog *log = gaim_account_get_log(buddy->account, FALSE);

			if (log != NULL)
			{
				char *tmp = g_strdup_printf(_("%s became unidle"),
				gaim_buddy_get_alias(buddy));

				gaim_log_write(log, GAIM_MESSAGE_SYSTEM,
				gaim_buddy_get_alias(buddy), current_time, tmp);
				g_free(tmp);
			}
		}
	}

	if (old_idle != idle)
		gaim_signal_emit(gaim_blist_get_handle(), "buddy-idle-changed", buddy,
		                 old_idle, idle);

	gaim_contact_invalidate_priority_buddy(gaim_buddy_get_contact(buddy));

	/* Should this be done here? It'd perhaps make more sense to
	 * connect to buddy-[un]idle signals and update from there
	 */

	if (ops != NULL && ops->update != NULL)
		ops->update(gaim_get_blist(), (GaimBlistNode *)buddy);
}
Ejemplo n.º 4
0
gboolean
gaim_privacy_permit_remove(GaimAccount *account, const char *who,
                           gboolean local_only)
{
    GSList *l;
    const char *name;
    GaimBuddy *buddy;
    char *del;

    g_return_val_if_fail(account != NULL, FALSE);
    g_return_val_if_fail(who     != NULL, FALSE);

    name = gaim_normalize(account, who);

    for (l = account->permit; l != NULL; l = l->next) {
        if (!gaim_utf8_strcasecmp(name, (char *)l->data))
            break;
    }

    if (l == NULL)
        return FALSE;

    /* We should not free l->data just yet. There can be occasions where
     * l->data == who. In such cases, freeing l->data here can cause crashes
     * later when who is used. */
    del = l->data;
    account->permit = g_slist_delete_link(account->permit, l);

    if (!local_only && gaim_account_is_connected(account))
        serv_rem_permit(gaim_account_get_connection(account), who);

    if (privacy_ops != NULL && privacy_ops->permit_removed != NULL)
        privacy_ops->permit_removed(account, who);

    gaim_blist_schedule_save();

    buddy = gaim_find_buddy(account, name);
    if (buddy != NULL) {
        gaim_signal_emit(gaim_blist_get_handle(),
                         "buddy-privacy-changed", buddy);
    }
    g_free(del);
    return TRUE;
}
Ejemplo n.º 5
0
gboolean
gaim_privacy_deny_remove(GaimAccount *account, const char *who,
                         gboolean local_only)
{
    GSList *l;
    const char *normalized;
    char *name;
    GaimBuddy *buddy;

    g_return_val_if_fail(account != NULL, FALSE);
    g_return_val_if_fail(who     != NULL, FALSE);

    normalized = gaim_normalize(account, who);

    for (l = account->deny; l != NULL; l = l->next) {
        if (!gaim_utf8_strcasecmp(normalized, (char *)l->data))
            break;
    }

    buddy = gaim_find_buddy(account, normalized);

    if (l == NULL)
        return FALSE;

    name = l->data;
    account->deny = g_slist_delete_link(account->deny, l);

    if (!local_only && gaim_account_is_connected(account))
        serv_rem_deny(gaim_account_get_connection(account), name);

    if (privacy_ops != NULL && privacy_ops->deny_removed != NULL)
        privacy_ops->deny_removed(account, who);

    if (buddy != NULL) {
        gaim_signal_emit(gaim_blist_get_handle(),
                         "buddy-privacy-changed", buddy);
    }

    g_free(name);
    gaim_blist_schedule_save();

    return TRUE;
}
Ejemplo n.º 6
0
gboolean
gaim_privacy_permit_add(GaimAccount *account, const char *who,
                        gboolean local_only)
{
    GSList *l;
    char *name;
    GaimBuddy *buddy;

    g_return_val_if_fail(account != NULL, FALSE);
    g_return_val_if_fail(who     != NULL, FALSE);

    name = g_strdup(gaim_normalize(account, who));

    for (l = account->permit; l != NULL; l = l->next) {
        if (!gaim_utf8_strcasecmp(name, (char *)l->data))
            break;
    }

    if (l != NULL)
    {
        g_free(name);
        return FALSE;
    }

    account->permit = g_slist_append(account->permit, name);

    if (!local_only && gaim_account_is_connected(account))
        serv_add_permit(gaim_account_get_connection(account), who);

    if (privacy_ops != NULL && privacy_ops->permit_added != NULL)
        privacy_ops->permit_added(account, who);

    gaim_blist_schedule_save();

    /* This lets the UI know a buddy has had its privacy setting changed */
    buddy = gaim_find_buddy(account, name);
    if (buddy != NULL) {
        gaim_signal_emit(gaim_blist_get_handle(),
                         "buddy-privacy-changed", buddy);
    }
    return TRUE;
}
Ejemplo n.º 7
0
/**************************************************************************
 * Plugin stuff
 **************************************************************************/
static gboolean
plugin_load(GaimPlugin *plugin)
{
	void *core_handle = gaim_get_core();
	void *blist_handle = gaim_blist_get_handle();
	void *conn_handle = gaim_connections_get_handle();
	void *conv_handle = gaim_conversations_get_handle();
	void *accounts_handle = gaim_accounts_get_handle();
 	void *buddy_icons_handle = gaim_buddy_icons_get_handle();

	/* Accounts subsystem signals */
	gaim_signal_connect(accounts_handle, "account-connecting",
						plugin, GAIM_CALLBACK(account_connecting_cb), NULL);
	gaim_signal_connect(accounts_handle, "account-away",
						plugin, GAIM_CALLBACK(account_away_cb), NULL);
	gaim_signal_connect(accounts_handle, "account-setting-info",
						plugin, GAIM_CALLBACK(account_setting_info_cb), NULL);
	gaim_signal_connect(accounts_handle, "account-set-info",
						plugin, GAIM_CALLBACK(account_set_info_cb), NULL);
	gaim_signal_connect(accounts_handle, "account-warned",
						plugin, GAIM_CALLBACK(account_warned_cb), NULL);

	/* Buddy Icon subsystem signals */
	gaim_signal_connect(buddy_icons_handle, "buddy-icon-cached",
						plugin, GAIM_CALLBACK(buddy_icon_cached_cb), NULL);

	/* Buddy List subsystem signals */
	gaim_signal_connect(blist_handle, "buddy-away",
						plugin, GAIM_CALLBACK(buddy_away_cb), NULL);
	gaim_signal_connect(blist_handle, "buddy-back",
						plugin, GAIM_CALLBACK(buddy_back_cb), NULL);
	gaim_signal_connect(blist_handle, "buddy-idle",
						plugin, GAIM_CALLBACK(buddy_idle_cb), NULL);
	gaim_signal_connect(blist_handle, "buddy-unidle",
						plugin, GAIM_CALLBACK(buddy_unidle_cb), NULL);
	gaim_signal_connect(blist_handle, "buddy-signed-on",
						plugin, GAIM_CALLBACK(buddy_signed_on_cb), NULL);
	gaim_signal_connect(blist_handle, "buddy-signed-off",
						plugin, GAIM_CALLBACK(buddy_signed_off_cb), NULL);
	gaim_signal_connect(blist_handle, "blist-node-extended-menu",
						plugin, GAIM_CALLBACK(blist_node_extended_menu_cb), NULL);

	/* Connection subsystem signals */
	gaim_signal_connect(conn_handle, "signing-on",
						plugin, GAIM_CALLBACK(signing_on_cb), NULL);
	gaim_signal_connect(conn_handle, "signed-on",
						plugin, GAIM_CALLBACK(signed_on_cb), NULL);
	gaim_signal_connect(conn_handle, "signing-off",
						plugin, GAIM_CALLBACK(signing_off_cb), NULL);
	gaim_signal_connect(conn_handle, "signed-off",
						plugin, GAIM_CALLBACK(signed_off_cb), NULL);

	/* Conversations subsystem signals */
	gaim_signal_connect(conv_handle, "displaying-im-msg",
						plugin, GAIM_CALLBACK(displaying_im_msg_cb), NULL);
	gaim_signal_connect(conv_handle, "displayed-im-msg",
						plugin, GAIM_CALLBACK(displayed_im_msg_cb), NULL);
	gaim_signal_connect(conv_handle, "writing-im-msg",
						plugin, GAIM_CALLBACK(writing_im_msg_cb), NULL);
	gaim_signal_connect(conv_handle, "wrote-im-msg",
						plugin, GAIM_CALLBACK(wrote_im_msg_cb), NULL);
	gaim_signal_connect(conv_handle, "sending-im-msg",
						plugin, GAIM_CALLBACK(sending_im_msg_cb), NULL);
	gaim_signal_connect(conv_handle, "sent-im-msg",
						plugin, GAIM_CALLBACK(sent_im_msg_cb), NULL);
	gaim_signal_connect(conv_handle, "receiving-im-msg",
						plugin, GAIM_CALLBACK(receiving_im_msg_cb), NULL);
	gaim_signal_connect(conv_handle, "received-im-msg",
						plugin, GAIM_CALLBACK(received_im_msg_cb), NULL);
	gaim_signal_connect(conv_handle, "displaying-chat-msg",
						plugin, GAIM_CALLBACK(displaying_chat_msg_cb), NULL);
	gaim_signal_connect(conv_handle, "displayed-chat-msg",
						plugin, GAIM_CALLBACK(displayed_chat_msg_cb), NULL);
	gaim_signal_connect(conv_handle, "writing-chat-msg",
						plugin, GAIM_CALLBACK(writing_chat_msg_cb), NULL);
	gaim_signal_connect(conv_handle, "wrote-chat-msg",
						plugin, GAIM_CALLBACK(wrote_chat_msg_cb), NULL);
	gaim_signal_connect(conv_handle, "sending-chat-msg",
						plugin, GAIM_CALLBACK(sending_chat_msg_cb), NULL);
	gaim_signal_connect(conv_handle, "sent-chat-msg",
						plugin, GAIM_CALLBACK(sent_chat_msg_cb), NULL);
	gaim_signal_connect(conv_handle, "receiving-chat-msg",
						plugin, GAIM_CALLBACK(receiving_chat_msg_cb), NULL);
	gaim_signal_connect(conv_handle, "received-chat-msg",
						plugin, GAIM_CALLBACK(received_chat_msg_cb), NULL);
	gaim_signal_connect(conv_handle, "conversation-switching",
						plugin, GAIM_CALLBACK(conversation_switching_cb), NULL);
	gaim_signal_connect(conv_handle, "conversation-switched",
						plugin, GAIM_CALLBACK(conversation_switched_cb), NULL);
	gaim_signal_connect(conv_handle, "conversation-created",
						plugin, GAIM_CALLBACK(conversation_created_cb), NULL);
	gaim_signal_connect(conv_handle, "deleting-conversation",
						plugin, GAIM_CALLBACK(deleting_conversation_cb), NULL);
	gaim_signal_connect(conv_handle, "buddy-typing",
						plugin, GAIM_CALLBACK(buddy_typing_cb), NULL);
	gaim_signal_connect(conv_handle, "chat-buddy-joining",
						plugin, GAIM_CALLBACK(chat_buddy_joining_cb), NULL);
	gaim_signal_connect(conv_handle, "chat-buddy-joined",
						plugin, GAIM_CALLBACK(chat_buddy_joined_cb), NULL);
	gaim_signal_connect(conv_handle, "chat-buddy-flags",
						plugin, GAIM_CALLBACK(chat_buddy_flags_cb), NULL);
	gaim_signal_connect(conv_handle, "chat-buddy-leaving",
						plugin, GAIM_CALLBACK(chat_buddy_leaving_cb), NULL);
	gaim_signal_connect(conv_handle, "chat-buddy-left",
						plugin, GAIM_CALLBACK(chat_buddy_left_cb), NULL);
	gaim_signal_connect(conv_handle, "chat-inviting-user",
						plugin, GAIM_CALLBACK(chat_inviting_user_cb), NULL);
	gaim_signal_connect(conv_handle, "chat-invited-user",
						plugin, GAIM_CALLBACK(chat_invited_user_cb), NULL);
	gaim_signal_connect(conv_handle, "chat-invited",
						plugin, GAIM_CALLBACK(chat_invited_cb), NULL);
	gaim_signal_connect(conv_handle, "chat-joined",
						plugin, GAIM_CALLBACK(chat_joined_cb), NULL);
	gaim_signal_connect(conv_handle, "chat-left",
						plugin, GAIM_CALLBACK(chat_left_cb), NULL);
	gaim_signal_connect(conv_handle, "chat-topic-changed",
						plugin, GAIM_CALLBACK(chat_topic_changed_cb), NULL);

	/* Core signals */
	gaim_signal_connect(core_handle, "quitting",
						plugin, GAIM_CALLBACK(quitting_cb), NULL);

	return TRUE;
}