From: Thomas Thurman Date: Fri, 28 Aug 2009 17:32:41 +0000 (-0400) Subject: basic picker; basic lat/long (broken) X-Git-Url: https://vcs.maemo.org/git/?p=belltower;a=commitdiff_plain;h=53600b601d8904fc5ce14ed98c25b8ae981d90df basic picker; basic lat/long (broken) --- diff --git a/belltower.c b/belltower.c index 7517bc0..9649b04 100644 --- a/belltower.c +++ b/belltower.c @@ -73,6 +73,13 @@ typedef struct { int n_fields; } tower; +/* + * we're going to pretend you're in Helsinki + * until I get the GPS working + */ +double current_lat = 60.161790; +double current_long = 23.924902; + static void show_message (char *message) { @@ -84,6 +91,28 @@ show_message (char *message) gtk_widget_destroy (GTK_WIDGET (note)); } +static gchar* +distance_to_tower (tower *details) +{ + char *endptr; + double tower_lat; + double tower_long; + double km_distance; + const double km_to_miles = 1.609344; + + tower_lat = strtod(details->fields[FieldLat], &endptr); + if (*endptr) return g_strdup ("unknown"); + tower_long = strtod(details->fields[FieldLong], &endptr); + if (*endptr) return g_strdup ("unknown"); + + km_distance = location_distance_between (current_lat, + current_long, + tower_lat, + tower_long); + + return g_strdup_printf("%dmi", (int) (km_distance / km_to_miles)); +} + static void call_dbus (DBusBusType type, char *name, @@ -272,6 +301,7 @@ single_tower_cb (tower *details, gchar *str; gint tenor_weight; gchar *primary_key = (gchar*) data; + gchar *miles; if (strcmp(details->fields[FieldPrimaryKey], primary_key)!=0) { @@ -316,6 +346,9 @@ single_tower_cb (tower *details, buttons = gtk_vbox_new (TRUE, 0); menu = HILDON_APP_MENU (hildon_app_menu_new ()); + miles = distance_to_tower(details); + + add_table_field ("Distance", miles); add_table_field ("Postcode", details->fields[FieldPostcode]); add_table_field ("County", details->fields[FieldCounty]); add_table_field ("Country", details->fields[FieldCountry]); @@ -323,6 +356,8 @@ single_tower_cb (tower *details, add_table_field ("Practice night", details->fields[FieldPracticeNight]); add_table_field ("Bells", details->fields[FieldBells]); + g_free (miles); + tenor_weight = atoi (details->fields[FieldWt]); str = g_strdup_printf("%dcwt %dqr %dlb in %s", tenor_weight/112, @@ -570,21 +605,83 @@ towers_by_area (void) } static void +show_towers_from_list (GSList *list) +{ + GtkWidget *dialog; + GtkWidget *selector; + gchar *result = NULL; + GSList *cursor; + + if (!list) + { + hildon_banner_show_information(window, + NULL, + "No towers found."); + return; + } + + if (!list->next) + { + /* don't bother showing the list */ + hildon_banner_show_information(window, + NULL, + "One tower found."); + show_tower (list->data); + return; + } + + dialog = hildon_picker_dialog_new (GTK_WINDOW (window)); + selector = hildon_touch_selector_new_text (); + + for (cursor=list; cursor; cursor=cursor->next) + { + hildon_touch_selector_append_text (HILDON_TOUCH_SELECTOR (selector), + cursor->data); + } + + hildon_picker_dialog_set_selector (HILDON_PICKER_DIALOG (dialog), + HILDON_TOUCH_SELECTOR (selector)); + + gtk_widget_show_all (GTK_WIDGET (dialog)); + + if (gtk_dialog_run (GTK_DIALOG (dialog))==GTK_RESPONSE_OK) + { + result = g_strdup (hildon_touch_selector_get_current_text (HILDON_TOUCH_SELECTOR (selector))); + } + + gtk_widget_destroy (GTK_WIDGET (dialog)); + + if (result) + { + show_tower (result); + g_free (result); + } +} + +static void show_bookmarks (void) { - /* nothing */ + GSList *test = NULL; + show_towers_from_list (test); } static void tower_search (void) { - /* nothing */ + GSList *test = NULL; + test = g_slist_append (test, "NORTON HE"); + + show_towers_from_list (test); } static void recent_towers (void) { - show_tower ("NORTON HE"); + GSList *test = NULL; + test = g_slist_append (test, "BARFORD"); + test = g_slist_append (test, "BRAUGHING"); + + show_towers_from_list (test); } int diff --git a/static.ini b/static.ini index 0387c1b..6d9dd48 100644 --- a/static.ini +++ b/static.ini @@ -4,9 +4,11 @@ credits="This application is released under the GNU General Public Licence. It # # Mappings: # -[County] -# Well, they're not really counties in all cases. + + +# Well, not really counties in all cases. # But the database calls them "counties". +[County] Zimb=Zimbabwe Qld=Queensland Tas=Tasmania @@ -20,3 +22,8 @@ Bucks=Buckinghamshire Cambs=Cambridgeshire C Bris=Bristol Ches=Cheshire + +[Notes] +Ab=A♭ +Eb=E♭ +F#=F♯