int n_fields;
} tower;
-/*
- * we're going to pretend you're in Helsinki
- * until I get the GPS working
- */
gboolean gps_working = FALSE;
-double current_lat = 60.161790;
-double current_long = 23.924902;
+double current_lat = 40.2452778;
+double current_long = -75.65;;
static void
show_message (char *message)
gtk_widget_destroy (GTK_WIDGET (note));
}
-static gchar*
+static gint
distance_to_tower (tower *details)
{
char *endptr;
const double km_to_miles = 1.609344;
tower_lat = strtod(details->fields[FieldLat], &endptr);
- if (*endptr) return g_strdup ("unknown");
+ if (*endptr) return -1;
tower_long = strtod(details->fields[FieldLong], &endptr);
- if (*endptr) return g_strdup ("unknown");
+ if (*endptr) return -1;
km_distance = location_distance_between (current_lat,
current_long,
tower_lat,
tower_long);
- return g_strdup_printf("%dmi", (int) (km_distance / km_to_miles));
+ return (int) (km_distance / km_to_miles);
+}
+
+static gchar*
+distance_to_tower_str (tower *details)
+{
+ int miles = distance_to_tower (details);
+
+ if (miles==-1)
+ {
+ return g_strdup ("unknown");
+ }
+ else
+ {
+ return g_strdup_printf("%dmi", (int) miles);
+ }
}
static void
}
static FilterResult
+get_nearby_towers_cb (tower *details,
+ gpointer data)
+{
+ if (details->serial==0)
+ return FILTER_IGNORE; /* header row */
+
+ if (distance_to_tower (details) < 50)
+ {
+ return FILTER_ACCEPT;
+ }
+ else
+ {
+ return FILTER_IGNORE;
+ }
+}
+
+static FilterResult
get_towers_by_county_cb (tower *details,
gpointer data)
{
buttons = gtk_vbox_new (TRUE, 0);
menu = HILDON_APP_MENU (hildon_app_menu_new ());
- miles = distance_to_tower(details);
+ miles = distance_to_tower_str(details);
add_table_field ("Distance", miles);
add_table_field ("Postcode", details->fields[FieldPostcode]);
if (gps_working)
{
- gchar *distance = distance_to_tower (basis);
+ gchar *distance = distance_to_tower_str (basis);
result->displayname = g_strdup_printf ("%s, %s (%s, %s) (%s)",
basis->fields[FieldDedication],
basis->fields[FieldPlace],
}
static void
-nearby_towers (void)
-{
- if (!gps_working)
- {
- show_message ("I don't know where you are!");
- return;
- }
-}
-
-static void
show_tower (char *primary_key)
{
parse_dove (single_tower_cb, NULL, primary_key);
}
static void
+nearby_towers (void)
+{
+ GSList *matches = NULL;
+
+ if (!gps_working)
+ {
+ show_message ("I don't know where you are!");
+ return;
+ }
+
+ parse_dove (get_nearby_towers_cb,
+ &matches,
+ NULL);
+
+ show_towers_from_list (matches);
+}
+
+static void
towers_by_subarea (gchar *area)
{
GtkWidget *dialog = hildon_picker_dialog_new (GTK_WINDOW (window));