From 0d3053581b2dbb54693c53d76988499028432aec Mon Sep 17 00:00:00 2001 From: Thomas Thurman Date: Mon, 31 Aug 2009 19:11:24 -0400 Subject: [PATCH] fifty miles, eighty kilometres --- belltower.c | 39 +++++++++++++++++++++++++++------------ 1 file changed, 27 insertions(+), 12 deletions(-) diff --git a/belltower.c b/belltower.c index dfcc66d..2a406bf 100644 --- a/belltower.c +++ b/belltower.c @@ -60,6 +60,11 @@ char **settings[] = { gint settings_value[G_N_ELEMENTS (settings)] = { 0, }; typedef enum { + SETTINGS_DISTANCES, + SETTINGS_TOWERSORT +} Settings; + +typedef enum { DISTANCES_MILES, DISTANCES_KILOMETRES } DistancesSetting; @@ -249,22 +254,28 @@ distance_to_tower (tower *details) device->fix->longitude, tower_lat, tower_long); - - return (int) (km_distance / km_to_miles); + if (settings_value[SETTINGS_DISTANCES]==DISTANCES_KILOMETRES) + return (int) km_distance; + else + return (int) (km_distance / km_to_miles); } static gchar* distance_to_tower_str (tower *details) { - int miles = distance_to_tower (details); + int distance = distance_to_tower (details); - if (miles==-1) + if (distance==-1) { return g_strdup ("unknown"); } + else if (settings_value[SETTINGS_DISTANCES]==DISTANCES_KILOMETRES) + { + return g_strdup_printf("%dkm", (int) distance); + } else { - return g_strdup_printf("%dmi", (int) miles); + return g_strdup_printf("%dmi", (int) distance); } } @@ -511,12 +522,12 @@ get_counties_cb (tower *details, static FilterResult get_nearby_towers_cb (tower *details, - gpointer data) + gpointer distance) { if (details->serial==0) return FILTER_IGNORE; /* header row */ - if (distance_to_tower (details) < 50) + if (distance_to_tower (details) <= GPOINTER_TO_INT (distance)) { return FILTER_ACCEPT; } @@ -657,7 +668,7 @@ single_tower_cb (tower *details, gchar *str; gint tenor_weight; gchar *primary_key = (gchar*) data; - gchar *miles; + gchar *distance; if (strcmp(details->fields[FieldPrimaryKey], primary_key)!=0) { @@ -680,9 +691,9 @@ single_tower_cb (tower *details, buttons = gtk_vbox_new (TRUE, 0); menu = HILDON_APP_MENU (hildon_app_menu_new ()); - miles = distance_to_tower_str(details); + distance = distance_to_tower_str(details); - add_table_field ("Distance", miles); + add_table_field ("Distance", distance); add_table_field ("Postcode", details->fields[FieldPostcode]); add_table_field ("County", details->fields[FieldCounty]); add_table_field ("Country", details->fields[FieldCountry]); @@ -690,7 +701,7 @@ single_tower_cb (tower *details, add_table_field ("Practice night", details->fields[FieldPracticeNight]); add_table_field ("Bells", details->fields[FieldBells]); - g_free (miles); + g_free (distance); tenor_weight = atoi (details->fields[FieldWt]); str = g_strdup_printf("%dcwt %dqr %dlb in %s", @@ -1028,7 +1039,11 @@ nearby_towers (void) } parse_dove (get_nearby_towers_cb, - NULL, + settings_value[SETTINGS_DISTANCES]==DISTANCES_KILOMETRES? + GINT_TO_POINTER (80) : + GINT_TO_POINTER (50), + settings_value[SETTINGS_DISTANCES]==DISTANCES_KILOMETRES? + "Towers within eighty kilometres of you": "Towers within fifty miles of you"); } -- 1.7.9.5