diff options
author | irungentoo <irungentoo@gmail.com> | 2013-08-06 10:16:26 -0400 |
---|---|---|
committer | irungentoo <irungentoo@gmail.com> | 2013-08-06 10:16:26 -0400 |
commit | eacd12385fc775c3c246a1586047d6c2e0166977 (patch) | |
tree | b55fcb88318d13f3fec7a2d57c611f87bc7ae237 /testing/toxic/friendlist.c | |
parent | 611c0af3d69657d75757f60e557e7ad9838a15b5 (diff) | |
parent | 663764e046fa7f83d03138e370ba074fc851909d (diff) |
Merge branch 'master' of https://github.com/JFreegman/ProjectTox-Core into JFreegman-master
Conflicts:
testing/toxic/prompt.c
Diffstat (limited to 'testing/toxic/friendlist.c')
-rw-r--r-- | testing/toxic/friendlist.c | 60 |
1 files changed, 43 insertions, 17 deletions
diff --git a/testing/toxic/friendlist.c b/testing/toxic/friendlist.c index 05651b0e..94e8fb47 100644 --- a/testing/toxic/friendlist.c +++ b/testing/toxic/friendlist.c | |||
@@ -12,11 +12,10 @@ | |||
12 | 12 | ||
13 | #include "windows.h" | 13 | #include "windows.h" |
14 | 14 | ||
15 | extern int add_window(ToxWindow w); | 15 | extern char WINDOW_STATUS[TOXWINDOWS_MAX_NUM]; |
16 | extern int focus_window(int num); | 16 | extern int add_window(ToxWindow w, int n); |
17 | extern ToxWindow new_chat(int friendnum); | 17 | extern ToxWindow new_chat(int friendnum); |
18 | 18 | extern int w_active; | |
19 | #define MAX_FRIENDS_NUM 100 | ||
20 | 19 | ||
21 | typedef struct { | 20 | typedef struct { |
22 | uint8_t name[MAX_NAME_LENGTH]; | 21 | uint8_t name[MAX_NAME_LENGTH]; |
@@ -53,7 +52,17 @@ void friendlist_onMessage(ToxWindow* self, int num, uint8_t* str, uint16_t len) | |||
53 | return; | 52 | return; |
54 | 53 | ||
55 | if(friends[num].chatwin == -1) { | 54 | if(friends[num].chatwin == -1) { |
56 | friends[num].chatwin = add_window(new_chat(num)); | 55 | friends[num].chatwin = num; |
56 | int i; | ||
57 | /* Find first open slot to hold chat window */ | ||
58 | for (i = N_DEFAULT_WINS; i < MAX_WINDOW_SLOTS; i++) { | ||
59 | if (WINDOW_STATUS[i] == -1) { | ||
60 | WINDOW_STATUS[i] = num; | ||
61 | add_window(new_chat(num), i); | ||
62 | w_active = i; | ||
63 | break; | ||
64 | } | ||
65 | } | ||
57 | } | 66 | } |
58 | } | 67 | } |
59 | 68 | ||
@@ -86,29 +95,42 @@ int friendlist_onFriendAdded(int num) { | |||
86 | getname(num, friends[num_friends].name); | 95 | getname(num, friends[num_friends].name); |
87 | strcpy((char*) friends[num_friends].name, "unknown"); | 96 | strcpy((char*) friends[num_friends].name, "unknown"); |
88 | strcpy((char*) friends[num_friends].status, "unknown"); | 97 | strcpy((char*) friends[num_friends].status, "unknown"); |
89 | friends[num_friends].chatwin = -1; | 98 | friends[num_friends++].chatwin = -1; |
90 | |||
91 | num_friends++; | ||
92 | return 0; | 99 | return 0; |
93 | } | 100 | } |
94 | 101 | ||
95 | static void friendlist_onKey(ToxWindow* self, int key) { | 102 | static void friendlist_onKey(ToxWindow* self, int key) { |
96 | |||
97 | if(key == KEY_UP) { | 103 | if(key == KEY_UP) { |
98 | if(num_selected != 0) | 104 | num_selected--; |
99 | num_selected--; | 105 | if (num_selected < 0) |
106 | num_selected = num_friends-1; | ||
100 | } | 107 | } |
101 | else if(key == KEY_DOWN) { | 108 | else if(key == KEY_DOWN) { |
102 | if(num_friends != 0) | 109 | if(num_friends != 0) |
103 | num_selected = (num_selected+1) % num_friends; | 110 | num_selected = (num_selected+1) % num_friends; |
104 | } | 111 | } |
105 | else if(key == '\n') { | 112 | else if(key == '\n') { |
106 | 113 | /* Jump to chat window if already open */ | |
107 | if(friends[num_selected].chatwin != -1) | 114 | if (friends[num_selected].chatwin != -1) { |
108 | return; | 115 | int i; |
109 | 116 | for (i = N_DEFAULT_WINS; i < MAX_WINDOW_SLOTS; i++) { | |
110 | friends[num_selected].chatwin = add_window(new_chat(num_selected)); | 117 | if (WINDOW_STATUS[i] == num_selected) { |
111 | focus_window(friends[num_selected].chatwin); | 118 | w_active = i; |
119 | break; | ||
120 | } | ||
121 | } | ||
122 | }else { | ||
123 | int i; | ||
124 | for (i = N_DEFAULT_WINS; i < MAX_WINDOW_SLOTS; i++) { | ||
125 | if (WINDOW_STATUS[i] == -1) { | ||
126 | WINDOW_STATUS[i] = num_selected; | ||
127 | friends[num_selected].chatwin = num_selected; | ||
128 | add_window(new_chat(num_selected), i); | ||
129 | w_active = i; | ||
130 | break; | ||
131 | } | ||
132 | } | ||
133 | } | ||
112 | } | 134 | } |
113 | } | 135 | } |
114 | 136 | ||
@@ -145,6 +167,10 @@ static void friendlist_onDraw(ToxWindow* self) { | |||
145 | wrefresh(self->window); | 167 | wrefresh(self->window); |
146 | } | 168 | } |
147 | 169 | ||
170 | void disable_chatwin(int f_num) { | ||
171 | friends[f_num].chatwin = -1; | ||
172 | } | ||
173 | |||
148 | static void friendlist_onInit(ToxWindow* self) { | 174 | static void friendlist_onInit(ToxWindow* self) { |
149 | 175 | ||
150 | } | 176 | } |