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();