--- maemo-mapper-1.1-aw-2/src/maemo-mapper.c 2006-07-28 22:26:32.000000000 +0200 +++ maemo-mapper-1.1-aw-3/src/maemo-mapper.c 2006-07-29 21:14:27.000000000 +0200 @@ -148,8 +148,13 @@ #define GCONF_KEY_RCVR_MAC GCONF_KEY_PREFIX"/receiver_mac" #define GCONF_KEY_RCVR_CHAN GCONF_KEY_PREFIX"/receiver_channel" #define GCONF_KEY_MAP_URI_FORMAT GCONF_KEY_PREFIX"/map_uri_format" +#define GCONF_KEY_MAP_URI_FORMAT_1 GCONF_KEY_PREFIX"/map_uri_format_1" +#define GCONF_KEY_MAP_URI_FORMAT_2 GCONF_KEY_PREFIX"/map_uri_format_2" #define GCONF_KEY_MAP_ZOOM_STEPS GCONF_KEY_PREFIX"/map_zoom_steps" #define GCONF_KEY_MAP_DIR_NAME GCONF_KEY_PREFIX"/map_cache_dir" +#define GCONF_KEY_MAP_DIR_NAME_1 GCONF_KEY_PREFIX"/map_cache_dir_1" +#define GCONF_KEY_MAP_DIR_NAME_2 GCONF_KEY_PREFIX"/map_cache_dir_2" +#define GCONF_KEY_MAP_SETTING GCONF_KEY_PREFIX"/map_setting" #define GCONF_KEY_AUTO_DOWNLOAD GCONF_KEY_PREFIX"/auto_download" #define GCONF_KEY_CENTER_SENSITIVITY GCONF_KEY_PREFIX"/center_sensitivity" #define GCONF_KEY_ANNOUNCE_NOTICE GCONF_KEY_PREFIX"/announce_notice" @@ -683,7 +688,12 @@ static struct sockaddr_rc _rcvr_addr = { 0 }; static gchar *_rcvr_mac = NULL; static gchar *_map_dir_name = NULL; +static gchar *_map_dir_name_1 = NULL; +static gchar *_map_dir_name_2 = NULL; static gchar *_map_uri_format = NULL; +static gchar *_map_uri_format_1 = NULL; +static gchar *_map_uri_format_2 = NULL; +static guint _map_setting = 1; static gchar *_route_dir_uri = NULL; static gchar *_track_file_uri = NULL; static CenterMode _center_mode = CENTER_LEAD; @@ -1727,6 +1737,12 @@ if(_map_uri_format) gconf_client_set_string(gconf_client, GCONF_KEY_MAP_URI_FORMAT, _map_uri_format, NULL); + if(_map_uri_format_1) + gconf_client_set_string(gconf_client, + GCONF_KEY_MAP_URI_FORMAT_1, _map_uri_format_1, NULL); + if(_map_uri_format_2) + gconf_client_set_string(gconf_client, + GCONF_KEY_MAP_URI_FORMAT_2, _map_uri_format_2, NULL); /* Save Map Download Zoom Steps. */ gconf_client_set_int(gconf_client, @@ -1736,7 +1752,17 @@ if(_map_dir_name) gconf_client_set_string(gconf_client, GCONF_KEY_MAP_DIR_NAME, _map_dir_name, NULL); + if(_map_dir_name_1) + gconf_client_set_string(gconf_client, + GCONF_KEY_MAP_DIR_NAME_1, _map_dir_name_1, NULL); + if(_map_dir_name_2) + gconf_client_set_string(gconf_client, + GCONF_KEY_MAP_DIR_NAME_2, _map_dir_name_2, NULL); + /* Save setting 1/2 */ + gconf_client_set_int(gconf_client, + GCONF_KEY_MAP_SETTING, _map_setting, NULL); + /* Save Auto-Download. */ gconf_client_set_bool(gconf_client, GCONF_KEY_AUTO_DOWNLOAD, _auto_download, NULL); @@ -1887,6 +1913,7 @@ GCONF_KEY_COLOR_ROUTE_NEXTWAY, buffer, NULL); g_object_unref(gconf_client); + hildon_banner_show_information(_window, NULL, "Config saved."); vprintf("%s(): return\n", __PRETTY_FUNCTION__); } @@ -2269,8 +2296,10 @@ GtkWidget *label; GtkWidget *txt_rcvr_mac; GtkWidget *num_rcvr_chan; - GtkWidget *txt_map_uri_format; - GtkWidget *txt_map_dir_name; + GtkWidget *txt_map_uri_format_1; + GtkWidget *txt_map_uri_format_2; + GtkWidget *txt_map_dir_name_1; + GtkWidget *txt_map_dir_name_2; GtkWidget *num_zoom_steps; GtkWidget *num_center_ratio; GtkWidget *num_lead_ratio; @@ -2282,9 +2311,11 @@ GtkWidget *chk_always_keep_on; GtkWidget *cmb_units; GtkWidget *btn_scan; - GtkWidget *btn_browse; + GtkWidget *btn_browse_1; + GtkWidget *btn_browse_2; GtkWidget *btn_colors; - BrowseInfo browse_info = {0, 0}; + BrowseInfo browse_info_1 = {0, 0}; + BrowseInfo browse_info_2 = {0, 0}; ScanInfo scan_info = {0}; gboolean rcvr_changed = FALSE; printf("%s()\n", __PRETTY_FUNCTION__); @@ -2348,43 +2379,78 @@ table = gtk_table_new(2, 3, FALSE), label = gtk_label_new(_("Maps"))); - /* Map download URI. */ + /* Map download URI 1. */ gtk_table_attach(GTK_TABLE(table), - label = gtk_label_new(_("URI Format")), - 0, 1, 0, 1, GTK_FILL, 0, 2, 4); + label = gtk_label_new(_("URI Format 1")), + 1, 2, 0, 1, GTK_FILL, 0, 2, 4); gtk_misc_set_alignment(GTK_MISC(label), 1.f, 0.5f); gtk_table_attach(GTK_TABLE(table), - txt_map_uri_format = gtk_entry_new(), - 1, 2, 0, 1, GTK_EXPAND | GTK_FILL, 0, 2, 4); + txt_map_uri_format_1 = gtk_entry_new(), + 2, 3, 0, 1, GTK_EXPAND | GTK_FILL, 0, 2, 4); - /* Zoom Steps. */ + /* Map Directory 1. */ gtk_table_attach(GTK_TABLE(table), - label = gtk_label_new(_("Zoom Steps")), - 0, 1, 1, 2, GTK_FILL, 0, 2, 4); + label = gtk_label_new(_("Cache Dir. 1")), + 1, 2, 1, 2, GTK_FILL, 0, 2, 4); gtk_misc_set_alignment(GTK_MISC(label), 1.f, 0.5f); gtk_table_attach(GTK_TABLE(table), - label = gtk_alignment_new(0.f, 0.5f, 0.f, 0.f), - 1, 2, 1, 2, GTK_EXPAND | GTK_FILL, 0, 2, 4); - gtk_container_add(GTK_CONTAINER(label), - num_zoom_steps = hildon_controlbar_new()); - hildon_controlbar_set_range(HILDON_CONTROLBAR(num_zoom_steps), 1, 4); - force_min_visible_bars(HILDON_CONTROLBAR(num_zoom_steps), 1); + hbox = gtk_hbox_new(FALSE, 4), + 2, 3, 1, 2, GTK_EXPAND | GTK_FILL, 0, 2, 4); + gtk_box_pack_start(GTK_BOX(hbox), + txt_map_dir_name_1 = gtk_entry_new(), + TRUE, TRUE, 0); + gtk_box_pack_start(GTK_BOX(hbox), + btn_browse_1 = gtk_button_new_with_label(_("Browse...")), + FALSE, FALSE, 0); - /* Map Directory. */ + /* Map download URI 2. */ gtk_table_attach(GTK_TABLE(table), - label = gtk_label_new(_("Cache Dir.")), - 0, 1, 2, 3, GTK_FILL, 0, 2, 4); + label = gtk_label_new(_("URI Format 2")), + 1, 2, 2, 3, GTK_FILL, 0, 2, 4); + gtk_misc_set_alignment(GTK_MISC(label), 1.f, 0.5f); + gtk_table_attach(GTK_TABLE(table), + txt_map_uri_format_2 = gtk_entry_new(), + 2, 3, 2, 3, GTK_EXPAND | GTK_FILL, 0, 2, 4); + + /* Map Directory 2. */ + gtk_table_attach(GTK_TABLE(table), + label = gtk_label_new(_("Cache Dir. 2")), + 1, 2, 3, 4, GTK_FILL, 0, 2, 4); gtk_misc_set_alignment(GTK_MISC(label), 1.f, 0.5f); gtk_table_attach(GTK_TABLE(table), hbox = gtk_hbox_new(FALSE, 4), - 1, 2, 2, 3, GTK_EXPAND | GTK_FILL, 0, 2, 4); + 2, 3, 3, 4, GTK_EXPAND | GTK_FILL, 0, 2, 4); gtk_box_pack_start(GTK_BOX(hbox), - txt_map_dir_name = gtk_entry_new(), + txt_map_dir_name_2 = gtk_entry_new(), TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(hbox), - btn_browse = gtk_button_new_with_label(_("Browse...")), + btn_browse_2 = gtk_button_new_with_label(_("Browse...")), FALSE, FALSE, 0); + /* Radio-Button 1/2*/ + GtkWidget *radio1, *radio2, *entry; + radio1 = gtk_radio_button_new_with_label(NULL, "1"); + radio2 = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(radio1), "2"); + gtk_table_attach(GTK_TABLE(table), radio1, 0, 1, 0, 2, GTK_FILL, 0, 2, 4); + gtk_table_attach(GTK_TABLE(table), radio2, 0, 1, 2, 4, GTK_EXPAND | GTK_FILL, 0, 2, 4); + if (_map_setting == 1) + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio1), TRUE); + else + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio2), TRUE); + + /* Zoom Steps. */ + gtk_table_attach(GTK_TABLE(table), + label = gtk_label_new(_("Zoom Steps")), + 1, 2, 4, 5, GTK_FILL, 0, 2, 4); + gtk_misc_set_alignment(GTK_MISC(label), 1.f, 0.5f); + gtk_table_attach(GTK_TABLE(table), + label = gtk_alignment_new(0.f, 0.5f, 0.f, 0.f), + 2, 3, 4, 5, GTK_EXPAND | GTK_FILL, 0, 2, 4); + gtk_container_add(GTK_CONTAINER(label), + num_zoom_steps = hildon_controlbar_new()); + hildon_controlbar_set_range(HILDON_CONTROLBAR(num_zoom_steps), 1, 4); + force_min_visible_bars(HILDON_CONTROLBAR(num_zoom_steps), 1); + /* Auto-Center page. */ gtk_notebook_append_page(GTK_NOTEBOOK(notebook), @@ -2510,10 +2576,14 @@ scan_info.txt_rcvr_mac = txt_rcvr_mac; g_signal_connect(G_OBJECT(btn_scan), "clicked", G_CALLBACK(scan_bluetooth), &scan_info); - browse_info.dialog = dialog; - browse_info.txt_map_dir_name = txt_map_dir_name; - g_signal_connect(G_OBJECT(btn_browse), "clicked", - G_CALLBACK(settings_dialog_browse), &browse_info); + browse_info_1.dialog = dialog; + browse_info_1.txt_map_dir_name = txt_map_dir_name_1; + g_signal_connect(G_OBJECT(btn_browse_1), "clicked", + G_CALLBACK(settings_dialog_browse), &browse_info_1); + browse_info_2.dialog = dialog; + browse_info_2.txt_map_dir_name = txt_map_dir_name_2; + g_signal_connect(G_OBJECT(btn_browse_2), "clicked", + G_CALLBACK(settings_dialog_browse), &browse_info_2); g_signal_connect(G_OBJECT(btn_colors), "clicked", G_CALLBACK(settings_dialog_colors), dialog); @@ -2522,11 +2592,15 @@ gtk_entry_set_text(GTK_ENTRY(txt_rcvr_mac), _rcvr_mac); hildon_number_editor_set_value(HILDON_NUMBER_EDITOR(num_rcvr_chan), _rcvr_addr.rc_channel); - if(_map_uri_format) - gtk_entry_set_text(GTK_ENTRY(txt_map_uri_format), _map_uri_format); + if(_map_uri_format_1) + gtk_entry_set_text(GTK_ENTRY(txt_map_uri_format_1), _map_uri_format_1); + if(_map_uri_format_2) + gtk_entry_set_text(GTK_ENTRY(txt_map_uri_format_2), _map_uri_format_2); hildon_controlbar_set_value(HILDON_CONTROLBAR(num_zoom_steps), _zoom_steps); - if(_map_dir_name) - gtk_entry_set_text(GTK_ENTRY(txt_map_dir_name), _map_dir_name); + if(_map_dir_name_1) + gtk_entry_set_text(GTK_ENTRY(txt_map_dir_name_1), _map_dir_name_1); + if(_map_dir_name_2) + gtk_entry_set_text(GTK_ENTRY(txt_map_dir_name_2), _map_dir_name_2); hildon_controlbar_set_value(HILDON_CONTROLBAR(num_center_ratio), _center_ratio); hildon_controlbar_set_value(HILDON_CONTROLBAR(num_lead_ratio), @@ -2549,13 +2623,6 @@ while(GTK_RESPONSE_ACCEPT == gtk_dialog_run(GTK_DIALOG(dialog))) { - if(!config_set_map_dir_name(gnome_vfs_expand_initial_tilde( - gtk_entry_get_text(GTK_ENTRY(txt_map_dir_name))))) - { - popup_error(dialog, _("Could not create Map Cache directory.")); - continue; - } - /* Set _rcvr_mac if necessary. */ if(!*gtk_entry_get_text(GTK_ENTRY(txt_rcvr_mac))) { @@ -2594,14 +2661,68 @@ rcvr_changed = TRUE; } - if(_map_uri_format) - g_free(_map_uri_format); - if(strlen(gtk_entry_get_text(GTK_ENTRY(txt_map_uri_format)))) - _map_uri_format = g_strdup(gtk_entry_get_text( - GTK_ENTRY(txt_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)))) + _map_uri_format_1 = g_strdup(gtk_entry_get_text( + GTK_ENTRY(txt_map_uri_format_1))); + else + _map_uri_format_1 = NULL; + + if(_map_uri_format_2) + g_free(_map_uri_format_2); + if(strlen(gtk_entry_get_text(GTK_ENTRY(txt_map_uri_format_2)))) + _map_uri_format_2 = g_strdup(gtk_entry_get_text( + GTK_ENTRY(txt_map_uri_format_2))); else - _map_uri_format = NULL; + _map_uri_format_2 = NULL; + if(_map_dir_name_1) + g_free(_map_dir_name_1); + if(strlen(gtk_entry_get_text(GTK_ENTRY(txt_map_dir_name_1)))) + _map_dir_name_1 = g_strdup(gtk_entry_get_text(GTK_ENTRY(txt_map_dir_name_1))); + else + _map_dir_name_1 = NULL; + + if(_map_dir_name_2) + g_free(_map_dir_name_2); + if(strlen(gtk_entry_get_text(GTK_ENTRY(txt_map_dir_name_2)))) + _map_dir_name_2 = g_strdup(gtk_entry_get_text(GTK_ENTRY(txt_map_dir_name_2))); + else + _map_dir_name_2 = NULL; + + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(radio1))) + { + 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; + } + if(!config_set_map_dir_name(gnome_vfs_expand_initial_tilde(_map_dir_name))) + { + popup_error(_window, "Could not create Map Cache directory."); + continue; + } + _zoom_steps = hildon_controlbar_get_value( HILDON_CONTROLBAR(num_zoom_steps)); @@ -2680,17 +2801,35 @@ /* Get Map Download URI Format. Default is NULL. */ _map_uri_format = gconf_client_get_string(gconf_client, GCONF_KEY_MAP_URI_FORMAT, NULL); - - /* Get Map Download Zoom Steps. Default is 2. */ - _zoom_steps = gconf_client_get_int(gconf_client, - GCONF_KEY_MAP_ZOOM_STEPS, NULL); - if(!_zoom_steps) - _zoom_steps = 2; + _map_uri_format_1 = gconf_client_get_string(gconf_client, + GCONF_KEY_MAP_URI_FORMAT_1, NULL); + _map_uri_format_2 = gconf_client_get_string(gconf_client, + GCONF_KEY_MAP_URI_FORMAT_2, NULL); + + /* Get Map Cache Directories. */ + _map_dir_name_1 = gconf_client_get_string(gconf_client, GCONF_KEY_MAP_DIR_NAME_1, NULL); + _map_dir_name_2 = gconf_client_get_string(gconf_client, GCONF_KEY_MAP_DIR_NAME_2, NULL); + + /* Get Map setting 1/2 */ + _map_setting = gconf_client_get_int(gconf_client, + GCONF_KEY_MAP_SETTING, NULL); + if (_map_setting < 1) + _map_setting = 1; + if (_map_setting > 2) + _map_setting = 2; /* Get Map Cache Directory. Default is "~/apps/maemo-mapper". */ { - gchar *tmp = gconf_client_get_string(gconf_client, - GCONF_KEY_MAP_DIR_NAME, NULL); + gchar *tmp; + if (_map_setting == 1) { + tmp = g_strdup(_map_dir_name_1); + _map_uri_format=g_strdup(_map_uri_format_1); + } + else + { + tmp = g_strdup(_map_dir_name_2); + _map_uri_format=g_strdup(_map_uri_format_2); + } if(!tmp) tmp = g_strdup("~/apps/maemo-mapper"); if(!config_set_map_dir_name(gnome_vfs_expand_initial_tilde(tmp))) @@ -2703,6 +2842,12 @@ g_free(tmp); } + /* Get Map Download Zoom Steps. Default is 2. */ + _zoom_steps = gconf_client_get_int(gconf_client, + GCONF_KEY_MAP_ZOOM_STEPS, NULL); + if(!_zoom_steps) + _zoom_steps = 2; + /* Get Auto-Download. Default is FALSE. */ _auto_download = gconf_client_get_bool(gconf_client, GCONF_KEY_AUTO_DOWNLOAD, NULL); @@ -3393,6 +3538,7 @@ map_convert_coords_to_quadtree_string(int x, int y, int zoomlevel,gchar *buffer) { static const gchar *const quadrant = "qrts"; + vprintf("%s()\n", __PRETTY_FUNCTION__); gchar *ptr = buffer; int n; *ptr++ = 't'; @@ -3403,6 +3549,7 @@ *ptr++ = quadrant[xbit + 2 * ybit]; } *ptr++ = '\0'; + vprintf("%s(): return\n", __PRETTY_FUNCTION__); } /** @@ -3414,6 +3561,7 @@ static void map_construct_url(gchar *buffer, guint tilex, guint tiley, guint zoom) { + vprintf("%s()\n", __PRETTY_FUNCTION__); if(strstr(_map_uri_format, "%s")) { /* This is a satellite-map URI. */ @@ -3424,6 +3572,8 @@ else /* This is a street-map URI. */ sprintf(buffer, _map_uri_format, tilex, tiley, zoom); + printf("URI=%s\n", buffer); + vprintf("%s(): return\n", __PRETTY_FUNCTION__); } @@ -3452,6 +3602,7 @@ return FALSE; } sprintf(buffer, "%s/%u/%u/%u.jpg", _map_dir_name, zoom, tilex, tiley); + vprintf("buffer=$s\n", buffer); dest = gnome_vfs_uri_new(buffer); if(gnome_vfs_uri_exists(dest)) { @@ -3544,6 +3695,7 @@ sprintf(buffer, "%s/%u/%u/%u.jpg", _map_dir_name, _zoom + zoff, (tilex >> zoff), (tiley >> zoff)); + vprintf("buffer=%s\n", buffer); pixbuf = gdk_pixbuf_new_from_file(buffer, &error); if(error) {