[frogr] Save some additional information in project files
- From: Mario Sanchez Prada <msanchez src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [frogr] Save some additional information in project files
- Date: Sun, 9 Dec 2012 01:12:28 +0000 (UTC)
commit 7e0cb57cf6e020886f7e0d47307b44ae991661b7
Author: Mario Sanchez Prada <msanchez gnome org>
Date: Sun Dec 9 01:43:12 2012 +0100
Save some additional information in project files
src/frogr-controller.c | 30 ++++++++++++++++++++++++------
src/frogr-model.c | 13 +++----------
src/frogr-model.h | 4 ++--
3 files changed, 29 insertions(+), 18 deletions(-)
---
diff --git a/src/frogr-controller.c b/src/frogr-controller.c
index 2011b12..6f57cfd 100644
--- a/src/frogr-controller.c
+++ b/src/frogr-controller.c
@@ -2848,7 +2848,9 @@ frogr_controller_open_project_from_file (FrogrController *self, const gchar *pat
{
FrogrControllerPrivate *priv = NULL;
FrogrModel *model = NULL;
- JsonNode *json_root = NULL;
+ JsonNode *root_node = NULL;
+ JsonObject *root_object = NULL;
+ JsonObject *data_object = NULL;
/* Make sure we are not fetching any data from the network at
this moment, or cancel otherwise, so the model is ready */
@@ -2860,8 +2862,12 @@ frogr_controller_open_project_from_file (FrogrController *self, const gchar *pat
_set_state (self, FROGR_STATE_LOADING_PICTURES);
model = frogr_main_view_get_model (priv->mainview);
- json_root = json_parser_get_root (json_parser);
- frogr_model_deserialize (model, json_root);
+ root_node = json_parser_get_root (json_parser);
+
+ root_object = json_node_get_object (root_node);
+ data_object = json_object_get_object_member (root_object, "data");
+
+ frogr_model_deserialize (model, data_object);
}
g_object_unref (json_parser);
@@ -2873,7 +2879,9 @@ frogr_controller_save_project_to_file (FrogrController *self, const gchar *path)
FrogrControllerPrivate *priv = NULL;
FrogrModel *model = NULL;
JsonGenerator *json_gen = NULL;
- JsonNode *serialized_model = NULL;
+ JsonNode *root_node = NULL;
+ JsonObject *root_object = NULL;
+ JsonObject *serialized_model = NULL;
GError *error = NULL;
g_return_if_fail(FROGR_IS_CONTROLLER (self));
@@ -2881,12 +2889,22 @@ frogr_controller_save_project_to_file (FrogrController *self, const gchar *path)
priv = FROGR_CONTROLLER_GET_PRIVATE (self);
model = frogr_main_view_get_model (priv->mainview);
+ root_node = json_node_new (JSON_NODE_OBJECT);
+ root_object = json_object_new ();
+ json_object_set_string_member (root_object, "frogr-version", APP_VERSION);
+ json_object_set_int_member (root_object, "n_pictures", frogr_model_n_pictures (model));
+ json_object_set_int_member (root_object, "n_photosets", frogr_model_n_photosets (model));
+ json_object_set_int_member (root_object, "n_groups", frogr_model_n_groups (model));
+
serialized_model = frogr_model_serialize (model);
+ json_object_set_object_member (root_object, "data", serialized_model);
+ json_node_set_object (root_node, root_object);
+ json_object_unref (root_object);
/* Create a JsonGenerator using the JsonNode as root */
json_gen = json_generator_new ();
- json_generator_set_root (json_gen, serialized_model);
- json_node_free (serialized_model);
+ json_generator_set_root (json_gen, root_node);
+ json_node_free (root_node);
/* Save to disk */
json_generator_to_file (json_gen, path, &error);
diff --git a/src/frogr-model.c b/src/frogr-model.c
index 98ad1cd..f15faf5 100644
--- a/src/frogr-model.c
+++ b/src/frogr-model.c
@@ -776,11 +776,10 @@ frogr_model_get_tags (FrogrModel *self)
return priv->all_tags;
}
-JsonNode *
+JsonObject *
frogr_model_serialize (FrogrModel *self)
{
JsonArray *json_array = NULL;
- JsonNode *root_node = NULL;
JsonObject *root_object = NULL;
GSList *data_list = NULL;
@@ -804,16 +803,12 @@ frogr_model_serialize (FrogrModel *self)
json_array = _serialize_list_to_json_array (data_list, G_TYPE_STRING);
json_object_set_array_member (root_object, "tags", json_array);
- root_node = json_node_new (JSON_NODE_OBJECT);
- json_node_set_object (root_node, root_object);
-
- return root_node;
+ return root_object;
}
void
-frogr_model_deserialize (FrogrModel *self, JsonNode *json_node)
+frogr_model_deserialize (FrogrModel *self, JsonObject *root_object)
{
- JsonObject *root_object = NULL;
JsonArray *array_member = NULL;
GSList *pictures = NULL;
GSList *sets = NULL;
@@ -823,8 +818,6 @@ frogr_model_deserialize (FrogrModel *self, JsonNode *json_node)
g_return_if_fail(FROGR_IS_MODEL (self));
/* First we get the different lists with data for sets, groups and tags */
- root_object = json_node_get_object (json_node);
-
array_member = json_object_get_array_member (root_object, "photosets");
if (array_member)
sets = _deserialize_list_from_json_array (array_member, FROGR_TYPE_PHOTOSET);
diff --git a/src/frogr-model.h b/src/frogr-model.h
index 6ed5e6d..b12d898 100644
--- a/src/frogr-model.h
+++ b/src/frogr-model.h
@@ -109,9 +109,9 @@ GSList *frogr_model_get_tags (FrogrModel *self);
/* Serialization */
-JsonNode *frogr_model_serialize (FrogrModel *self);
+JsonObject *frogr_model_serialize (FrogrModel *self);
-void frogr_model_deserialize (FrogrModel *self, JsonNode *json_node);
+void frogr_model_deserialize (FrogrModel *self, JsonObject *root_object);
G_END_DECLS
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]