public static TileInformation CreateFromTileSetting(AppTileSettings.TileSettings tileSettings)
        {
            var ti = new TileInformation();
            ti.OverwriteWithTileSettings(tileSettings);

            return ti;
        }
        public static TileInformation CreateFromTileSetting(AppTileSettings.TileSettings tileSettings)
        {
            var ti = new TileInformation();

            ti.OverwriteWithTileSettings(tileSettings);

            return(ti);
        }
        public static TileInformation CreateFromTileData(StandardTileData data)
        {
            var ti = new TileInformation();
            ti.Title = data.Title;
            ti.BackgroundImage = data.BackgroundImage;

            return ti;
        }
        public static TileInformation CreateFromTileData(StandardTileData data)
        {
            var ti = new TileInformation();

            ti.Title           = data.Title;
            ti.BackgroundImage = data.BackgroundImage;

            return(ti);
        }
        private void FindTiles()
        {
            if (_isFindingTiles)
            {
                IntervalDispatcher.BeginInvoke(TimeSpan.FromSeconds(0.5), FindTiles); 
                return;
            }
            _isFindingTiles = true;

            foreach (var item in standardShortcuts)
            {
                item.IsPinned = false; // clear that state.
            }

            List<TileInformation> places = new List<TileInformation>();
            List<TileInformation> friends = new List<TileInformation>();

            var knownTiles = AppTileSettings.Instance.Tiles;

            foreach (var tile in ShellTile.ActiveTiles)
            {
                var tileNavigationUri = tile.NavigationUri;

                var tileSetting = knownTiles.Values.Where(v => v.NavigationUri == tileNavigationUri).SingleOrDefault();
                if (tileSetting == null)
                {
                    // We need to upgrade this tile.
                    UpgradeTile(tileNavigationUri);

                    // Skip the upgrade, once the upgrade is done this code
                    // should run again.
                    continue;
                }

                foreach (var standard in standardShortcuts)
                {
                    if (tile.NavigationUri == standard.NavigationUri)
                    {
                        standard.IsPinned = true;

                        if (tileSetting != null)
                        {
                            standard.OverwriteWithTileSettings(tileSetting);
                        }
                        break;
                    }
                }

                // Not a standard shortcut.
                var asString = tile.NavigationUri.ToString();

                if (asString == "/")
                {
                    if (!string.IsNullOrEmpty(tileSetting.StyleType))
                    {
                        SelectedMainIcon = tileSetting.StyleType;
                    }
                    else
                    {
                        SelectedMainIcon = null;
                    }
                }
                else if (IsPinnedVenue(tile.NavigationUri))
                {
                    var placeTile = new TileInformation
                    {
                        IsPinned = true,

                        CanChangeTitle = true,
                        CanChangeBackgroundImage = true,

                        Title = asString,
                        NavigationUri = tile.NavigationUri
                    };
                    placeTile.OverwriteWithTileSettings(tileSetting);
                    places.Add(placeTile);
                }
                else if (asString.StartsWith("/Views/Profile.xaml"))
                {
                    var friendTile = new TileInformation
                    {
                        IsPinned = true,

                        Title = asString,
                        NavigationUri = tile.NavigationUri
                    };
                    friendTile.OverwriteWithTileSettings(tileSetting);
                    friends.Add(friendTile);
                }
            }

            if (ShortcutTiles != null)
            {
                ShortcutTiles = new List<TileInformation>(); // bump the ui.
            }
            ShortcutTiles = standardShortcuts;
            PlaceTiles = places.Count > 0 ? places : null;
            FriendTiles = friends.Count > 0 ? friends : null;

            _isFindingTiles = false;
        }
        private void FindTiles()
        {
            if (_isFindingTiles)
            {
                IntervalDispatcher.BeginInvoke(TimeSpan.FromSeconds(0.5), FindTiles);
                return;
            }
            _isFindingTiles = true;

            foreach (var item in standardShortcuts)
            {
                item.IsPinned = false; // clear that state.
            }

            List <TileInformation> places  = new List <TileInformation>();
            List <TileInformation> friends = new List <TileInformation>();

            var knownTiles = AppTileSettings.Instance.Tiles;

            foreach (var tile in ShellTile.ActiveTiles)
            {
                var tileNavigationUri = tile.NavigationUri;

                var tileSetting = knownTiles.Values.Where(v => v.NavigationUri == tileNavigationUri).SingleOrDefault();
                if (tileSetting == null)
                {
                    // We need to upgrade this tile.
                    UpgradeTile(tileNavigationUri);

                    // Skip the upgrade, once the upgrade is done this code
                    // should run again.
                    continue;
                }

                foreach (var standard in standardShortcuts)
                {
                    if (tile.NavigationUri == standard.NavigationUri)
                    {
                        standard.IsPinned = true;

                        if (tileSetting != null)
                        {
                            standard.OverwriteWithTileSettings(tileSetting);
                        }
                        break;
                    }
                }

                // Not a standard shortcut.
                var asString = tile.NavigationUri.ToString();

                if (asString == "/")
                {
                    if (!string.IsNullOrEmpty(tileSetting.StyleType))
                    {
                        SelectedMainIcon = tileSetting.StyleType;
                    }
                    else
                    {
                        SelectedMainIcon = null;
                    }
                }
                else if (IsPinnedVenue(tile.NavigationUri))
                {
                    var placeTile = new TileInformation
                    {
                        IsPinned = true,

                        CanChangeTitle           = true,
                        CanChangeBackgroundImage = true,

                        Title         = asString,
                        NavigationUri = tile.NavigationUri
                    };
                    placeTile.OverwriteWithTileSettings(tileSetting);
                    places.Add(placeTile);
                }
                else if (asString.StartsWith("/Views/Profile.xaml"))
                {
                    var friendTile = new TileInformation
                    {
                        IsPinned = true,

                        Title         = asString,
                        NavigationUri = tile.NavigationUri
                    };
                    friendTile.OverwriteWithTileSettings(tileSetting);
                    friends.Add(friendTile);
                }
            }

            if (ShortcutTiles != null)
            {
                ShortcutTiles = new List <TileInformation>(); // bump the ui.
            }
            ShortcutTiles = standardShortcuts;
            PlaceTiles    = places.Count > 0 ? places : null;
            FriendTiles   = friends.Count > 0 ? friends : null;

            _isFindingTiles = false;
        }