Exemple #1
0
        public static async Task <DownloadManager> Create(RouteListing listing, CancellationToken cancellationToken)
        {
            listing.Progress     = 0;
            listing.ShowProgress = true;
            DownloadManager result = new DownloadManager();

            result.Listing = listing;
            result._Route  = result.Listing.Route;
            var stopsAndShapes = await ApiLayer.GetStopsAndShapesForRoute(result.Listing.Route.ID, cancellationToken);

            result._Shapes       = stopsAndShapes.Item2;
            result._StopsPending = new ObservableCollection <BusStop>(stopsAndShapes.Item1);
            if (cancellationToken.IsCancellationRequested)
            {
                return(null);
            }
            result.Initialize();
            result._TotalStops = result.StopsPending.Count;
            DownloadsInProgress.Add(result);
            if (!FileManager.PendingDownloads.Any(item => item.First() == result.Route.ID))
            {
                List <string> pend = new List <string>()
                {
                    result.Route.ID
                };
                pend.AddRange(result.StopsPending.Select(stop => stop.ID));
                FileManager.PendingDownloads.Add(pend);
                await listing.RefreshIsDownloaded();

                await FileManager.SavePendingDownloads();
            }
            return(result);
        }
 public static async Task<DownloadManager> Create(RouteListing listing, CancellationToken cancellationToken)
 {
     listing.Progress = 0;
     listing.ShowProgress = true;
     DownloadManager result = new DownloadManager();
     result.Listing = listing;
     result._Route = result.Listing.Route;
     var stopsAndShapes = await ApiLayer.GetStopsAndShapesForRoute(result.Listing.Route.ID, cancellationToken);
     result._Shapes = stopsAndShapes.Item2;
     result._StopsPending = new ObservableCollection<BusStop>(stopsAndShapes.Item1);
     if (cancellationToken.IsCancellationRequested)
         return null;
     result.Initialize();
     result._TotalStops = result.StopsPending.Count;
     DownloadsInProgress.Add(result);
     if (!FileManager.PendingDownloads.Any(item => item.First() == result.Route.ID))
     {
         List<string> pend = new List<string>() { result.Route.ID };
         pend.AddRange(result.StopsPending.Select(stop => stop.ID));
         FileManager.PendingDownloads.Add(pend);
         await listing.RefreshIsDownloaded();
         await FileManager.SavePendingDownloads();
     }
     return result;
 }
Exemple #3
0
        private async void AgenciesListView_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            LoadingRect.Visibility    = Visibility.Visible;
            MainProgressRing.IsActive = true;
            var inOrder = (Func <RouteListing, RouteListing, bool>) delegate(RouteListing first, RouteListing second)
            {
                var splitName = (Func <string, Tuple <int, string> >) delegate(string name)
                {
                    string num = new string(name.TakeWhile(chr => char.IsNumber(chr)).ToArray());
                    if (num.Length == 0)
                    {
                        return(new Tuple <int, string>(0, name));
                    }
                    else
                    {
                        return(new Tuple <int, string>(int.Parse(num), name.Replace(num, "")));
                    }
                };
                var splitFirst  = splitName(first.Name);
                var splitSecond = splitName(second.Name);
                if (splitFirst.Item1 < splitSecond.Item1)
                {
                    return(true);
                }
                else if (splitFirst.Item1 > splitSecond.Item1)
                {
                    return(false);
                }
                else
                {
                    return(string.Compare(splitFirst.Item2, splitSecond.Item2, StringComparison.CurrentCultureIgnoreCase) < 0);
                }
            };

            MainList.Items.Clear();
            var agency = (TransitAgency)AgenciesListView.SelectedItem;
            SortedSet <RouteListing> routesList = new SortedSet <RouteListing>(Comparer <RouteListing> .Create(new Comparison <RouteListing>((rt1, rt2) => inOrder(rt1, rt2) ? -1 : 1)));
            var routes = await Data.GetBusRoutesForAgency(agency.ID, new DataRetrievalOptions(DataSourceDescriptor.Cloud), MasterCancellationTokenSource.Token);

            RoutesWarning = routes.Item2.FinalSource != DataSourceDescriptor.Cloud;
            if (routes.Item1 != null)
            {
                foreach (var rte in routes.Item1)
                {
                    var listing = new RouteListing(rte);
                    await listing.RefreshIsDownloaded();

                    routesList.Add(listing);
                }
                foreach (var rte in routesList)
                {
                    MainList.Items.Add(rte);
                }
                await FileManager.SaveAgency(agency, routesList.Select(item => item.Route.ID).ToArray());
            }
            MainProgressRing.IsActive = false;
            LoadingRect.Visibility    = Visibility.Collapsed;
        }
 public static async Task<DownloadManager> Create(RouteListing listing, CancellationToken cancellationToken)
 {
     listing.Progress = 0;
     listing.ShowProgress = true;
     DownloadManager result = new DownloadManager();
     result.Listing = listing;
     result._Route = result.Listing.Route;
     var stopsAndShapes = await ApiLayer.GetStopsForRoute(result.Listing.Route.ID, cancellationToken);
     result._Shapes = stopsAndShapes.Item2;
     result._StopsPending = new ObservableCollection<BusStop>(stopsAndShapes.Item1);
     if (cancellationToken.IsCancellationRequested)
         return null;
     result.Initialize();
     result._TotalStops = result.StopsPending.Count;
     DownloadsInProgress.Add(result);
     return result;
 }
 private async void AgenciesListView_SelectionChanged(object sender, SelectionChangedEventArgs e)
 {
     LoadingRect.Visibility = Visibility.Visible;
     MainProgressRing.IsActive = true;
     var inOrder = (Func<RouteListing, RouteListing, bool>)delegate (RouteListing first, RouteListing second)
     {
         var splitName = (Func<string, Tuple<int, string>>)delegate (string name)
         {
             string num = new string(name.TakeWhile(chr => char.IsNumber(chr)).ToArray());
             if (num.Length == 0)
                 return new Tuple<int, string>(0, name);
             else
                 return new Tuple<int, string>(int.Parse(num), name.Replace(num, ""));
         };
         var splitFirst = splitName(first.Name);
         var splitSecond = splitName(second.Name);
         if (splitFirst.Item1 < splitSecond.Item1)
             return true;
         else if (splitFirst.Item1 > splitSecond.Item1)
             return false;
         else
             return string.Compare(splitFirst.Item2, splitSecond.Item2, StringComparison.CurrentCultureIgnoreCase) < 0;
     };
     MainList.Items.Clear();
     var agency = (TransitAgency)AgenciesListView.SelectedItem;
     SortedSet<RouteListing> routesList = new SortedSet<RouteListing>(Comparer<RouteListing>.Create(new Comparison<RouteListing>((rt1, rt2) => inOrder(rt1, rt2) ? -1 : 1)));
     var routes = await Data.GetBusRoutesForAgency(agency.ID, new DataRetrievalOptions(DataSourceDescriptor.Cloud), MasterCancellationTokenSource.Token);
     RoutesWarning = routes.Item2.FinalSource != DataSourceDescriptor.Cloud;
     if (routes.Item1 != null)
     {
         foreach (var rte in routes.Item1)
         {
             var listing = new RouteListing(rte);
             await listing.RefreshIsDownloaded();
             routesList.Add(listing);
         }
         foreach (var rte in routesList)
             MainList.Items.Add(rte);
         await FileManager.SaveAgency(agency, routesList.Select(item => item.Route.ID).ToArray());
     }
     MainProgressRing.IsActive = false;
     LoadingRect.Visibility = Visibility.Collapsed;
 }