gint settings_value[G_N_ELEMENTS (settings)] = { 0, };
typedef enum {
+ SETTINGS_DISTANCES,
+ SETTINGS_TOWERSORT
+} Settings;
+
+typedef enum {
DISTANCES_MILES,
DISTANCES_KILOMETRES
} DistancesSetting;
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);
}
}
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;
}
gchar *str;
gint tenor_weight;
gchar *primary_key = (gchar*) data;
- gchar *miles;
+ gchar *distance;
if (strcmp(details->fields[FieldPrimaryKey], primary_key)!=0)
{
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]);
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",
}
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");
}