Changed GsweMoment.timestamp from GDateTime to GsweTimestamp

This commit is contained in:
Gergely Polonkai 2013-09-01 14:31:23 +02:00
parent 1b7da6ddf8
commit 7bb7086c6d

View File

@ -4,7 +4,7 @@
#define GSWE_MOMENT_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), GSWE_TYPE_MOMENT, GsweMomentPrivate)) #define GSWE_MOMENT_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), GSWE_TYPE_MOMENT, GsweMomentPrivate))
struct _GsweMomentPrivate { struct _GsweMomentPrivate {
GDateTime *timestamp; GsweTimestamp *timestamp;
GsweCoordinates coordinates; GsweCoordinates coordinates;
}; };
@ -52,7 +52,7 @@ gswe_moment_class_init(GsweMomentClass *klass)
* *
* The timestamp associated with this moment * The timestamp associated with this moment
*/ */
g_object_class_install_property(gobject_class, PROP_TIMESTAMP, g_param_spec_pointer("timestamp", "Timestamp", "Timestamp of this moment", G_PARAM_READWRITE)); g_object_class_install_property(gobject_class, PROP_TIMESTAMP, g_param_spec_object("timestamp", "Timestamp", "Timestamp of this moment", GSWE_TYPE_TIMESTAMP, G_PARAM_READWRITE));
} }
static void static void
@ -62,20 +62,28 @@ gswe_moment_emit_changed(GsweMoment *moment)
} }
void void
gswe_moment_init(GsweMoment *self) gswe_moment_init(GsweMoment *moment)
{ {
self->priv = GSWE_MOMENT_GET_PRIVATE(self); moment->priv = GSWE_MOMENT_GET_PRIVATE(moment);
//self->priv->an_object = g_object_new(MAMAN_TYPE_BAZ, NULL); moment->priv->timestamp = NULL;
//self->priv->a_string = g_strdup("Maman");
//moment->priv->a_string = g_strdup("Maman");
}
static void
gswe_moment_timestamp_changed(GsweMoment *moment, gpointer data)
{
} }
static void static void
gswe_moment_dispose(GObject *gobject) gswe_moment_dispose(GObject *gobject)
{ {
//GsweMoment *self = GSWE_MOMENT(gobject); GsweMoment *moment = GSWE_MOMENT(gobject);
//g_clear_object(&self->priv->an_object); g_signal_handlers_disconnect_by_func(moment->priv->timestamp, gswe_moment_timestamp_changed, NULL);
g_clear_object(&moment->priv->timestamp);
G_OBJECT_CLASS(gswe_moment_parent_class)->dispose(gobject); G_OBJECT_CLASS(gswe_moment_parent_class)->dispose(gobject);
} }
@ -83,9 +91,9 @@ gswe_moment_dispose(GObject *gobject)
static void static void
gswe_moment_finalize(GObject *gobject) gswe_moment_finalize(GObject *gobject)
{ {
//GsweMoment *self = GSWE_MOMENT(gobject); //GsweMoment *moment = GSWE_MOMENT(gobject);
//g_free(self->priv->a_string); //g_free(moment->priv->a_string);
G_OBJECT_CLASS(gswe_moment_parent_class)->finalize(gobject); G_OBJECT_CLASS(gswe_moment_parent_class)->finalize(gobject);
} }
@ -130,13 +138,31 @@ gswe_moment_get_property(GObject *object, guint prop_id, GValue *value, GParamSp
void void
gswe_moment_set_timestamp(GsweMoment *moment, GsweTimestamp *timestamp) gswe_moment_set_timestamp(GsweMoment *moment, GsweTimestamp *timestamp)
{ {
GsweMomentPrivate *priv = moment->priv; if (moment->priv->timestamp != NULL) {
g_signal_handlers_disconnect_by_func(moment->priv->timestamp, gswe_moment_timestamp_changed, NULL);
g_clear_object(&moment->priv->timestamp);
}
moment->priv->timestamp = timestamp;
g_object_ref(timestamp);
g_signal_connect(G_OBJECT(timestamp), "changed", G_CALLBACK(gswe_moment_timestamp_changed), NULL);
priv->timestamp = timestamp;
/* Emit the changed signal to notify registrants of the change */ /* Emit the changed signal to notify registrants of the change */
gswe_moment_emit_changed(moment); gswe_moment_emit_changed(moment);
} }
/**
* gswe_moment_get_timestamp:
* @moment: The GsweMoment object of which you requent its timestamp object
*
* Returns: a #GsweTimestamp object assigned to the given moment
*/
GsweTimestamp *
gswe_moment_get_timestamp(GsweMoment *moment)
{
return moment->priv->timestamp;
}
GQuark GQuark
gswe_moment_error_quark(void) gswe_moment_error_quark(void)
{ {