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