#define VIKING_OSM_TRACES_PARAMS_GROUP_KEY "osm_traces"
#define VIKING_OSM_TRACES_PARAMS_NAMESPACE "osm_traces."
+#define VIK_SETTINGS_OSM_TRACE_VIS "osm_trace_visibility"
+static gint last_active = -1;
+
/**
* Login to use for OSM uploading.
*/
gchar *name;
gchar *description;
gchar *tags;
+ gboolean anonymize_times; // ATM only available on a single track.
const OsmTraceVis_t *vistype;
VikTrwLayer *vtl;
VikTrack *trk;
if (oti->trk != NULL)
{
/* Upload only the selected track */
- a_gpx_write_track_file(oti->trk, file, &options);
+ if ( oti->anonymize_times )
+ {
+ VikTrack *trk = vik_track_copy(oti->trk, TRUE);
+ vik_track_anonymize_times(trk);
+ a_gpx_write_track_file(trk, file, &options);
+ vik_track_free(trk);
+ }
+ else
+ a_gpx_write_track_file(oti->trk, file, &options);
}
else
{
else {
msg = g_strdup_printf ( "%s : %s %d (@%s)", _("FAILED TO UPLOAD DATA TO OSM"), _("HTTP response code"), ans, timestr );
}
- // From the background so should use the signalling method to update display:
- // TODO: This only works with statically assigned strings ATM
- vik_window_signal_statusbar_update ( (VikWindow*)VIK_GTK_WINDOW_FROM_LAYER(oti->vtl), msg, VIK_STATUSBAR_INFO );
- // Thus can't free the memory yet...
- // Luckily OSM traces isn't heavily used so this is not a significant memory leak
- //g_free (msg);
- // But this is better than potentially crashing from multi thread GUI updates
+ vik_window_statusbar_update ( (VikWindow*)VIK_GTK_WINDOW_FROM_LAYER(oti->vtl), msg, VIK_STATUSBAR_INFO );
+ g_free (msg);
}
/* Removing temporary file */
ret = g_unlink(filename);
GtkWidget *description_label, *description_entry;
GtkWidget *tags_label, *tags_entry;
GtkWidget *visibility;
+ GtkWidget *anonymize_checkbutton = NULL;
const OsmTraceVis_t *vis_t;
user_label = gtk_label_new(_("Email:"));
gtk_widget_set_tooltip_text(GTK_WIDGET(description_entry),
_("The description of the trace"));
+ if (trk != NULL) {
+ GtkWidget *label = gtk_label_new(_("Anonymize Times:"));
+ anonymize_checkbutton = gtk_check_button_new ();
+ gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dia))), label, FALSE, FALSE, 0);
+ gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dia))), anonymize_checkbutton, FALSE, FALSE, 0);
+ gtk_widget_set_tooltip_text(GTK_WIDGET(anonymize_checkbutton),
+ _("Anonymize times of the trace.\n"
+ "<small>You may choose to make the trace identifiable, yet mask the actual real time values</small>"));
+ }
+
tags_label = gtk_label_new(_("Tags:"));
tags_entry = gtk_entry_new();
gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dia))), tags_label, FALSE, FALSE, 0);
for (vis_t = OsmTraceVis; vis_t->combostr != NULL; vis_t++)
vik_combo_box_text_append (visibility, vis_t->combostr);
- /* Set identifiable by default */
- gtk_combo_box_set_active(GTK_COMBO_BOX(visibility), 0);
+ // Set identifiable by default or use the settings for the value
+ if ( last_active < 0 ) {
+ gint find_entry = -1;
+ gint wanted_entry = -1;
+ gchar *vis = NULL;
+ if ( a_settings_get_string ( VIK_SETTINGS_OSM_TRACE_VIS, &vis ) ) {
+ // Use setting
+ if ( vis ) {
+ for (vis_t = OsmTraceVis; vis_t->apistr != NULL; vis_t++) {
+ find_entry++;
+ if (!strcmp(vis, vis_t->apistr)) {
+ wanted_entry = find_entry;
+ }
+ }
+ }
+ // If not found set it to the first entry, otherwise use the entry
+ last_active = ( wanted_entry < 0 ) ? 0 : wanted_entry;
+ }
+ else
+ last_active = 0;
+ }
+ gtk_combo_box_set_active(GTK_COMBO_BOX(visibility), last_active);
gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dia))), GTK_WIDGET(visibility), FALSE, FALSE, 0);
/* User should think about it first... */
info->vistype = &OsmTraceVis[gtk_combo_box_get_active(GTK_COMBO_BOX(visibility))];
info->vtl = VIK_TRW_LAYER(g_object_ref(vtl));
info->trk = trk;
+ if (trk != NULL && anonymize_checkbutton != NULL )
+ info->anonymize_times = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(anonymize_checkbutton));
+ else
+ info->anonymize_times = FALSE;
+
+ // Save visibility value for default reuse
+ last_active = gtk_combo_box_get_active(GTK_COMBO_BOX(visibility));
+ a_settings_set_string ( VIK_SETTINGS_OSM_TRACE_VIS, OsmTraceVis[last_active].apistr );
title = g_strdup_printf(_("Uploading %s to OSM"), info->name);