comparison mcabber/src/screen.c @ 84:134fe2567f07

[/trunk] Changeset 98 by mikael * Roster scrolling.
author mikael
date Sun, 17 Apr 2005 19:15:51 +0000
parents 0bd578421ce9
children 9e6b7897ec37
comparison
equal deleted inserted replaced
83:a95e2fc9ea6b 84:134fe2567f07
431 if (!buddylist) { 431 if (!buddylist) {
432 offset = 0; 432 offset = 0;
433 return; 433 return;
434 } 434 }
435 435
436 // TODO: update offset if necessary 436 // Update offset if necessary
437 i = g_list_position(buddylist, current_buddy);
438 if (i == -1) { // This is bad
439 scr_LogPrint("Doh! Can't find current selected buddy!!");
440 return;
441 } else if (i < offset) {
442 offset = i;
443 } else if (i+1 > offset + maxy) {
444 offset = i + 1 - maxy;
445 }
437 446
438 buddy = buddylist; 447 buddy = buddylist;
439 rOffset = offset; 448 rOffset = offset;
440 449
441 for (i=0; i<maxy && buddy; i++, buddy = g_list_next(buddy)) { 450 for (i=0; i<maxy && buddy; buddy = g_list_next(buddy)) {
442 451
443 char status = '?'; 452 char status = '?';
444 char pending = ' '; 453 char pending = ' ';
445 enum imstatus budstate; 454 enum imstatus budstate;
446 455
468 477
469 strncpy(name, buddy_getname(BUDDATA(buddy)), ROSTER_WIDTH-7); 478 strncpy(name, buddy_getname(BUDDATA(buddy)), ROSTER_WIDTH-7);
470 // TODO: status is meaningless for groups: 479 // TODO: status is meaningless for groups:
471 if (buddy_gettype(BUDDATA(buddy)) & ROSTER_TYPE_GROUP) status='G'; 480 if (buddy_gettype(BUDDATA(buddy)) & ROSTER_TYPE_GROUP) status='G';
472 mvwprintw(rosterWnd, i, 0, " %c[%c] %s", pending, status, name); 481 mvwprintw(rosterWnd, i, 0, " %c[%c] %s", pending, status, name);
482
483 i++;
473 } 484 }
474 485
475 update_panels(); 486 update_panels();
476 doupdate(); 487 doupdate();
477 update_roster = FALSE; 488 update_roster = FALSE;