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