Exemplo n.º 1
0
        public static void NavigateToRouteStopPage(Page sourcePage, Route route, StopGroup stop)
        {
            Frame frame = sourcePage != null ? sourcePage.Frame : (Frame)Window.Current.Content;

            if (App.Config.DefaultRouteStopPage == DefaultPageType.TimetablePage)
            {
                frame.Navigate(typeof(TimetablePage), new TimetableParameter {
                    Stop = stop, Route = route
                });
            }
            else if (App.Config.DefaultRouteStopPage == DefaultPageType.TripPage)
            {
                var trip = TransitProvider.GetCurrentTrips(DateTime.Now, route, stop, 0, 1).SingleOrDefault();
                if (trip != null)
                {
                    frame.Navigate(typeof(TripPage), new TripParameter {
                        Stop = stop, Trip = trip.Item2, NextTrips = true
                    });
                }
                else
                {
                    frame.Navigate(typeof(TimetablePage), new TimetableParameter {
                        Stop = stop, Route = route
                    });
                }
            }
        }
Exemplo n.º 2
0
        public void SetNextArrive(DateTime startTime)
        {
            DateTime nextStartTime = NextTripTime != null ? NextTripTime.Value + TimeSpan.FromMinutes(1) : startTime + WalkTime;
            var      firstTrip     = TransitProvider.GetCurrentTrips(nextStartTime, Route, Stop, 0, 1).Single();

            if (firstTrip != null)
            {
                DateTime nextTime = firstTrip.Item1;
                if (nextTime - startTime < TimeSpan.FromMinutes(100))
                {
                    NextTrip     = firstTrip.Item2;
                    NextTripTime = nextTime;
                    NextTime     = (int)Math.Ceiling((nextTime - startTime).TotalMinutes);
                }
                else
                {
                    NextTrip = null; NextTripTime = null; NextTime = null;
                }
                HasAnyTrip = true;
            }
            else
            {
                HasAnyTrip = false;
            }
        }
Exemplo n.º 3
0
        private void setNextTripsAtTime(DateTime time, DateTime referenceTime)
        {
            var trips           = TransitProvider.GetCurrentTrips(time, Trip.Route, Stop, 1, 3, limit: TimeSpan.FromDays(1));
            var newHeaderSource = new TabHeaderText[4];

            for (int i = 0; i < newHeaderSource.Length; i++)
            {
                newHeaderSource[i] = new TabHeaderText();
                if (trips[i] != null)
                {
                    DateTime time0 = trips[i].Item1;
                    double   mins  = Math.Ceiling((trips[i].Item1 - referenceTime).TotalMinutes);
                    newHeaderSource[i].PrimaryLine   = time0.ShortTimeString();
                    newHeaderSource[i].SecondaryLine = ((mins >= 0) ? "+" : "") + mins + "'";
                    newHeaderSource[i].Tag           = trips[i];
                }
                else
                {
                    newHeaderSource[i].PrimaryLine   = "";
                    newHeaderSource[i].SecondaryLine = "";
                    newHeaderSource[i].Tag           = null;
                }
            }
            this.HeaderSource = newHeaderSource;
        }
Exemplo n.º 4
0
        public async Task ReverseDirection(Route targetRoute = null)
        {
            //if (TimeStripGrid.Visibility == Visibility.Visible)
            var routes = Trip.Route.RouteGroup.Routes;

            if (routes.Count == 1)
            {
                return;
            }
            var nextRoute = targetRoute ?? routes[(routes.IndexOf(Trip.Route) + 1) % routes.Count];
            var nextStop  = Stop.OppositeOn(nextRoute);
            var tripTime  = TransitProvider.GetCurrentTrips(DateTime, nextRoute, nextStop, 0, 1).Single();

            if (tripTime == null)
            {
                return;
            }
            this.Trip = tripTime.Item2;
            this.Stop = nextStop;
            if (Trip.Stops.Last().Item2.Group == Stop)
            {
                this.Stop = Trip.Stops.First().Item2.Group;
            }

            await setNextTrips(DateTime);

            this.HeaderSelectedIndex = 1;
            this.Trip          = (this.HeaderSource[1].Tag as Tuple <DateTime, Trip>).Item2;
            this.IsBarrierFree = Trip.WheelchairAccessible ?? false;
            setAmPmText();
            setItemsSource(getTripStopsList(DateTime));
            this.HeadsignText = Trip.GetNameAt(Stop, NextTripTime);
            //TODO továbbfejlesztési lehetőség: A visszafele irányú járat a mostani irányba közlekedő járathoz időben legközelebb eső járat legyen és az a header listának ne a második eleme legyen..
        }
Exemplo n.º 5
0
        public void UpdateNextTrips()
        {
            string paddingText = new string(Enumerable.Repeat(' ', Padding).ToArray());

            NextTrips = TransitProvider.GetCurrentTrips(DateTime.Now, Route, Stop, 1, 4)
                        .Select(x => x != null ? x.Item1.ShortTimeString() + paddingText : "")
                        .ToArray();
            //if (int.Parse(DateTime.Now.ToShortTimeString().Split(':')[0]) >= 20)
            if (!Route.RouteGroup.GetNames().IsVeryLongNameVisible&& NextTrips.Count(h => h.Cast <char>().Count(ch => char.IsDigit(ch)) > 3) >= 3)
            {
                NextTrips[4] = "";
            }
            AreNextVisibles = NextTrips.Select(t => t != "").ToArray();
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs("NextTrips"));
                PropertyChanged(this, new PropertyChangedEventArgs("AreNextVisibles"));
            }
        }
