summaryrefslogtreecommitdiff
path: root/testing/toxic/friendlist.c
diff options
context:
space:
mode:
Diffstat (limited to 'testing/toxic/friendlist.c')
-rw-r--r--testing/toxic/friendlist.c145
1 files changed, 0 insertions, 145 deletions
diff --git a/testing/toxic/friendlist.c b/testing/toxic/friendlist.c
deleted file mode 100644
index 8fa3b473..00000000
--- a/testing/toxic/friendlist.c
+++ /dev/null
@@ -1,145 +0,0 @@
1/*
2 * Toxic -- Tox Curses Client
3 */
4
5#include <string.h>
6#include <stdint.h>
7#include <ctype.h>
8
9#include "../../core/Messenger.h"
10#include "../../core/network.h"
11
12#include "windows.h"
13#include "friendlist.h"
14
15
16typedef struct {
17 uint8_t name[MAX_NAME_LENGTH];
18 uint8_t status[MAX_STATUSMESSAGE_LENGTH];
19 int num;
20 int chatwin;
21} friend_t;
22
23static friend_t friends[MAX_FRIENDS_NUM];
24static int num_friends = 0;
25static int num_selected = 0;
26
27
28void friendlist_onMessage(ToxWindow *self, Messenger *m, int num, uint8_t *str, uint16_t len)
29{
30 if (num >= num_friends)
31 return;
32
33 if (friends[num].chatwin == -1) {
34 friends[num].chatwin = add_window(m, new_chat(m, num));
35 }
36}
37
38void friendlist_onNickChange(ToxWindow *self, int num, uint8_t *str, uint16_t len)
39{
40 if (len >= MAX_NAME_LENGTH || num >= num_friends)
41 return;
42
43 memcpy((char *) &friends[num].name, (char *) str, len);
44 friends[num].name[len] = 0;
45}
46
47void friendlist_onStatusChange(ToxWindow *self, int num, uint8_t *str, uint16_t len)
48{
49 if (len >= MAX_STATUSMESSAGE_LENGTH || num >= num_friends)
50 return;
51
52 memcpy((char *) &friends[num].status, (char *) str, len);
53 friends[num].status[len] = 0;
54}
55
56int friendlist_onFriendAdded(Messenger *m, int num)
57{
58 if (num_friends == MAX_FRIENDS_NUM)
59 return -1;
60
61 friends[num_friends].num = num;
62 getname(m, num, friends[num_friends].name);
63 strcpy((char *) friends[num_friends].name, "unknown");
64 strcpy((char *) friends[num_friends].status, "unknown");
65 friends[num_friends++].chatwin = -1;
66 return 0;
67}
68
69static void friendlist_onKey(ToxWindow *self, Messenger *m, wint_t key)
70{
71 if (key == KEY_UP) {
72 if (--num_selected < 0)
73 num_selected = num_friends - 1;
74 } else if (key == KEY_DOWN) {
75 if (num_friends != 0)
76 num_selected = (num_selected + 1) % num_friends;
77 } else if (key == '\n') {
78 /* Jump to chat window if already open */
79 if (friends[num_selected].chatwin != -1) {
80 set_active_window(friends[num_selected].chatwin);
81 } else {
82 friends[num_selected].chatwin = add_window(m, new_chat(m, num_selected));
83 }
84 }
85}
86
87static void friendlist_onDraw(ToxWindow *self, Messenger *m)
88{
89 curs_set(0);
90 werase(self->window);
91
92 if (num_friends == 0) {
93 wprintw(self->window, "Empty. Add some friends! :-)\n");
94 } else {
95 wattron(self->window, COLOR_PAIR(2) | A_BOLD);
96 wprintw(self->window, "Open chat with.. (up/down keys, enter)\n");
97 wattroff(self->window, COLOR_PAIR(2) | A_BOLD);
98 }
99
100 wprintw(self->window, "\n");
101 int i;
102
103 for (i = 0; i < num_friends; ++i) {
104 if (i == num_selected) wattron(self->window, COLOR_PAIR(3));
105
106 wprintw(self->window, " [#%d] ", friends[i].num);
107
108 if (i == num_selected) wattroff(self->window, COLOR_PAIR(3));
109
110 attron(A_BOLD);
111 wprintw(self->window, "%s ", friends[i].name);
112 attroff(A_BOLD);
113
114 wprintw(self->window, "(%s)\n", friends[i].status);
115 }
116
117 wrefresh(self->window);
118}
119
120void disable_chatwin(int f_num)
121{
122 friends[f_num].chatwin = -1;
123}
124
125static void friendlist_onInit(ToxWindow *self, Messenger *m)
126{
127
128}
129
130ToxWindow new_friendlist()
131{
132 ToxWindow ret;
133 memset(&ret, 0, sizeof(ret));
134
135 ret.onKey = &friendlist_onKey;
136 ret.onDraw = &friendlist_onDraw;
137 ret.onInit = &friendlist_onInit;
138 ret.onMessage = &friendlist_onMessage;
139 ret.onAction = &friendlist_onMessage; // Action has identical behaviour to message
140 ret.onNickChange = &friendlist_onNickChange;
141 ret.onStatusChange = &friendlist_onStatusChange;
142
143 strcpy(ret.title, "[friends]");
144 return ret;
145}