From d06477d49cc8e8daf6f87c7b439c2a80515687f1 Mon Sep 17 00:00:00 2001 From: Konstantin Date: Sun, 24 Feb 2013 01:57:39 +0400 Subject: update tiles --- Juick/App.xaml.cs | 13 ++++++- Juick/ApplicationSmallTile.png | Bin 0 -> 3889 bytes Juick/ApplicationWideTile.png | Bin 0 -> 5534 bytes Juick/Classes/TileHelper.cs | 78 +++++++++++++++++++++++++++++++++++++ Juick/Juick.csproj | 5 ++- Juick/Properties/WMAppManifest.xml | 3 ++ 6 files changed, 97 insertions(+), 2 deletions(-) create mode 100644 Juick/ApplicationSmallTile.png create mode 100644 Juick/ApplicationWideTile.png create mode 100644 Juick/Classes/TileHelper.cs diff --git a/Juick/App.xaml.cs b/Juick/App.xaml.cs index 9d3ac9a..c0f6134 100644 --- a/Juick/App.xaml.cs +++ b/Juick/App.xaml.cs @@ -96,7 +96,18 @@ namespace Juick // This code will not execute when the application is reactivated private void Application_Launching(object sender, LaunchingEventArgs e) { - + const string JuickCaption = "Juick"; + TileHelper.UpdateFlipTile( + JuickCaption, + string.Empty, + JuickCaption, + JuickCaption, + null, + "/ApplicationSmallTile.png", + "/ApplicationTile.png", + null, + "/ApplicationWideTile.png", + null); } // Code to execute when the application is activated (brought to foreground) diff --git a/Juick/ApplicationSmallTile.png b/Juick/ApplicationSmallTile.png new file mode 100644 index 0000000..95947f4 Binary files /dev/null and b/Juick/ApplicationSmallTile.png differ diff --git a/Juick/ApplicationWideTile.png b/Juick/ApplicationWideTile.png new file mode 100644 index 0000000..e0b6bd6 Binary files /dev/null and b/Juick/ApplicationWideTile.png differ diff --git a/Juick/Classes/TileHelper.cs b/Juick/Classes/TileHelper.cs new file mode 100644 index 0000000..223340b --- /dev/null +++ b/Juick/Classes/TileHelper.cs @@ -0,0 +1,78 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Microsoft.Phone.Shell; + +namespace Juick.Classes +{ + static class TileHelper + { + public static void UpdateFlipTile( + string title, + string backTitle, + string backContent, + string wideBackContent, + int? count, + string smallBackgroundImageStringUri, + string backgroundImageStringUri, + string backBackgroundImageStringUri, + string wideBackgroundImageStringUri, + string wideBackBackgroundImageStringUri) + { + if (!CanUseLiveTiles) + { + return; + } + var smallBackgroundImage = CreateRelativeUri(smallBackgroundImageStringUri); + var backgroundImage = CreateRelativeUri(backgroundImageStringUri); + var backBackgroundImage = CreateRelativeUri(backBackgroundImageStringUri); + var wideBackgroundImage = CreateRelativeUri(wideBackgroundImageStringUri); + var wideBackBackgroundImage = CreateRelativeUri(wideBackBackgroundImageStringUri); + + Type flipTileDataType = Type.GetType("Microsoft.Phone.Shell.FlipTileData, Microsoft.Phone"); + + // Get the ShellTile type so we can call the new version of "Update" that takes the new Tile templates. + Type shellTileType = Type.GetType("Microsoft.Phone.Shell.ShellTile, Microsoft.Phone"); + + // Loop through any existing Tiles that are pinned to Start. + foreach (var tileToUpdate in ShellTile.ActiveTiles) + { + var UpdateTileData = flipTileDataType.GetConstructor(new Type[] { }).Invoke(null); + + // Set the properties. + SetProperty(UpdateTileData, "Title", title); + SetProperty(UpdateTileData, "Count", count); + SetProperty(UpdateTileData, "BackTitle", backTitle); + SetProperty(UpdateTileData, "BackContent", backContent); + SetProperty(UpdateTileData, "SmallBackgroundImage", smallBackgroundImage); + SetProperty(UpdateTileData, "BackgroundImage", backgroundImage); + SetProperty(UpdateTileData, "BackBackgroundImage", backBackgroundImage); + SetProperty(UpdateTileData, "WideBackgroundImage", wideBackgroundImage); + SetProperty(UpdateTileData, "WideBackBackgroundImage", wideBackBackgroundImage); + SetProperty(UpdateTileData, "WideBackContent", wideBackContent); + + // Invoke the new version of ShellTile.Update. + shellTileType.GetMethod("Update").Invoke(tileToUpdate, new Object[] { UpdateTileData }); + } + } + + static Uri CreateRelativeUri(string uriString) + { + return !string.IsNullOrEmpty(uriString) ? new Uri(uriString, UriKind.Relative) : null; + } + + static void SetProperty(object instance, string name, object value) + { + var setMethod = instance.GetType().GetProperty(name).GetSetMethod(); + setMethod.Invoke(instance, new object[] { value }); + } + + static readonly Version targetedVersion78 = new Version(7, 10, 8858); + + static bool CanUseLiveTiles + { + get { return Environment.OSVersion.Version >= targetedVersion78; } + } + } +} diff --git a/Juick/Juick.csproj b/Juick/Juick.csproj index c74da5b..1ae974a 100644 --- a/Juick/Juick.csproj +++ b/Juick/Juick.csproj @@ -75,6 +75,7 @@ + LoginView.xaml @@ -142,7 +143,9 @@ - + + + diff --git a/Juick/Properties/WMAppManifest.xml b/Juick/Properties/WMAppManifest.xml index 8f7b6da..15e3611 100644 --- a/Juick/Properties/WMAppManifest.xml +++ b/Juick/Properties/WMAppManifest.xml @@ -33,5 +33,8 @@ + \ No newline at end of file -- cgit v1.2.3