Mercurial > hg
comparison mcabber/src/buddies.c @ 74:b392112ab995
[/trunk] Changeset 88 by mikael
* Switch to using hbuf, the new history buffer implementation.
* I've had to rewrite some parts of the interface, and I have removed
the frames for the roster and the chat window.
* The wrapping is not perfect, as the prefix is not yet treated separately...
* Seems to be a display problem when receiving UTF-8, too. :-(
author | mikael |
---|---|
date | Sat, 16 Apr 2005 16:37:31 +0000 |
parents | 5654c4231de1 |
children |
comparison
equal
deleted
inserted
replaced
73:1fc66b6c08ef | 74:b392112ab995 |
---|---|
11 #include "list.h" | 11 #include "list.h" |
12 | 12 |
13 #define STR_EMPTY(s) ((s)[0] == '\0') | 13 #define STR_EMPTY(s) ((s)[0] == '\0') |
14 | 14 |
15 /* global vars for BUDDIES.C */ | 15 /* global vars for BUDDIES.C */ |
16 int buddySelected = 1; /* Hold the selected Buddy */ | 16 int buddySelected = 0; /* Hold the selected Buddy */ |
17 int buddyOffset = 0; /* Hold the roster offset */ | 17 int buddyOffset = 0; /* Hold the roster offset */ |
18 | 18 |
19 static LIST_HEAD(buddy_list); | 19 static LIST_HEAD(buddy_list); |
20 static LIST_HEAD(sorted_buddies); | 20 static LIST_HEAD(sorted_buddies); |
21 | 21 |
124 struct list_head *pos, *nn; | 124 struct list_head *pos, *nn; |
125 int i = 1; | 125 int i = 1; |
126 int n; | 126 int n; |
127 int maxx, maxy; | 127 int maxx, maxy; |
128 int fakeOffset = buddyOffset; | 128 int fakeOffset = buddyOffset; |
129 char name[ROSTER_WEIGHT]; | 129 char name[ROSTER_WIDTH]; |
130 | 130 |
131 getmaxyx(win, maxy, maxx); | 131 getmaxyx(win, maxy, maxx); |
132 name[ROSTER_WEIGHT-8] = 0; | 132 maxx --; // last char is for vertical border |
133 name[ROSTER_WIDTH-8] = 0; | |
133 | 134 |
134 /* cleanup of roster window */ | 135 /* cleanup of roster window */ |
135 wattrset(win, COLOR_PAIR(COLOR_GENERAL)); | 136 wattrset(win, COLOR_PAIR(COLOR_GENERAL)); |
136 for (i = 1; i < maxy - 1; i++) { | 137 for (i = 0; i < maxy; i++) { |
137 mvwprintw(win, i, 1, ""); | 138 mvwprintw(win, i, 0, ""); |
138 for (n = 2; n < maxx; n++) | 139 for (n = 0; n < maxx; n++) |
139 waddch(win, ' '); | 140 waddch(win, ' '); |
140 } | 141 } |
141 | 142 |
142 i = 1; | 143 i = 0; |
143 list_for_each_safe(pos, nn, &buddy_list) { | 144 list_for_each_safe(pos, nn, &buddy_list) { |
144 | 145 |
145 char status = '?'; | 146 char status = '?'; |
146 char pending = ' '; | 147 char pending = ' '; |
147 | 148 |
167 if (i == (buddySelected - buddyOffset)) | 168 if (i == (buddySelected - buddyOffset)) |
168 wattrset(win, COLOR_PAIR(COLOR_BD_DESSEL)); | 169 wattrset(win, COLOR_PAIR(COLOR_BD_DESSEL)); |
169 else | 170 else |
170 wattrset(win, COLOR_PAIR(COLOR_BD_DES)); | 171 wattrset(win, COLOR_PAIR(COLOR_BD_DES)); |
171 } | 172 } |
172 mvwprintw(win, i, 1, ""); | 173 mvwprintw(win, i, 0, ""); |
173 for (n = 2; n < maxx; n++) | 174 for (n = 2; n < maxx; n++) |
174 waddch(win, ' '); | 175 waddch(win, ' '); |
175 strncpy(name, tmp->name, ROSTER_WEIGHT-8); | 176 strncpy(name, tmp->name, ROSTER_WIDTH-8); |
176 mvwprintw(win, i, 1, " %c[%c] %s", pending, status, name); | 177 mvwprintw(win, i, 0, " %c[%c] %s", pending, status, name); |
177 i++; | 178 i++; |
178 if (i >= maxy - 1) | 179 if (i >= maxy - 1) |
179 break; | 180 break; |
180 } | 181 } |
181 update_panels(); | 182 update_panels(); |
193 */ | 194 */ |
194 void bud_RosterDown(void) | 195 void bud_RosterDown(void) |
195 { | 196 { |
196 int x, y; | 197 int x, y; |
197 getmaxyx(scr_GetRosterWindow(), y, x); | 198 getmaxyx(scr_GetRosterWindow(), y, x); |
198 y -= 2; | 199 |
199 | 200 if (buddySelected+1 < bud_BuddyCount()) { |
200 if (buddySelected < bud_BuddyCount()) { | |
201 buddySelected++; | 201 buddySelected++; |
202 if (buddySelected > y) | 202 if (buddySelected > y) |
203 buddyOffset++; | 203 buddyOffset++; |
204 bud_DrawRoster(scr_GetRosterWindow()); | 204 bud_DrawRoster(scr_GetRosterWindow()); |
205 } | 205 } |
212 * | 212 * |
213 * Note: none | 213 * Note: none |
214 */ | 214 */ |
215 void bud_RosterUp(void) | 215 void bud_RosterUp(void) |
216 { | 216 { |
217 if (buddySelected > 1) { | 217 if (buddySelected > 0) { |
218 buddySelected--; | 218 buddySelected--; |
219 if (buddySelected - buddyOffset < 1) | 219 if (buddySelected < buddyOffset) |
220 buddyOffset--; | 220 buddyOffset--; |
221 bud_DrawRoster(scr_GetRosterWindow()); | 221 bud_DrawRoster(scr_GetRosterWindow()); |
222 } | 222 } |
223 } | 223 } |
224 | 224 |
236 | 236 |
237 int i = 0; | 237 int i = 0; |
238 | 238 |
239 list_for_each_safe(pos, n, &buddy_list) { | 239 list_for_each_safe(pos, n, &buddy_list) { |
240 tmp = buddy_entry(pos); | 240 tmp = buddy_entry(pos); |
241 if (i == buddySelected - 1) { | 241 if (i == buddySelected) { |
242 return tmp; | 242 return tmp; |
243 } | 243 } |
244 i++; | 244 i++; |
245 } | 245 } |
246 return NULL; | 246 return NULL; |