Ejemplo n.º 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;
    }
}
Ejemplo n.º 2
0
static void friendlist_onKey(ToxWindow *self, Tox *m, wint_t key)
{
    if (num_friends == 0)
        return;

    int f = friendlist_index[num_selected];

    if (key == '\n') {
        /* Jump to chat window if already open */
        if (friends[f].chatwin != -1) {
            set_active_window(friends[f].chatwin);
        } else if (num_active_windows() < MAX_WINDOWS_NUM) {
            friends[f].chatwin = add_window(m, new_chat(m, friends[f].num));
            set_active_window(friends[f].chatwin);
        } else {
            prep_prompt_win();
            wattron(prompt->window, COLOR_PAIR(RED));
            wprintw(prompt->window, "* Warning: Too many windows are open.\n");
            wattron(prompt->window, COLOR_PAIR(RED));

            alert_window(prompt, WINDOW_ALERT_1, true);
        }
    } else if (key == KEY_DC) {
        delete_friend(m, self, f, key);
    } else {
        select_friend(self, m, key);
    }
}
Ejemplo n.º 3
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;
    }
}
Ejemplo n.º 4
0
/* deactivates delete friend popup and deletes friend if instructed */
static void del_friend_deactivate(ToxWindow *self, Tox *m, wint_t key)
{
    if (key == 'y')
        delete_friend(m, pendingdelete.num);
 
    memset(&pendingdelete, 0, sizeof(PendingDel));
    delwin(self->popup);
    self->popup = NULL;
    clear();
    refresh();
}
Ejemplo n.º 5
0
static void friendlist_onKey(ToxWindow *self, Tox *m, wint_t key)
{
    if (key == KEY_UP || key == KEY_DOWN) {
        select_friend(m, key);
    } else if (key == '\n') {
        /* Jump to chat window if already open */
        if (friends[num_selected].chatwin != -1) {
            set_active_window(friends[num_selected].chatwin);
        } else {
            friends[num_selected].chatwin = add_window(m, new_chat(m, prompt, friends[num_selected].num));
            set_active_window(friends[num_selected].chatwin);
        }
    } else if (key == 0x107 || key == 0x8 || key == 0x7f)
        delete_friend(m, self, num_selected, key);
}
Ejemplo n.º 6
0
void line_eval(char* line)
{
    if(line[0] == '/') {

        char inpt_command = line[1];

        if(inpt_command == 'f') {
            add_friend();
        }

        else if (inpt_command == 'r') {
            do_header();
            printf("\n\n");
        }

        else if (inpt_command == 'l') {
            list_friends();
        }

        else if (inpt_command == 'd') {
            delete_friend();
        }
        /* Send message to friend */
        else if (inpt_command == 'm') {
            message_friend();
        }

        else if (inpt_command == 'n') {
            change_nickname();
        }

        else if (inpt_command == 's') {
            change_status(1);
        }

        else if (inpt_command == 'a') {
            if (friend_request_received == 1)
                accept_friend_request(line);
        }
        /* EXIT */
        else if (inpt_command == 'q') {
            strcpy(line, "---Offline");
            change_status(0);
            exit(EXIT_SUCCESS);
        }
    }
}
Ejemplo n.º 7
0
/* deactivates delete friend popup and deletes friend if instructed */
static void del_friend_deactivate(ToxWindow *self, Tox *m, wint_t key)
{
    if (key == 'y') {
        if (blocklist_view == 0) {
            delete_friend(m, PendingDelete.num);
            sort_friendlist_index();
        } else {
            delete_blocked_friend(PendingDelete.num);
            sort_blocklist_index();
        }
    }

    delwin(PendingDelete.popup);
    memset(&PendingDelete, 0, sizeof(PendingDelete));
    clear();
    refresh();
}