summaryrefslogtreecommitdiff
path: root/testing/toxic/windows.c
diff options
context:
space:
mode:
authorirungentoo <irungentoo@gmail.com>2013-08-16 13:11:09 -0400
committerirungentoo <irungentoo@gmail.com>2013-08-16 13:11:09 -0400
commit88ff81d9def5efe69cbaf91aa41906177ba7dde9 (patch)
treecb9f149e438bcd1f18d8c1eb5d8be6b0a22f58a4 /testing/toxic/windows.c
parentc5af8f44a9d040a0bbe0442ec074d9fc8562dd32 (diff)
Passed everything through astyle.
Diffstat (limited to 'testing/toxic/windows.c')
-rw-r--r--testing/toxic/windows.c340
1 files changed, 183 insertions, 157 deletions
diff --git a/testing/toxic/windows.c b/testing/toxic/windows.c
index 15caddf7..183c0f9b 100644
--- a/testing/toxic/windows.c
+++ b/testing/toxic/windows.c
@@ -14,232 +14,258 @@ static ToxWindow windows[MAX_WINDOW_SLOTS];
14static Messenger *m; 14static Messenger *m;
15int active_window; 15int active_window;
16 16
17static ToxWindow* prompt; 17static ToxWindow *prompt;
18 18
19/* CALLBACKS START */ 19/* CALLBACKS START */
20void on_request(uint8_t *public_key, uint8_t *data, uint16_t length, void* userdata) 20void on_request(uint8_t *public_key, uint8_t *data, uint16_t length, void *userdata)
21{ 21{
22 int n = add_req(public_key); 22 int n = add_req(public_key);
23 wprintw(prompt->window, "\nFriend request from:\n"); 23 wprintw(prompt->window, "\nFriend request from:\n");
24 24
25 int i; 25 int i;
26 for (i = 0; i < KEY_SIZE_BYTES; ++i) {
27 wprintw(prompt->window, "%02x", public_key[i] & 0xff);
28 }
29 26
30 wprintw(prompt->window, "\nWith the message: %s\n", data); 27 for (i = 0; i < KEY_SIZE_BYTES; ++i) {
31 wprintw(prompt->window, "\nUse \"accept %d\" to accept it.\n", n); 28 wprintw(prompt->window, "%02x", public_key[i] & 0xff);
29 }
30
31 wprintw(prompt->window, "\nWith the message: %s\n", data);
32 wprintw(prompt->window, "\nUse \"accept %d\" to accept it.\n", n);
32 33
33 for (i = 0; i < MAX_WINDOW_SLOTS; ++i) { 34 for (i = 0; i < MAX_WINDOW_SLOTS; ++i) {
34 if (windows[i].onFriendRequest != NULL) 35 if (windows[i].onFriendRequest != NULL)
35 windows[i].onFriendRequest(&windows[i], public_key, data, length); 36 windows[i].onFriendRequest(&windows[i], public_key, data, length);
36 } 37 }
37} 38}
38 39
39void on_message(Messenger *m, int friendnumber, uint8_t *string, uint16_t length, void* userdata) 40void on_message(Messenger *m, int friendnumber, uint8_t *string, uint16_t length, void *userdata)
40{ 41{
41 int i; 42 int i;
42 for (i = 0; i < MAX_WINDOW_SLOTS; ++i) { 43
43 if (windows[i].onMessage != NULL) 44 for (i = 0; i < MAX_WINDOW_SLOTS; ++i) {
44 windows[i].onMessage(&windows[i], m, friendnumber, string, length); 45 if (windows[i].onMessage != NULL)
45 } 46 windows[i].onMessage(&windows[i], m, friendnumber, string, length);
47 }
46} 48}
47 49
48void on_action(Messenger *m, int friendnumber, uint8_t *string, uint16_t length, void* userdata) 50void on_action(Messenger *m, int friendnumber, uint8_t *string, uint16_t length, void *userdata)
49{ 51{
50 int i; 52 int i;
51 for (i = 0; i < MAX_WINDOW_SLOTS; ++i) { 53
52 if (windows[i].onAction != NULL) 54 for (i = 0; i < MAX_WINDOW_SLOTS; ++i) {
53 windows[i].onAction(&windows[i], m, friendnumber, string, length); 55 if (windows[i].onAction != NULL)
54 } 56 windows[i].onAction(&windows[i], m, friendnumber, string, length);
57 }
55} 58}
56 59
57void on_nickchange(Messenger *m, int friendnumber, uint8_t *string, uint16_t length, void* userdata) 60void on_nickchange(Messenger *m, int friendnumber, uint8_t *string, uint16_t length, void *userdata)
58{ 61{
59 wprintw(prompt->window, "\n(nickchange) %d: %s\n", friendnumber, string); 62 wprintw(prompt->window, "\n(nickchange) %d: %s\n", friendnumber, string);
60 int i; 63 int i;
61 for (i = 0; i < MAX_WINDOW_SLOTS; ++i) { 64
62 if (windows[i].onNickChange != NULL) 65 for (i = 0; i < MAX_WINDOW_SLOTS; ++i) {
63 windows[i].onNickChange(&windows[i], friendnumber, string, length); 66 if (windows[i].onNickChange != NULL)
64 } 67 windows[i].onNickChange(&windows[i], friendnumber, string, length);
68 }
65} 69}
66 70
67void on_statuschange(Messenger *m, int friendnumber, uint8_t *string, uint16_t length, void* userdata) 71void on_statuschange(Messenger *m, int friendnumber, uint8_t *string, uint16_t length, void *userdata)
68{ 72{
69 wprintw(prompt->window, "\n(statuschange) %d: %s\n", friendnumber, string); 73 wprintw(prompt->window, "\n(statuschange) %d: %s\n", friendnumber, string);
70 int i; 74 int i;
71 for (i=0; i<MAX_WINDOW_SLOTS; ++i) { 75
72 if (windows[i].onStatusChange != NULL) 76 for (i = 0; i < MAX_WINDOW_SLOTS; ++i) {
73 windows[i].onStatusChange(&windows[i], friendnumber, string, length); 77 if (windows[i].onStatusChange != NULL)
74 } 78 windows[i].onStatusChange(&windows[i], friendnumber, string, length);
79 }
75} 80}
76 81
77void on_friendadded(Messenger *m, int friendnumber) 82void on_friendadded(Messenger *m, int friendnumber)
78{ 83{
79 friendlist_onFriendAdded(m, friendnumber); 84 friendlist_onFriendAdded(m, friendnumber);
80 if (store_data(m, DATA_FILE) != 0) { 85
81 wprintw(prompt->window, "\nCould not store Messenger data\n"); 86 if (store_data(m, DATA_FILE) != 0) {
82 } 87 wprintw(prompt->window, "\nCould not store Messenger data\n");
88 }
83} 89}
84/* CALLBACKS END */ 90/* CALLBACKS END */
85 91
86int add_window(Messenger *m, ToxWindow w, int n) 92int add_window(Messenger *m, ToxWindow w, int n)
87{ 93{
88 if (w_num >= TOXWINDOWS_MAX_NUM) 94 if (w_num >= TOXWINDOWS_MAX_NUM)
89 return -1; 95 return -1;
96
97 if (LINES < 2)
98 return -1;
90 99
91 if (LINES < 2) 100 w.window = newwin(LINES - 2, COLS, 0, 0);
92 return -1;
93 101
94 w.window = newwin(LINES - 2, COLS, 0, 0); 102 if (w.window == NULL)
95 if (w.window == NULL) 103 return -1;
96 return -1;
97 104
98 windows[n] = w; 105 windows[n] = w;
99 w.onInit(&w, m); 106 w.onInit(&w, m);
100 w_num++; 107 w_num++;
101 active_window = n; 108 active_window = n;
102 return n; 109 return n;
103} 110}
104 111
105/* Deletes window w and cleans up */ 112/* Deletes window w and cleans up */
106void del_window(ToxWindow *w, int f_num) 113void del_window(ToxWindow *w, int f_num)
107{ 114{
108 active_window = 0; // Go to prompt screen 115 active_window = 0; // Go to prompt screen
109 delwin(w->window); 116 delwin(w->window);
110 int i; 117 int i;
111 for (i = N_DEFAULT_WINS; i < MAX_WINDOW_SLOTS; ++i) { 118
112 if (WINDOW_STATUS[i] == f_num) { 119 for (i = N_DEFAULT_WINS; i < MAX_WINDOW_SLOTS; ++i) {
113 WINDOW_STATUS[i] = -1; 120 if (WINDOW_STATUS[i] == f_num) {
114 disable_chatwin(f_num); 121 WINDOW_STATUS[i] = -1;
115 break; 122 disable_chatwin(f_num);
123 break;
124 }
116 } 125 }
117 } 126
118 clear(); 127 clear();
119 refresh(); 128 refresh();
120} 129}
121 130
122/* Shows next window when tab or back-tab is pressed */ 131/* Shows next window when tab or back-tab is pressed */
123void set_active_window(int ch) 132void set_active_window(int ch)
124{ 133{
125 int f_inf = 0; 134 int f_inf = 0;
126 int max = MAX_WINDOW_SLOTS-1; 135 int max = MAX_WINDOW_SLOTS - 1;
127 if (ch == '\t') { 136
128 int i = (active_window + 1) % max; 137 if (ch == '\t') {
129 while (true) { 138 int i = (active_window + 1) % max;
130 if (WINDOW_STATUS[i] != -1) { 139
131 active_window = i; 140 while (true) {
132 return; 141 if (WINDOW_STATUS[i] != -1) {
133 } 142 active_window = i;
134 i = (i + 1) % max; 143 return;
135 if (f_inf++ > max) { // infinite loop check 144 }
136 endwin(); 145
137 exit(2); 146 i = (i + 1) % max;
138 } 147
139 } 148 if (f_inf++ > max) { // infinite loop check
140 }else { 149 endwin();
141 int i = active_window - 1; 150 exit(2);
142 if (i < 0) i = max; 151 }
143 while (true) { 152 }
144 if (WINDOW_STATUS[i] != -1) { 153 } else {
145 active_window = i; 154 int i = active_window - 1;
146 return; 155
147 } 156 if (i < 0) i = max;
148 if (--i < 0) i = max; 157
149 if (f_inf++ > max) { 158 while (true) {
150 endwin(); 159 if (WINDOW_STATUS[i] != -1) {
151 exit(2); 160 active_window = i;
152 } 161 return;
162 }
163
164 if (--i < 0) i = max;
165
166 if (f_inf++ > max) {
167 endwin();
168 exit(2);
169 }
170 }
153 } 171 }
154 }
155} 172}
156 173
157void init_window_status() 174void init_window_status()
158{ 175{
159 /* Default window values decrement from -2 */ 176 /* Default window values decrement from -2 */
160 int i; 177 int i;
161 for (i = 0; i < N_DEFAULT_WINS; ++i) 178
162 WINDOW_STATUS[i] = -(i+2); 179 for (i = 0; i < N_DEFAULT_WINS; ++i)
163 180 WINDOW_STATUS[i] = -(i + 2);
164 int j; 181
165 for (j = N_DEFAULT_WINS; j < MAX_WINDOW_SLOTS; j++) 182 int j;
166 WINDOW_STATUS[j] = -1; 183
184 for (j = N_DEFAULT_WINS; j < MAX_WINDOW_SLOTS; j++)
185 WINDOW_STATUS[j] = -1;
167} 186}
168 187
169ToxWindow *init_windows() 188ToxWindow *init_windows()
170{ 189{
171 w_num = 0; 190 w_num = 0;
172 int n_prompt = 0; 191 int n_prompt = 0;
173 int n_friendslist = 1; 192 int n_friendslist = 1;
174 int n_dhtstatus = 2; 193 int n_dhtstatus = 2;
175 if (add_window(m, new_prompt(on_friendadded), n_prompt) == -1 194
176 || add_window(m, new_friendlist(WINDOW_STATUS), n_friendslist) == -1 195 if (add_window(m, new_prompt(on_friendadded), n_prompt) == -1
177 || add_window(m, new_dhtstatus(), n_dhtstatus) == -1) { 196 || add_window(m, new_friendlist(WINDOW_STATUS), n_friendslist) == -1
178 fprintf(stderr, "add_window() failed.\n"); 197 || add_window(m, new_dhtstatus(), n_dhtstatus) == -1) {
179 endwin(); 198 fprintf(stderr, "add_window() failed.\n");
180 exit(1); 199 endwin();
181 } 200 exit(1);
182 active_window = n_prompt; 201 }
183 prompt = &windows[n_prompt]; 202
184 return prompt; 203 active_window = n_prompt;
204 prompt = &windows[n_prompt];
205 return prompt;
185} 206}
186 207
187static void draw_bar() 208static void draw_bar()
188{ 209{
189 static int odd = 0; 210 static int odd = 0;
190 int blinkrate = 30; 211 int blinkrate = 30;
212
213 attron(COLOR_PAIR(4));
214 mvhline(LINES - 2, 0, '_', COLS);
215 attroff(COLOR_PAIR(4));
216
217 move(LINES - 1, 0);
218
219 attron(COLOR_PAIR(4) | A_BOLD);
220 printw(" TOXIC " TOXICVER "|");
221 attroff(COLOR_PAIR(4) | A_BOLD);
191 222
192 attron(COLOR_PAIR(4)); 223 int i;
193 mvhline(LINES - 2, 0, '_', COLS);
194 attroff(COLOR_PAIR(4));
195 224
196 move(LINES - 1, 0); 225 for (i = 0; i < (MAX_WINDOW_SLOTS); ++i) {
226 if (WINDOW_STATUS[i] != -1) {
227 if (i == active_window)
228 attron(A_BOLD);
197 229
198 attron(COLOR_PAIR(4) | A_BOLD); 230 odd = (odd + 1) % blinkrate;
199 printw(" TOXIC " TOXICVER "|");
200 attroff(COLOR_PAIR(4) | A_BOLD);
201 231
202 int i; 232 if (windows[i].blink && (odd < (blinkrate / 2)))
203 for (i = 0; i < (MAX_WINDOW_SLOTS); ++i) { 233 attron(COLOR_PAIR(3));
204 if (WINDOW_STATUS[i] != -1) {
205 if (i == active_window)
206 attron(A_BOLD);
207 234
208 odd = (odd+1) % blinkrate; 235 printw(" %s", windows[i].title);
209 if (windows[i].blink && (odd < (blinkrate/2)))
210 attron(COLOR_PAIR(3));
211 236
212 printw(" %s", windows[i].title); 237 if (windows[i].blink && (odd < (blinkrate / 2)))
213 if (windows[i].blink && (odd < (blinkrate/2))) 238 attroff(COLOR_PAIR(3));
214 attroff(COLOR_PAIR(3));
215 239
216 if (i == active_window) { 240 if (i == active_window) {
217 attroff(A_BOLD); 241 attroff(A_BOLD);
218 } 242 }
243 }
219 } 244 }
220 } 245
221 refresh(); 246 refresh();
222} 247}
223 248
224void prepare_window(WINDOW *w) 249void prepare_window(WINDOW *w)
225{ 250{
226 mvwin(w, 0, 0); 251 mvwin(w, 0, 0);
227 wresize(w, LINES-2, COLS); 252 wresize(w, LINES - 2, COLS);
228} 253}
229 254
230void draw_active_window(Messenger *m) 255void draw_active_window(Messenger *m)
231{ 256{
232 257
233 ToxWindow *a = &windows[active_window]; 258 ToxWindow *a = &windows[active_window];
234 prepare_window(a->window); 259 prepare_window(a->window);
235 a->blink = false; 260 a->blink = false;
236 draw_bar(); 261 draw_bar();
237 a->onDraw(a); 262 a->onDraw(a);
238 263
239 /* Handle input */ 264 /* Handle input */
240 int ch = getch(); 265 int ch = getch();
241 if (ch == '\t' || ch == KEY_BTAB) 266
242 set_active_window(ch); 267 if (ch == '\t' || ch == KEY_BTAB)
243 else if (ch != ERR) 268 set_active_window(ch);
244 a->onKey(a, m, ch); 269 else if (ch != ERR)
270 a->onKey(a, m, ch);
245} 271}