From 0571253730c334b8059a30c20200a34de1ff926e Mon Sep 17 00:00:00 2001 From: "Gergely POLONKAI (W00d5t0ck)" Date: Wed, 18 Sep 2013 00:45:19 +0200 Subject: [PATCH] Started creating save functionality --- src/ag-window.c | 99 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) diff --git a/src/ag-window.c b/src/ag-window.c index 311eaa8..6d585b8 100644 --- a/src/ag-window.c +++ b/src/ag-window.c @@ -1,6 +1,8 @@ #include #include #include +#include +#include #include @@ -42,6 +44,8 @@ G_DEFINE_TYPE(AgWindow, ag_window, GTK_TYPE_APPLICATION_WINDOW); #define GET_PRIVATE(instance) (G_TYPE_INSTANCE_GET_PRIVATE((instance), AG_TYPE_WINDOW, AgWindowPrivate)) +static void recalculate_chart(AgWindow *window); + static void gear_menu_cb(GSimpleAction *action, GVariant *parameter, gpointer user_data) { @@ -65,6 +69,101 @@ close_cb(GSimpleAction *action, GVariant *parameter, gpointer user_data) static void save_cb(GSimpleAction *action, GVariant *parameter, gpointer user_data) { + xmlDocPtr doc = NULL; + xmlNodePtr root_node = NULL, + data_node = NULL, + place_node = NULL, + time_node = NULL; + gchar *value; + GsweCoordinates *coordinates; + GsweTimestamp *timestamp; + AgWindow *window = user_data; + + recalculate_chart(window); + + doc = xmlNewDoc(BAD_CAST "1.0"); + root_node = xmlNewNode(NULL, BAD_CAST "chartinfo"); + xmlDocSetRootElement(doc, root_node); + + // Begin node + data_node = xmlNewChild(root_node, NULL, BAD_CAST "data", NULL); + + value = ag_chart_get_name(window->priv->chart); + xmlNewChild(data_node, NULL, BAD_CAST "name", BAD_CAST value); + g_free(value); + + // Begin node + place_node = xmlNewChild(data_node, NULL, BAD_CAST "place", NULL); + + value = ag_chart_get_country(window->priv->chart); + xmlNewChild(place_node, NULL, BAD_CAST "country", BAD_CAST value); + g_free(value); + + value = ag_chart_get_city(window->priv->chart); + xmlNewChild(place_node, NULL, BAD_CAST "city", BAD_CAST value); + g_free(value); + + coordinates = gswe_moment_get_coordinates(GSWE_MOMENT(window->priv->chart)); + + value = g_malloc0(12); + g_ascii_dtostr(value, 12, coordinates->longitude); + xmlNewChild(place_node, NULL, BAD_CAST "longitude", BAD_CAST value); + g_free(value); + + value = g_malloc0(12); + g_ascii_dtostr(value, 12, coordinates->latitude); + xmlNewChild(place_node, NULL, BAD_CAST "latitude", BAD_CAST value); + g_free(value); + + value = g_malloc0(12); + g_ascii_dtostr(value, 12, coordinates->altitude); + xmlNewChild(place_node, NULL, BAD_CAST "altitude", BAD_CAST value); + g_free(value); + + g_free(coordinates); + + // Begin