Ejemplo n.º 1
0
void file_message(LwqqClient* lc,LwqqMsgFileMessage* file)
{
    qq_account* ac = lwqq_client_userdata(lc);
    if(file->mode == MODE_RECV) {
        PurpleAccount* account = ac->account;
        LwqqClient* lc = ac->qq;
        //for(i=0;i<file->file_count;i++){
        LwqqBuddy* buddy = lc->find_buddy_by_uin(lc,file->from);
        if(buddy == NULL ) return;
        const char* key = try_get(buddy->qqnumber,buddy->uin);
        PurpleXfer* xfer = purple_xfer_new(account,PURPLE_XFER_RECEIVE,key);
        purple_xfer_set_filename(xfer,file->recv.name);
        purple_xfer_set_init_fnc(xfer,recv_file_init);
        purple_xfer_set_request_denied_fnc(xfer,recv_file_request_denied);
        purple_xfer_set_cancel_recv_fnc(xfer,recv_file_cancel);
        LwqqMsgFileMessage* fdup = s_malloc(sizeof(*fdup));
        memcpy(fdup,file,sizeof(*fdup));
        file->from = file->to = file->reply_ip = file->recv.name = NULL;
        xfer->data = fdup;
        purple_xfer_request(xfer);
    } else if(file->mode == MODE_REFUSE) {
        if(file->refuse.cancel_type == CANCEL_BY_USER) {
            qq_sys_msg_write(ac, LWQQ_MT_BUDDY_MSG, file->from, "对方取消文件传输", PURPLE_MESSAGE_SYSTEM, time(NULL));
        } else if(file->refuse.cancel_type == CANCEL_BY_OVERTIME) {
            qq_sys_msg_write(ac, LWQQ_MT_BUDDY_MSG, file->from, "文件传输超时", PURPLE_MESSAGE_SYSTEM, time(NULL));
        }

    }

}
Ejemplo n.º 2
0
//the entrience for recv file messages
void file_message(LwqqClient* lc,LwqqMsgFileMessage* file)
{
	qq_account* ac = lwqq_client_userdata(lc);
	if(file->mode == MODE_RECV) {
		PurpleAccount* account = ac->account;
		LwqqClient* lc = ac->qq;
		LwqqBuddy* buddy = lc->find_buddy_by_uin(lc,file->super.from);
		if(buddy == NULL ) return;
		const char* key = try_get(buddy->qqnumber,buddy->uin);
		PurpleXfer* xfer = purple_xfer_new(account,PURPLE_XFER_RECEIVE,key);
		purple_xfer_set_filename(xfer,file->recv.name);
		purple_xfer_set_init_fnc(xfer,recv_file_init);
		purple_xfer_set_request_denied_fnc(xfer,recv_file_request_denied);
		purple_xfer_set_cancel_recv_fnc(xfer,recv_file_cancel);
		LwqqMsgFileMessage* fdup = s_malloc0(sizeof(*fdup));
		lwqq_msg_move(fdup,file);
		xfer->data = fdup;
		purple_xfer_request(xfer);
	} else if(file->mode == MODE_REFUSE) {
		if(file->refuse.cancel_type == CANCEL_BY_USER) 
			qq_sys_msg_write(ac, LWQQ_MS_BUDDY_MSG, file->super.from, 
					_("Other canceled file transport"), 
					PURPLE_MESSAGE_SYSTEM, 
					time(NULL));
		else if(file->refuse.cancel_type == CANCEL_BY_OVERTIME) 
			qq_sys_msg_write(ac, LWQQ_MS_BUDDY_MSG, file->super.from, 
					_("File transport timeout"), 
					PURPLE_MESSAGE_SYSTEM, 
					time(NULL));
	}
}
Ejemplo n.º 3
0
LwqqGroup* find_group_by_gid(LwqqClient* lc,const char* gid)
{
#if QQ_USE_FAST_INDEX
	qq_account* ac = lwqq_client_userdata(lc);
	index_node* node = g_hash_table_lookup(ac->fast_index.uin_index,gid);
	if(node == NULL) return NULL;
	if(node->type != NODE_IS_GROUP) return NULL;
	return (LwqqGroup*)node->node;
#else
	return lwqq_group_find_group_by_gid(lc, gid);
#endif
}
Ejemplo n.º 4
0
LwqqBuddy* find_buddy_by_uin(LwqqClient* lc,const char* uin)
{
#if QQ_USE_FAST_INDEX
	qq_account* ac = lwqq_client_userdata(lc);
	index_node* node = g_hash_table_lookup(ac->fast_index.uin_index,uin);
	if(node == NULL) return NULL;
	if(node->type != NODE_IS_BUDDY) return NULL;
	return (LwqqBuddy*)node->node;
#else
	return lwqq_buddy_find_buddy_by_uin(lc, uin);
#endif
}
Ejemplo n.º 5
0
LwqqGroup* find_group_by_qqnumber(LwqqClient* lc,const char* qqnum)
{
	qq_account* ac = lwqq_client_userdata(lc);
#if QQ_USE_FAST_INDEX
	index_node* node = g_hash_table_lookup(ac->fast_index.qqnum_index,qqnum);
	if(node == NULL) return NULL;
	if(node->type != NODE_IS_GROUP) return NULL;
	return (LwqqGroup*)node->node;
#else
	return lwqq_group_find_group_by_qqnumber(lc, qqnum);
#endif
}