]> err.no Git - mapper/blob - src/poi.h
Misc cleanups.
[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 <sqlite3.h>
11
12 typedef enum {
13         POI_TYPE_POINT=0,
14         POI_TYPE_LANDMARK=1,
15 } poi_types_e;
16
17 typedef struct _poi_db poi_db;
18 struct _poi_db {
19         sqlite3 *db;
20         gchar *file;
21         guint zoom;
22 };
23
24 typedef struct _poi_data poi_data;
25 struct _poi_data {
26         gdouble lat;
27         gdouble lon;
28         gchar *name;
29         gchar *desc;
30 };
31
32 /** Data to describe a POI. */
33 typedef struct _poi_info poi_info;
34 struct _poi_info {
35         guint poi_id;
36         guint cat_id;
37         gdouble lat;
38         gdouble lon;
39         gchar *label;
40         gchar *desc;
41         gchar *cat_label;
42         gchar *cat_desc;
43 };
44
45 /** Data used during action: add or edit category/poi **/
46 typedef struct _delete_poi delete_poi;
47 struct _delete_poi {
48         GtkWidget *dialog;
49         gchar *txt_label;
50         guint id;
51 };
52
53 typedef struct _poi_category poi_category;
54 struct _poi_category {
55         gint id;
56         gint enabled;
57         gchar *label;
58         gchar *desc;
59 };
60
61 struct sql_poi_stmt {
62         sqlite3_stmt *select_poi;
63         sqlite3_stmt *select_nearest_poi;
64         sqlite3_stmt *insert_poi;
65         sqlite3_stmt *update_poi;
66         sqlite3_stmt *delete_poi;
67         sqlite3_stmt *delete_poi_by_catid;
68         sqlite3_stmt *nextlabel_poi;
69         sqlite3_stmt *select_cat;
70         sqlite3_stmt *insert_cat;
71         sqlite3_stmt *update_cat;
72         sqlite3_stmt *delete_cat;
73         sqlite3_stmt *toggle_cat;
74         sqlite3_stmt *selall_cat;
75         sqlite3_stmt *select_quick_cat;
76 };
77 struct sql_poi_stmt poisql;
78
79 guint _poi_zoom;
80
81 gboolean poi_db_create(sqlite3 *db);
82 gboolean poi_db_prepare(sqlite3 *db);
83
84 poi_info *poi_new(void);
85 void poi_free(poi_info *p);
86 gboolean poi_get_list(guint unitx, guint unity, GtkListStore **store, guint *num_cats);
87 gboolean poi_update(gint poi_id, gint cat_id, gchar *poi_label, gchar *poi_desc);
88 gboolean poi_add(gdouble lat, gdouble lon, gint cat_id, gchar *poi_label, gchar *poi_desc);
89 gboolean poi_delete(delete_poi * dpoi);
90
91 poi_category *poi_category_new(void);
92 void poi_category_free(poi_category *c);
93 gboolean poi_category_get(gint cat_id, poi_category **c);
94 gboolean poi_category_delete(delete_poi * dpoi);
95 gboolean poi_category_update(gint cat_id, poi_category *c);
96 poi_info *poi_find_nearest(gdouble lat, gdouble lon);
97 gboolean poi_category_toggle(gint cat_id, gboolean cat_enabled);
98 GtkListStore *poi_category_generate_store();
99
100 #endif