1
0
mirror of https://github.com/Tha14/toxic.git synced 2024-11-26 21:43:26 +01:00
This commit is contained in:
Jfreegman 2013-09-23 01:22:21 -04:00
parent bde7aacc8d
commit e6956b1abc
5 changed files with 41 additions and 30 deletions

View File

@ -78,7 +78,7 @@ static void chat_onNickChange(ToxWindow *self, int num, uint8_t *nick, uint16_t
if (self->num != num) if (self->num != num)
return; return;
snprintf(self->name, sizeof(self->name), "%s", nick); memcpy(self->name, nick, len);
} }
static void chat_onStatusChange(ToxWindow *self, Tox *m, int num, TOX_USERSTATUS status) static void chat_onStatusChange(ToxWindow *self, Tox *m, int num, TOX_USERSTATUS status)
@ -97,7 +97,7 @@ static void chat_onStatusMessageChange(ToxWindow *self, int num, uint8_t *status
StatusBar *statusbar = (StatusBar *) self->stb; StatusBar *statusbar = (StatusBar *) self->stb;
statusbar->statusmsg_len = len; statusbar->statusmsg_len = len;
snprintf(statusbar->statusmsg, len, "%s", status); memcpy(statusbar->statusmsg, status, len);
} }
static void print_chat_help(ChatContext *ctx) static void print_chat_help(ChatContext *ctx)

View File

