private void LoadPushpins()
        {
            GeoCoordinate location = null;

            if (Config.UseLocation && Landing.userPosition != null)
            {
                location          = Landing.userPosition.Location;
                mapView.ZoomLevel = 13;
            }
            else
            {
                mapView.ZoomLevel = 5;

                if (Config.Region == Config.RegionDef.UK)
                {
                    location = new GeoCoordinate(51.507222, -0.1275);
                }
                else
                {
                    location = new GeoCoordinate(53.347778, -6.259722);
                }
            }

            IEnumerable <CinemaInfo> oc = App.Cinemas.Values.OrderBy(c => GeoMath.Distance(location.Latitude, location.Longitude, c.Latitude, c.Longitute, GeoMath.MeasureUnits.Miles)).Take(1);

            if (oc.Count() > 0)
            {
                CinemaInfo ci = oc.First();
                mapView.Center = new GeoCoordinate(ci.Latitude, ci.Longitute);
            }

            this.mapItems.ItemsSource = App.Cinemas.Values;
        }
Example #2
0
        public FilmPerformancesTableSource(CinemaInfo cinema, IEnumerable <FilmInfo> films)
        {
            this.Cinema = cinema;
            Films       = new List <FilmInfo> (films);

            ImageManager.Instance.ImageLoaded += HandleImageLoaded;
        }
Example #3
0
        public ResultCreated CreateCinema(CinemaInfo cinemaInfo)
        {
            if (CinemaExists(cinemaInfo))
            {
                return(new ResultCreated
                {
                    ResultOk = false,
                    Details = "Such cinema already exists."
                });
            }

            if (!CinemaInfoValid(cinemaInfo))
            {
                return(new ResultCreated
                {
                    ResultOk = false,
                    Details = "Invalid cinema data."
                });
            }

            var generatedCinema = GenerateCinema(cinemaInfo);

            dbContext.Cinemas.Add(generatedCinema);
            dbContext.SaveChanges();

            return(new ResultCreated
            {
                ResultOk = true,
                Id = generatedCinema.CinemaId,
            });
        }
