1 #ifdef HAVE_CONFIG_H
2 #  include <config.h>
3 #endif
4 
5 
6 #include <gtk/gtk.h>
7 #include <glade/glade.h>
8 
9 #define MSG_SEND_URL "http://tangogps.org/friends/msg_send.php"
10 
11 #define SCHEMA "org.foxtrotgps"
12 #define TILESIZE 256
13 #define MAP_PAGE 0
14 #define FRIENDS_PAGE 1
15 
16 #define TRACKPOINT_LIST_MAX_LENGTH 10000	/* max points to keep in mem */
17 #define TRIP_DELTA_MIN 0.005			/* min distance between points to log: 5m */
18 #define SEGMENT_DISTANCE 100			/* start a new segment when distance exceeds: 100m */
19 
20 typedef struct {
21 	int   time;
22 	float lat;
23 	float lon;
24 	float lat_deg;
25 	float lon_deg;
26 	float alt;
27 	float speed;
28 	float head;
29 	float hdop;
30 	int   heart;
31 } trackpoint_t;
32 
33 typedef struct {
34 	double lat;
35 	double lon;
36 } waypoint_t;
37 
38 typedef struct {
39 	char *name;
40 	char *uri;
41 	char *dir;
42 	int inverted_zoom;
43 } repo_t;
44 
45 
46 typedef struct {
47 	char *filename;
48 	char *name;
49 	double lat;
50 	double lon;
51 	char *desc;
52 	int screen_x;
53 	int screen_y;
54 } photo_t;
55 
56 typedef struct {
57 	char *idmd5;
58 	double lat_deg;
59 	double lon_deg;
60 	int visibility;
61 	int category;
62 	int subcategory;
63 	char *keywords;
64 	char *desc;
65 	int price_range;
66 	int extended_open;
67 	int screen_x;
68 	int screen_y;
69 	GtkWidget *widget;
70 } poi_t;
71 
72 typedef struct {
73 	double time;		/* Time of update, seconds since Unix epoch */
74 	int    mode;		/* Mode of fix */
75 	double latitude;	/* Latitude in degrees (valid if mode >= 2) */
76 	double longitude;	/* Longitude in degrees (valid if mode >= 2) */
77 	double altitude;	/* Altitude in meters (valid if mode == 3) */
78 	double heading;
79 	double speed;		/* Speed over ground, meters/sec */
80 	double bearing;		/* in radian, calculated by tangogps */
81 } tangogps_gps_fix_t;
82 
83 typedef struct {
84 	tangogps_gps_fix_t fix;
85 	int satellites_used;
86 	int satellites_inview;
87 	double hdop;
88 	gboolean valid;
89 	gboolean seen_valid; /* ever had a valid fix? */
90 } tangogps_gps_data_t;
91 
92 typedef struct {
93 	int freq;
94 	int min;
95 	int max;
96 } hrm_data_t;
97 
98 extern GdkPixmap 	*pixmap;
99 
100 extern const char	*gladefile;
101 extern GladeXML		*gladexml;
102 
103 extern GtkWidget	*window1, *window2;
104 extern GtkWidget	*map_drawable;
105 extern GtkWidget	*dialog1;
106 extern GtkWidget	*dialog8;
107 extern GtkWidget	*window3;
108 extern GtkWidget	*menu1;
109 extern GtkWidget	*route_menu;
110 extern GList		*global_infopane_widgets;
111 extern GList		*global_infopane_current;
112 
113 extern char *global_track_dir;
114 
115 extern int global_x;
116 extern int global_y;
117 extern int global_zoom;
118 extern int global_zoom_max;
119 extern int global_detail_zoom;
120 
121 extern int mouse_dx; // for mouse move pixmap
122 extern int mouse_dy;
123 
124 extern int global_speed_unit;
125 extern int global_alt_unit;
126 extern int global_latlon_unit;
127 
128 extern int global_drawingarea_width;
129 extern int global_drawingarea_height;
130 
131 
132 extern tangogps_gps_data_t *gpsdata;
133 extern hrm_data_t *hrmdata;
134 
135 extern GQueue		*trackpoint_list;
136 extern GSList		*friends_list;
137 extern GSList		*photo_list;
138 extern GSList		*poi_list;
139 extern GSList		*msg_list;
140 extern float		trip_distance;
141 extern double		trip_maxspeed;
142 extern double		trip_time;
143 extern double		trip_starttime;
144 extern gboolean		trip_counter_on;
145 extern trackpoint_t	global_myposition;
146 extern gboolean		trip_logger_on;
147 extern gboolean		trip_livelog_on;
148 extern gboolean		hrm_on;
149 
150 extern gchar		*global_curr_reponame;
151 extern int		global_repo_cnt;
152 extern int		global_repo_nr;
153 extern GSList	 	*global_repo_list, *global_curr_repo;
154 extern GSettings	*global_settings;
155 
156 extern gboolean		global_infopane_visible;
157 extern gboolean		global_landscape;
158 extern gboolean		global_auto_download;
159 extern gboolean		global_no_redownload;
160 extern gboolean		global_mapmode;
161 extern gboolean		global_autocenter;
162 extern gboolean		global_reconnect_hrm;
163 extern int		global_tiles_in_dl_queue;
164 
165 extern gboolean		global_show_pois;
166 extern gboolean		global_show_friends;
167 extern gboolean		global_show_photos;
168 extern gboolean		global_new_msg;
169 extern int		global_poi_cat;
170 
171 extern gboolean		global_wp_on;
172 extern waypoint_t	global_wp;
173 
174 extern char		*global_friend_nick;
175 extern char		*global_friend_pass;
176 
177 extern int		global_ffupdate_interval;
178 extern double		global_ffupdate_interval_minutes;
179 extern gboolean		global_fftimer_running;
180 extern int		global_ff_mode;
181 
182 extern gchar		*global_server;
183 extern gchar		*global_port;
184 
185 extern gchar		*global_hrm_bt_addr;
186 
187 extern gchar		*global_home_dir;
188 extern gchar		*foxtrotgps_dir;
189 
190 extern int		mouse_x;
191 extern int		mouse_y;
192 
193 extern int		drag_started;
194 
195 
196 enum {
197 	PRIVATE_MODE = 1,
198 	FRIEND_MODE = 2,
199 	FUN_MODE = 3
200 };
201 
202 enum {
203 	METRICAL = 0,
204 	IMPERIAL = 1,
205 	NAUTICAL = 2
206 };
207