mcabber/buddies.c
changeset 13 4c3d7b8a29c4
parent 10 3489a75cb115
child 14 c87d8adc9100
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();