X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=callbacks.c;h=479cca7c1682038f61042e5db9552aa374c4a1af;hb=98fd8d3a7b9b4d1b93dd331840d8e5fe064ff72d;hp=ff693f8bf4b2ab9a578ed22d2ad00a6b069e7106;hpb=c04ab31999e20c6e5996ff79264474631e42c2e3;p=speedometer diff --git a/callbacks.c b/callbacks.c index ff693f8..479cca7 100644 --- a/callbacks.c +++ b/callbacks.c @@ -16,55 +16,104 @@ along with this program. If not, see . ****/ -#include +#include #include "callbacks.h" - -void location_changed(LocationGPSDevice* device, gpointer userdata) { - g_print ("Latitude: %.2f\nLongitude: %.2f\nAltitude: %.2f\n", - device->fix->latitude, device->fix->longitude, device->fix->altitude); +#include "appdata.h" +#include "util.h" + +// this is just here for debugging +static void print_location(LocationGPSDevice* device) { + g_print("Latitude: %.2f\n" + "Longitude: %.2f\n" + "Altitude: %.2f\n" + "Speed: %.2d\n", + device->fix->latitude, + device->fix->longitude, + device->fix->altitude, + device->fix->speed); } +void location_changed(LocationGPSDevice* device, gpointer data) { + //print_location(device); + g_assert(data); + g_assert(device); + + AppData* appdata = (AppData*) data; + + // check for NaN before passing values + if(device->fix->fields & LOCATION_GPS_DEVICE_SPEED_SET) { + if(!isnan(device->fix->speed)) { + interpret_speed_from_gps(appdata, device->fix->speed); + } + } +} -/* Callback for hardware keys */ gboolean key_press_cb(GtkWidget* widget, GdkEventKey* event, HildonWindow* window) { - switch (event->keyval) { - case GDK_Up: - hildon_banner_show_information(GTK_WIDGET(window), NULL, "Navigation Key Up"); - return TRUE; + switch (event->keyval) { + case GDK_Up: + hildon_banner_show_information(GTK_WIDGET(window), NULL, "Navigation Key Up"); + return TRUE; + + case GDK_Down: + hildon_banner_show_information(GTK_WIDGET(window), NULL, "Navigation Key Down"); + return TRUE; - case GDK_Down: - hildon_banner_show_information(GTK_WIDGET(window), NULL, "Navigation Key Down"); - return TRUE; + case GDK_Left: + hildon_banner_show_information(GTK_WIDGET(window), NULL, "Navigation Key Left"); + return TRUE; - case GDK_Left: - hildon_banner_show_information(GTK_WIDGET(window), NULL, "Navigation Key Left"); - return TRUE; + case GDK_Right: + hildon_banner_show_information(GTK_WIDGET(window), NULL, "Navigation Key Right"); + return TRUE; - case GDK_Right: - hildon_banner_show_information(GTK_WIDGET(window), NULL, "Navigation Key Right"); - return TRUE; + case GDK_Return: + hildon_banner_show_information(GTK_WIDGET(window), NULL, "Navigation Key select"); + return TRUE; - case GDK_Return: - hildon_banner_show_information(GTK_WIDGET(window), NULL, "Navigation Key select"); - return TRUE; + case GDK_F6: + hildon_banner_show_information(GTK_WIDGET(window), NULL, "Full screen"); + return TRUE; - case GDK_F6: - hildon_banner_show_information(GTK_WIDGET(window), NULL, "Full screen"); - return TRUE; + case GDK_F7: + hildon_banner_show_information(GTK_WIDGET(window), NULL, "Increase (zoom in)"); + return TRUE; - case GDK_F7: - hildon_banner_show_information(GTK_WIDGET(window), NULL, "Increase (zoom in)"); - return TRUE; + case GDK_F8: + hildon_banner_show_information(GTK_WIDGET(window), NULL, "Decrease (zoom out)"); + return TRUE; - case GDK_F8: - hildon_banner_show_information(GTK_WIDGET(window), NULL, "Decrease (zoom out)"); - return TRUE; + case GDK_Escape: + hildon_banner_show_information(GTK_WIDGET(window), NULL, "Cancel/Close"); + return TRUE; + } - case GDK_Escape: - hildon_banner_show_information(GTK_WIDGET(window), NULL, "Cancel/Close"); - return TRUE; - } + return FALSE; +} - return FALSE; +gboolean top_event_box_button_press(GtkWidget* widget, GdkEventButton* event, gpointer data) { + gdouble x = event->x; + g_print("Top event box pressed at: %f\n", x); + AppData* appdata = (AppData*) data; + + if(x > 750) { + g_print("Exiting..\n"); + stop_gps(appdata); + g_signal_emit_by_name(appdata->window, "delete_event"); + } + else { + randomize(appdata); + } + return TRUE; } + + +gboolean bottom_event_box_button_press(GtkWidget* widget, GdkEventButton* event, gpointer data) { + gdouble x = event->x; + g_print("Bottom event box pressed at: %f\n", x); + AppData* appdata = (AppData*) data; + + randomize(data); + return TRUE; +} +