1
0
mirror of https://github.com/Tha14/toxic.git synced 2024-06-29 15:47:46 +02:00

prep for audio groups

This commit is contained in:
Jfreegman 2014-11-11 20:49:05 -05:00
parent 43f45d67a4
commit 7a7e8a7f8d
No known key found for this signature in database
GPG Key ID: 3627F3144076AE63
9 changed files with 39 additions and 18 deletions

View File

@ -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

View File

@ -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])

View File

@ -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 },

View File

@ -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;
}; };

View File

@ -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;

View File

@ -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);

View File

@ -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);

View File

@ -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");

View File

@ -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" },