Mercurial > ~mikael > mcabber > hg
comparison mcabber/buddies.c @ 13:4c3d7b8a29c4
[/trunk] Changeset 28 by mikael
* Display pending message indicator in the roaster.
Not very good yet, because it isn't refreshed automatically.
author | mikael |
---|---|
date | Wed, 23 Mar 2005 20:26:08 +0000 |
parents | 3489a75cb115 |
children | c87d8adc9100 |
comparison
equal
deleted
inserted
replaced
12:70ca5b9c648a | 13:4c3d7b8a29c4 |
---|---|
16 int buddySelected = 1; /* Hold the selected Buddy */ | 16 int buddySelected = 1; /* 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 #define buddy_entry(n) list_entry(n, buddy_entry_t, list) | 22 #define buddy_entry(n) list_entry(n, buddy_entry_t, list) |
22 | 23 |
23 | 24 |
24 void bud_SetBuddyStatus(char *jidfrom, int status) | 25 void bud_SetBuddyStatus(char *jidfrom, int status) |
25 { | 26 { |
47 | 48 |
48 case FLAG_BUDDY_CONNECTED: | 49 case FLAG_BUDDY_CONNECTED: |
49 sprintf(buffer, "--> %s %s!", jidfrom, i18n("connected")); | 50 sprintf(buffer, "--> %s %s!", jidfrom, i18n("connected")); |
50 break; | 51 break; |
51 } | 52 } |
52 //scr_WriteInWindow(i18n("status window"), buffer, TRUE); | |
53 scr_LogPrint("%s", buffer); | 53 scr_LogPrint("%s", buffer); |
54 } | 54 } |
55 free(buffer); | 55 free(buffer); |
56 } | 56 } |
57 | 57 |
215 struct list_head *pos, *nn; | 215 struct list_head *pos, *nn; |
216 int i = 1; | 216 int i = 1; |
217 int n; | 217 int n; |
218 int maxx, maxy; | 218 int maxx, maxy; |
219 int fakeOffset = buddyOffset; | 219 int fakeOffset = buddyOffset; |
220 window_entry_t *wintmp; | |
220 | 221 |
221 getmaxyx(win, maxy, maxx); | 222 getmaxyx(win, maxy, maxx); |
222 | 223 |
223 | 224 |
224 /* cleanup of roster window */ | 225 /* cleanup of roster window */ |
231 | 232 |
232 i = 1; | 233 i = 1; |
233 list_for_each_safe(pos, nn, &buddy_list) { | 234 list_for_each_safe(pos, nn, &buddy_list) { |
234 | 235 |
235 char status = '?'; | 236 char status = '?'; |
237 char pending = ' '; | |
236 | 238 |
237 if (fakeOffset > 0) { | 239 if (fakeOffset > 0) { |
238 fakeOffset--; | 240 fakeOffset--; |
239 continue; | 241 continue; |
240 } | 242 } |
241 | 243 |
242 tmp = buddy_entry(pos); | 244 tmp = buddy_entry(pos); |
245 // FIXME: we should create a function instead of exporting this! :-( | |
246 // Cf. revision ~27 | |
247 wintmp = scr_SearchWindow(tmp->jid); | |
248 if (wintmp) | |
249 scr_LogPrint("wintmp != NULL"); | |
250 else | |
251 scr_LogPrint("wintmp == NULL"); | |
252 if ((wintmp) && (wintmp->pending_msg)) { | |
253 pending = '#'; | |
254 } | |
243 | 255 |
244 if ((tmp->flags && FLAG_BUDDY_CONNECTED) == 1) { | 256 if ((tmp->flags && FLAG_BUDDY_CONNECTED) == 1) { |
245 status = 'o'; | 257 status = 'o'; |
246 if (i == (buddySelected - buddyOffset)) | 258 if (i == (buddySelected - buddyOffset)) |
247 wattrset(win, COLOR_PAIR(COLOR_BD_CONSEL)); | 259 wattrset(win, COLOR_PAIR(COLOR_BD_CONSEL)); |
255 } | 267 } |
256 mvwprintw(win, i, 1, ""); | 268 mvwprintw(win, i, 1, ""); |
257 for (n = 2; n < maxx; n++) | 269 for (n = 2; n < maxx; n++) |
258 waddch(win, ' '); | 270 waddch(win, ' '); |
259 //mvwprintw(win, i, (maxx - strlen(tmp->name)) / 2, "%s", tmp->name); | 271 //mvwprintw(win, i, (maxx - strlen(tmp->name)) / 2, "%s", tmp->name); |
260 mvwprintw(win, i, 1, " .[%c] %.12s", status, tmp->name); | 272 mvwprintw(win, i, 1, " %c[%c] %.12s", pending, status, tmp->name); |
261 i++; | 273 i++; |
262 if (i >= maxy - 1) | 274 if (i >= maxy - 1) |
263 break; | 275 break; |
264 } | 276 } |
265 update_panels(); | 277 update_panels(); |