//////////////////////////////////////////////////////////////////////////////////////////////// public void CreateAdvies(PlannerSearch search, int index, ReisMogelijkheid mogelijkheid) { if (!Exists(string.Format("/Views/Reisadvies.xaml?id={0}&index={1}", search.Id, index))) { var filenameInput = string.Format("/Shared/ShellContent/{0}_{1}.jpg", search.Id, index); var filename = GenerateAdviesTile(search, mogelijkheid, search.VanStation.Name, search.NaarStation.Name, mogelijkheid.GeplandeVertrekTijd.ToString("dd-MM-yyyy HH:mm", CultureInfo.InvariantCulture), filenameInput); var isoStoreTileImage = string.Format("isostore:{0}", filename); // Create the Tile object and set some initial properties for the Tile. // The Count value of 12 shows the number 12 on the front of the Tile. Valid values are 1-99. // A Count value of 0 indicates that the Count should not be displayed. StandardTileData NewTileData = new StandardTileData { BackgroundImage = new Uri(isoStoreTileImage, UriKind.Absolute), //Title = name, //Count = 12, //BackTitle = "Back of Tile", //BackContent = "Welcome to the back of the Tile", //BackBackgroundImage = new Uri("Blue.jpg", UriKind.Relative) }; // Create the Tile and pin it to Start. This will cause a navigation to Start and a deactivation of our application. ShellTile.Create(new Uri(string.Format("/Views/Reisadvies.xaml?id={0}&index={1}", search.Id, index), UriKind.Relative), NewTileData); } }
private string GenerateAdviesTile(PlannerSearch search, ReisMogelijkheid mogelijkheid, string from, string to, string date, string filename) { //FrameworkElement reflectedFE = ReflectedElement as FrameworkElement TileAdviesControl tileControl = new TileAdviesControl(mogelijkheid, from, to, date); tileControl.Measure(new Size(336, 336)); tileControl.Arrange(new Rect(0, 0, 336, 336)); tileControl.UpdateLayout(); tileControl.Measure(new Size(336, 336)); tileControl.Arrange(new Rect(0, 0, 336, 336)); tileControl.UpdateLayout(); WriteableBitmap sourceBitmap = new WriteableBitmap(tileControl, null); sourceBitmap.Invalidate(); using (var store = IsolatedStorageFile.GetUserStoreForApplication()) { using (var st = new IsolatedStorageFileStream(filename, FileMode.Create, FileAccess.Write, store)) { sourceBitmap.SaveJpeg(st, 336, 336, 0, 100); } } return(filename); }
public void Initialize(ReisMogelijkheid reisMogelijkheid) { this.ReisMogelijkheid = reisMogelijkheid; this.Prijs = null; GetPrijs(reisMogelijkheid.PlannerSearch); }
private void GridView_ItemClick_1(object sender, ItemClickEventArgs e) { ReisMogelijkheid advies = e.ClickedItem as ReisMogelijkheid; if (advies != null) { this.Frame.Navigate(typeof(TravelAdviceSinglePage), advies); } }
public TileAdviesControl(ReisMogelijkheid mogelijkheid, string from, string to, string date) { InitializeComponent(); VertrekSpoor.Text = string.Empty; AankomstSpoor.Text = string.Empty; FromText.Text = from; ToText.Text = to; Tile2TextBlock.Text = date; if (mogelijkheid != null && mogelijkheid.ReisDelen != null) { var vertrekspoor = mogelijkheid.ReisDelen.FirstOrDefault()?.ReisStops?.FirstOrDefault()?.Vertrekspoor; var aankomstspoor = mogelijkheid.ReisDelen.LastOrDefault()?.ReisStops?.LastOrDefault()?.Vertrekspoor; VertrekSpoor.Text = vertrekspoor; AankomstSpoor.Text = aankomstspoor; } }
private void SetOptimaal(ReisMogelijkheid item) { //Large gridview MogelijkhedenGridView.UpdateLayout(); MogelijkhedenGridView.ScrollIntoView(MogelijkhedenGridView.Items.LastOrDefault()); MogelijkhedenGridView.UpdateLayout(); MogelijkhedenGridView.ScrollIntoView(item); MogelijkhedenGridView.UpdateLayout(); //Small list MogelijkhedenSmallList.UpdateLayout(); MogelijkhedenSmallList.ScrollIntoView(MogelijkhedenSmallList.Items.LastOrDefault()); MogelijkhedenSmallList.UpdateLayout(); MogelijkhedenSmallList.ScrollIntoView(item); MogelijkhedenSmallList.UpdateLayout(); }
//public override void ViewStateChanged(Windows.UI.ViewManagement.ApplicationView sender, Windows.UI.ViewManagement.ApplicationViewStateChangedEventArgs e) //{ // base.ViewStateChanged(sender, e); // this.pageTitle.UpdateLayout(); //} /// <summary> /// Invoked when this page is about to be displayed in a Frame. /// </summary> /// <param name="e">Event data that describes how this page was reached. The Parameter /// property is typically used to configure the page.</param> protected override void OnNavigatedTo(NavigationEventArgs e) { if (e.NavigationMode != NavigationMode.Back) { if (e.Parameter is PlannerSearch) { ViewModel.Initialize((PlannerSearch)e.Parameter); } else if (e.Parameter is SearchHistory) { ViewModel.Initialize((SearchHistory)e.Parameter); } } else { var model = SimpleIoc.Default.GetInstance <TravelAdviceSingleViewModel>(); if (model.ReisMogelijkheid != null) { _lastViewed = model.ReisMogelijkheid; } // var optimaal = ViewModel.ReisMogelijkheden.Where(x => x.Optimaal).FirstOrDefault(); // if (optimaal != null) // SetOptimaal(optimaal); } base.OnNavigatedTo(e); SuspensionManager.SessionState["PageType"] = typeof(TravelAdvicePage).FullName; if (e.Parameter is PlannerSearch) { SuspensionManager.SessionState["PageArgs"] = (PlannerSearch)e.Parameter; } }
/// <summary> /// Initializes a new instance of the ReisadviesViewModel class. /// </summary> public ReisadviesViewModel() { DataLoader = new DataLoader(); SearchHistory = new ObservableCollection <PlannerSearch>(); PlannerService = SimpleIoc.Default.GetInstance <IPlannerService>(); NSApiService = SimpleIoc.Default.GetInstance <INSApiService>(); NavigationService = SimpleIoc.Default.GetInstance <INavigationService>(); LiveTileService = SimpleIoc.Default.GetInstance <ILiveTileService>(); this.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(ReisadviesViewModel_PropertyChanged); EerderCommand = new RelayCommand(() => DoEerder(), () => CanDoEerder()); LaterCommand = new RelayCommand(() => DoLater(), () => CanDoLater()); TerugreisCommand = new RelayCommand(() => PlanTerugreis()); RepeatSearchCommand = new RelayCommand(() => RepeatSearch()); DoSearchCommand = new RelayCommand(() => DoSearch()); MijnStationsCommand = new RelayCommand(() => DoMijnStations()); PinCommand = new RelayCommand(() => PinSearch()); AddReminderCommand = new RelayCommand(() => AddReminder()); EmailCommand = new RelayCommand(() => EmailAction()); PrijsCommand = new RelayCommand(() => GoPrijs()); VertrektijdenCommand = new RelayCommand(() => GoVertrektijden()); DeleteHistoryCommand = new RelayCommand(() => DeleteHistory()); DeleteCommand = new RelayCommand <Guid>(async x => await DeleteSingleHistoryAsync(x)); AdviceTapCommand = new RelayCommand <Guid>(x => AdviceTapCommandAction(x)); ReplanCommand = new RelayCommand <PlannerSearch>(x => RepeatSearch(x)); if (IsInDesignMode) { // Code runs in Blend --> create design time data. SearchHistory.Add(new PlannerSearch() { VanStation = new Station() { Name = "Amsterdam" }, NaarStation = new Station() { Name = "Delft" }, ViaStation = new Station() { Name = "Almere" } }); SearchHistory.Add(new PlannerSearch() { VanStation = new Station() { Name = "Maastricht" }, NaarStation = new Station() { Name = "Groningen" } }); SelectedSearch = new PlannerSearch() { VanStation = new Station() { Name = "Amsterdam" }, NaarStation = new Station() { Name = "Delft" } }; ReisMogelijkheden = new List <ReisMogelijkheid>() { new ReisMogelijkheid() { Optimaal = true, AantalOverstappen = 2, GeplandeAankomstTijd = DateTime.Now, GeplandeVertrekTijd = DateTime.Now, GeplandeReisTijd = "2:05" }, new ReisMogelijkheid() { Optimaal = true, AantalOverstappen = 2, GeplandeAankomstTijd = DateTime.Now, GeplandeVertrekTijd = DateTime.Now, GeplandeReisTijd = "2:05" } }; SelectedReisMogelijkheid = new ReisMogelijkheid() { Optimaal = true, AantalOverstappen = 2, GeplandeAankomstTijd = DateTime.Now, GeplandeVertrekTijd = DateTime.Now, GeplandeReisTijd = "2:05", ReisDelen = new List <ReisDeel>() { new ReisDeel() { VervoerType = "Intercity", ReisStops = new List <ReisStop>() { new ReisStop() { Naam = "Delft", Vertrekspoor = "1a" }, new ReisStop() { Naam = "Rotterdam", Vertrekspoor = "1a" } } }, new ReisDeel() { VervoerType = "Intercity", ReisStops = new List <ReisStop>() { new ReisStop() { Naam = "Delft", Vertrekspoor = "1a" }, } } } }; } else { // Code runs "for real": Connect to service, etc... RefreshSearchHistoryAsync(); } }
public async Task <List <ReisMogelijkheid> > GetSearchResult(PlannerSearch search) { string stringDateTime = search.DateTime.ToString("yyyy-MM-dd") + "T" + search.DateTime.ToString("HH:mm:ss"); string query = string.Format("previousAdvices=5&nextAdvices=5&fromStation={0}&toStation={1}&dateTime={2}", search.VanStation.Code, search.NaarStation.Code, stringDateTime); if (search.ViaStation != null) { query += "&viaStation=" + search.ViaStation.Code; } if (search.Type != null && search.Type.ToLower() == "vertrek") { query += "&departure=true"; } else { query += "&departure=false"; } query += string.Format("&hslAllowed={0}&yearCard={1}", search.IsHogesnelheid, search.IsYearCard); Uri address = new Uri(string.Format(NSApi.BaseUrl + "/ns-api-treinplanner?{0}&a={1}", query, DateTime.Now.Ticks), UriKind.Absolute); HttpClient webclient = new HttpClient(); webclient.MaxResponseContentBufferSize = 9000000; //webclient.Credentials = new NetworkCredential(NSApi.Login, NSApi.Password); string response = await webclient.GetStringAsync(address); return(await Task.Run(async() => { XElement tijdenXmlElement = XElement.Parse(response); List <ReisMogelijkheid> reismogelijkheidList = new List <ReisMogelijkheid>(); foreach (var element in tijdenXmlElement.Descendants("ReisMogelijkheid")) { ReisMogelijkheid mogelijkheid = new ReisMogelijkheid(); mogelijkheid.IsSearchVertrek = (search.Type == "vertrek"); if (element.Element("AantalOverstappen") != null) { mogelijkheid.AantalOverstappen = int.Parse(element.Element("AantalOverstappen").Value); } mogelijkheid.GeplandeVertrekTijd = GetDateTime(element, "GeplandeVertrekTijd") ?? DateTime.Now; mogelijkheid.ActueleVertrekTijd = GetDateTime(element, "ActueleVertrekTijd") ?? DateTime.Now; mogelijkheid.GeplandeAankomstTijd = GetDateTime(element, "GeplandeAankomstTijd") ?? DateTime.Now; mogelijkheid.ActueleAankomstTijd = GetDateTime(element, "ActueleAankomstTijd") ?? DateTime.Now; mogelijkheid.GeplandeReisTijd = GetElementText(element.Element("GeplandeReisTijd")); if (element.Element("Optimaal") != null) { mogelijkheid.Optimaal = bool.Parse(element.Element("Optimaal").Value); } mogelijkheid.ReisDelen = new List <ReisDeel>(); foreach (var reisdeelElement in element.Descendants("ReisDeel")) { ReisDeel deel = new ReisDeel(); deel.VervoerType = GetElementText(reisdeelElement.Element("VervoerType")); deel.ReisStops = new List <ReisStop>(); foreach (var stopElement in reisdeelElement.Descendants("ReisStop")) { ReisStop stop = new ReisStop(); stop.Naam = GetElementText(stopElement.Element("Naam")); stop.Vertrekspoor = GetElementText(stopElement.Element("Spoor")); stop.Tijd = GetDateTime(stopElement, "Tijd"); if (stopElement.Element("Spoor") != null && stopElement.Element("Spoor").Attribute("wijziging") != null) { stop.IsVertrekspoorWijziging = bool.Parse(stopElement.Element("Spoor").Attribute("wijziging").Value); } deel.ReisStops.Add(stop); } //ReisStop endStation = null; //if (deel.ReisStops.Count > 1) //{ // endStation = deel.ReisStops.Last(); // deel.ReisStops.Remove(endStation); //} mogelijkheid.ReisDelen.Add(deel); //if (endStation != null) //{ // ReisDeel endDeel = new ReisDeel(); // endDeel.VervoerType = GetElementText(reisdeelElement.Element("VervoerType")); // endDeel.ReisStops = new List<ReisStop>(); // endDeel.ReisStops.Add(endStation); // endDeel.IsAankomst = true; // mogelijkheid.ReisDelen.Add(endDeel); //} } //Set vertrek vertraging var first = mogelijkheid.ReisDelen.FirstOrDefault(); if (first != null && first.FirstStop != null) { first.FirstStop.VertragingTekst = mogelijkheid.VertrekVertraging; } //Set aankomst vertraging var last = mogelijkheid.ReisDelen.LastOrDefault(); if (last != null && last.FirstStop != null) { last.LastStop.VertragingTekst = mogelijkheid.AankomstVertraging; } reismogelijkheidList.Add(mogelijkheid); } await _searchHistoryService.Add(new SearchHistory() { PlannerSearch = search, Reismogelijkheden = reismogelijkheidList }); return reismogelijkheidList; })); }
public async Task <List <ReisMogelijkheid> > GetSearchResult(PlannerSearch search) { string stringDateTime = search.Date.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture) + "T" + search.Time.ToString("HH:mm:ss", CultureInfo.InvariantCulture); string query = string.Format("previousAdvices=5&nextAdvices=5&fromStation={0}&toStation={1}&dateTime={2}", search.VanStation.Code, search.NaarStation.Code, stringDateTime); if (search.ViaStation != null) { query += "&viaStation=" + search.ViaStation.Code; } if (search.Type != null && search.Type.ToLower() == "vertrek") { query += "&departure=true"; } else { query += "&departure=false"; } query += string.Format("&hslAllowed={0}&yearCard={1}", search.IsHogesnelheid, search.IsYearCard); Uri address = new Uri(string.Format(NSApi.BaseUrl + "/ns-api-treinplanner?{0}&a={1}", query, DateTime.Now.Ticks), UriKind.Absolute); HttpClient webClient = new HttpClient(); string response = await webClient.GetStringAsync(address); return(await Task.Run(() => { XElement tijdenXmlElement = XElement.Parse(response); List <ReisMogelijkheid> reismogelijkheidList = new List <ReisMogelijkheid>(); foreach (var element in tijdenXmlElement.Descendants("ReisMogelijkheid")) { ReisMogelijkheid mogelijkheid = new ReisMogelijkheid(); if (element.Element("AantalOverstappen") != null) { mogelijkheid.AantalOverstappen = int.Parse(element.Element("AantalOverstappen").Value); } mogelijkheid.GeplandeVertrekTijd = XmlHelper.GetDateTime(element, "GeplandeVertrekTijd") ?? DateTime.Now; mogelijkheid.ActueleVertrekTijd = XmlHelper.GetDateTime(element, "ActueleVertrekTijd") ?? DateTime.Now; mogelijkheid.GeplandeAankomstTijd = XmlHelper.GetDateTime(element, "GeplandeAankomstTijd") ?? DateTime.Now; mogelijkheid.ActueleAankomstTijd = XmlHelper.GetDateTime(element, "ActueleAankomstTijd") ?? DateTime.Now; mogelijkheid.GeplandeReisTijd = XmlHelper.GetElementText(element.Element("GeplandeReisTijd")); mogelijkheid.Status = XmlHelper.GetElementText(element.Element("Status")); if (element.Element("Optimaal") != null) { mogelijkheid.Optimaal = bool.Parse(element.Element("Optimaal").Value); } if (element.Element("Melding") != null) { mogelijkheid.Melding = XmlHelper.GetElementText(element.Element("Melding").Element("Text")); } mogelijkheid.ReisDelen = new List <ReisDeel>(); bool isAlternate = false; foreach (var reisdeelElement in element.Descendants("ReisDeel")) { ReisDeel deel = new ReisDeel(); deel.IsAlternate = isAlternate; isAlternate = !isAlternate; deel.VervoerType = XmlHelper.GetElementText(reisdeelElement.Element("VervoerType")); deel.Vervoerder = XmlHelper.GetElementText(reisdeelElement.Element("Vervoerder")); deel.Status = XmlHelper.GetElementText(reisdeelElement.Element("Status")); deel.ReisStops = new List <ReisStop>(); foreach (var stopElement in reisdeelElement.Descendants("ReisStop")) { ReisStop stop = new ReisStop(); stop.Naam = XmlHelper.GetElementText(stopElement.Element("Naam")); stop.Vertrekspoor = XmlHelper.GetElementText(stopElement.Element("Spoor")); stop.Tijd = XmlHelper.GetDateTime(stopElement, "Tijd"); if (stopElement.Element("Spoor") != null && stopElement.Element("Spoor").Attribute("wijziging") != null) { stop.IsVertrekspoorWijziging = bool.Parse(stopElement.Element("Spoor").Attribute("wijziging").Value); } deel.ReisStops.Add(stop); } mogelijkheid.ReisDelen.Add(deel); } //Set vertrek vertraging var first = mogelijkheid.ReisDelen.FirstOrDefault(); if (first != null && first.FirstStop != null) { first.FirstStop.VertragingTekst = mogelijkheid.VertrekVertraging; } //Set aankomst vertraging var last = mogelijkheid.ReisDelen.LastOrDefault(); if (last != null && last.FirstStop != null) { last.LastStop.VertragingTekst = mogelijkheid.AankomstVertraging; } //Delete vervoerders als het NS is. Tenzij het met iets anders begint. (Bijv Arriva, dan NS daarna wel tonen) foreach (var deel in mogelijkheid.ReisDelen) { if (deel.Vervoerder.ToLower() == "ns" || deel.Vervoerder.ToLower().Contains("spoorwegen")) { deel.Vervoerder = null; } else { break; } } reismogelijkheidList.Add(mogelijkheid); } return reismogelijkheidList; })); }