#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) {
-
-
- HildonProgram *program;
- HildonWindow *window;
+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);
- gtk_init(&argc, &argv);
+ osso_ctx = osso_initialize(PROGNAME, "1.0", FALSE, NULL);
+ delay_display_blanking(osso_ctx);
+ g_timeout_add(55000, (GSourceFunc) delay_display_blanking, osso_ctx);
+}
- program = HILDON_PROGRAM(hildon_program_get_instance());
- g_set_application_name("Speedometer");
-
- /* Create HildonWindow and set it to HildonProgram */
- window = HILDON_WINDOW(hildon_window_new());
- hildon_program_add_window(program, window);
+void deinit_app() {
+ osso_deinitialize(osso_ctx);
+ stop_gps(appdata);
+}
+int main(int argc, char** argv) {
+ gtk_init(&argc, &argv);
+ init_app();
- /* Show all widgets that are contained by the window. */
- gtk_widget_show_all(GTK_WIDGET(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);
- // 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);
-
- /* Connect signal to X in the upper corner */
- g_signal_connect(G_OBJECT(window), "delete_event", G_CALLBACK(gtk_main_quit), NULL);
-
- g_signal_connect(G_OBJECT(window), "key_press_event", G_CALLBACK(key_press_cb), window);
+ show_cardware_dialog();
- LocationGPSDControl *control;
+ start_gps(appdata);
- control = location_gpsd_control_get_default();
- location_gpsd_control_start(control);
-
-
-
- /* Start the main event loop. */
gtk_main();
-
+ // here we cleanup things
+ deinit_app();
return EXIT_SUCCESS;
}