Example #4
0
        private async void Cinema_Tap(object sender, System.Windows.Input.GestureEventArgs e)
        {
            CinemaInfo newCI = null;

            if (sender is TextBlock)
            {
                TextBlock tb = (sender as TextBlock);
                newCI = tb.Tag as CinemaInfo;
            }
            else
            {
                Pushpin pp = (sender as Pushpin);
                newCI = pp.Tag as CinemaInfo;
            }

            if (Config.AudioSupport && ci != newCI)
            {
                ci = newCI;

                await SpeechSynthesisService.SpeakOutLoud(newCI.Name);

                return;
            }
            else
            {
                CinemaDetails.SelectedCinema = newCI;
                NavigationService.Navigate(new Uri("/CinemaDetails.xaml", UriKind.Relative));
            }
        }
        public async Task <IActionResult> Edit(Guid id, [Bind("Id,LocationId,Email,PhoneNumber")] CinemaInfo cinemaInfo)
        {
            if (id != cinemaInfo.Id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(cinemaInfo);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!CinemaInfoExists(cinemaInfo.Id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(cinemaInfo));
        }
 public CinemaAnnotation(CLLocationCoordinate2D coordinate, CinemaInfo cinema, UIStoryboard storyboard, UINavigationController navigationController)
 {
     this.coordinate           = coordinate;
     this.Cinema               = cinema;
     this.Storyboard           = storyboard;
     this.NavigationController = navigationController;
 }
Example #7
0
        public Result EditCinema(int cinemaId, CinemaInfo cinemaInfo)
        {
            if (!CinemaExists(cinemaId))
            {
                return(new Result
                {
                    ResultOk = false,
                    Details = "Edited cinema does not exist.",
                });
            }

            if (!CinemaInfoValid(cinemaInfo))
            {
                return(new ResultCreated
                {
                    ResultOk = false,
                    Details = "Invalid cinema data."
                });
            }

            var cinema = dbContext.Cinemas.FirstOrDefault(c => c.CinemaId == cinemaId);

            cinema.Name = cinemaInfo.Name;
            cinema.City = cinemaInfo.City;

            dbContext.SaveChanges();

            return(new Result
            {
                ResultOk = true,
            });
        }
Example #8
0
        private void SetTile(CinemaInfo ci, CinemaTileType cinemaType)
        {
            if (ci == null)
            {
                return;
            }

            Tile t = new Tile()
            {
                CommandParameter = ci.ID,
                Margin           = new Thickness(12, 12, 0, 0),
                Height           = 210,
                Width            = 210,
                Foreground       = new SolidColorBrush(Colors.White),
                Background       = new ImageBrush()
                {
                    ImageSource = new BitmapImage(new Uri("Images/Background.png", UriKind.Relative))
                }
            };

            Grid g = new Grid();

            g.RowDefinitions.Add(new RowDefinition()
            {
                Height = new GridLength(1, GridUnitType.Auto)
            });
            g.RowDefinitions.Add(new RowDefinition()
            {
                Height = new GridLength(1, GridUnitType.Star)
            });

            TextBlock tbTopText = new TextBlock()
            {
                Text = cinemaType.ToString(), Margin = new Thickness(12), VerticalAlignment = System.Windows.VerticalAlignment.Top
            };

            Grid.SetColumn(tbTopText, 0);
            Grid.SetRow(tbTopText, 0);
            g.Children.Add(tbTopText);

            TextBlock tbBottomText = new TextBlock()
            {
                Margin = new Thickness(12), VerticalAlignment = System.Windows.VerticalAlignment.Bottom, TextWrapping = TextWrapping.Wrap
            };

            tbBottomText.Text = ci.Name;
            t.Click          += ActiveTile_Click;

            Grid.SetColumn(tbBottomText, 0);
            Grid.SetRow(tbBottomText, 1);

            g.Children.Add(tbBottomText);

            t.Content = g;

            TurnstileFeatherEffect.SetFeatheringIndex(t, tileIndex++);

            this.wpHubTiles.Children.Add(t);
        }
        protected void lbtUpdateB_Click(object sender, EventArgs e)
        {
            #region [TestInput]
            if (txtName.Text.Trim().Equals(""))
            {
                WebMsgBox.Show("Name not null !");
                txtName.Focus();
                return;
            }
            if (txtAddress.Text.Trim().Equals(""))
            {
                WebMsgBox.Show("Address not null !");
                txtAddress.Focus();
                return;
            }
            if (txtSeats.Text.Trim().Equals(""))
            {
                WebMsgBox.Show("Seats not null !");
                txtSeats.Focus();
                return;
            }
            if (txtPhone.Text.Trim().Equals(""))
            {
                WebMsgBox.Show("Phone not null !");
                txtPhone.Focus();
                return;
            }
            #endregion

            try
            {
                var obj = new CinemaInfo();
                obj.CinId   = txtId.Value;
                obj.NameCi  = txtName.Text;
                obj.Address = txtAddress.Text;
                obj.Seats   = txtSeats.Text;
                obj.Phone   = txtPhone.Text;
                obj.Image   = txImage.Text;
                obj.Status  = chkActive.Checked ? "1" : "0";
                if (_insert == true)
                {
                    CinemaService.Cinema_Insert(obj);
                }
                else
                {
                    CinemaService.Cinema_Update(obj);
                }
                BindGrid();
                LoadFilterNewsNameAutocomplete();
                pnView.Visible   = true;
                pnUpdate.Visible = false;
                _insert          = false;
            }
            catch (Exception ex)
            {
                WebMsgBox.Show(ex.Message);
            }
        }
Example #10
0
        private void SetTile(CinemaInfo ci, CinemaTileType cinemaType, double distance = 0)
        {
            if (ci == null)
            {
                return;
            }

            Grid gFront = new Grid();

            Image img = new Image()
            {
                Source = new BitmapImage(new Uri("Images/CineTileFront.png", UriKind.Relative))
            };

            gFront.Children.Add(img);

            TextBlock tbTitle = new TextBlock()
            {
                Margin = new Thickness(6), Text = ci.Name, TextWrapping = TextWrapping.Wrap, VerticalAlignment = System.Windows.VerticalAlignment.Bottom
            };

            Grid.SetRow(tbTitle, 1);
            gFront.Children.Add(tbTitle);

            switch (cinemaType)
            {
            case CinemaTileType.Nearest:
                gFront.Children.Add(new TextBlock()
                {
                    Margin = new Thickness(6), Text = String.Format("{0:N2} miles", distance), TextWrapping = TextWrapping.Wrap, VerticalAlignment = System.Windows.VerticalAlignment.Top
                });
                break;

            default:
                gFront.Children.Add(new TextBlock()
                {
                    Margin = new Thickness(6), Text = cinemaType.ToString(), TextWrapping = TextWrapping.Wrap, VerticalAlignment = System.Windows.VerticalAlignment.Top
                });
                break;
            }

            RadCustomHubTile t = new RadCustomHubTile()
            {
                CommandParameter = ci.ID,
                Margin           = new Thickness(12, 12, 0, 0),
                Height           = 144,
                Width            = 144,
                FrontContent     = gFront,
                IsFrozen         = true
            };

            t.Tap += t_Tap;

            TurnstileFeatherEffect.SetFeatheringIndex(t, tileIndex++);

            this.wpHubTiles.Children.Add(t);
        }
Example #11
0
        private async Task LoadNearestCinema()
        {
            Geolocator locator = new Geolocator();

            Exception e = null;

            if (App.UserPosition == null)
            {
                try
                {
                    Geoposition pos = await locator.GetGeopositionAsync(TimeSpan.FromMinutes(5), TimeSpan.FromSeconds(20));

                    if (pos == null)
                    {
                        return;
                    }

                    App.UserPosition = pos.Coordinate.Point;
                }
                catch (Exception ex)
                {
                    e = ex;
                }
            }

            if (App.UserPosition != null)
            {
                IEnumerable <CinemaInfo> oc = App.Cinemas.Values.OrderBy(c => GeoMath.Distance(App.UserPosition.Position.Latitude, App.UserPosition.Position.Longitude, c.Latitude, c.Longitute, GeoMath.MeasureUnits.Miles)).Take(9);
                if (oc.Count() > 0)
                {
                    foreach (var cinema in oc)
                    {
                        int iCin = cinema.ID;

                        if (!PinnedCinemas.Contains(iCin))
                        {
                            if (App.Cinemas.ContainsKey(iCin))
                            {
                                PinnedCinemas.Add(iCin);

                                CinemaInfo ci      = App.Cinemas[iCin];
                                string     message = null;
                                try
                                {
                                    this.SetTile(iCin, ci, "Nearest");
                                }
                                catch (Exception ex)
                                {
                                    message = ex.Message;
                                }
                            }
                        }
                    }
                }
            }
        }
Example #12
0
        private Cinema GenerateCinema(CinemaInfo cinemaInfo)
        {
            var newCinema = new Cinema
            {
                City = cinemaInfo.City,
                Name = cinemaInfo.Name
            };

            return(newCinema);
        }
        private void Pushpin_Tap(object sender, System.Windows.Input.GestureEventArgs e)
        {
            CinemaInfo ci = (CinemaInfo)(sender as Pushpin).Tag;

            if (ci != null)
            {
                CinemaDetails.SelectedCinema = ci;
                NavigationService.Navigate(new Uri("/CinemaDetails.xaml", UriKind.Relative));
            }
        }
Example #14
0
        public IActionResult EditCinema([FromBody] CinemaInfo cinemaInfo, int cinemaId)
        {
            Result result = сinemaService.EditCinema(cinemaId, cinemaInfo);

            if (result.ResultOk)
            {
                return(Ok());
            }
            return(NotFound(result));
        }
Example #15
0
        public IActionResult CreateCinema([FromBody] CinemaInfo cinemaInfo)
        {
            ResultCreated result = сinemaService.CreateCinema(cinemaInfo);

            if (result.ResultOk)
            {
                return(Created($"api/cinemas/{result.Id}", typeof(Cinema)));
            }
            return(BadRequest(result));
        }
Example #16
0
        private void LoadPushpins()
        {
            GeoCoordinate location = null;

            if (Config.UseLocation && Landing.userPosition != null)
            {
                location          = Landing.userPosition;
                mapView.ZoomLevel = 12;
            }
            else
            {
                mapView.ZoomLevel = 5;

                if (Config.Region == Config.RegionDef.UK)
                {
                    location = new GeoCoordinate(51.507222, -0.1275);
                }
                else
                {
                    location = new GeoCoordinate(53.347778, -6.259722);
                }
            }

            IEnumerable <CinemaInfo> oc = App.Cinemas.Values.OrderBy(c => GeoMath.Distance(location.Latitude, location.Longitude, c.Latitude, c.Longitute, GeoMath.MeasureUnits.Miles)).Take(1);

            if (oc.Count() > 0)
            {
                CinemaInfo ci = oc.First();
                mapView.Center = new GeoCoordinate(ci.Latitude, ci.Longitute);
            }

            MapLayer layer = new MapLayer();

            foreach (var cinema in App.Cinemas.Values)
            {
                Pushpin pin = new Pushpin
                {
                    GeoCoordinate = cinema.Location,
                    Content       = cinema.Name,
                    Tag           = cinema
                };

                pin.Tap += Cinema_Tap;

                MapOverlay overlay = new MapOverlay();
                overlay.Content        = pin;
                overlay.GeoCoordinate  = cinema.Location;
                overlay.PositionOrigin = new Point(0, 1);

                layer.Add(overlay);
            }

            this.mapView.Layers.Add(layer);
        }
        public async Task <IActionResult> Create([Bind("Id,LocationId,Email,PhoneNumber")] CinemaInfo cinemaInfo)
        {
            if (ModelState.IsValid)
            {
                cinemaInfo.Id = Guid.NewGuid();
                _context.Add(cinemaInfo);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(cinemaInfo));
        }
Example #18
0
        public string Delete(string id)
        {
            CinemaInfo cinema = cinemaContext.CinemaInfo.FirstOrDefault(x => x.Id.ToString().Equals(id));

            if (cinema == null)
            {
                return(JsonConvert.SerializeObject("Кинотеатр не найден!"));
            }
            cinemaContext.CinemaInfo.Remove(cinema);
            cinemaContext.SaveChangesAsync();
            return(JsonConvert.SerializeObject("Успешно удален!"));
        }
Example #19
0
        private async Task LoadPinnedAndFavouriteCinemas(bool bForce = false)
        {
            LocalStorageHelper lsh = new LocalStorageHelper();

            List <Task> cinemaDownloads = new List <Task>();

            foreach (var tile in await SecondaryTile.FindAllAsync())
            {
                int iCin = int.Parse(tile.TileId);
                PinnedCinemas.Add(iCin);
                cinemaDownloads.Add(lsh.GetCinemaFilmListings(iCin, bForce));

                var SelectedCinema = App.Cinemas[iCin];

                if (SelectedCinema != null)
                {
                    this.SetTile(iCin, SelectedCinema, "Pinned");
                }
            }

            if (Config.FavCinemas != null)
            {
                foreach (int iCin in Config.FavCinemas)
                {
                    if (PinnedCinemas.Contains(iCin))
                    {
                        continue;
                    }

                    if (App.Cinemas.ContainsKey(iCin))
                    {
                        PinnedCinemas.Add(iCin);
                        cinemaDownloads.Add(lsh.GetCinemaFilmListings(iCin, bForce));

                        CinemaInfo ci      = App.Cinemas[iCin];
                        string     message = null;
                        try
                        {
                            this.SetTile(iCin, ci, "Favourite");
                        }
                        catch (Exception ex)
                        {
                            message = ex.Message;
                        }
                    }
                }
            }

            if (cinemaDownloads.Count > 0)
            {
                await Task.WhenAll(cinemaDownloads);
            }
        }
Example #20
0
        public void Initialise(CinemaInfo selectedCinema, List <FilmInfo> films)
        {
            this.CinemaDetails = selectedCinema;
            this.filmData      = new FilmData(films);

            List <FilmInfo> currentFilms  = new List <FilmInfo>();
            List <FilmInfo> upcomingFilms = new List <FilmInfo>();

            foreach (var film in films)
            {
                if (film.Release <= DateTime.UtcNow)
                {
                    currentFilms.Add(film);
                }
                else
                {
                    upcomingFilms.Add(film);
                }
            }

            foreach (var currentFilm in currentFilms)
            {
                this.Current.Add(currentFilm);
            }

            foreach (var upcomingFilm in upcomingFilms)
            {
                this.Upcoming.Add(upcomingFilm);
            }

            this.GroupCurrent = new ObservableCollection <Group <FilmInfo> >(new FilmData(currentFilms).GetGroupsByLetter());

            this.GroupUpcoming = new ObservableCollection <Group <FilmInfo> >(new FilmData(upcomingFilms).GetGroupsByLetter());

            this.SetFilmsForDate(DateTime.Today);

            this.RaisePropertyChanged("CinemaDetails");
            this.RaisePropertyChanged("Current");
            this.RaisePropertyChanged("Upcoming");
            this.RaisePropertyChanged("FilmsForDate");
            this.RaisePropertyChanged("GroupCurrent");
            this.RaisePropertyChanged("GroupUpcoming");
            this.RaisePropertyChanged("GroupFilmsForDate");
            this.RaisePropertyChanged("FilmAppointmentSource");
            this.RaisePropertyChanged("FirstCinemaDate");
            this.RaisePropertyChanged("LastCinemaDate");
            this.RaisePropertyChanged("UserSelectedDate");

            this.Initialised = true;
        }
Example #21
0
        private void SetCinemaInfoFacet()
        {
            CinemaInfo cinemaInfo = FacetEditHelper.SafeGetFacet <CinemaInfo>(CinemaInfo.DefaultFacetKey);

            if (cinemaInfo != null)
            {
                cinemaInfo.CinimaId = 33;
            }
            else
            {
                cinemaInfo = new CinemaInfo
                {
                    CinimaId = 22
                };
            }
            Client.SetFacet <CinemaInfo>(IdentifiedContactReference, CinemaInfo.DefaultFacetKey, cinemaInfo);
        }
Example #22
0
        public string Put(string id, [FromBody] CinemaInfo value)
        {
            CinemaInfo cinema = cinemaContext.CinemaInfo.Where(u => u.Id.ToString().Equals(id)).First();

            cinema.Name   = value.Name;
            cinema.Adress = value.Adress;

            try
            {
                cinemaContext.Update(cinema);
                cinemaContext.SaveChanges();
                return(JsonConvert.SerializeObject("Данные успешно изменены"));
            }
            catch (Exception ex)
            {
                return(JsonConvert.SerializeObject(ex.Message));
            }
        }
        private async void LoadCinemaShowings(CinemaInfo cinema)
        {
            CinamaName.Text = cinema.Name;

            var cinemaShowingsResponse = await _cinemaService.GetTimesByCinema(cinema.Identifier);

            foreach (var listing in cinemaShowingsResponse.Listings)
            {
                var film = await _filmService.FindByTitle(listing.Title);

                var possibleFilm = film.Films.FirstOrDefault();

                listing.Identifier = possibleFilm?.Identifier;
                listing.Thumbnail  = possibleFilm?.Poster;
            }

            CinemaListings.ItemsSource = cinemaShowingsResponse.Listings.Where(x => x.Thumbnail != null);
        }
Example #24
0
        private void LoadNearestCinema()
        {
            try
            {
                if (watcher != null)
                {
                    userPosition = watcher.Position;

                    IEnumerable <CinemaInfo> oc = App.Cinemas.Values.Where(c => !PinnedCinemas.Contains(c.ID)).OrderBy(c => GeoMath.Distance(userPosition.Location.Latitude, userPosition.Location.Longitude, c.Latitude, c.Longitute, GeoMath.MeasureUnits.Miles)).Take(1);
                    if (oc.Count() > 0)
                    {
                        int iCin = oc.First().ID;

                        if (!PinnedCinemas.Contains(iCin))
                        {
                            if (App.Cinemas.ContainsKey(iCin))
                            {
                                PinnedCinemas.Add(iCin);

                                CinemaInfo ci      = App.Cinemas[iCin];
                                string     message = null;
                                try
                                {
                                    this.Dispatcher.BeginInvoke(() =>
                                    {
                                        this.SetTile(ci, CinemaTileType.Nearest);
                                    });
                                }
                                catch (Exception ex)
                                {
                                    message = ex.Message;
                                }
                            }
                        }
                    }
                }
            }
            catch
            {
            }
        }
Example #25
0
        public void UpdateCell(CinemaInfo cinema)
        {
            this.Cinema = cinema;

            if (Application.UserLocation != null)
            {
                var distance = GeoMath.Distance(Application.UserLocation.Coordinate.Latitude, Application.UserLocation.Coordinate.Longitude, cinema.Latitude, cinema.Longitute, GeoMath.MeasureUnits.Miles);

                this.Distance.Text = String.Format("{0:N2} miles", distance);
            }
            else
            {
            }
            this.CinemaTitle.Text = cinema.Name;
            //this.CinemaTitle.SizeToFit ();

            ContentView.Layer.CornerRadius       = 10f;
            ContentView.Layer.MasksToBounds      = true;
            ContentView.Layer.RasterizationScale = UIScreen.MainScreen.Scale;
            ContentView.Layer.Opaque             = true;
        }
        public void HandleUserSelection(object selection, NavigationService navService)
        {
            if (selection == null)
            {
                return;
            }

            if (selection is FilmInfo)
            {
                FilmInfo fi = selection as FilmInfo;
                FilmDetails.SelectedFilm = fi;

                navService.Navigate(new Uri("/FilmDetails.xaml", UriKind.Relative));
            }
            else if (selection is CinemaInfo)
            {
                CinemaInfo ci = selection as CinemaInfo;
                CinemaDetails.SelectedCinema = ci;

                navService.Navigate(new Uri("/CinemaDetails.xaml", UriKind.Relative));
            }
        }
        private async void Cinema_Tap(object sender, System.Windows.Input.GestureEventArgs e)
        {
            TextBlock  tb        = (sender as TextBlock);
            CinemaInfo newCinema = (tb.Tag as CinemaInfo);

            if (Config.AudioSupport && cinema != newCinema)
            {
                cinema = newCinema;

                await SpeechSynthesisService.SpeakOutLoud(newCinema.Name);

                return;
            }
            else
            {
                ShowPerformances.SelectedCinema    = newCinema;
                ShowPerformances.SelectedFilm      = SelectedFilm;
                ShowPerformances.ShowCinemaDetails = true;
                ShowPerformances.ShowFilmDetails   = false;
                NavigationService.Navigate(new Uri("/ShowPerformances.xaml", UriKind.Relative));
            }
        }
Example #28
0
 public string Get(string id)
 {
     if (cinemaContext.HallInfo.Any(x => x.CinemaId.ToString().Equals(id)))
     {
         try
         {
             CinemaInfo cinemaInfo = new CinemaInfo();
             HallInfo   hallInfo   = new HallInfo();
             return(JsonConvert.SerializeObject(
                        cinemaContext.HallInfo.Where(i => i.CinemaId.ToString().Equals(id))
                        .Select(x => new { x.Id, x.Name, x.Places, x.CinemaId })));
             //.Where(i => i.CinemaId.Equals(id)));
         }
         catch (Exception ex)
         {
             return(JsonConvert.SerializeObject(ex.Message));
         }
     }
     else
     {
         return(JsonConvert.SerializeObject("Зал не найден"));
     }
 }
Example #29
0
 public string Post([FromBody] CinemaInfo value)
 {
     if (!cinemaContext.CinemaInfo.Any(cinema => cinema.Name.Equals(value.Name)))
     {
         CinemaInfo cinema = new CinemaInfo();
         cinema.Name   = value.Name;
         cinema.Adress = value.Adress;
         cinema.Id     = Guid.NewGuid();
         try
         {
             cinemaContext.Add(cinema);
             cinemaContext.SaveChanges();
             return(JsonConvert.SerializeObject("Кинотеатр успешно добавлен"));
         }
         catch (Exception ex)
         {
             return(JsonConvert.SerializeObject(ex.Message));
         }
     }
     else
     {
         return(JsonConvert.SerializeObject("Такой кинотеатр уже существует!"));
     }
 }
Example #30
0
        private void SetTile(int iCin, CinemaInfo ci = null, string additionalTextualInfo = null)
        {
            Tile t = new Tile()
            {
                CommandParameter = iCin,
                Margin           = new Thickness(0, 0, 10, 10),
                Width            = 200,
                Height           = 200,
                Foreground       = new SolidColorBrush(Colors.White),
                Background       = new ImageBrush()
                {
                    ImageSource = new BitmapImage(new Uri("ms-appx:///Assets/Background.png")),
                    Stretch     = Stretch.UniformToFill
                }
            };

            Grid g = new Grid();

            g.RowDefinitions.Add(new RowDefinition()
            {
                Height = new GridLength(1, GridUnitType.Auto)
            });
            g.RowDefinitions.Add(new RowDefinition()
            {
                Height = new GridLength(1, GridUnitType.Star)
            });
            g.RowDefinitions.Add(new RowDefinition()
            {
                Height = new GridLength(1, GridUnitType.Auto)
            });

            TextBlock tbTopText = new TextBlock()
            {
                Margin = new Thickness(10), VerticalAlignment = Windows.UI.Xaml.VerticalAlignment.Bottom, TextWrapping = TextWrapping.Wrap
            };
            StringBuilder sb = new StringBuilder();

            if (ci == null)
            {
                tbTopText.Text = "All Cinemas";
                sb.AppendLine("Click to view all cineworld cinemas");
            }
            else
            {
                tbTopText.Text = ci.Name;
                sb.AppendFormat("Click to view whats on at Cineworld {0}\n", ci.Name);
            }
            t.Click += Tile_Click;


            Border bTop = new Border()
            {
                Background = new SolidColorBrush(Colors.Gray), Opacity = 0.7
            };

            bTop.Child = tbTopText;

            Grid.SetColumn(bTop, 0);
            Grid.SetRow(bTop, 0);

            g.Children.Add(bTop);

            if (ci != null)
            {
                TextBlock tbBottomText = new TextBlock()
                {
                    Text = additionalTextualInfo, Margin = new Thickness(10), VerticalAlignment = Windows.UI.Xaml.VerticalAlignment.Top
                };
                if (App.UserPosition != null)
                {
                    tbBottomText.Text = String.Format("{0:N2} {1}", GeoMath.Distance(App.UserPosition.Position.Latitude, App.UserPosition.Position.Longitude, ci.Latitude, ci.Longitute, Config.Region == Config.RegionDef.UK ? GeoMath.MeasureUnits.Miles : GeoMath.MeasureUnits.Kilometers), (Config.Region == Config.RegionDef.UK ? GeoMath.MeasureUnits.Miles : GeoMath.MeasureUnits.Kilometers).ToString());

                    sb.AppendFormat("{0} from here", tbBottomText.Text);
                }
                else
                {
                    tbBottomText.Text = additionalTextualInfo;
                }

                Border bBottom = new Border()
                {
                    Background = new SolidColorBrush(Colors.Gray), Opacity = 0.9
                };
                bBottom.Child = tbBottomText;

                Grid.SetColumn(bBottom, 0);
                Grid.SetRow(bBottom, 2);
                g.Children.Add(bBottom);
            }

            ToolTipService.SetToolTip(t, sb.ToString());

            t.Content = g;

            this.wpHubTiles.Children.Add(t);
        }