Exemplo n.º 6
0
            public override void Initialize(TimetableParameter timetableParam)
            {
                if (timetableParam.Stop == null)
                {
                    timetableParam.Stop = timetableParam.Route.TravelRoute.First().Stop;
                    NoInitialStop       = true;
                }
                Timetable = new TimetableViewModel();
                Timetable.Initialize(timetableParam);
                AddTasksToSchedule(Timetable.TasksToSchedule);

                var nextTrip = TransitProvider.GetCurrentTrips(timetableParam.SelectedTime ?? DateTime.Now, timetableParam.Route, timetableParam.Stop, 0, 1).Single();

                if (nextTrip == null)
                {
                    nextTrip = TransitProvider.GetCurrentTrips(timetableParam.SelectedTime ?? DateTime.Now, timetableParam.Route, timetableParam.Stop, 1, 0).Single();
                }
                if (nextTrip == null)
                {
                    nextTrip = Tuple.Create(DateTime.Now, timetableParam.Route.Trips.First());
                }

                this.TripParam = new TripParameter
                {
                    Trip     = nextTrip.Item2,
                    Stop     = timetableParam.Stop,
                    DateTime = timetableParam.SelectedTime
                };
                Trip = new TripViewModel();
                Trip.Initialize(TripParam);
                AddTasksToSchedule(Trip.TasksToSchedule);
                setTripList();

                Trip.PropertyChanged += (sender, args) =>
                {
                    if (args.PropertyName == "ItemsSource")
                    {
                        setTripList();
                    }
                };
            }
Exemplo n.º 7
0
        private TimeTableBodySource calculateBodyContent(DateTime selectedDate)
        {
            DateTime dateNow = SelectedTime ?? DateTime.Now;

            var nextArrival = (TransitProvider.GetCurrentTrips(dateNow, Route, Stop, 0, 1).SingleOrDefault() ?? Tuple.Create(DateTime.Now, (Trip)null)).Item1;

            var list = new List <TimeTableBodyHourGroup>();

            if (ShowNeighborDays)
            {
                //tegnapi járatok:
                if (DateTime.Now.Hour < 2 && selectedDate == DateTime.Today || DateTime.Now.Hour >= 22 && selectedDate == DateTime.Today + TimeSpan.FromDays(1))
                {
                    var yesterdayLast2Hour = CommonComponent.Current.TB.Logic.GetTimetable(Route, Stop, selectedDate - TimeSpan.FromDays(1)).Where(t => t.Item1.Hour >= 22);
                    if (yesterdayLast2Hour.Count() > 0)
                    {
                        list.Add(new TimeTableBodyLabelGroup {
                            Label = (selectedDate == DateTime.Today ? Services.Resources.LocalizedStringOf("TimeTableYesterday") : Services.Resources.LocalizedStringOf("TimeTablePreviousDay")) + Services.Resources.LocalizedStringOf("TimeTableLabelPost")
                        });
                        list.AddRange(createListFromTimetable(yesterdayLast2Hour, nextArrival));
                        list.Add(new TimeTableBodyLabelGroup {
                            Label = (selectedDate == DateTime.Today ? Services.Resources.LocalizedStringOf("TimeTableToday") : Services.Resources.LocalizedStringOf("TimeTableThisDay")) + Services.Resources.LocalizedStringOf("TimeTableLabelPost")
                        });
                    }
                }
            }
            //mai járatok:
            var timeTable = CommonComponent.Current.TB.Logic.GetTimetable(Route, Stop, selectedDate);

            list.AddRange(createListFromTimetable(timeTable, nextArrival));
            if (ShowNeighborDays)
            {
                //holnapi járatok:
                if (DateTime.Now.Hour >= 22 && selectedDate == DateTime.Today || DateTime.Now.Hour < 2 && selectedDate == DateTime.Today - TimeSpan.FromDays(1))
                {
                    var tomorrowFirst2Hour = CommonComponent.Current.TB.Logic.GetTimetable(Route, Stop, selectedDate + TimeSpan.FromDays(1)).Where(t => t.Item1.Hour < 2);
                    if (tomorrowFirst2Hour.Count() > 0)
                    {
                        list.Add(new TimeTableBodyLabelGroup {
                            Label = (selectedDate == DateTime.Today ? Services.Resources.LocalizedStringOf("TimeTableTomorrow") : Services.Resources.LocalizedStringOf("TimeTableNextDay")) + Services.Resources.LocalizedStringOf("TimeTableLabelPost")
                        });
                        list.AddRange(createListFromTimetable(tomorrowFirst2Hour, nextArrival));
                    }
                }
            }
            //görgessünk a következő indulás járata fölé
            var nextHour = list.SingleOrDefault(hour => hour.Trips.Any(t => t.Time == nextArrival));
            TimeTableBodyHourGroup scrollTarget = null;

            if (nextHour != null)
            {
                int index = Math.Max(0, list.IndexOf(nextHour) - 1);
                while (index > 0 && list[index] is TimeTableBodyLabelGroup)
                {
                    index--;
                }
                scrollTarget = list[index];
            }
            else
            {
                scrollTarget = null;
            }
            return(new TimeTableBodySource {
                HourList = list, ScrollTarget = scrollTarget
            });
        }