]> err.no Git - mapper/blobdiff - src/poi.h
Allow a bit faster movement for the random gps simulator.
[mapper] / src / poi.h
index 485cfc52474031fb37e616a570bc37540120fc6c..e488e78858c0cbd43688ffa44428abc3253ad15e 100644 (file)
--- a/src/poi.h
+++ b/src/poi.h
 #ifndef _MAPPER_POI_H
 #define _MAPPER_POI_H
 
+#include <glib.h>
 #include <sqlite3.h>
 
+#include "osm.h"
+
+/** Category list **/
+typedef enum {
+       CAT_ID,
+       CAT_ENABLED,
+       CAT_LABEL,
+       CAT_DESC,
+       CAT_POI_CNT,
+       CAT_ICON,
+       CAT_NUM_COLUMNS
+} CategoryList;
+
 typedef enum {
        POI_TYPE_POINT=0,
        POI_TYPE_LANDMARK=1,
 } poi_types_e;
 
-typedef struct _PoiDb PoiDb;
-struct _PoiDb {
+typedef enum {
+       POI_SEARCH_NEAR=0,
+       POI_SEARCH_TEXT,
+       POI_SEARCH_TEXT_CAT,
+       POI_SEARCH_CAT,
+} poi_search_type;
+
+typedef enum {
+       POI_SOURCE_USER=0,
+       POI_SOURCE_OSM=1,
+       POI_SOURCE_GPX_IMPORT=2,
+} poi_source;
+
+typedef struct _poi_db poi_db;
+struct _poi_db {
        sqlite3 *db;
        gchar *file;
        guint zoom;
 };
 
-typedef struct _PoiData PoiData;
-struct _PoiData {
-       gfloat lat;
-       gfloat lon;
-       gchar *name;
-       gchar *desc;
-};
-
-/** Data to describe a POI. */
-typedef struct _PoiInfo PoiInfo;
-struct _PoiInfo {
+/** 
+ * Data to describe a POI. 
+ */
+typedef struct _poi_info poi_info;
+struct _poi_info {
        guint poi_id;
        guint cat_id;
-       gfloat lat;
-       gfloat lon;
+       guint is_in_c;
+       guint is_in_p;
+       guint source;
+       time_t addtime;
+       gdouble lat;
+       gdouble lon;
+       gboolean public;
        gchar *label;
        gchar *desc;
        gchar *cat_label;
        gchar *cat_desc;
+       gchar *postal_code;
+       gchar *url;
 };
 
-/** Data used during action: add or edit category/poi **/
-typedef struct _DeletePOI DeletePOI;
-struct _DeletePOI {
+/** 
+ * Data used during action: add or edit category/poi 
+ */
+typedef struct _delete_poi delete_poi;
+struct _delete_poi {
        GtkWidget *dialog;
        gchar *txt_label;
        guint id;
 };
 
+/**
+ * Data describing a single POI category 
+ */
+typedef struct _poi_category poi_category;
+struct _poi_category {
+       guint id;
+       gboolean enabled;
+       gboolean warning;
+       gchar *label;
+       gchar *desc;
+};
+
+/* POI SQL */
+struct sql_poi_stmt {
+       sqlite3_stmt *select_poi;
+       sqlite3_stmt *select_poi_by_id;
+       sqlite3_stmt *select_nearest_poi;
+       sqlite3_stmt *select_poi_search;
+       sqlite3_stmt *select_poi_search_cat;
+       sqlite3_stmt *select_poi_by_cat;
+       sqlite3_stmt *insert_poi;
+       sqlite3_stmt *update_poi;
+       sqlite3_stmt *delete_poi;
+       sqlite3_stmt *delete_poi_by_catid;
+       sqlite3_stmt *select_cat;
+       sqlite3_stmt *insert_cat;
+       sqlite3_stmt *update_cat;
+       sqlite3_stmt *delete_cat;
+       sqlite3_stmt *toggle_cat;
+       sqlite3_stmt *selall_cat;
+       sqlite3_stmt *select_quick_cat;
+};
+struct sql_poi_stmt poisql;
+
 guint _poi_zoom;
 
-/* POI SQL statements */
-sqlite3_stmt *_stmt_select_poi;
-sqlite3_stmt *_stmt_select_nearest_poi;
-sqlite3_stmt *_stmt_insert_poi;
-sqlite3_stmt *_stmt_update_poi;
-sqlite3_stmt *_stmt_delete_poi;
-sqlite3_stmt *_stmt_delete_poi_by_catid;
-sqlite3_stmt *_stmt_nextlabel_poi;
-
-/* Category SQL statements */
-sqlite3_stmt *_stmt_select_cat;
-sqlite3_stmt *_stmt_insert_cat;
-sqlite3_stmt *_stmt_update_cat;
-sqlite3_stmt *_stmt_delete_cat;
-sqlite3_stmt *_stmt_toggle_cat;
-sqlite3_stmt *_stmt_selall_cat;
-
-gboolean poi_get_list(guint unitx, guint unity, GtkListStore **store, guint *num_cats);
-gboolean poi_update(gint poi_id, gint cat_id, gchar *poi_label, gchar *poi_desc);
-gboolean poi_add(gdouble lat, gdouble lon, gint cat_id, gchar *poi_label, gchar *poi_desc);
-gboolean poi_delete(DeletePOI * dpoi);
-gboolean poi_category_delete(DeletePOI * dpoi);
-gboolean poi_category_update(gint cat_id, gchar * cat_label, gchar * cat_desc, gint cat_enabled);
-PoiInfo *poi_find_nearest(gdouble lat, gdouble lon);
+gboolean poi_init(sqlite3 **db);
+void poi_deinit(sqlite3 *db);
+
+gboolean poi_db_create(sqlite3 *db);
+gboolean poi_db_prepare(sqlite3 *db);
+
+poi_info *poi_new(void);
+void poi_free(poi_info *p);
+
+gboolean poi_get_list_near_unit(guint unitx, guint unity, guint range, GtkListStore **store, guint *num_poi);
+gboolean poi_get_list_inside(gdouble lat1, gdouble lon1, gdouble lat2, gdouble lon2, GtkListStore **store, guint *num_poi);
+
+poi_info *poi_get_by_id(guint id);
+
+gboolean poi_update(poi_info *p);
+gboolean poi_add(poi_info *p);
+gboolean poi_delete(guint id);
+
+gboolean poi_search(poi_search_type pst, gdouble lat, gdouble lon, gchar *text, guint cat, GtkListStore **store);
+poi_info *poi_find_nearest(gdouble lat, gdouble lon);
+
+gboolean poi_get_list_near_unit(guint unitx, guint unity, guint range, GtkListStore **store, guint *num_poi);
+
+poi_category *poi_category_new(void);
+void poi_category_free(poi_category *c);
+
+gboolean poi_category_get(guint cat_id, poi_category **c);
+gboolean poi_category_delete(guint id);
+gboolean poi_category_update(guint cat_id, poi_category *c);
+gboolean poi_category_toggle(guint cat_id, gboolean cat_enabled);
+
+GdkPixbuf *poi_get_icon(gchar *icon, gboolean big);
+const gchar *poi_get_icon_from_type(node_type_t t);
+void poi_icon_hash_clear(void);
 
+GtkListStore *poi_category_generate_store(void);
 
 #endif