Rework chart save procedure

* Fixed some design flows: AgDb should not know about the window
* AgChart now only creates an AgDbSave structure, saving is done through
  AgWindow
This commit is contained in:
2014-08-02 01:37:11 +02:00
parent 860638ed98
commit ab12922d8a
5 changed files with 60 additions and 52 deletions

View File

@@ -1539,24 +1539,17 @@ const gchar *ag_chart_get_note(AgChart *chart)
return priv->note;
}
gboolean
ag_chart_save_to_db(AgChart *chart, AgDbSave **old_save, GtkWidget *window)
AgDbSave *
ag_chart_get_db_save(AgChart *chart, gint db_id)
{
GsweCoordinates *coords;
AgDb *db = ag_db_get();
AgChartPrivate *priv = ag_chart_get_instance_private(chart);
AgDbSave *save_data = g_new0(AgDbSave, 1);
GError *err = NULL;
GsweTimestamp *timestamp = gswe_moment_get_timestamp(GSWE_MOMENT(chart));
GEnumClass *house_system_class;
GEnumValue *house_system_enum;
gboolean ret;
if (old_save && *old_save) {
save_data->db_id = (*old_save)->db_id;
} else {
save_data->db_id = -1;
}
save_data->db_id = db_id;
save_data->name = g_strdup(priv->name);
save_data->country = g_strdup(priv->country);
@@ -1597,16 +1590,5 @@ ag_chart_save_to_db(AgChart *chart, AgDbSave **old_save, GtkWidget *window)
g_type_class_unref(house_system_class);
save_data->note = g_strdup(priv->note);
if (
(!old_save || !*old_save)
|| !ag_db_save_identical(*old_save, save_data)
) {
ret = ag_db_save_chart(db, save_data, window, &err);
} else {
ret = TRUE;
}
ag_db_save_data_free(save_data);
return ret;
return save_data;
}