From 0bb361241e216c130d15e8a6eb5d327c7715dfcb Mon Sep 17 00:00:00 2001 From: Bruce Cowan <bruce@bcowan.eu> Date: Tue, 20 Mar 2018 13:28:40 +0000 Subject: [PATCH] Sort possibilities before display --- meson.build | 6 +++--- src/rugby-scoring.c | 31 ++++++++++++++++++++++++++++++- 2 files changed, 33 insertions(+), 4 deletions(-) diff --git a/meson.build b/meson.build index eed8780..efd774c 100644 --- a/meson.build +++ b/meson.build @@ -1,12 +1,12 @@ project('rugby', 'c', license:'LGPL') add_project_arguments('-Wdeprecated-declarations', language: 'c') -add_project_arguments('-DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_44', language: 'c') -add_project_arguments('-DGLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_44', language: 'c') +add_project_arguments('-DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_46', language: 'c') +add_project_arguments('-DGLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_46', language: 'c') add_project_arguments('-DGDK_VERSION_MIN_REQUIRED=GDK_VERSION_3_16', language: 'c') add_project_arguments('-DGDK_VERSION_MAX_ALLOWED=GDK_VERSION_3_16', language: 'c') -gio_dep = dependency('gio-2.0', version: '>=2.44') +gio_dep = dependency('gio-2.0', version: '>=2.46') gtk_dep = dependency('gtk+-3.0', version: '>=3.16') subdir('data') diff --git a/src/rugby-scoring.c b/src/rugby-scoring.c index 454dbbb..7beac8f 100644 --- a/src/rugby-scoring.c +++ b/src/rugby-scoring.c @@ -19,8 +19,35 @@ #include "rugby-possibility.h" #include "rugby-scoring.h" +static gint +compare_func (gconstpointer a, + gconstpointer b, + gpointer user_data) +{ + gint atries, autries; + gint btries, butries; + + g_object_get ((gpointer) a, + "tries", &atries, + "utries", &autries, + NULL); + g_object_get ((gpointer) b, + "tries", &btries, + "utries", &butries, + NULL); + + gint trydiff = (atries + autries) - (btries + butries); + + // Sort by total tries first, then converted + if (trydiff != 0) + return trydiff; + else + return atries - btries; +} + void -rugby_scoring_get_possibilities (GListStore *store, gint score) +rugby_scoring_get_possibilities (GListStore *store, + gint score) { gint max_tries = score / TRY_POINTS; gint max_utries = score / UTRY_POINTS; @@ -47,6 +74,8 @@ rugby_scoring_get_possibilities (GListStore *store, gint score) } } } + + g_list_store_sort (store, compare_func, NULL); } gint -- GitLab