X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=main.c;h=e67a164554502754e68847601f131502edb52fbd;hb=966b2d03909c03910a1d0494b1a289f44dc8a9cd;hp=54c8d75795f292d3c05bf18b6c9007e51c620923;hpb=8a207456b1b00b12ed5852ff2e282918657631f0;p=speedometer diff --git a/main.c b/main.c index 54c8d75..e67a164 100644 --- a/main.c +++ b/main.c @@ -20,80 +20,72 @@ #include #include #include -#include -#include +#include #include "callbacks.h" #include "appdata.h" #include "ui.h" +#include "util.h" + +#define PROGNAME "org.wellu.speedometer" + +static AppData *appdata; +static osso_context_t* osso_ctx; + +/* Requests delay from screen blanking + * Should be called at least once in every 60 seconds + * we're not bothered about errors here as dbus calls + * either succeed or not. Worst case would be dimmed + * screen anyway. + */ +static gboolean delay_display_blanking(gpointer data) { + g_print("Requesting not to blank the screen in the next 60 secs.\n"); + osso_display_blanking_pause(data); + return TRUE; +} -int main(int argc, char** argv) { - - AppData *appdata = g_new0(AppData, 1); - - gtk_init(&argc, &argv); - - GtkImage* table[10]; // stores the images - - GtkWidget *box; - +void init_app() { + appdata = g_new0(AppData, 1); appdata->program = HILDON_PROGRAM(hildon_program_get_instance()); appdata->window = HILDON_WINDOW(hildon_window_new()); hildon_program_add_window(appdata->program, appdata->window); - set_app_bg_black(appdata); + osso_ctx = osso_initialize(PROGNAME, "1.0", FALSE, NULL); - int i = 0; - while(i < 10) { - char* path = malloc(30); - g_sprintf(path, "data/%d.png", i); - table[i] = gtk_image_new_from_file(path); - g_print(path); - g_print("\n"); - free(path); - i++; - } - - box = gtk_hbox_new(TRUE, 0); + delay_display_blanking(osso_ctx); + g_timeout_add(55000, (GSourceFunc) delay_display_blanking, osso_ctx); +} - gtk_box_pack_start(box, table[6], FALSE, FALSE, 0); - gtk_box_pack_start(box, table[5], FALSE, FALSE, 0); - gtk_box_pack_start(box, table[8], FALSE, FALSE, 0); +void deinit_app() { + osso_deinitialize(osso_ctx); + stop_gps(appdata); +} - gtk_container_add(GTK_CONTAINER(appdata->window), GTK_WIDGET(box)); +int main(int argc, char** argv) { + gtk_init(&argc, &argv); - // set the window fullscreen - gtk_window_fullscreen(GTK_WINDOW(appdata->window)); + init_app(); - gtk_widget_show_all(GTK_WIDGET(appdata->window)); + // loads images from the disk to the image array + load_graphics(appdata); + // set display to 000 + set_digits_to_zero(appdata); + // inits the ui placement + create_ui(appdata); g_thread_init(NULL); + show_cardware_dialog(); -#ifdef __arm__ - // gps device - LocationGPSDevice *device; - device = g_object_new(LOCATION_TYPE_GPS_DEVICE, NULL); - - // connect some signal handlers - g_signal_connect (device, "changed", G_CALLBACK (location_changed), NULL); - - g_signal_connect(G_OBJECT(appdata->window), "key_press_event", G_CALLBACK(key_press_cb), appdata->window); + start_gps(appdata); - LocationGPSDControl *control; - - control = location_gpsd_control_get_default(); - location_gpsd_control_start(control); -#endif // __arm__ - - /* Connect signal to X in the upper corner */ - g_signal_connect(G_OBJECT(appdata->window), "delete_event", G_CALLBACK(gtk_main_quit), NULL); - - /* Start the main event loop. */ gtk_main(); + // here we cleanup things + deinit_app(); + return EXIT_SUCCESS; }