]> err.no Git - mapper/blob - src/poi.h
Fixes to gstreamer element and caps handlings.
[mapper] / src / poi.h
1 /*
2  * POI definitions
3  *
4  * See docs for table definitions.
5  */
6
7 #ifndef _MAPPER_POI_H
8 #define _MAPPER_POI_H
9
10 #include <glib.h>
11 #include <sqlite3.h>
12
13 #include "osm.h"
14
15 /** Category list **/
16 typedef enum {
17         CAT_ID,
18         CAT_ENABLED,
19         CAT_LABEL,
20         CAT_DESC,
21         CAT_POI_CNT,
22         CAT_ICON,
23         CAT_NUM_COLUMNS
24 } CategoryList;
25
26 typedef enum {
27         POI_TYPE_POINT=0,
28         POI_TYPE_LANDMARK=1,
29 } poi_types_e;
30
31 typedef enum {
32         POI_SEARCH_NEAR=0,
33         POI_SEARCH_TEXT,
34         POI_SEARCH_TEXT_CAT,
35         POI_SEARCH_CAT,
36 } poi_search_type;
37
38 typedef enum {
39         POI_SOURCE_USER=0,
40         POI_SOURCE_OSM=1,
41         POI_SOURCE_GPX_IMPORT=2,
42 } poi_source;
43
44 typedef struct _poi_db poi_db;
45 struct _poi_db {
46         sqlite3 *db;
47         gchar *file;
48         guint zoom;
49 };
50
51 /** 
52  * Data to describe a POI. 
53  */
54 typedef struct _poi_info poi_info;
55 struct _poi_info {
56         guint poi_id;
57         guint cat_id;
58         guint is_in_c;
59         guint is_in_p;
60         guint source;
61         time_t addtime;
62         gdouble lat;
63         gdouble lon;
64         gboolean public;
65         gchar *label;
66         gchar *desc;
67         gchar *cat_label;
68         gchar *cat_desc;
69         gchar *postal_code;
70         gchar *url;
71 };
72
73 /** 
74  * Data used during action: add or edit category/poi 
75  */
76 typedef struct _delete_poi delete_poi;
77 struct _delete_poi {
78         GtkWidget *dialog;
79         gchar *txt_label;
80         guint id;
81 };
82
83 /**
84  * Data describing a single POI category 
85  */
86 typedef struct _poi_category poi_category;
87 struct _poi_category {
88         guint id;
89         gboolean enabled;
90         gboolean warning;
91         gchar *label;
92         gchar *desc;
93 };
94
95 /* POI SQL */
96 struct sql_poi_stmt {
97         sqlite3_stmt *select_poi;
98         sqlite3_stmt *select_poi_by_id;
99         sqlite3_stmt *select_nearest_poi;
100         sqlite3_stmt *select_poi_search;
101         sqlite3_stmt *select_poi_search_cat;
102         sqlite3_stmt *select_poi_by_cat;
103         sqlite3_stmt *insert_poi;
104         sqlite3_stmt *update_poi;
105         sqlite3_stmt *delete_poi;
106         sqlite3_stmt *delete_poi_by_catid;
107         sqlite3_stmt *select_cat;
108         sqlite3_stmt *insert_cat;
109         sqlite3_stmt *update_cat;
110         sqlite3_stmt *delete_cat;
111         sqlite3_stmt *toggle_cat;
112         sqlite3_stmt *selall_cat;
113         sqlite3_stmt *select_quick_cat;
114 };
115 struct sql_poi_stmt poisql;
116
117 guint _poi_zoom;
118
119 gboolean poi_init(sqlite3 **db);
120 void poi_deinit(sqlite3 *db);
121
122 gboolean poi_db_create(sqlite3 *db);
123 gboolean poi_db_prepare(sqlite3 *db);
124
125 poi_info *poi_new(void);
126 void poi_free(poi_info *p);
127
128 gboolean poi_get_list_near_unit(guint unitx, guint unity, guint range, GtkListStore **store, guint *num_poi);
129 gboolean poi_get_list_inside(gdouble lat1, gdouble lon1, gdouble lat2, gdouble lon2, GtkListStore **store, guint *num_poi);
130
131 poi_info *poi_get_by_id(guint id);
132
133 gboolean poi_update(poi_info *p);
134 gboolean poi_add(poi_info *p);
135 gboolean poi_delete(guint id);
136
137 gboolean poi_search(poi_search_type pst, gdouble lat, gdouble lon, gchar *text, guint cat, GtkListStore **store);
138 poi_info *poi_find_nearest(gdouble lat, gdouble lon);
139
140 gboolean poi_get_list_near_unit(guint unitx, guint unity, guint range, GtkListStore **store, guint *num_poi);
141
142 poi_category *poi_category_new(void);
143 void poi_category_free(poi_category *c);
144
145 gboolean poi_category_get(guint cat_id, poi_category **c);
146 gboolean poi_category_delete(guint id);
147 gboolean poi_category_update(guint cat_id, poi_category *c);
148 gboolean poi_category_toggle(guint cat_id, gboolean cat_enabled);
149
150 GdkPixbuf *poi_get_icon(gchar *icon, gboolean big);
151 const gchar *poi_get_icon_from_type(node_type_t t);
152 void poi_icon_hash_clear(void);
153
154 GtkListStore *poi_category_generate_store(void);
155
156 #endif