Example #1
0
        internal Element_TileVisual ConvertToElement()
        {
            var visual = new Element_TileVisual()
            {
                Version       = Version,
                Language      = Language,
                BaseUri       = BaseUri,
                Branding      = Branding,
                AddImageQuery = AddImageQuery,
                ContentId     = ContentId,
                DisplayName   = DisplayName
            };

            if (TileSmall != null)
            {
                visual.Bindings.Add(TileSmall.ConvertToElement(TileSize.Small));
            }

            if (TileMedium != null)
            {
                visual.Bindings.Add(TileMedium.ConvertToElement(TileSize.Medium));
            }

            if (TileWide != null)
            {
                Element_TileBinding wideBindingElement = TileWide.ConvertToElement(TileSize.Wide);

                // If lock detailed status was specified, add them
                if (LockDetailedStatus1 != null)
                {
                    // If we can't reuse existing text element, we'll have to use the hints
                    if (!TryReuseTextElementForLockDetailedText(1, LockDetailedStatus1, wideBindingElement))
                    {
                        wideBindingElement.LockDetailedStatus1 = LockDetailedStatus1;
                    }
                }

                if (LockDetailedStatus2 != null)
                {
                    if (!TryReuseTextElementForLockDetailedText(2, LockDetailedStatus2, wideBindingElement))
                    {
                        wideBindingElement.LockDetailedStatus2 = LockDetailedStatus2;
                    }
                }

                if (LockDetailedStatus3 != null)
                {
                    if (!TryReuseTextElementForLockDetailedText(3, LockDetailedStatus3, wideBindingElement))
                    {
                        wideBindingElement.LockDetailedStatus3 = LockDetailedStatus3;
                    }
                }

                visual.Bindings.Add(wideBindingElement);
            }

            // Otherwise if they specified lock values, throw an exception since lock values require wide
            else if (HasLockDetailedStatusValues())
            {
                throw new Exception("To provide lock detailed status text strings, you must also provide a TileWide binding. Either provide a TileWide binding, or leave the detailed status values null.");
            }


            if (TileLarge != null)
            {
                visual.Bindings.Add(TileLarge.ConvertToElement(TileSize.Large));
            }



            // TODO: If a BaseUri wasn't provided, we can potentially optimize the payload size by calculating the best BaseUri



            return(visual);
        }
        internal Element_TileVisual ConvertToElement()
        {
            var visual = new Element_TileVisual()
            {
                Version = Version,
                Language = Language,
                BaseUri = BaseUri,
                Branding = Branding,
                AddImageQuery = AddImageQuery,
                ContentId = ContentId,
                DisplayName = DisplayName
            };

            if (TileSmall != null)
                visual.Bindings.Add(TileSmall.ConvertToElement(TileSize.Small));

            if (TileMedium != null)
                visual.Bindings.Add(TileMedium.ConvertToElement(TileSize.Medium));

            if (TileWide != null)
            {
                Element_TileBinding wideBindingElement = TileWide.ConvertToElement(TileSize.Wide);

                // If lock detailed status was specified, add them
                if (LockDetailedStatus1 != null)
                {
                    // If we can't reuse existing text element, we'll have to use the hints
                    if (!TryReuseTextElementForLockDetailedText(1, LockDetailedStatus1, wideBindingElement))
                        wideBindingElement.LockDetailedStatus1 = LockDetailedStatus1;
                }

                if (LockDetailedStatus2 != null)
                {
                    if (!TryReuseTextElementForLockDetailedText(2, LockDetailedStatus2, wideBindingElement))
                        wideBindingElement.LockDetailedStatus2 = LockDetailedStatus2;
                }

                if (LockDetailedStatus3 != null)
                {
                    if (!TryReuseTextElementForLockDetailedText(3, LockDetailedStatus3, wideBindingElement))
                        wideBindingElement.LockDetailedStatus3 = LockDetailedStatus3;
                }

                visual.Bindings.Add(wideBindingElement);
            }

            // Otherwise if they specified lock values, throw an exception since lock values require wide
            else if (HasLockDetailedStatusValues())
                throw new Exception("To provide lock detailed status text strings, you must also provide a TileWide binding. Either provide a TileWide binding, or leave the detailed status values null.");
                

            if (TileLarge != null)
                visual.Bindings.Add(TileLarge.ConvertToElement(TileSize.Large));




            // TODO: If a BaseUri wasn't provided, we can potentially optimize the payload size by calculating the best BaseUri




            return visual;
        }