]> skyeroc.xyz Git - dgamelaunch/commitdiff
Simplify the watching-screen sorting.
authorPasi Kallinen <paxed@alt.org>
Tue, 25 Dec 2007 16:27:30 +0000 (16:27 +0000)
committerPasi Kallinen <paxed@alt.org>
Tue, 25 Dec 2007 16:27:30 +0000 (16:27 +0000)
git-svn-id: svn://katsu.triplehelix.org/dgamelaunch/trunk@372 db0b04b0-f4d1-0310-9a6d-de3e77497b0e

dgamelaunch.h
dgl-common.c

index 08daf0d27844a625fadc19ab93de023d1d5e991c..6ba724ba5f4eaf566b08c71b2b9fbe25ce43dd5a 100644 (file)
@@ -75,23 +75,18 @@ struct dg_globalconfig
 };
 
 
-/* username asc and idletime desc are most important */
 typedef enum
 {
     SORTMODE_NONE = 0,
-    SORTMODE_USERNAME_ASC,
-    SORTMODE_IDLETIME_DESC,
-    SORTMODE_IDLETIME_ASC,
-    SORTMODE_USERNAME_DESC,
+    SORTMODE_USERNAME,
+    SORTMODE_IDLETIME,
     NUM_SORTMODES
 } dg_sortmode;
 
 static const char *SORTMODE_NAME[] = {
     "Unsorted",
-    "Username, asc",
-    "Idletime, desc",
-    "Idletime, asc",
-    "Username, desc",
+    "Username",
+    "Idletime",
     "",
 };
 
index a9e509ff802e78971603321e49b218750eaba179..f410df840a66279815753512f8fa60286ab3efe5 100644 (file)
@@ -112,46 +112,30 @@ dgl_format_str(int game, struct dg_user *me, char *str)
 
 
 static int
-sort_game_username_asc(const void *g1, const void *g2)
+sort_game_username(const void *g1, const void *g2)
 {
     const struct dg_game *game1 = *(const struct dg_game **)g1;
     const struct dg_game *game2 = *(const struct dg_game **)g2;
-    return strcmp(game1->name, game2->name);
+    return strcasecmp(game1->name, game2->name);
 }
 
 static int
-sort_game_username_desc(const void *g1, const void *g2)
+sort_game_idletime(const void *g1, const void *g2)
 {
     const struct dg_game *game1 = *(const struct dg_game **)g1;
     const struct dg_game *game2 = *(const struct dg_game **)g2;
-    return strcmp(game2->name, game1->name);
-}
-
-static int
-sort_game_idletime_asc(const void *g1, const void *g2)
-{
-    const struct dg_game *game1 = *(const struct dg_game **)g1;
-    const struct dg_game *game2 = *(const struct dg_game **)g2;
-    return difftime(game1->idle_time, game2->idle_time);
-}
-
-static int
-sort_game_idletime_desc(const void *g1, const void *g2)
-{
-    const struct dg_game *game1 = *(const struct dg_game **)g1;
-    const struct dg_game *game2 = *(const struct dg_game **)g2;
-    return difftime(game2->idle_time, game1->idle_time);
+    if (game2->idle_time != game1->idle_time)
+       return difftime(game2->idle_time, game1->idle_time);
+    else
+       return strcasecmp(game1->name, game2->name);
 }
 
-
 struct dg_game **
 sort_games (struct dg_game **games, int len, dg_sortmode sortmode)
 {
     switch (sortmode) {
-    case SORTMODE_USERNAME_ASC:  qsort(games, len, sizeof(struct dg_game *), sort_game_username_asc); break;
-    case SORTMODE_USERNAME_DESC: qsort(games, len, sizeof(struct dg_game *), sort_game_username_desc); break;
-    case SORTMODE_IDLETIME_ASC:  qsort(games, len, sizeof(struct dg_game *), sort_game_idletime_asc); break;
-    case SORTMODE_IDLETIME_DESC: qsort(games, len, sizeof(struct dg_game *), sort_game_idletime_desc); break;
+    case SORTMODE_USERNAME: qsort(games, len, sizeof(struct dg_game *), sort_game_username); break;
+    case SORTMODE_IDLETIME: qsort(games, len, sizeof(struct dg_game *), sort_game_idletime); break;
     default: ;
     }
     return games;