diff options
Diffstat (limited to 'testing/toxic/friendlist.c')
-rw-r--r-- | testing/toxic/friendlist.c | 145 |
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 | |||
16 | typedef 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 | |||
23 | static friend_t friends[MAX_FRIENDS_NUM]; | ||
24 | static int num_friends = 0; | ||
25 | static int num_selected = 0; | ||
26 | |||
27 | |||
28 | void 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 | |||
38 | void 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 | |||
47 | void 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 | |||
56 | int 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 | |||
69 | static 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 | |||
87 | static 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 | |||
120 | void disable_chatwin(int f_num) | ||
121 | { | ||
122 | friends[f_num].chatwin = -1; | ||
123 | } | ||
124 | |||
125 | static void friendlist_onInit(ToxWindow *self, Messenger *m) | ||
126 | { | ||
127 | |||
128 | } | ||
129 | |||
130 | ToxWindow 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 | } | ||