1
0
mirror of https://github.com/Tha14/toxic.git synced 2025-12-06 19:36:34 +01:00

Added chat windows, and some clean up.

This commit is contained in:
plutooo
2013-07-31 10:20:03 -07:00
parent 31e49e2ec5
commit 7290527cdc
6 changed files with 222 additions and 18 deletions

View File

@@ -12,6 +12,10 @@
#include "windows.h"
extern int add_window(ToxWindow w);
extern int focus_window(int num);
extern ToxWindow new_chat(int friendnum);
#define MAX_FRIENDS_NUM 100
typedef struct {
@@ -23,6 +27,7 @@ typedef struct {
static friend_t friends[MAX_FRIENDS_NUM];
static int num_friends = 0;
static int num_selected = 0;
void fix_name(uint8_t* name) {
@@ -42,31 +47,31 @@ void fix_name(uint8_t* name) {
*q = 0;
}
int friendlist_nickchange(int num, uint8_t* str, uint16_t len) {
void friendlist_onNickChange(ToxWindow* self, int num, uint8_t* str, uint16_t len) {
if(len >= MAX_NAME_LENGTH || num >= num_friends)
return -1;
return;
memcpy((char*) &friends[num].name, (char*) str, len);
friends[num].name[len] = 0;
fix_name(friends[num].name);
return 0;
return;
}
int friendlist_statuschange(int num, uint8_t* str, uint16_t len) {
void friendlist_onStatusChange(ToxWindow* self, int num, uint8_t* str, uint16_t len) {
if(len >= MAX_USERSTATUS_LENGTH || num >= num_friends)
return -1;
return;
memcpy((char*) &friends[num].status, (char*) str, len);
friends[num].status[len] = 0;
fix_name(friends[num].status);
return 0;
return;
}
int friendlist_addfriend(int num) {
int friendlist_onFriendAdded(int num) {
if(num_friends == MAX_FRIENDS_NUM)
return -1;
@@ -82,6 +87,17 @@ int friendlist_addfriend(int num) {
static void friendlist_onKey(ToxWindow* self, int key) {
if(key == KEY_UP) {
if(num_selected != 0)
num_selected--;
}
else if(key == KEY_DOWN) {
if(num_friends != 0)
num_selected = (num_selected+1) % num_friends;
}
else if(key == '\n') {
focus_window(add_window(new_chat(num_selected)));
}
}
static void friendlist_onDraw(ToxWindow* self) {
@@ -92,11 +108,23 @@ static void friendlist_onDraw(ToxWindow* self) {
if(num_friends == 0) {
wprintw(self->window, "Empty. Add some friends! :-)\n");
}
else {
wattron(self->window, COLOR_PAIR(2) | A_BOLD);
wprintw(self->window, "Friend list:\n");
wattroff(self->window, A_BOLD);
wprintw(self->window, " ENTER: start a chat\n");
wprintw(self->window, " UP/DOWN: navigate list\n");
wattroff(self->window, COLOR_PAIR(2));
}
wprintw(self->window, "\n");
for(i=0; i<num_friends; i++) {
wprintw(self->window, "[%d] ", friends[i].num);
if(i == num_selected) wattron(self->window, COLOR_PAIR(3));
wprintw(self->window, " [%d] ", friends[i].num);
if(i == num_selected) wattroff(self->window, COLOR_PAIR(3));
attron(A_BOLD);
wprintw(self->window, "%s ", friends[i].name);
@@ -116,9 +144,13 @@ static void friendlist_onInit(ToxWindow* self) {
ToxWindow new_friendlist() {
ToxWindow ret;
memset(&ret, 0, sizeof(ret));
ret.onKey = &friendlist_onKey;
ret.onDraw = &friendlist_onDraw;
ret.onInit = &friendlist_onInit;
ret.onNickChange = &friendlist_onNickChange;
ret.onStatusChange = &friendlist_onStatusChange;
strcpy(ret.title, "[friends]");
return ret;