]> err.no Git - mapper/blob - src/maemo-osso.c
More map widget integration changes
[mapper] / src / maemo-osso.c
1 /*
2  * This file is part of mapper
3  *
4  * Copyright (C) 2007 Kaj-Michael Lang
5  * Copyright (C) 2006-2007 John Costigan.
6  *
7  * POI and GPS-Info code originally written by Cezary Jackiewicz.
8  *
9  * Default map data provided by http://www.openstreetmap.org/
10  *
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.
15  *
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.
20  *
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.
24  */
25
26 /* 
27  * Maemo hardware specific functions 
28  */
29
30 #include <config.h>
31
32 #include <glib.h>
33 #include <gtk/gtk.h>
34
35 #ifdef WITH_OSSO
36 #include <libosso.h>
37
38 #ifdef WITH_OSSO_IC
39 #include <osso-ic.h>
40 #include <osso-ic-dbus.h>
41 #endif
42
43 #include "route.h"
44 #include "track.h"
45 #include "mapper-types.h"
46 #include "gps.h"
47 #include "settings-gconf.h"
48 #include "settings.h"
49 #include "config-gconf.h"
50 #include "ui-common.h"
51
52 gint
53 dbus_cb_default(const gchar *interface, const gchar *method, GArray *arguments, gpointer data, osso_rpc_t *retval)
54 {
55 if(!strcmp(method, "top_application"))
56         gtk_idle_add((GSourceFunc)window_present, NULL);
57 retval->type = DBUS_TYPE_INVALID;
58
59 return OSSO_OK;
60 }
61
62 void
63 osso_cb_hw_state(osso_hw_state_t *state, gpointer data)
64 {
65 static gboolean _must_save_data = FALSE;
66
67 if (state->system_inactivity_ind) {
68         if (_must_save_data)
69                 _must_save_data = FALSE;
70         else {
71                 if (_gps->io.conn > RCVR_OFF) {
72                         if (gconf_client_get_bool(gconf_client, GCONF_KEY_DISCONNECT_ON_COVER, NULL)) {
73                                 gconf_client_clear_cache(gconf_client);
74                                 gps_conn_set_state(_gps, RCVR_OFF);
75                                 gps_disconnect(_gps);
76                                 track_add(_track, NULL);
77                                 /* Pretend autoroute is in progress to avoid download. */
78                                 if (_autoroute_data.enabled)
79                                         _autoroute_data.in_progress = TRUE;
80                         }
81                 }
82                 if (_curl_sid) {
83                         g_source_remove(_curl_sid);
84                         _curl_sid = 0;
85                 }
86         }
87 } else if (state->save_unsaved_data_ind) {
88         config_save();
89         _must_save_data = TRUE;
90 } else if (state->memory_low_ind) {
91         poi_icon_hash_clear();
92 } else {
93         if (_gps->io.conn == RCVR_OFF && _enable_gps) {
94                 gps_conn_set_state(_gps, RCVR_DOWN);
95                 gps_connect_later(_gps);
96                 if (_autoroute_data.enabled)
97                         _autoroute_data.in_progress = TRUE;
98         }
99
100         /* Start curl in case there are downloads pending. */
101         if (iap_is_connected() && !_curl_sid)
102                 _curl_sid = g_timeout_add(100, (GSourceFunc)map_download_timeout, NULL);
103 }
104 }
105
106 #else
107
108 void 
109 osso_cb_hw_state(void *state, gpointer data)
110 {
111 }
112
113 #endif