summaryrefslogtreecommitdiff
path: root/navit/navit.c
diff options
context:
space:
mode:
Diffstat (limited to 'navit/navit.c')
-rw-r--r--navit/navit.c37
1 files changed, 29 insertions, 8 deletions
diff --git a/navit/navit.c b/navit/navit.c
index fa2db9926..a32de161e 100644
--- a/navit/navit.c
+++ b/navit/navit.c
@@ -1947,6 +1947,11 @@ navit_window_roadbook_update(struct navit *this_)
struct param_list param[5];
int secs;
+ /* Respect the Imperial attribute as we enlighten the user. */
+ int imperial = FALSE; /* default to using metric measures. */
+ if (navit_get_attr(this_, attr_imperial, &attr, NULL))
+ imperial=attr.u.num;
+
dbg(lvl_debug,"enter\n");
datawindow_mode(this_->roadbook_window, 1);
if (nav)
@@ -1970,44 +1975,60 @@ navit_window_roadbook_update(struct navit *this_)
param[0].value=_("Position");
param[0].name=_("Command");
+ /* Distance to the next maneuver. */
item_attr_get(item, attr_length, &attr);
- dbg(lvl_info, "Length=%ld\n", attr.u.num);
+ dbg(lvl_info, "Length=%ld in meters\n", attr.u.num);
param[1].name=_("Length");
if ( attr.u.num >= 2000 )
{
- param[1].value=g_strdup_printf("%5.1f %s",(float)attr.u.num / 1000, _("km") );
+ param[1].value=g_strdup_printf("%5.1f %s",
+ imperial == TRUE ? (float)attr.u.num * METERS_TO_MILES : (float)attr.u.num / 1000,
+ imperial == TRUE ? _("mi") : _("km")
+ );
}
else
{
- param[1].value=g_strdup_printf("%7ld %s",attr.u.num, _("m"));
+ param[1].value=g_strdup_printf("%7.0f %s",
+ imperial == TRUE ? (attr.u.num * FEET_PER_METER) : attr.u.num,
+ imperial == TRUE ? _("feet") : _("m")
+ );
}
+ /* Time to next maneuver. */
item_attr_get(item, attr_time, &attr);
dbg(lvl_info, "Time=%ld\n", attr.u.num);
secs=attr.u.num/10;
param[2].name=_("Time");
if ( secs >= 3600 )
{
- param[2].value=g_strdup_printf("%d:%02d:%02d",secs / 60, ( secs / 60 ) % 60 , secs % 60);
+ param[2].value=g_strdup_printf("%d:%02d:%02d",secs / 60, ( secs / 60 ) % 60 , secs % 60);
}
else
{
- param[2].value=g_strdup_printf("%d:%02d",secs / 60, secs % 60);
+ param[2].value=g_strdup_printf("%d:%02d",secs / 60, secs % 60);
}
+ /* Distance from next maneuver to destination. */
item_attr_get(item, attr_destination_length, &attr);
- dbg(lvl_info, "Destlength=%ld\n", attr.u.num);
+ dbg(lvl_info, "Destlength=%ld in meters.\n", attr.u.num);
param[3].name=_("Destination Length");
if ( attr.u.num >= 2000 )
{
- param[3].value=g_strdup_printf("%5.1f %s",(float)attr.u.num / 1000, _("km") );
+ param[3].value=g_strdup_printf("%5.1f %s",
+ imperial == TRUE ? (float)attr.u.num * METERS_TO_MILES : (float)attr.u.num / 1000,
+ imperial == TRUE ? _("mi") : _("km")
+ );
}
else
{
- param[3].value=g_strdup_printf("%ld %s",attr.u.num, _("m"));
+ param[3].value=g_strdup_printf("%7.0f %s",
+ imperial == TRUE ? (attr.u.num * FEET_PER_METER) : attr.u.num,
+ imperial == TRUE ? _("feet") : _("m")
+ );
}
+ /* Time from next maneuver to destination. */
item_attr_get(item, attr_destination_time, &attr);
dbg(lvl_info, "Desttime=%ld\n", attr.u.num);
secs=attr.u.num/10;