a3c6de0a531614c58ab8f5a2843a1cd0205a4de4
[speedometer] / main.c
1 /****
2         Speedometer, shows your current speed using GPS
3         Copyright (C) 2008 Wellu Mäkinen <wellu@wellu.org>
4
5         This program is free software: you can redistribute it and/or modify
6         it under the terms of the GNU General Public License as published by
7         the Free Software Foundation, either version 3 of the License, or
8         (at your option) any later version.
9
10         This program is distributed in the hope that it will be useful,
11         but WITHOUT ANY WARRANTY; without even the implied warranty of
12         MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13         GNU General Public License for more details.
14
15         You should have received a copy of the GNU General Public License
16         along with this program.  If not, see <http://www.gnu.org/licenses/>.
17  ****/
18
19 #include <hildon/hildon-program.h>
20 #include <hildon/hildon-window.h>
21 #include <stdlib.h>
22 #include <gtk/gtk.h>
23 #include <location/location-gps-device.h>
24 #include <location/location-gpsd-control.h>
25
26 #include "callbacks.h"
27
28 int main(int argc, char** argv) {
29
30
31         HildonProgram *program;
32         HildonWindow *window;
33
34         gtk_init(&argc, &argv);
35
36         GtkWidget *i1, *i2, *i3;
37         GtkWidget *box;
38
39         program = HILDON_PROGRAM(hildon_program_get_instance());
40         g_set_application_name("Speedometer");
41
42         window = HILDON_WINDOW(hildon_window_new());
43         hildon_program_add_window(program, window);
44
45         i1 = gtk_image_new_from_file("data/1.png");
46         i2 = gtk_image_new_from_file("data/3.png");
47         i3 = gtk_image_new_from_file("data/4.png");
48
49         box = gtk_hbox_new(TRUE, 0);
50         gtk_box_pack_end(box, i1, FALSE, FALSE, 0);
51         gtk_box_pack_end(box, i2, FALSE, FALSE, 0);
52         gtk_box_pack_end(box, i3, FALSE, FALSE, 0);
53
54         gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(box));
55
56         // set the background color to black
57         GdkColor black;
58         black.red = 0x0000;
59         black.blue = 0x0000;
60         black.green = 0x0000;
61         gtk_widget_modify_bg(window, GTK_STATE_NORMAL, &black);
62
63         // set the window fullscreen
64         gtk_window_fullscreen(GTK_WINDOW(window));
65
66         gtk_widget_show_all(GTK_WIDGET(window));
67
68
69
70         g_thread_init(NULL);
71
72
73 #ifdef __arm__
74         // gps device
75         LocationGPSDevice *device;
76         device = g_object_new(LOCATION_TYPE_GPS_DEVICE, NULL);
77
78         // connect some signal handlers
79         g_signal_connect (device, "changed", G_CALLBACK (location_changed), NULL);
80
81     g_signal_connect(G_OBJECT(window),  "key_press_event", G_CALLBACK(key_press_cb), window);
82
83         LocationGPSDControl *control;
84
85         control = location_gpsd_control_get_default();
86         location_gpsd_control_start(control);
87 #endif // __arm__
88
89         /* Connect signal to X in the upper corner */
90         g_signal_connect(G_OBJECT(window), "delete_event", G_CALLBACK(gtk_main_quit), NULL);
91
92         /* Start the main event loop. */
93         gtk_main();
94
95         return EXIT_SUCCESS;
96 }
97