git-svn-id: file:///svnroot/speedometer/trunk@44 df364472-da61-43ef-8a67-511c89aa921b
[speedometer] / main.c
diff --git a/main.c b/main.c
index 54c8d75..e67a164 100644 (file)
--- a/main.c
+++ b/main.c
 #include <hildon/hildon-window.h>
 #include <stdlib.h>
 #include <gtk/gtk.h>
-#include <location/location-gps-device.h>
-#include <location/location-gpsd-control.h>
+#include <libosso.h>
 
 #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;
 }