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); }); } }
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(); }; }