public void GenerateTile(TileItem item)
        {
            TileGenerator.RefreshTileTask();

            #if DEBUG
            ScheduledActionService.LaunchForTest(AppSettings.PeriodicTaskName, TimeSpan.FromSeconds(1));
            #endif

            TileGenerator.GenerateTile(item, delegate() {});
        }
 private void OnTileSelected(TileItem item)
 {
     GenerateTile(item);
 }
        private void AddLatestTile(GeoLocationCity city, List<LiveTileWeatherResponse> result)
        {
            var now = result.FirstOrDefault(x => x.Df.Hour == DateTime.Now.Hour);
            if (now != null)
            {
                var latestTile = new TileItem(city)
                {
                    LocationName = city.Name,
                    Title = string.Format(Properties.Resources.LatestTitle, now.Df),
                    CloudImage = ImageIdToUri(now.S),
                    Temperature = now.T + '°',
                    TileType = TileType.Latest,
                    Description = now.Prosa
                };

                Deployment.Current.Dispatcher.BeginInvoke(() =>
                {
                    this.Tiles.Add(latestTile);
                });
            }
        }
        private void AddPlusTile(GeoLocationCity city, List<LiveTileWeatherResponse> result, int offset)
        {
            var custom = result.FirstOrDefault(x => x.Df.Hour == DateTime.Now.AddHours(offset).Hour);
            if (custom != null)
            {
                var customTile = new TileItem(city)
                {
                    LocationName = city.Name,
                    Title = string.Format(Properties.Resources.PlusTitleTitle, custom.Df, offset),
                    CloudImage = ImageIdToUri(custom.S),
                    Temperature = custom.T + '°',
                    TileType = TileType.PlusTile,
                    Offset = offset,
                    Description = custom.Prosa
                };

                Deployment.Current.Dispatcher.BeginInvoke(() =>
                {
                    this.Tiles.Add(customTile);
                });
            }
        }
Exemple #5
0
        public static void GenerateTile(TileItem item, Action completed)
        {
            if (item.TileType == TileType.Custom)
            {
                var time = DateTime.Today.AddHours(item.Offset);

                if (item.Offset < 6)
                    item.Title = string.Format(Properties.Resources.Tile_Night, time);
                else if (item.Offset < 12)
                    item.Title = string.Format(Properties.Resources.Tile_Morning, time);
                else if (item.Offset < 18)
                    item.Title = string.Format(Properties.Resources.Tile_Afternoon, time);
                else
                    item.Title = string.Format(Properties.Resources.Tile_Evening, time);
            }
            else if (item.TileType == TileType.PlusTile)
            {
                var hour = DateTime.Now.AddHours(item.Offset);
                var time = DateTime.Today.AddHours(hour.Hour);

                if (time.Hour < 6)
                    item.Title = string.Format(Properties.Resources.Tile_Night, time);
                else if (time.Hour < 12)
                    item.Title = string.Format(Properties.Resources.Tile_Morning, time);
                else if (time.Hour < 18)
                    item.Title = string.Format(Properties.Resources.Tile_Afternoon, time);
                else
                    item.Title = string.Format(Properties.Resources.Tile_Evening, time);
            }

            var fontFamily = new FontFamily("Segoe WP");
            var fontForeground = new SolidColorBrush(Colors.White);

            var backgroundRectangle = new Rectangle();
            backgroundRectangle.Height = 173;
            backgroundRectangle.Width = 173;
            backgroundRectangle.Fill = new SolidColorBrush(Color.FromArgb(255, 13, 45, 132));

            var source = new BitmapImage(item.CloudImage);
            source.CreateOptions = BitmapCreateOptions.None;

            source.ImageFailed += (sender, e) =>
            {
                System.Diagnostics.Debugger.Break();
            };

            source.ImageOpened += (sender, e) =>
            {
                var cloudImage = new Image();
                cloudImage.Source = source;
                cloudImage.Width = 100;
                cloudImage.Height = 64;

                TextBlock titleTextBlock = new TextBlock();
                titleTextBlock.Text = item.Title;
                titleTextBlock.FontSize = 20;
                titleTextBlock.Foreground = fontForeground;
                titleTextBlock.FontFamily = fontFamily;

                TextBlock tempTextBlock = new TextBlock();
                tempTextBlock.Text = item.Temperature;
                tempTextBlock.FontSize = 30;
                tempTextBlock.Foreground = fontForeground;
                tempTextBlock.FontFamily = fontFamily;

                string fileName = string.Format("{0}_{1}_{2}.jpg",
                    item.Offset, item.City.PostalCode, item.City.ShortCountryName);

                var tileImage = string.Format("/Shared/ShellContent/{0}", fileName);
                var isoStoreTileImage = string.Format("isostore:/Shared/ShellContent/{0}", fileName);

                using (IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication())
                {
                    var stream = store.CreateFile(tileImage);

                    var bitmap = new WriteableBitmap(173, 173);

                    bitmap.Render(backgroundRectangle, new TranslateTransform());

                    bitmap.Render(cloudImage, new TranslateTransform()
                    {
                        X = 8,
                        Y = 54
                    });

                    bitmap.Render(tempTextBlock, new TranslateTransform()
                    {
                        X = 124,
                        Y = 63
                    });

                    bitmap.Render(titleTextBlock, new TranslateTransform()
                    {
                        X = 12,
                        Y = 6
                    });

                    bitmap.Invalidate();
                    bitmap.SaveJpeg(stream, 173, 173, 0, 100);

                    stream.Close();
                }

                var address = string.Format(AppSettings.MainPageWithTileAddress,
                    item.City.PostalCode, item.City.Country, (int)item.TileType, item.Offset);

                var dmiTile = ShellTile.ActiveTiles.FirstOrDefault(x => x.NavigationUri.ToString() == address);

                var tileData = new StandardTileData
                {
                    BackgroundImage = new Uri(isoStoreTileImage, UriKind.Absolute),
                    Title = item.City.Name,
                };

                var navigationUri = new Uri(address, UriKind.Relative);

                if (dmiTile != null)
                {
                    dmiTile.Delete();
                    ShellTile.Create(navigationUri, tileData);
                }
                else
                {
                    ShellTile.Create(navigationUri, tileData);
                }

                completed();
            };
        }