示例#1
0
/* deletes contact from friendlist and puts in blocklist */
void block_friend(Tox *m, uint32_t fnum)
{
    if (Friends.num_friends <= 0)
        return;

    realloc_blocklist(Blocked.max_idx + 1);
    memset(&Blocked.list[Blocked.max_idx], 0, sizeof(BlockedFriend));

    int i;

    for (i = 0; i <= Blocked.max_idx; ++i) {
        if (Blocked.list[i].active)
            continue;

        Blocked.list[i].active = true;
        Blocked.list[i].num = i;
        Blocked.list[i].namelength = Friends.list[fnum].namelength;
        Blocked.list[i].last_on = Friends.list[fnum].last_online.last_on;
        memcpy(Blocked.list[i].pub_key, Friends.list[fnum].pub_key, TOX_PUBLIC_KEY_SIZE);
        memcpy(Blocked.list[i].name, Friends.list[fnum].name, Friends.list[fnum].namelength + 1);

        ++Blocked.num_blocked;

        if (i == Blocked.max_idx)
            ++Blocked.max_idx;

        delete_friend(m, fnum);
        save_blocklist(BLOCK_FILE);
        sort_blocklist_index();
        sort_friendlist_index();

        return;
    }
}
示例#2
0
/* deletes contact from friendlist and puts in blocklist */
void block_friend(Tox *m, int32_t fnum)
{
    if (Blocked_Contacts.max_index >= MAX_FRIENDS_NUM || num_friends <= 0)
        return;

    int i;

    for (i = 0; i <= Blocked_Contacts.max_index; ++i) {
        if (Blocked_Contacts.list[i].active)
            continue;

        Blocked_Contacts.list[i].active = true;
        Blocked_Contacts.list[i].num = i;
        Blocked_Contacts.list[i].namelength = friends[fnum].namelength;
        Blocked_Contacts.list[i].last_on = friends[fnum].last_online.last_on;
        memcpy(Blocked_Contacts.list[i].pub_key, friends[fnum].pub_key, TOX_CLIENT_ID_SIZE);
        memcpy(Blocked_Contacts.list[i].name, friends[fnum].name, friends[fnum].namelength  + 1);

        ++Blocked_Contacts.num_blocked;

        if (i == Blocked_Contacts.max_index)
            ++Blocked_Contacts.max_index;

        delete_friend(m, fnum);
        save_blocklist(BLOCK_FILE);
        sort_blocklist_index();
        sort_friendlist_index();

        return;
    }
}
示例#3
0
/* deletes contact from blocked list */
static void delete_blocked_friend(int32_t bnum)
{
    memset(&Blocked_Contacts.list[bnum], 0, sizeof(BlockedFriend));

    int i;

    for (i = Blocked_Contacts.max_index; i > 0; --i) {
        if (Blocked_Contacts.list[i - 1].active)
            break;
    }

    --Blocked_Contacts.num_blocked;
    Blocked_Contacts.max_index = i;
    save_blocklist(BLOCK_FILE);

    if (Blocked_Contacts.num_blocked && Blocked_Contacts.num_selected == Blocked_Contacts.num_blocked)
        --Blocked_Contacts.num_selected;
}
示例#4
0
/* deletes contact from blocked list */
static void delete_blocked_friend(uint32_t bnum)
{
    memset(&Blocked.list[bnum], 0, sizeof(BlockedFriend));

    int i;

    for (i = Blocked.max_idx; i > 0; --i) {
        if (Blocked.list[i - 1].active) {
            break;
        }
    }

    --Blocked.num_blocked;
    Blocked.max_idx = i;
    realloc_blocklist(i);
    save_blocklist(BLOCK_FILE);

    if (Blocked.num_blocked && Blocked.num_selected == Blocked.num_blocked) {
        --Blocked.num_selected;
    }
}