mirror of
https://github.com/Tha14/toxic.git
synced 2024-11-23 02:23:02 +01:00
prep for audio groups
This commit is contained in:
parent
43f45d67a4
commit
7a7e8a7f8d
13
src/chat.c
13
src/chat.c
@ -567,15 +567,6 @@ static void chat_onGroupInvite(ToxWindow *self, Tox *m, int32_t friendnumber, ui
|
|||||||
if (self->num != friendnumber)
|
if (self->num != friendnumber)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
char name[TOX_MAX_NAME_LENGTH];
|
|
||||||
get_nick_truncate(m, name, friendnumber);
|
|
||||||
|
|
||||||
/* Temporary until audio groups are implemented */
|
|
||||||
if (type == TOX_GROUPCHAT_TYPE_AV) {
|
|
||||||
line_info_add(self, NULL, NULL, NULL, SYS_MSG, 0, 0, "Audio group invite by %s failed: Feature is not available");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Friends.list[friendnumber].group_invite.key != NULL)
|
if (Friends.list[friendnumber].group_invite.key != NULL)
|
||||||
free(Friends.list[friendnumber].group_invite.key);
|
free(Friends.list[friendnumber].group_invite.key);
|
||||||
|
|
||||||
@ -588,9 +579,13 @@ static void chat_onGroupInvite(ToxWindow *self, Tox *m, int32_t friendnumber, ui
|
|||||||
Friends.list[friendnumber].group_invite.key = k;
|
Friends.list[friendnumber].group_invite.key = k;
|
||||||
Friends.list[friendnumber].group_invite.pending = true;
|
Friends.list[friendnumber].group_invite.pending = true;
|
||||||
Friends.list[friendnumber].group_invite.length = length;
|
Friends.list[friendnumber].group_invite.length = length;
|
||||||
|
Friends.list[friendnumber].group_invite.type = type;
|
||||||
|
|
||||||
sound_notify(self, generic_message, NT_WNDALERT_2, NULL);
|
sound_notify(self, generic_message, NT_WNDALERT_2, NULL);
|
||||||
|
|
||||||
|
char name[TOX_MAX_NAME_LENGTH];
|
||||||
|
get_nick_truncate(m, name, friendnumber);
|
||||||
|
|
||||||
if (self->active_box != -1)
|
if (self->active_box != -1)
|
||||||
box_silent_notify2(self, NT_WNDALERT_2 | NT_NOFOCUS, self->active_box, "invites you to join group chat");
|
box_silent_notify2(self, NT_WNDALERT_2 | NT_NOFOCUS, self->active_box, "invites you to join group chat");
|
||||||
else
|
else
|
||||||
|
@ -125,24 +125,33 @@ void cmd_join_group(WINDOW *window, ToxWindow *self, Tox *m, int argc, char (*ar
|
|||||||
|
|
||||||
const char *groupkey = Friends.list[self->num].group_invite.key;
|
const char *groupkey = Friends.list[self->num].group_invite.key;
|
||||||
uint16_t length = Friends.list[self->num].group_invite.length;
|
uint16_t length = Friends.list[self->num].group_invite.length;
|
||||||
|
uint8_t type = Friends.list[self->num].group_invite.type;
|
||||||
|
|
||||||
if (!Friends.list[self->num].group_invite.pending) {
|
if (!Friends.list[self->num].group_invite.pending) {
|
||||||
line_info_add(self, NULL, NULL, NULL, SYS_MSG, 0, 0, "No pending group chat invite.");
|
line_info_add(self, NULL, NULL, NULL, SYS_MSG, 0, 0, "No pending group chat invite.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
int groupnum = tox_join_groupchat(m, self->num, (uint8_t *) groupkey, length);
|
int groupnum = -1;
|
||||||
|
|
||||||
|
if (type == TOX_GROUPCHAT_TYPE_TEXT)
|
||||||
|
groupnum = tox_join_groupchat(m, self->num, (uint8_t *) groupkey, length);
|
||||||
|
#ifdef AUDIO
|
||||||
|
else
|
||||||
|
groupnum = toxav_join_av_groupchat(m, self->num, (uint8_t *) groupkey, length, NULL, NULL);
|
||||||
|
#endif
|
||||||
|
|
||||||
if (groupnum == -1) {
|
if (groupnum == -1) {
|
||||||
line_info_add(self, NULL, NULL, NULL, SYS_MSG, 0, 0, "Group chat instance failed to initialize.");
|
line_info_add(self, NULL, NULL, NULL, SYS_MSG, 0, 0, "Group chat instance failed to initialize.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (init_groupchat_win(prompt, m, groupnum) == -1) {
|
if (init_groupchat_win(prompt, m, groupnum, type) == -1) {
|
||||||
line_info_add(self, NULL, NULL, NULL, SYS_MSG, 0, 0, "Group chat window failed to initialize.");
|
line_info_add(self, NULL, NULL, NULL, SYS_MSG, 0, 0, "Group chat window failed to initialize.");
|
||||||
tox_del_groupchat(m, groupnum);
|
tox_del_groupchat(m, groupnum);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void cmd_savefile(WINDOW *window, ToxWindow *self, Tox *m, int argc, char (*argv)[MAX_STR_SIZE])
|
void cmd_savefile(WINDOW *window, ToxWindow *self, Tox *m, int argc, char (*argv)[MAX_STR_SIZE])
|
||||||
|
@ -46,7 +46,7 @@ static struct cmd_func global_commands[] = {
|
|||||||
{ "/connect", cmd_connect },
|
{ "/connect", cmd_connect },
|
||||||
{ "/decline", cmd_decline },
|
{ "/decline", cmd_decline },
|
||||||
{ "/exit", cmd_quit },
|
{ "/exit", cmd_quit },
|
||||||
{ "/groupchat", cmd_groupchat },
|
{ "/group", cmd_groupchat },
|
||||||
{ "/help", cmd_prompt_help },
|
{ "/help", cmd_prompt_help },
|
||||||
{ "/log", cmd_log },
|
{ "/log", cmd_log },
|
||||||
{ "/myid", cmd_myid },
|
{ "/myid", cmd_myid },
|
||||||
|
@ -51,6 +51,7 @@ struct LastOnline {
|
|||||||
struct GroupChatInvite {
|
struct GroupChatInvite {
|
||||||
char *key;
|
char *key;
|
||||||
uint16_t length;
|
uint16_t length;
|
||||||
|
uint8_t type;
|
||||||
bool pending;
|
bool pending;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -325,14 +325,28 @@ void cmd_groupchat(WINDOW *window, ToxWindow *self, Tox *m, int argc, char (*arg
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
int groupnum = tox_add_groupchat(m);
|
if (argc < 1) {
|
||||||
|
line_info_add(self, NULL, NULL, NULL, SYS_MSG, 0, 0, "Please specify group type: text | audio");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t type = TOX_GROUPCHAT_TYPE_AV ? !strcasecmp(argv[1], "audio") : TOX_GROUPCHAT_TYPE_TEXT;
|
||||||
|
|
||||||
|
int groupnum = -1;
|
||||||
|
|
||||||
|
if (type == TOX_GROUPCHAT_TYPE_TEXT)
|
||||||
|
groupnum = tox_add_groupchat(m);
|
||||||
|
#ifdef AUDIO
|
||||||
|
else
|
||||||
|
groupnum = toxav_add_av_groupchat(m, NULL, NULL);
|
||||||
|
#endif
|
||||||
|
|
||||||
if (groupnum == -1) {
|
if (groupnum == -1) {
|
||||||
line_info_add(self, NULL, NULL, NULL, SYS_MSG, 0, 0, "Group chat instance failed to initialize.");
|
line_info_add(self, NULL, NULL, NULL, SYS_MSG, 0, 0, "Group chat instance failed to initialize.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (init_groupchat_win(prompt, m, groupnum) == -1) {
|
if (init_groupchat_win(prompt, m, groupnum, type) == -1) {
|
||||||
line_info_add(self, NULL, NULL, NULL, SYS_MSG, 0, 0, "Group chat window failed to initialize.");
|
line_info_add(self, NULL, NULL, NULL, SYS_MSG, 0, 0, "Group chat window failed to initialize.");
|
||||||
tox_del_groupchat(m, groupnum);
|
tox_del_groupchat(m, groupnum);
|
||||||
return;
|
return;
|
||||||
|
@ -57,7 +57,7 @@ extern struct Winthread Winthread;
|
|||||||
/* temporary until group chats have unique commands */
|
/* temporary until group chats have unique commands */
|
||||||
extern const char glob_cmd_list[AC_NUM_GLOB_COMMANDS][MAX_CMDNAME_SIZE];
|
extern const char glob_cmd_list[AC_NUM_GLOB_COMMANDS][MAX_CMDNAME_SIZE];
|
||||||
|
|
||||||
int init_groupchat_win(ToxWindow *prompt, Tox *m, int groupnum)
|
int init_groupchat_win(ToxWindow *prompt, Tox *m, int groupnum, uint8_t type)
|
||||||
{
|
{
|
||||||
if (groupnum > MAX_GROUPCHAT_NUM)
|
if (groupnum > MAX_GROUPCHAT_NUM)
|
||||||
return -1;
|
return -1;
|
||||||
@ -69,6 +69,7 @@ int init_groupchat_win(ToxWindow *prompt, Tox *m, int groupnum)
|
|||||||
groupchats[i].chatwin = add_window(m, new_group_chat(m, groupnum));
|
groupchats[i].chatwin = add_window(m, new_group_chat(m, groupnum));
|
||||||
groupchats[i].active = true;
|
groupchats[i].active = true;
|
||||||
groupchats[i].num_peers = 0;
|
groupchats[i].num_peers = 0;
|
||||||
|
groupchats[i].type = type;
|
||||||
groupchats[i].start_time = get_unix_time();
|
groupchats[i].start_time = get_unix_time();
|
||||||
|
|
||||||
groupchats[i].peer_names = malloc(sizeof(uint8_t) * TOX_MAX_NAME_LENGTH);
|
groupchats[i].peer_names = malloc(sizeof(uint8_t) * TOX_MAX_NAME_LENGTH);
|
||||||
|
@ -33,6 +33,7 @@
|
|||||||
typedef struct {
|
typedef struct {
|
||||||
int chatwin;
|
int chatwin;
|
||||||
bool active;
|
bool active;
|
||||||
|
uint8_t type;
|
||||||
int num_peers;
|
int num_peers;
|
||||||
int side_pos; /* current position of the sidebar - used for scrolling up and down */
|
int side_pos; /* current position of the sidebar - used for scrolling up and down */
|
||||||
uint64_t start_time;
|
uint64_t start_time;
|
||||||
@ -43,7 +44,7 @@ typedef struct {
|
|||||||
} GroupChat;
|
} GroupChat;
|
||||||
|
|
||||||
void kill_groupchat_window(ToxWindow *self);
|
void kill_groupchat_window(ToxWindow *self);
|
||||||
int init_groupchat_win(ToxWindow *prompt, Tox *m, int groupnum);
|
int init_groupchat_win(ToxWindow *prompt, Tox *m, int groupnum, uint8_t type);
|
||||||
|
|
||||||
/* destroys and re-creates groupchat window with or without the peerlist */
|
/* destroys and re-creates groupchat window with or without the peerlist */
|
||||||
void redraw_groupchat_win(ToxWindow *self);
|
void redraw_groupchat_win(ToxWindow *self);
|
||||||
|
@ -146,7 +146,7 @@ static void help_draw_global(ToxWindow *self)
|
|||||||
wprintw(win, " /note <msg> : Set a personal note\n");
|
wprintw(win, " /note <msg> : Set a personal note\n");
|
||||||
wprintw(win, " /nick <nick> : Set your nickname\n");
|
wprintw(win, " /nick <nick> : Set your nickname\n");
|
||||||
wprintw(win, " /log <on> or <off> : Enable/disable logging\n");
|
wprintw(win, " /log <on> or <off> : Enable/disable logging\n");
|
||||||
wprintw(win, " /groupchat : Create a group chat\n");
|
wprintw(win, " /group <type> : Create a group chat where type: text | audio\n");
|
||||||
wprintw(win, " /myid : Print your Tox ID\n");
|
wprintw(win, " /myid : Print your Tox ID\n");
|
||||||
wprintw(win, " /clear : Clear window history\n");
|
wprintw(win, " /clear : Clear window history\n");
|
||||||
wprintw(win, " /close : Close the current chat window\n");
|
wprintw(win, " /close : Close the current chat window\n");
|
||||||
|
@ -58,7 +58,7 @@ const char glob_cmd_list[AC_NUM_GLOB_COMMANDS][MAX_CMDNAME_SIZE] = {
|
|||||||
{ "/connect" },
|
{ "/connect" },
|
||||||
{ "/decline" },
|
{ "/decline" },
|
||||||
{ "/exit" },
|
{ "/exit" },
|
||||||
{ "/groupchat" },
|
{ "/group" },
|
||||||
{ "/help" },
|
{ "/help" },
|
||||||
{ "/log" },
|
{ "/log" },
|
||||||
{ "/myid" },
|
{ "/myid" },
|
||||||
|
Loading…
Reference in New Issue
Block a user