--- maemo-mapper-1.1-aw-3/src/maemo-mapper.c	2006-07-29 21:14:27.000000000 +0200
+++ maemo-mapper-1.1-aw-4/src/maemo-mapper.c	2006-07-30 09:45:27.000000000 +0200
@@ -2661,6 +2661,9 @@
             rcvr_changed = TRUE;
         }
 
+	if(_map_uri_format)
+		g_free(_map_uri_format);
+
         if(_map_uri_format_1)
             g_free(_map_uri_format_1);
         if(strlen(gtk_entry_get_text(GTK_ENTRY(txt_map_uri_format_1))))
@@ -2677,6 +2680,8 @@
         else
             _map_uri_format_2 = NULL;
 
+	if(_map_dir_name)
+		g_free(_map_dir_name);
         if(_map_dir_name_1)
 		g_free(_map_dir_name_1);
 	if(strlen(gtk_entry_get_text(GTK_ENTRY(txt_map_dir_name_1))))
@@ -5122,32 +5127,41 @@
 
         case HILDON_HARDKEY_ESC:
             {
-                switch(_show_tracks)
-                {
-                    case 0:
-                        /* Nothing shown, nothing saved; just set both. */
-                        _show_tracks = TRACKS_MASK | ROUTES_MASK;
-                        break;
-                    case TRACKS_MASK << 16:
-                    case ROUTES_MASK << 16:
-                    case (ROUTES_MASK | TRACKS_MASK) << 16:
-                        /* Something was saved and nothing changed since.
-                         * Restore saved. */
-                        _show_tracks = _show_tracks >> 16;
-                        break;
-                    default:
-                        /* There is no history, or they changed something since
-                         * the last historical change. Save and clear. */
-                        _show_tracks = _show_tracks << 16;
-                }
+		    if (_map_uri_format)
+			    g_free(_map_uri_format);
+		    if (_map_dir_name)
+			    g_free(_map_dir_name);
+
+		    if (_map_setting == 2) {
+			    printf("setting 1\n");
+			    _map_setting = 1;
+			    if(strlen(_map_uri_format_1))
+				    _map_uri_format = g_strdup(_map_uri_format_1);
+			    else
+				    _map_uri_format = NULL;
+			    if(strlen(_map_dir_name_1))
+				    _map_dir_name   = g_strdup(_map_dir_name_1);
+		 	    else
+				    _map_dir_name = NULL;
+		    }
+		    else
+		    {
+			    printf("setting 2\n");
+			    _map_setting = 2;
+			    if(strlen(_map_uri_format_2))
+				    _map_uri_format = g_strdup(_map_uri_format_2);
+			    else
+				    _map_uri_format = NULL;
+			    if(strlen(_map_dir_name_2))
+				    _map_dir_name   = g_strdup(_map_dir_name_2);
+		 	    else
+				    _map_dir_name = NULL;
+		    }
 
-                gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(
-                            _menu_show_routes_item),
-                        _show_tracks & ROUTES_MASK);
-
-                gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(
-                            _menu_show_tracks_item),
-                        _show_tracks & TRACKS_MASK);
+		    if (!config_set_map_dir_name(gnome_vfs_expand_initial_tilde(_map_dir_name)))
+			    popup_error(_window, "Could not create Map Cache directory.");
+		    map_force_redraw();
+		    config_save();
             }
             return TRUE;
 