@ -56,7 +56,7 @@ void friendlist_onNickChange(ToxWindow *self, int num, uint8_t *str, uint16_t le
if (len >= TOX_MAX_NAME_LENGTH || num < 0 || num >= num_friends) if (len >= TOX_MAX_NAME_LENGTH || num < 0 || num >= num_friends)
return; return;
memcpy((char *) &friends[num].name, (char *) str, len); memcpy(friends[num].name, str, len);
friends[num].namelength = len; friends[num].namelength = len;
} }
@ -73,8 +73,8 @@ void friendlist_onStatusMessageChange(ToxWindow *self, int num, uint8_t *str, ui
if (len >= TOX_MAX_STATUSMESSAGE_LENGTH || num < 0 || num >= num_friends) if (len >= TOX_MAX_STATUSMESSAGE_LENGTH || num < 0 || num >= num_friends)
return; return;
memcpy(friends[num].statusmsg, str, len);
friends[num].statusmsg_len = len; friends[num].statusmsg_len = len;
memcpy((char *) &friends[num].statusmsg, (char *) str, len);
} }
int friendlist_onFriendAdded(Tox *m, int num) int friendlist_onFriendAdded(Tox *m, int num)
@ -258,10 +258,9 @@ void disable_chatwin(int f_num)
int get_friendnum(uint8_t *name) int get_friendnum(uint8_t *name)
{ {
int i; int i;
int len = strlen(name);
for (i = 0; i < num_friends; ++i) { for (i = 0; i < num_friends; ++i) {
if (strncmp(friends[i].name, name, len) == 0) if (strcmp(friends[i].name, name) == 0)
return friends[i].num; return friends[i].num;
} }

View File

@ -160,7 +160,7 @@ static void groupchat_onKey(ToxWindow *self, Tox *m, wint_t key)
bool close_win = false; bool close_win = false;
if (line[0] == '/') { if (line[0] == '/') {
if (close_win = strncmp(line, "/close", strlen(line)) == 0) { if (close_win = strncmp(line, "/close", strlen("/close")) == 0) {
set_active_window(0); set_active_window(0);
int groupnum = self->num; int groupnum = self->num;
delwin(ctx->linewin); delwin(ctx->linewin);

View File

@ -216,6 +216,39 @@ static void prompt_onInit(ToxWindow *self, Tox *m)
wclrtoeol(self->window); wclrtoeol(self->window);
} }
static void prompt_onConnectionChange(ToxWindow *self, Tox *m, int friendnum , uint8_t status)
{
if (friendnum < 0)
return;
uint8_t nick[TOX_MAX_NAME_LENGTH] = {'\0'};
if (tox_getname(m, friendnum, nick) == -1)
return;
nick[TOXIC_MAX_NAME_LENGTH] = '\0';
if (!nick[0])
snprintf(nick, sizeof(nick), "%s", UNKNOWN_NAME);
if (status == 1) {
wattron(self->window, COLOR_PAIR(GREEN));
wattron(self->window, A_BOLD);
wprintw(self->window, "\n%s ", nick);
wattroff(self->window, A_BOLD);
wprintw(self->window, "has come online\n");
wattroff(self->window, COLOR_PAIR(GREEN));
} else {
wattron(self->window, COLOR_PAIR(RED));
wattron(self->window, A_BOLD);
wprintw(self->window, "\n%s ", nick);
wattroff(self->window, A_BOLD);
wprintw(self->window, "has gone offline\n");
wattroff(self->window, COLOR_PAIR(RED));
}
}
static void prompt_onFriendRequest(ToxWindow *self, uint8_t *key, uint8_t *data, uint16_t length) static void prompt_onFriendRequest(ToxWindow *self, uint8_t *key, uint8_t *data, uint16_t length)
{ {
wprintw(self->window, "\nFriend request from:\n"); wprintw(self->window, "\nFriend request from:\n");
@ -301,6 +334,7 @@ ToxWindow new_prompt(void)
ret.onKey = &prompt_onKey; ret.onKey = &prompt_onKey;
ret.onDraw = &prompt_onDraw; ret.onDraw = &prompt_onDraw;
ret.onInit = &prompt_onInit; ret.onInit = &prompt_onInit;
ret.onConnectionChange = &prompt_onConnectionChange;
ret.onFriendRequest = &prompt_onFriendRequest; ret.onFriendRequest = &prompt_onFriendRequest;
ret.onGroupInvite = &prompt_onGroupInvite; ret.onGroupInvite = &prompt_onGroupInvite;

View File

@ -29,28 +29,6 @@ void on_request(uint8_t *public_key, uint8_t *data, uint16_t length, void *userd
void on_connectionchange(Tox *m, int friendnumber, uint8_t status, void *userdata) void on_connectionchange(Tox *m, int friendnumber, uint8_t status, void *userdata)
{ {
uint8_t nick[TOX_MAX_NAME_LENGTH] = {'\0'};
tox_getname(m, friendnumber, nick);
if (!nick[0])
snprintf(nick, sizeof(nick), "%s", UNKNOWN_NAME);
if (status == 1) {
wattron(prompt->window, COLOR_PAIR(GREEN));
wattron(prompt->window, A_BOLD);
wprintw(prompt->window, "\n%s ", nick);
wattroff(prompt->window, A_BOLD);
wprintw(prompt->window, "has come online\n");
wattroff(prompt->window, COLOR_PAIR(GREEN));
} else {
wattron(prompt->window, COLOR_PAIR(RED));
wattron(prompt->window, A_BOLD);
wprintw(prompt->window, "\n%s ", nick);
wattroff(prompt->window, A_BOLD);
wprintw(prompt->window, "has gone offline\n");
wattroff(prompt->window, COLOR_PAIR(RED));
}
int i; int i;
for (i = 0; i < MAX_WINDOWS_NUM; ++i) { for (i = 0; i < MAX_WINDOWS_NUM; ++i) {
@ -96,7 +74,7 @@ void on_nickchange(Tox *m, int friendnumber, uint8_t *string, uint16_t length, v
char n_buf[strlen(string)+4]; /* must have room for chars relative to MAX_FRIENDS_NUM */ char n_buf[strlen(string)+4]; /* must have room for chars relative to MAX_FRIENDS_NUM */
snprintf(n_buf, sizeof(n_buf), "%s%d", string, friendnumber); snprintf(n_buf, sizeof(n_buf), "%s%d", string, friendnumber);
strcpy(string, n_buf); strcpy(string, n_buf);
length = strlen(string) + 1; length = strlen(n_buf) + 1;
} }
int i; int i;