public static void RefreshRoutes(CommuteDefinition definition, bool reverseRoute) { Thread thread = new Thread(new ParameterizedThreadStart(_RefreshRoutesAsync)); thread.IsBackground = true; thread.Start(new object[] { definition, reverseRoute }); }
void definition_Updated(object sender, EventArgs e) { CommuteDefinition definition = (CommuteDefinition)sender; definition.Updated -= new EventHandler(definition_Updated); definition.Updated += new EventHandler(definitionReturn_Updated); Utils.RefreshRoutes(definition, true); }
void definitionReturn_Updated(object sender, EventArgs e) { CommuteDefinition definition = (CommuteDefinition)sender; definition.Updated -= new EventHandler(definitionReturn_Updated); this.Dispatcher.BeginInvoke(() => { this.commuterList.ItemsSource = null; this.commuterList.ItemsSource = DataContextManager.Commutes; }); DataContextManager.Save(); }
private void deleteButton_Click(object sender, RoutedEventArgs e) { Button button = (Button)sender; CommuteDefinition definition = (CommuteDefinition)button.Tag; string szTitle = definition.Name; string szMessage = "Are you sure you want to delete this commute?"; if (MessageBox.Show(szMessage, szTitle, MessageBoxButton.OKCancel) == MessageBoxResult.OK) { DataContextManager.Commutes.Remove(definition); DataContextManager.Save(); } }
public static void RefreshRoute(CommuteDefinition definition, RouteDefinition route, bool reverseRoute) { Route restRoute = null; try { restRoute = RefreshRoute(definition.StartPoint, definition.EndPoint, route, reverseRoute); } catch { } if (null == restRoute) { } else { if (reverseRoute) { route.EstimatedRetDistance = restRoute.TravelDistance; route.EstimatedRetDuration = TimeSpan.FromSeconds(restRoute.TravelDuration); } else { route.EstimatedDistance = restRoute.TravelDistance; route.EstimatedDuration = TimeSpan.FromSeconds(restRoute.TravelDuration); } route.Directions.Clear(); foreach (RouteLeg leg in restRoute.RouteLeg) { foreach (ItineraryItem item in leg.ItineraryItem) { route.Directions.Add(new RouteDirection(item.Instruction)); } } route.RoutePoints.Clear(); foreach (MobileSrc.Commuter.Shared.RouteServices.Rest.Point location in restRoute.RoutePath.Line.Point) { route.RoutePoints.Add(Utils.CreateGpsLocation(location.Latitude, location.Longitude)); } route.LastUpdated = DateTime.Now; } route.FireUpdated(); }
public static void _RefreshRoutesAsync(object param) { object[] objs = (object[])param; CommuteDefinition definition = (CommuteDefinition)objs[0]; bool reverseRoute = (bool)objs[1]; double timeFromDeparture = Math.Abs((DateTime.Now.TimeOfDay - definition.DepartureTime.TimeOfDay).TotalMinutes); double timeFromReturn = Math.Abs((DateTime.Now.TimeOfDay - definition.ReturnTime.TimeOfDay).TotalMinutes); int updatedRoutes = definition.Routes.Count; foreach (RouteDefinition route in definition.Routes) { route.Updated += new EventHandler((object sender, EventArgs e) => { updatedRoutes--; }); RefreshRoute(definition, route, reverseRoute); } int counter = 30; while (updatedRoutes > 0) { Thread.Sleep(500); if (counter-- <= 0) { break; } } if (reverseRoute) { definition.LastUpdatedRet = DateTime.Now; } else { definition.LastUpdated = DateTime.Now; } definition.FireUpdated(); }
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { bool isDeparture = System.Convert.ToBoolean(parameter); CommuteDefinition definition = value as CommuteDefinition; RouteDefinition bestRoute = null; foreach (RouteDefinition route in definition.Routes) { if (bestRoute == null) { bestRoute = route; } else { TimeSpan durA = (!isDeparture) ? route.EstimatedRetDuration : route.EstimatedDuration; TimeSpan durB = (!isDeparture) ? bestRoute.EstimatedRetDuration : bestRoute.EstimatedDuration; if (durA < durB) { bestRoute = route; } } } if (null != bestRoute) { if (isDeparture) { return(string.Format("Departure: {1}, {0:0.00} min, {2:0.00} mile", bestRoute.EstimatedDurationMinutes, bestRoute.Name, bestRoute.EstimatedDistance)); } else { return(string.Format("Return: {1}, {0:0.00} min, {2:0.00} mile", bestRoute.EstimatedDurationRetMinutes, bestRoute.Name, bestRoute.EstimatedRetDistance)); } } else { return(string.Format("no routes defined")); } }
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { CommuteDefinition definition = value as CommuteDefinition; return(string.Format("{0} @ {1}{2}-{3}{4}", definition.DaysOfWeekString.Replace(" ", ""), definition.DepartureTime.ToString("h:mm"), definition.DepartureTime.Hour < 12 ? "am" : "pm", definition.ReturnTime.ToString("h:mm"), definition.ReturnTime.Hour < 12 ? "am" : "pm")); }