2 * This file is part of mapper
4 * Copyright (C) 2007 Kaj-Michael Lang
5 * Copyright (C) 2006-2007 John Costigan.
7 * POI and GPS-Info code originally written by Cezary Jackiewicz.
9 * Default map data provided by http://www.openstreetmap.org/
11 * This program is free software; you can redistribute it and/or modify
12 * it under the terms of the GNU General Public License as published by
13 * the Free Software Foundation; either version 2 of the License, or
14 * (at your option) any later version.
16 * This program is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
21 * You should have received a copy of the GNU General Public License along
22 * with this program; if not, write to the Free Software Foundation, Inc.,
23 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
37 #include <glib/gstdio.h>
38 #include <glib/gi18n.h>
44 #include <gdk/gdkkeysyms.h>
45 #include <dbus/dbus.h>
46 #include <dbus/dbus-glib.h>
47 #include <libgnomevfs/gnome-vfs.h>
48 #include <curl/multi.h>
49 #include <gconf/gconf-client.h>
53 #ifdef WITH_HILDON_DBUS_BT
58 #include "hildon-mapper.h"
60 #include "mapper-types.h"
67 #include "ui-common.h"
73 #include "config-gconf.h"
75 gfloat UNITS_CONVERT[] = {1.85200,1.15077945,1.f,};
77 GdkColor COLORABLE_DEFAULT[COLORABLE_ENUM_COUNT] = {
78 {0, 0x0000, 0x0000, 0xc000}
79 , /* COLORABLE_MARK */
80 {0, 0x6000, 0x6000, 0xf800}
81 , /* COLORABLE_MARK_VELOCITY */
82 {0, 0x8000, 0x8000, 0x8000}
83 , /* COLORABLE_MARK_OLD */
84 {0, 0xe000, 0x0000, 0x0000}
85 , /* COLORABLE_TRACK */
86 {0, 0xa000, 0x0000, 0x0000}
87 , /* COLORABLE_TRACK_MARK */
88 {0, 0x7000, 0x0000, 0x0000}
89 , /* COLORABLE_TRACK_BREAK */
90 {0, 0x0000, 0xa000, 0x0000}
91 , /* COLORABLE_ROUTE */
92 {0, 0x0000, 0x8000, 0x0000}
93 , /* COLORABLE_ROUTE_WAY */
94 {0, 0x0000, 0x6000, 0x0000}
95 , /* COLORABLE_ROUTE_BREAK */
96 {0, 0xa000, 0x0000, 0xa000} /* COLORABLE_POI */
111 guint mis=MAPPER_INIT_START;
113 static GtkWidget *init_progress;
114 static GtkWidget *init_dialog;
117 * Save state and destroy all non-UI elements created by this program in
118 * preparation for exiting.
126 map_download_deinit();
128 g_source_remove(_curl_sid);
131 #if defined (WITH_GST) && defined (WITH_ESPEAK)
139 gnome_vfs_shutdown();
141 osso_deinitialize(_osso);
143 curl_global_cleanup();
147 mapper_osso_init(void)
150 /* Initialize _osso. */
151 _osso = osso_initialize("org.tal.mapper", VERSION, TRUE, NULL);
153 g_printerr("osso_initialize failed.\n");
161 mapper_osso_cb_init(void)
163 gchar *filter_string;
166 if (OSSO_OK != osso_rpc_set_default_cb_f(_osso, dbus_cb_default, NULL)) {
167 g_printerr("osso_rpc_set_default_cb_f failed.\n");
173 filter_string = g_strdup_printf("interface=%s", ICD_DBUS_INTERFACE);
175 dbus_bus_add_match(dbus_conn, filter_string, NULL);
176 g_free(filter_string);
178 /* add the callback */
179 dbus_connection_add_filter(dbus_conn, get_connection_status_signal_cb, NULL, NULL);
180 osso_iap_cb(iap_callback);
193 localtime_r(&time1, &time2);
194 _gmtoffset = time2.tm_gmtoff;
198 mapper_init(gpointer data)
200 GError *error = NULL;
204 case MAPPER_INIT_START:
205 _conn_state = RCVR_OFF;
206 curl_global_init(CURL_GLOBAL_NOTHING);
210 mapper_init_variables();
213 mis=MAPPER_INIT_CONFIG;
215 case MAPPER_INIT_CONFIG:
220 case MAPPER_INIT_GPS:
226 mis=MAPPER_INIT_VOICE;
228 case MAPPER_INIT_VOICE:
229 #if defined (WITH_GST) && defined (WITH_ESPEAK)
230 if (speak_init("en",_voice_speed,_voice_pitch)==FALSE) {
231 g_printerr("Espeak init failed\n");
232 popup_error(_window, "Speech init failed. Disabled.");
235 mis=MAPPER_INIT_MISC;
237 case MAPPER_INIT_MISC:
238 /* Initialize D-Bus system connection. */
239 if (NULL == (dbus_conn = dbus_g_bus_get(DBUS_BUS_SYSTEM, &error))) {
240 g_printerr("Failed to open connection to D-Bus: %s.\n", error->message);
246 osso_hw_set_event_cb(_osso, NULL, osso_cb_hw_state, NULL);
249 #ifdef WITH_HILDON_DBUS_BT
250 if (NULL == (_rfcomm_req_proxy = dbus_g_proxy_new_for_name(dbus_conn, BTCOND_SERVICE, BTCOND_REQ_PATH, BTCOND_REQ_INTERFACE))) {
251 g_printerr("Failed to open connection to %s.\n", BTCOND_REQ_INTERFACE);
252 popup_error(_window, "Bluetooth connection handling failed.");
259 mis=MAPPER_INIT_GOTO;
261 case MAPPER_INIT_GOTO:
262 if (map_goto_position(&_home)==FALSE)
263 g_printerr("Home is not set.\n");
264 mis=MAPPER_INIT_DONE;
266 case MAPPER_INIT_DONE:
267 progress_dialog_remove(init_dialog);
272 gtk_progress_bar_pulse(GTK_PROGRESS(init_progress));
277 main(gint argc, gchar * argv[])
279 /* Initialize localization. */
280 setlocale(LC_ALL, "");
281 bindtextdomain(GETTEXT_PACKAGE, LOCALEDIR);
282 bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");
283 textdomain(GETTEXT_PACKAGE);
287 g_set_application_name("Mapper");
288 gtk_init(&argc, &argv);
289 if (mapper_osso_init()!=0)
291 if (mapper_osso_cb_init()!=0)
293 #if defined (WITH_GST)
294 gst_init(&argc, &argv);
297 init_progress=gtk_progress_bar_new();
298 init_dialog=progress_dialog("Mapper is loading...",init_progress);
299 g_idle_add((GSourceFunc)mapper_init, NULL);