From: Pasi Kallinen Date: Mon, 3 May 2010 19:15:09 +0000 (+0000) Subject: Move watching-menu column info into struct. X-Git-Tag: v1.6.1-roc-dev~161 X-Git-Url: https://skyeroc.xyz/gitweb/?a=commitdiff_plain;h=124161588a942cdfde89f2afbacfd38b2bc2910c;p=dgamelaunch Move watching-menu column info into struct. git-svn-id: svn://katsu.triplehelix.org/dgamelaunch/trunk@549 db0b04b0-f4d1-0310-9a6d-de3e77497b0e --- diff --git a/dgamelaunch.c b/dgamelaunch.c index 3720a76..b46be33 100644 --- a/dgamelaunch.c +++ b/dgamelaunch.c @@ -614,6 +614,24 @@ inprogressmenu (int gameid) int di; + struct dg_watchcols { + int dat; + int sortmode; + int x; + char *colname; + char *fmt; + } watchcols[] = { + {0, SORTMODE_NONE, 1, "", "%s)"}, + {1, SORTMODE_USERNAME, 4, "Username", "%-15s"}, + {2, SORTMODE_GAMENUM, 21, "Game", "%-5s"}, + {3, SORTMODE_WINDOWSIZE, 29, "Size", "%s"}, + {4, SORTMODE_STARTTIME, 37, "Start date & time", "%s"}, + {5, SORTMODE_IDLETIME, 58, "Idle time", "%-10s"}, +#ifdef USE_SHMEM + {6, SORTMODE_WATCHERS, 70, "Watchers", "%s"}, +#endif + }; + struct dg_shm *shm_dg_data = NULL; struct dg_shm_game *shm_dg_game = NULL; @@ -654,23 +672,11 @@ inprogressmenu (int gameid) if (len > 0) { mvaddstr (3, 1, "The following games are in progress:"); -#define dgl_sortprintw(mode, x, str) \ - if (sortmode == mode) attron(title_attr); \ - mvprintw(top_banner_hei,x,str); \ - if (sortmode == mode) attroff(title_attr); - - mvprintw(top_banner_hei,1," "); - - dgl_sortprintw(SORTMODE_USERNAME, 4, "Username") - dgl_sortprintw(SORTMODE_GAMENUM, 21, "Game") - dgl_sortprintw(SORTMODE_WINDOWSIZE, 29, "Size") - dgl_sortprintw(SORTMODE_STARTTIME, 37, "Start date & time") - dgl_sortprintw(SORTMODE_IDLETIME, 58, "Idle time") -#ifdef USE_SHMEM - dgl_sortprintw(SORTMODE_WATCHERS, 70, "Watchers") -#endif - -#undef dgl_sortprintw + for (di = 0; di < ARRAY_SIZE(watchcols); di++) { + if (sortmode == watchcols[di].sortmode) attron(title_attr); + mvprintw(top_banner_hei, watchcols[di].x, watchcols[di].colname); + if (sortmode == watchcols[di].sortmode) attroff(title_attr); + } } shm_sem_wait(shm_dg_data); @@ -690,11 +696,6 @@ inprogressmenu (int gameid) snprintf (gametype, sizeof gametype, "%3dx%3d", games[i + offset]->ws_col, games[i + offset]->ws_row); -#ifdef USE_SHMEM -# define WATCH_LINE_FORMAT "%c) %-15s %-5s %s %s %s %-10s %i" -#else -# define WATCH_LINE_FORMAT "%c) %-15s %-5s %s %s %s %-10s" -#endif { time_t ctime; long secs, mins, hours; @@ -711,16 +712,23 @@ inprogressmenu (int gameid) snprintf(idletime, 10, "%ldm %lds", mins, secs); } - mvprintw (top_banner_hei + 1 + i, 1, WATCH_LINE_FORMAT, - selectorchars[i], games[i + offset]->name, myconfig[games[i + offset]->gamenum]->shortname, gametype, - games[i + offset]->date, games[i + offset]->time, - idletime, + for (di = 0; di < ARRAY_SIZE(watchcols); di++) { + char tmpbuf[80]; + switch (watchcols[di].dat) { + default: break; + case 0: tmpbuf[0] = selectorchars[i]; tmpbuf[1] = '\0'; break; + case 1: snprintf(tmpbuf, 80, "%s", games[i + offset]->name); break; + case 2: snprintf(tmpbuf, 80, "%s", myconfig[games[i + offset]->gamenum]->shortname); break; + case 3: snprintf(tmpbuf, 80, "%s", gametype); break; + case 4: snprintf(tmpbuf, 80, "%s %s", games[i + offset]->date, games[i + offset]->time); break; + case 5: snprintf(tmpbuf, 80, "%s", idletime); break; #ifdef USE_SHMEM - (games[i+offset]->is_in_shm ? shm_dg_game[games[i+offset]->shm_idx].nwatchers : -1) -#else - 0 + case 6: snprintf(tmpbuf, 80, "%li", (games[i+offset]->is_in_shm ? shm_dg_game[games[i+offset]->shm_idx].nwatchers : -1)); break; #endif - ); + } + tmpbuf[79] = '\0'; + mvprintw(top_banner_hei + 1 + i, watchcols[di].x, watchcols[di].fmt, tmpbuf); + } if (i + offset == selected) attroff(selected_attr);