Mercurial > ~mikael > mcabber > hg
comparison mcabber/screen.c @ 11:b8815158a45d
[/trunk] Changeset 26 by mikael
* Solve some display problems by introducing "force_show" parameter in
the scr_WriteInWindow() function. (Ugly, yes...)
* Do not display title for Status/Chat window
author | mikael |
---|---|
date | Sun, 20 Mar 2005 22:40:56 +0000 |
parents | 455ab6bc14ac |
children | 70ca5b9c648a |
comparison
equal
deleted
inserted
replaced
10:3489a75cb115 | 11:b8815158a45d |
---|---|
35 static PANEL *rosterPanel, *chatPanel, *inputPanel; | 35 static PANEL *rosterPanel, *chatPanel, *inputPanel; |
36 static PANEL *logPanel, *logPanel_border; | 36 static PANEL *logPanel, *logPanel_border; |
37 static int maxY, maxX; | 37 static int maxY, maxX; |
38 static window_entry_t *currentWindow; | 38 static window_entry_t *currentWindow; |
39 | 39 |
40 char inputLine[INPUTLINE_LENGTH]; | 40 static char inputLine[INPUTLINE_LENGTH]; |
41 char *ptr_inputline; | 41 static char *ptr_inputline; |
42 | 42 |
43 | 43 |
44 /* Funciones */ | 44 /* Funciones */ |
45 | 45 |
46 int scr_WindowHeight(WINDOW * win) | 46 int scr_WindowHeight(WINDOW * win) |
167 tmp->panel = new_panel(tmp->win); | 167 tmp->panel = new_panel(tmp->win); |
168 tmp->name = (char *) calloc(1, 1024); | 168 tmp->name = (char *) calloc(1, 1024); |
169 strncpy(tmp->name, title, 1024); | 169 strncpy(tmp->name, title, 1024); |
170 | 170 |
171 scr_draw_box(tmp->win, 0, 0, lines, cols, COLOR_GENERAL, 0, 0); | 171 scr_draw_box(tmp->win, 0, 0, lines, cols, COLOR_GENERAL, 0, 0); |
172 mvwprintw(tmp->win, 0, (cols - (2 + strlen(title))) / 2, " %s ", title); | 172 //mvwprintw(tmp->win, 0, (cols - (2 + strlen(title))) / 2, " %s ", title); |
173 if (!dont_show) { | 173 if ((!dont_show)) { |
174 currentWindow = tmp; | 174 currentWindow = tmp; |
175 } else { | 175 } else { |
176 if (currentWindow) | 176 if (currentWindow) |
177 top_panel(currentWindow->panel); | 177 top_panel(currentWindow->panel); |
178 else | 178 else |
350 mvwprintw(tmp->win, n + 1, 1, "%s", tmp->texto[n]); | 350 mvwprintw(tmp->win, n + 1, 1, "%s", tmp->texto[n]); |
351 } | 351 } |
352 //move(CHAT_WIN_HEIGHT - 1, maxX - 1); | 352 //move(CHAT_WIN_HEIGHT - 1, maxX - 1); |
353 update_panels(); | 353 update_panels(); |
354 doupdate(); | 354 doupdate(); |
355 } else { | |
356 top_panel(chatPanel); | |
357 currentWindow = tmp; | |
355 } | 358 } |
356 } | 359 } |
357 | 360 |
358 void scr_ShowBuddyWindow(void) | 361 void scr_ShowBuddyWindow(void) |
359 { | 362 { |
360 buddy_entry_t *tmp = bud_SelectedInfo(); | 363 buddy_entry_t *tmp = bud_SelectedInfo(); |
361 if (tmp->jid != NULL) | 364 if (tmp->jid != NULL) |
362 scr_ShowWindow(tmp->jid); | 365 scr_ShowWindow(tmp->jid); |
363 } | 366 top_panel(inputPanel); |
364 | 367 } |
365 | 368 |
366 void scr_WriteInWindow(char *winId, char *texto, int TimeStamp) | 369 |
370 void scr_WriteInWindow(char *winId, char *texto, int TimeStamp, int force_show) | |
367 { | 371 { |
368 time_t ahora; | 372 time_t ahora; |
369 int n; | 373 int n; |
370 int i; | 374 int i; |
371 int width; | 375 int width; |
373 int dont_show = FALSE; | 377 int dont_show = FALSE; |
374 | 378 |
375 | 379 |
376 tmp = scr_SearchWindow(winId); | 380 tmp = scr_SearchWindow(winId); |
377 | 381 |
378 if (!currentWindow || (currentWindow != tmp)) | 382 if ((!force_show) && ((!currentWindow || (currentWindow != tmp)))) |
379 dont_show = TRUE; | 383 dont_show = TRUE; |
380 scr_LogPrint("dont_show=%d", dont_show); | 384 scr_LogPrint("dont_show=%d", dont_show); |
381 | 385 |
382 if (tmp == NULL) { | 386 if (tmp == NULL) { |
383 tmp = scr_CreatePanel(winId, 20, 0, CHAT_WIN_HEIGHT, maxX - 20, dont_show); | 387 tmp = scr_CreatePanel(winId, 20, 0, CHAT_WIN_HEIGHT, maxX - 20, dont_show); |
464 i18n("Roster")); | 468 i18n("Roster")); |
465 | 469 |
466 chatWnd = newwin(CHAT_WIN_HEIGHT, maxX - 20, 0, 20); | 470 chatWnd = newwin(CHAT_WIN_HEIGHT, maxX - 20, 0, 20); |
467 chatPanel = new_panel(chatWnd); | 471 chatPanel = new_panel(chatWnd); |
468 scr_draw_box(chatWnd, 0, 0, CHAT_WIN_HEIGHT, maxX - 20, COLOR_GENERAL, 0, 0); | 472 scr_draw_box(chatWnd, 0, 0, CHAT_WIN_HEIGHT, maxX - 20, COLOR_GENERAL, 0, 0); |
469 mvwprintw(chatWnd, 0, | 473 //mvwprintw(chatWnd, 0, |
470 ((maxX - 20) - strlen(i18n("Status Window"))) / 2, | 474 // ((maxX - 20) - strlen(i18n("Status Window"))) / 2, |
471 i18n("Status Window")); | 475 // i18n("Status Window")); |
472 //wbkgd(chatWnd, COLOR_PAIR(COLOR_GENERAL)); | 476 //wbkgd(chatWnd, COLOR_PAIR(COLOR_GENERAL)); |
473 | 477 |
474 logWnd_border = newwin(LOG_WIN_HEIGHT, maxX - 20, CHAT_WIN_HEIGHT, 20); | 478 logWnd_border = newwin(LOG_WIN_HEIGHT, maxX - 20, CHAT_WIN_HEIGHT, 20); |
475 logPanel_border = new_panel(logWnd_border); | 479 logPanel_border = new_panel(logWnd_border); |
476 scr_draw_box(logWnd_border, 0, 0, LOG_WIN_HEIGHT, maxX - 20, COLOR_GENERAL, 0, 0); | 480 scr_draw_box(logWnd_border, 0, 0, LOG_WIN_HEIGHT, maxX - 20, COLOR_GENERAL, 0, 0); |
517 submsgs = | 521 submsgs = |
518 ut_SplitMessage(buffer, &n, maxX - scr_WindowHeight(rosterWnd) - 20); | 522 ut_SplitMessage(buffer, &n, maxX - scr_WindowHeight(rosterWnd) - 20); |
519 | 523 |
520 for (i = 0; i < n; i++) { | 524 for (i = 0; i < n; i++) { |
521 if (i == 0) | 525 if (i == 0) |
522 scr_WriteInWindow(jidfrom, submsgs[i], TRUE); | 526 scr_WriteInWindow(jidfrom, submsgs[i], TRUE, FALSE); |
523 else | 527 else |
524 scr_WriteInWindow(jidfrom, submsgs[i], FALSE); | 528 scr_WriteInWindow(jidfrom, submsgs[i], FALSE, FALSE); |
525 } | 529 } |
526 | 530 |
527 for (i = 0; i < n; i++) | 531 for (i = 0; i < n; i++) |
528 free(submsgs[i]); | 532 free(submsgs[i]); |
529 | 533 |
556 submsgs = | 560 submsgs = |
557 ut_SplitMessage(buffer2, &n, | 561 ut_SplitMessage(buffer2, &n, |
558 maxX - scr_WindowHeight(rosterWnd) - 20); | 562 maxX - scr_WindowHeight(rosterWnd) - 20); |
559 for (i = 0; i < n; i++) { | 563 for (i = 0; i < n; i++) { |
560 if (i == 0) | 564 if (i == 0) |
561 scr_WriteInWindow(tmp->jid, submsgs[i], TRUE); | 565 scr_WriteInWindow(tmp->jid, submsgs[i], TRUE, TRUE); |
562 else | 566 else |
563 scr_WriteInWindow(tmp->jid, submsgs[i], FALSE); | 567 scr_WriteInWindow(tmp->jid, submsgs[i], FALSE, TRUE); |
564 } | 568 } |
565 | 569 |
566 for (i = 0; i < n; i++) | 570 for (i = 0; i < n; i++) |
567 free(submsgs[i]); | 571 free(submsgs[i]); |
568 free(submsgs); | 572 free(submsgs); |
616 vsnprintf(buffer, 4096, fmt, ap); | 620 vsnprintf(buffer, 4096, fmt, ap); |
617 va_end(ap); | 621 va_end(ap); |
618 | 622 |
619 wprintw(logWnd, "%s", buffer); | 623 wprintw(logWnd, "%s", buffer); |
620 free(buffer); | 624 free(buffer); |
625 | |
626 update_panels(); | |
627 doupdate(); | |
621 } | 628 } |
622 | 629 |
623 | 630 |
624 void send_message(int sock, char *msg) | 631 void send_message(int sock, char *msg) |
625 { | 632 { |
636 submsgs = | 643 submsgs = |
637 ut_SplitMessage(buffer, &n, | 644 ut_SplitMessage(buffer, &n, |
638 maxX - scr_WindowHeight(rosterWnd) - 20); | 645 maxX - scr_WindowHeight(rosterWnd) - 20); |
639 for (i = 0; i < n; i++) { | 646 for (i = 0; i < n; i++) { |
640 if (i == 0) | 647 if (i == 0) |
641 scr_WriteInWindow(tmp->jid, submsgs[i], TRUE); | 648 scr_WriteInWindow(tmp->jid, submsgs[i], TRUE, TRUE); |
642 else | 649 else |
643 scr_WriteInWindow(tmp->jid, submsgs[i], FALSE); | 650 scr_WriteInWindow(tmp->jid, submsgs[i], FALSE, TRUE); |
644 } | 651 } |
645 | 652 |
646 for (i = 0; i < n; i++) | 653 for (i = 0; i < n; i++) |
647 free(submsgs[i]); | 654 free(submsgs[i]); |
648 free(submsgs); | 655 free(submsgs); |
715 *ptr_inputline = 0; | 722 *ptr_inputline = 0; |
716 break; | 723 break; |
717 case KEY_UP: | 724 case KEY_UP: |
718 bud_RosterUp(); | 725 bud_RosterUp(); |
719 scr_ShowBuddyWindow(); | 726 scr_ShowBuddyWindow(); |
720 top_panel(inputPanel); | |
721 break; | 727 break; |
722 case KEY_DOWN: | 728 case KEY_DOWN: |
723 bud_RosterDown(); | 729 bud_RosterDown(); |
724 scr_ShowBuddyWindow(); | 730 scr_ShowBuddyWindow(); |
725 top_panel(inputPanel); | |
726 break; | 731 break; |
727 case KEY_PPAGE: | 732 case KEY_PPAGE: |
728 scr_LogPrint("PageUp??"); | 733 scr_LogPrint("PageUp??"); |
729 break; | 734 break; |
730 case KEY_NPAGE: | 735 case KEY_NPAGE: |