]> err.no Git - mapper/blob - src/poi.h
Merge branch 'master' of git+ssh://tal.org/home/git/mapper
[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_type;
23
24 typedef struct _poi_db poi_db;
25 struct _poi_db {
26         sqlite3 *db;
27         gchar *file;
28         guint zoom;
29 };
30
31 /** Data to describe a POI. */
32 typedef struct _poi_info poi_info;
33 struct _poi_info {
34         guint poi_id;
35         guint cat_id;
36         guint is_in;
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         guint id;
56         gboolean enabled;
57         gboolean warning;
58         gchar *label;
59         gchar *desc;
60 };
61
62 struct sql_poi_stmt {
63         sqlite3_stmt *select_poi;
64         sqlite3_stmt *select_nearest_poi;
65         sqlite3_stmt *select_poi_search;
66         sqlite3_stmt *select_poi_search_cat;
67         sqlite3_stmt *insert_poi;
68         sqlite3_stmt *update_poi;
69         sqlite3_stmt *delete_poi;
70         sqlite3_stmt *delete_poi_by_catid;
71         sqlite3_stmt *nextlabel_poi;
72         sqlite3_stmt *select_cat;
73         sqlite3_stmt *insert_cat;
74         sqlite3_stmt *update_cat;
75         sqlite3_stmt *delete_cat;
76         sqlite3_stmt *toggle_cat;
77         sqlite3_stmt *selall_cat;
78         sqlite3_stmt *select_quick_cat;
79 };
80 struct sql_poi_stmt poisql;
81
82 guint _poi_zoom;
83
84 gboolean poi_init(sqlite3 **db);
85 void poi_deinit(sqlite3 *db);
86
87 gboolean poi_db_create(sqlite3 *db);
88 gboolean poi_db_prepare(sqlite3 *db);
89
90 poi_info *poi_new(void);
91 void poi_free(poi_info *p);
92
93 gboolean poi_get_list_near(guint unitx, guint unity, GtkListStore **store, guint *num_cats);
94 gboolean poi_update(guint poi_id, guint cat_id, gchar *poi_label, gchar *poi_desc);
95 gboolean poi_add(gdouble lat, gdouble lon, guint cat_id, gchar *poi_label, gchar *poi_desc);
96 gboolean poi_delete(guint id);
97
98 gboolean poi_search(poi_search_type pst, gdouble lat, gdouble lon, gchar *text, guint cat, GtkListStore **store);
99
100 poi_category *poi_category_new(void);
101 void poi_category_free(poi_category *c);
102 gboolean poi_category_get(guint cat_id, poi_category **c);
103 gboolean poi_category_delete(guint id);
104 gboolean poi_category_update(guint cat_id, poi_category *c);
105 poi_info *poi_find_nearest(gdouble lat, gdouble lon);
106 gboolean poi_category_toggle(guint cat_id, gboolean cat_enabled);
107 GtkListStore *poi_category_generate_store(void);
108
109 #endif