Mercurial > ~mikael > mcabber > hg
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; |