From 5614e73a17c0750e5de9c711e8ef0364a7fff33e Mon Sep 17 00:00:00 2001 From: Sean Qureshi Date: Wed, 7 Aug 2013 00:24:37 -0700 Subject: [PATCH 1/6] Manually merged my earlier commits with upstream --- main.c | 3 ++- prompt.c | 7 +++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/main.c b/main.c index 1ba8b6c..2bf1676 100644 --- a/main.c +++ b/main.c @@ -22,6 +22,7 @@ extern int add_req(uint8_t *public_key); // XXX /* Holds status of chat windows */ char WINDOW_STATUS[MAX_WINDOW_SLOTS]; +#define TOXICVER "0.1.0" //Will be moved to a -D flag later static ToxWindow windows[MAX_WINDOW_SLOTS]; static ToxWindow* prompt; @@ -257,7 +258,7 @@ static void draw_bar() move(LINES - 1, 0); attron(COLOR_PAIR(4) | A_BOLD); - printw(" TOXIC 1.0 |"); + printw(" TOXIC " TOXICVER " |"); attroff(COLOR_PAIR(4) | A_BOLD); int i; diff --git a/prompt.c b/prompt.c index 89c87d8..c4d7d2f 100644 --- a/prompt.c +++ b/prompt.c @@ -52,6 +52,13 @@ static void execute(ToxWindow *self, char *u_cmd) cmd[i - newlines] = u_cmd[i]; } + if (cmd[0] == '/') { + int i; + for (i = i1; i < strlen(cmd); i++) { //This doesn't work when it doesn't end with a space and another word + cmd[i - 1] = cmd[i]; //Still working on why + } + } + if (!strcmp(cmd, "quit") || !strcmp(cmd, "exit") || !strcmp(cmd, "q")) { endwin(); exit(0); From 65694a06c4af6b3419567014c8d5acd4e98a1ef5 Mon Sep 17 00:00:00 2001 From: Sean Qureshi Date: Wed, 7 Aug 2013 00:26:21 -0700 Subject: [PATCH 2/6] Fixed flash killing beep --- chat.c | 1 - 1 file changed, 1 deletion(-) diff --git a/chat.c b/chat.c index 20c0162..344071f 100644 --- a/chat.c +++ b/chat.c @@ -57,7 +57,6 @@ static void chat_onMessage(ToxWindow *self, int num, uint8_t *msg, uint16_t len) self->blink = true; beep(); - flash(); } static void chat_onNickChange(ToxWindow *self, int num, uint8_t *nick, uint16_t len) From 9e5c88859a1f60ac73198a34c4460e340ad3e6cb Mon Sep 17 00:00:00 2001 From: Sean Qureshi Date: Wed, 7 Aug 2013 09:35:37 -0700 Subject: [PATCH 3/6] Fixed it not compiling --- prompt.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/prompt.c b/prompt.c index c4d7d2f..24b728f 100644 --- a/prompt.c +++ b/prompt.c @@ -54,7 +54,7 @@ static void execute(ToxWindow *self, char *u_cmd) if (cmd[0] == '/') { int i; - for (i = i1; i < strlen(cmd); i++) { //This doesn't work when it doesn't end with a space and another word + for (i = i; i < strlen(cmd); i++) { //This doesn't work when it doesn't end with a space and another word cmd[i - 1] = cmd[i]; //Still working on why } } From 660bfc134048444d2311ff296a548b6d3ab7a6c2 Mon Sep 17 00:00:00 2001 From: Sebastian Stal Date: Wed, 7 Aug 2013 09:57:23 -0700 Subject: [PATCH 4/6] Check for correct error value in toxic. --- chat.c | 2 +- prompt.c | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/chat.c b/chat.c index 7262e72..bad4cbf 100644 --- a/chat.c +++ b/chat.c @@ -127,7 +127,7 @@ static void chat_onKey(ToxWindow* self, int key) { wattroff(ctx->history, COLOR_PAIR(1)); wprintw(ctx->history, "%s\n", ctx->line); } - if(m_sendmessage(ctx->friendnum, (uint8_t*) ctx->line, strlen(ctx->line)+1) < 0) { + if(m_sendmessage(ctx->friendnum, (uint8_t*) ctx->line, strlen(ctx->line)+1) == 0) { wattron(ctx->history, COLOR_PAIR(3)); wprintw(ctx->history, " * Failed to send message.\n"); wattroff(ctx->history, COLOR_PAIR(3)); diff --git a/prompt.c b/prompt.c index 20f6b48..670a93a 100644 --- a/prompt.c +++ b/prompt.c @@ -45,7 +45,7 @@ static void execute(ToxWindow* self, char* u_cmd) { int i; int newlines = 0; char cmd[256] = {0}; - for(i = 0; i < strlen(prompt_buf); i++) + for(i = 0; i < strlen(prompt_buf); i++) { if (u_cmd[i] == '\n') ++newlines; @@ -260,7 +260,7 @@ static void execute(ToxWindow* self, char* u_cmd) { msg[0] = 0; msg++; - if(m_sendmessage(atoi(id), (uint8_t*) msg, strlen(msg)+1) < 0) { + if(m_sendmessage(atoi(id), (uint8_t*) msg, strlen(msg)+1) == 0) { wprintw(self->window, "Error occurred while sending message.\n"); } else { @@ -338,7 +338,7 @@ static void print_usage(ToxWindow* self) { wprintw(self->window, " myid : Print your ID\n"); wprintw(self->window, " quit/exit : Exit program\n"); wprintw(self->window, " help : Print this message again\n"); - wprintw(self->window, " clear : Clear this window\n"); + wprintw(self->window, " clear : Clear this window\n"); wattron(self->window, A_BOLD); wprintw(self->window, "TIP: Use the TAB key to navigate through the tabs.\n\n"); From 5411f625670365b71f38358262c6bc4eeb0a6385 Mon Sep 17 00:00:00 2001 From: Sean Qureshi Date: Wed, 7 Aug 2013 10:36:32 -0700 Subject: [PATCH 5/6] Moved main.c to maaster --- main.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/main.c b/main.c index 2bf1676..27e3d85 100644 --- a/main.c +++ b/main.c @@ -22,7 +22,7 @@ extern int add_req(uint8_t *public_key); // XXX /* Holds status of chat windows */ char WINDOW_STATUS[MAX_WINDOW_SLOTS]; -#define TOXICVER "0.1.0" //Will be moved to a -D flag later +#define TOXICVER "0.1.0" //Will be moved to a -D flag later static ToxWindow windows[MAX_WINDOW_SLOTS]; static ToxWindow* prompt; @@ -250,6 +250,7 @@ static void load_data(char *path) static void draw_bar() { static int odd = 0; + int blinkrate = 30; attron(COLOR_PAIR(4)); mvhline(LINES - 2, 0, '_', COLS); @@ -258,7 +259,7 @@ static void draw_bar() move(LINES - 1, 0); attron(COLOR_PAIR(4) | A_BOLD); - printw(" TOXIC " TOXICVER " |"); + printw(" TOXIC " TOXICVER " |"); attroff(COLOR_PAIR(4) | A_BOLD); int i; @@ -267,14 +268,13 @@ static void draw_bar() if (i == active_window) attron(A_BOLD); - odd = (odd+1) % 10; - if (windows[i].blink && (odd < 5)) { + odd = (odd+1) % blinkrate; + if (windows[i].blink && (odd < (blinkrate/2))) { attron(COLOR_PAIR(3)); } - printw(" %s", windows[i].title); - if (windows[i].blink && (odd < 5)) { - attron(COLOR_PAIR(3)); + if (windows[i].blink && (odd < (blinkrate/2))) { + attroff(COLOR_PAIR(3)); } if (i == active_window) { attroff(A_BOLD); @@ -376,9 +376,8 @@ int main(int argc, char *argv[]) ch = getch(); if (ch == '\t' || ch == KEY_BTAB) set_active_window(ch); - else if (ch != ERR) { + else if (ch != ERR) a->onKey(a, ch); - } } return 0; } From 84847d8e29723eda622d5f4b1edc9c9a7cfb5296 Mon Sep 17 00:00:00 2001 From: Sean Qureshi Date: Wed, 7 Aug 2013 10:57:17 -0700 Subject: [PATCH 6/6] Manually merged prompt.c to upstream --- prompt.c | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 63 insertions(+), 2 deletions(-) diff --git a/prompt.c b/prompt.c index 24b728f..b6827ce 100644 --- a/prompt.c +++ b/prompt.c @@ -52,9 +52,21 @@ static void execute(ToxWindow *self, char *u_cmd) cmd[i - newlines] = u_cmd[i]; } + int leading_spc = 0; + for (i = 0; i < 256 && isspace(cmd[i]); ++i) + leading_spc++; + memmove(cmd, cmd + leading_spc, 256 - leading_spc); + + int cmd_end = strlen(cmd); + while (cmd_end > 0 && cmd_end--) + if (!isspace(cmd[cmd_end])) + break; + cmd[cmd_end + 1] = '\0'; + if (cmd[0] == '/') { + wprintw(self->window,"Warning: Run your command without the /, this may not work\n"); int i; - for (i = i; i < strlen(cmd); i++) { //This doesn't work when it doesn't end with a space and another word + for (i = 1; i < strlen(cmd); i++) { //This doesn't work when it doesn't end with a space and another word cmd[i - 1] = cmd[i]; //Still working on why } } @@ -171,6 +183,54 @@ static void execute(ToxWindow *self, char *u_cmd) } else if (!strncmp(cmd, "status ", strlen("status "))) { + char *status = strchr(cmd, ' '); + char *msg; + char *status_text; + if (status == NULL) { + wprintw(self->window, "Invalid syntax.\n"); + return; + } + status++; + USERSTATUS_KIND status_kind; + if (!strncmp(status, "online", strlen("online"))) { + status_kind = USERSTATUS_KIND_ONLINE; + status_text = "ONLINE"; + } + + else if (!strncmp(status, "away", strlen("away"))) { + status_kind = USERSTATUS_KIND_AWAY; + status_text = "AWAY"; + } + + else if (!strncmp(status, "busy", strlen("busy"))) { + status_kind = USERSTATUS_KIND_BUSY; + status_text = "BUSY"; + } + + else if (!strncmp(status, "offline", strlen("offline"))) { + status_kind = USERSTATUS_KIND_OFFLINE; + status_text = "OFFLINE"; + } + + else + { + wprintw(self->window, "Invalid status.\n"); + return; + } + + msg = strchr(status, ' '); + if (msg == NULL) { + m_set_userstatus_kind(status_kind); + wprintw(self->window, "Status set to: %s\n", status_text); + } + else { + msg++; + m_set_userstatus(status_kind, (uint8_t*) msg, strlen(msg)+1); + wprintw(self->window, "Status set to: %s, %s\n", status_text, msg); + } + } + + else if (!strncmp(cmd, "statusmsg ", strlen("statumsg "))) { char *msg = strchr(cmd, ' '); if (msg == NULL) { wprintw(self->window, "Invalid syntax.\n"); @@ -313,7 +373,8 @@ static void print_usage(ToxWindow *self) wprintw(self->window, " connect : Connect to DHT server\n"); wprintw(self->window, " add : Add friend\n"); - wprintw(self->window, " status : Set your status\n"); + wprintw(self->window, " status : Set your status\n"); + wprintw(self->window, " statusmsg : Set your status\n"); wprintw(self->window, " nick : Set your nickname\n"); wprintw(self->window, " accept : Accept friend request\n"); wprintw(self->window, " myid : Print your ID\n");