d15a3046104fe0f37fb91e78e5fbdb523e95dfbb
[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 #include "appdata.h"
28 #include "ui.h"
29
30 int main(int argc, char** argv) {
31
32         AppData *appdata = g_new0(AppData, 1);
33
34         gtk_init(&argc, &argv);
35
36
37         GtkWidget *hbox;
38         GtkWidget *vbox;
39
40         appdata->program = HILDON_PROGRAM(hildon_program_get_instance());
41         appdata->window = HILDON_WINDOW(hildon_window_new());
42         hildon_program_add_window(appdata->program, appdata->window);
43
44         set_app_bg_black(appdata);
45
46         populate_image_array(appdata);
47
48         load_default_images(appdata);
49
50         vbox = gtk_vbox_new(FALSE, 0);
51         hbox = gtk_hbox_new(TRUE, 0);
52
53         gtk_box_pack_start_defaults(vbox, gtk_event_box_new());
54         gtk_box_pack_start_defaults(vbox, hbox);
55
56         gtk_box_pack_start(hbox, appdata->speed_array[0], FALSE, FALSE, 0);
57         gtk_box_pack_start(hbox, appdata->speed_array[1], FALSE, FALSE, 0);
58         gtk_box_pack_start(hbox, appdata->speed_array[2], FALSE, FALSE, 0);
59
60         gtk_box_pack_start_defaults(vbox, gtk_button_new_with_label("Bottom"));
61
62         gtk_container_add(GTK_CONTAINER(appdata->window), GTK_WIDGET(vbox));
63
64         // set the window fullscreen
65         gtk_window_fullscreen(GTK_WINDOW(appdata->window));
66
67         gtk_widget_show_all(GTK_WIDGET(appdata->window));
68
69
70
71         g_thread_init(NULL);
72
73         g_idle_add(randomize, appdata);
74
75
76 #ifdef __arm__
77         // gps device
78         LocationGPSDevice *device;
79         device = g_object_new(LOCATION_TYPE_GPS_DEVICE, NULL);
80
81         // connect some signal handlers
82         g_signal_connect (device, "changed", G_CALLBACK (location_changed), NULL);
83
84         LocationGPSDControl *control;
85
86         control = location_gpsd_control_get_default();
87         location_gpsd_control_start(control);
88 #endif // __arm__
89
90         g_signal_connect(G_OBJECT(appdata->window),
91                         "delete_event",
92                         G_CALLBACK(gtk_main_quit),
93                         NULL);
94
95     g_signal_connect(G_OBJECT(appdata->window),
96                 "key_press_event",
97                 G_CALLBACK(key_press_cb),
98                 appdata->window);
99
100     g_signal_connect(G_OBJECT(appdata->window),
101                 "button_press_event",
102                 G_CALLBACK(button_press),
103                 appdata->window);
104
105     gtk_main();
106
107         return EXIT_SUCCESS;
108 }
109