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;