X-Git-Url: https://git.street.me.uk/andy/viking.git/blobdiff_plain/7363caa739bd64724ec6b12208d4f30f06258845..cca9f97b05c31a51ce886d5b14db93aa741cd95e:/src/vikmapsourcedefault.c?ds=sidebyside diff --git a/src/vikmapsourcedefault.c b/src/vikmapsourcedefault.c index d51e20c1..5e0e5702 100644 --- a/src/vikmapsourcedefault.c +++ b/src/vikmapsourcedefault.c @@ -18,8 +18,10 @@ */ #include "vikmapsourcedefault.h" +#include "vikenumtypes.h" static guint8 map_source_get_uniq_id (VikMapSource *self); +static const gchar *map_source_get_label (VikMapSource *self); static guint16 map_source_get_tilesize_x (VikMapSource *self); static guint16 map_source_get_tilesize_y (VikMapSource *self); static VikViewportDrawMode map_source_get_drawmode (VikMapSource *self); @@ -28,6 +30,7 @@ typedef struct _VikMapSourceDefaultPrivate VikMapSourceDefaultPrivate; struct _VikMapSourceDefaultPrivate { guint8 uniq_id; + gchar *label; guint16 tilesize_x; guint16 tilesize_y; VikViewportDrawMode drawmode; @@ -35,21 +38,116 @@ struct _VikMapSourceDefaultPrivate #define VIK_MAP_SOURCE_DEFAULT_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), VIK_TYPE_MAP_SOURCE_DEFAULT, VikMapSourceDefaultPrivate)) +/* properties */ +enum +{ + PROP_0, + + PROP_ID, + PROP_LABEL, + PROP_TILESIZE_X, + PROP_TILESIZE_Y, + PROP_DRAWMODE, +}; G_DEFINE_TYPE_EXTENDED (VikMapSourceDefault, vik_map_source_default, VIK_TYPE_MAP_SOURCE, (GTypeFlags)G_TYPE_FLAG_ABSTRACT,); static void vik_map_source_default_init (VikMapSourceDefault *object) { - /* TODO: Add initialization code here */ + VikMapSourceDefault *self = VIK_MAP_SOURCE_DEFAULT (object); + VikMapSourceDefaultPrivate *priv = VIK_MAP_SOURCE_DEFAULT_PRIVATE (self); + + priv->label = NULL; } static void vik_map_source_default_finalize (GObject *object) { - /* TODO: Add deinitalization code here */ + VikMapSourceDefault *self = VIK_MAP_SOURCE_DEFAULT (object); + VikMapSourceDefaultPrivate *priv = VIK_MAP_SOURCE_DEFAULT_PRIVATE (self); + + g_free (priv->label); + priv->label = NULL; + + G_OBJECT_CLASS (vik_map_source_default_parent_class)->finalize (object); +} + +static void +vik_map_source_default_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) +{ + VikMapSourceDefault *self = VIK_MAP_SOURCE_DEFAULT (object); + VikMapSourceDefaultPrivate *priv = VIK_MAP_SOURCE_DEFAULT_PRIVATE (self); + + switch (property_id) + { + case PROP_ID: + priv->uniq_id = g_value_get_uint (value); + break; + + case PROP_LABEL: + g_free (priv->label); + priv->label = g_strdup(g_value_get_string (value)); + break; + + case PROP_TILESIZE_X: + priv->tilesize_x = g_value_get_uint (value); + break; + + case PROP_TILESIZE_Y: + priv->tilesize_y = g_value_get_uint (value); + break; + + case PROP_DRAWMODE: + priv->drawmode = g_value_get_enum(value); + break; + + default: + /* We don't have any other property... */ + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +vik_map_source_default_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + VikMapSourceDefault *self = VIK_MAP_SOURCE_DEFAULT (object); + VikMapSourceDefaultPrivate *priv = VIK_MAP_SOURCE_DEFAULT_PRIVATE (self); + + switch (property_id) + { + case PROP_ID: + g_value_set_uint (value, priv->uniq_id); + break; + + case PROP_LABEL: + g_value_set_string (value, priv->label); + break; + + case PROP_TILESIZE_X: + g_value_set_uint (value, priv->tilesize_x); + break; - G_OBJECT_CLASS (vik_map_source_default_parent_class)->finalize (object); + case PROP_TILESIZE_Y: + g_value_set_uint (value, priv->tilesize_y); + break; + + case PROP_DRAWMODE: + g_value_set_enum (value, priv->drawmode); + break; + + default: + /* We don't have any other property... */ + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } } static void @@ -57,13 +155,60 @@ vik_map_source_default_class_init (VikMapSourceDefaultClass *klass) { GObjectClass* object_class = G_OBJECT_CLASS (klass); VikMapSourceClass* parent_class = VIK_MAP_SOURCE_CLASS (klass); - + GParamSpec *pspec = NULL; + + object_class->set_property = vik_map_source_default_set_property; + object_class->get_property = vik_map_source_default_get_property; + /* Overiding methods */ parent_class->get_uniq_id = map_source_get_uniq_id; + parent_class->get_label = map_source_get_label; parent_class->get_tilesize_x = map_source_get_tilesize_x; parent_class->get_tilesize_y = map_source_get_tilesize_y; parent_class->get_drawmode = map_source_get_drawmode; + pspec = g_param_spec_uint ("id", + "Id of the tool", + "Set the id", + 0 /* minimum value */, + G_MAXUINT8 /* maximum value */, + 0 /* default value */, + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE); + g_object_class_install_property (object_class, PROP_ID, pspec); + + pspec = g_param_spec_string ("label", + "Label", + "The label of the map source", + "" /* default value */, + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE); + g_object_class_install_property (object_class, PROP_LABEL, pspec); + + pspec = g_param_spec_uint ("tilesize-x", + "TileSizeX", + "Set the size of the tile (x)", + 0 /* minimum value */, + G_MAXUINT16 /* maximum value */, + 0 /* default value */, + G_PARAM_READWRITE); + g_object_class_install_property (object_class, PROP_TILESIZE_X, pspec); + + pspec = g_param_spec_uint ("tilesize-y", + "TileSizeY", + "Set the size of the tile (y)", + 0 /* minimum value */, + G_MAXUINT16 /* maximum value */, + 0 /* default value */, + G_PARAM_READWRITE); + g_object_class_install_property (object_class, PROP_TILESIZE_Y, pspec); + + pspec = g_param_spec_enum("drawmode", + "Drawmode", + "The mode used to draw map", + VIK_TYPE_VIEWPORT_DRAW_MODE, + VIK_VIEWPORT_DRAWMODE_UTM, + G_PARAM_READWRITE); + g_object_class_install_property(object_class, PROP_DRAWMODE, pspec); + g_type_class_add_private (klass, sizeof (VikMapSourceDefaultPrivate)); object_class->finalize = vik_map_source_default_finalize; @@ -79,6 +224,16 @@ map_source_get_uniq_id (VikMapSource *self) return priv->uniq_id; } +static const gchar * +map_source_get_label (VikMapSource *self) +{ + g_return_val_if_fail (VIK_IS_MAP_SOURCE_DEFAULT(self), NULL); + + VikMapSourceDefaultPrivate *priv = VIK_MAP_SOURCE_DEFAULT_PRIVATE(self); + + return priv->label; +} + static guint16 map_source_get_tilesize_x (VikMapSource *self) { @@ -108,43 +263,3 @@ map_source_get_drawmode (VikMapSource *self) return priv->drawmode; } - -void -vik_map_source_default_set_uniq_id (VikMapSourceDefault *self, guint8 id) -{ - g_return_if_fail (VIK_IS_MAP_SOURCE_DEFAULT(self)); - - /* TODO use property */ - VikMapSourceDefaultPrivate *priv = VIK_MAP_SOURCE_DEFAULT_PRIVATE(self); - priv->uniq_id = id; -} - -void -vik_map_source_default_set_tilesize_x (VikMapSourceDefault *self, guint16 tilesize_x) -{ - g_return_if_fail (VIK_IS_MAP_SOURCE_DEFAULT(self)); - - /* TODO use property */ - VikMapSourceDefaultPrivate *priv = VIK_MAP_SOURCE_DEFAULT_PRIVATE(self); - priv->tilesize_x = tilesize_x; -} - -void -vik_map_source_default_set_tilesize_y (VikMapSourceDefault *self, guint16 tilesize_y) -{ - g_return_if_fail (VIK_IS_MAP_SOURCE_DEFAULT(self)); - - /* TODO use property */ - VikMapSourceDefaultPrivate *priv = VIK_MAP_SOURCE_DEFAULT_PRIVATE(self); - priv->tilesize_y = tilesize_y; -} - -void -vik_map_source_default_set_drawmode (VikMapSourceDefault *self, VikViewportDrawMode drawmode) -{ - g_return_if_fail (VIK_IS_MAP_SOURCE_DEFAULT(self)); - - /* TODO use property */ - VikMapSourceDefaultPrivate *priv = VIK_MAP_SOURCE_DEFAULT_PRIVATE(self); - priv->drawmode = drawmode; -}