]> err.no Git - mapper/blob - src/poi.h
Parse directly but update informations in callbacks only if we got a sentence that...
[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 typedef enum {
14         POI_TYPE_POINT=0,
15         POI_TYPE_LANDMARK=1,
16 } poi_types_e;
17
18 typedef enum {
19         POI_SEARCH_NEAR=0,
20         POI_SEARCH_TEXT,
21         POI_SEARCH_TEXT_CAT,
22         POI_SEARCH_CAT,
23 } poi_search_type;
24
25 typedef enum {
26         POI_SOURCE_USER=0,
27         POI_SOURCE_OSM=1,
28         POI_SOURCE_GPX_IMPORT=2,
29 } poi_source;
30
31 typedef struct _poi_db poi_db;
32 struct _poi_db {
33         sqlite3 *db;
34         gchar *file;
35         guint zoom;
36 };
37
38 /** 
39  * Data to describe a POI. 
40  */
41 typedef struct _poi_info poi_info;
42 struct _poi_info {
43         guint poi_id;
44         guint cat_id;
45         guint is_in_c;
46         guint is_in_p;
47         guint source;
48         time_t addtime;
49         gdouble lat;
50         gdouble lon;
51         gboolean public;
52         gchar *label;
53         gchar *desc;
54         gchar *cat_label;
55         gchar *cat_desc;
56         gchar *postal_code;
57         gchar *url;
58 };
59
60 /** 
61  * Data used during action: add or edit category/poi 
62  */
63 typedef struct _delete_poi delete_poi;
64 struct _delete_poi {
65         GtkWidget *dialog;
66         gchar *txt_label;
67         guint id;
68 };
69
70 /**
71  * Data describing a single POI category 
72  */
73 typedef struct _poi_category poi_category;
74 struct _poi_category {
75         guint id;
76         gboolean enabled;
77         gboolean warning;
78         gchar *label;
79         gchar *desc;
80 };
81
82 /* POI SQL */
83 struct sql_poi_stmt {
84         sqlite3_stmt *select_poi;
85         sqlite3_stmt *select_poi_by_id;
86         sqlite3_stmt *select_nearest_poi;
87         sqlite3_stmt *select_poi_search;
88         sqlite3_stmt *select_poi_search_cat;
89         sqlite3_stmt *select_poi_by_cat;
90         sqlite3_stmt *insert_poi;
91         sqlite3_stmt *update_poi;
92         sqlite3_stmt *delete_poi;
93         sqlite3_stmt *delete_poi_by_catid;
94         sqlite3_stmt *select_cat;
95         sqlite3_stmt *insert_cat;
96         sqlite3_stmt *update_cat;
97         sqlite3_stmt *delete_cat;
98         sqlite3_stmt *toggle_cat;
99         sqlite3_stmt *selall_cat;
100         sqlite3_stmt *select_quick_cat;
101 };
102 struct sql_poi_stmt poisql;
103
104 guint _poi_zoom;
105
106 gboolean poi_init(sqlite3 **db);
107 void poi_deinit(sqlite3 *db);
108
109 gboolean poi_db_create(sqlite3 *db);
110 gboolean poi_db_prepare(sqlite3 *db);
111
112 poi_info *poi_new(void);
113 void poi_free(poi_info *p);
114
115 gboolean poi_get_list_near_unit(guint unitx, guint unity, guint range, GtkListStore **store, guint *num_poi);
116 gboolean poi_get_list_inside(gdouble lat1, gdouble lon1, gdouble lat2, gdouble lon2, GtkListStore **store, guint *num_poi);
117
118 poi_info *poi_get_by_id(guint id);
119
120 gboolean poi_update(poi_info *p);
121 gboolean poi_add(poi_info *p);
122 gboolean poi_delete(guint id);
123
124 gboolean poi_search(poi_search_type pst, gdouble lat, gdouble lon, gchar *text, guint cat, GtkListStore **store);
125 poi_info *poi_find_nearest(gdouble lat, gdouble lon);
126
127 gboolean poi_get_list_near_unit(guint unitx, guint unity, guint range, GtkListStore **store, guint *num_poi);
128
129 poi_category *poi_category_new(void);
130 void poi_category_free(poi_category *c);
131
132 gboolean poi_category_get(guint cat_id, poi_category **c);
133 gboolean poi_category_delete(guint id);
134 gboolean poi_category_update(guint cat_id, poi_category *c);
135 gboolean poi_category_toggle(guint cat_id, gboolean cat_enabled);
136
137 GdkPixbuf *poi_get_icon(gchar *icon, gboolean big);
138
139 GtkListStore *poi_category_generate_store(void);
140
141 #endif