// Decompiled with JetBrains decompiler
// Type: ZuneUI.MarketplaceExperience
// Assembly: ZuneShell, Version=4.7.0.0, Culture=neutral, PublicKeyToken=ddd0da4d3e678217
// MVID: FC8028F3-A47B-4FB4-B35B-11D1752D8264
// Assembly location: C:\Program Files\Zune\ZuneShell.dll

using Microsoft.Iris;
using Microsoft.Zune.Util;
using System.Collections;

namespace ZuneUI
{
    public class MarketplaceExperience : Experience
    {
        private ArrayListDataSet _nodes;
        private Node _recommendations;
        private Node _music;
        private Node _videos;
        private Node _podcasts;
        private Node _apps;
        private Node _channels;
        private Node _cart;
        private Node _downloads;
        private int _cartItemsCount;
        private bool _cartItemsCountInitialized;

        public MarketplaceExperience(Frame frameOwner)
          : base(frameOwner, StringId.IDS_MARKETPLACE_PIVOT, SQMDataId.MarketplaceClicks)
        {
        }

        public override IList NodesList
        {
            get
            {
                if (this._nodes == null)
                {
                    this._nodes = new ArrayListDataSet(this);
                    if (FeatureEnablement.IsFeatureEnabled(Features.ePicks))
                        this._nodes.Add(Recommendations);
                    if (FeatureEnablement.IsFeatureEnabled(Features.eMusic))
                        this._nodes.Add(Music);
                    if (FeatureEnablement.IsFeatureEnabled(Features.eVideos))
                        this._nodes.Add(Videos);
                    if (FeatureEnablement.IsFeatureEnabled(Features.ePodcasts))
                        this._nodes.Add(Podcasts);
                    if (FeatureEnablement.IsFeatureEnabled(Features.eChannels))
                        this._nodes.Add(Channels);
                    if (FeatureEnablement.IsFeatureEnabled(Features.eGames) || FeatureEnablement.IsFeatureEnabled(Features.eApps))
                        this._nodes.Add(Apps);
                }
                return _nodes;
            }
        }

        protected override void OnIsCurrentChanged()
        {
            base.OnIsCurrentChanged();
            if (!this.IsCurrent)
                return;
            CultureHelper.CheckMarketplaceCulture();
        }

        public Node Recommendations
        {
            get
            {
                if (this._recommendations == null)
                    this._recommendations = new Node(this, StringId.IDS_RECOMMENDATIONS_PIVOT, "Marketplace\\Recommendations\\Home", SQMDataId.MarketplaceRecommendationsClicks);
                return this._recommendations;
            }
        }

        public Node Music
        {
            get
            {
                if (this._music == null)
                    this._music = new Node(this, StringId.IDS_MUSIC_PIVOT, "Marketplace\\Music\\Home", SQMDataId.MarketplaceMusicClicks);
                return this._music;
            }
        }

        public Node Videos
        {
            get
            {
                if (this._videos == null)
                    this._videos = new Node(this, StringId.IDS_VIDEO_PIVOT, "Marketplace\\Videos\\Home", SQMDataId.MarketplaceVideosClicks);
                return this._videos;
            }
        }

        public Node Podcasts
        {
            get
            {
                if (this._podcasts == null)
                    this._podcasts = new Node(this, StringId.IDS_PODCASTS_PIVOT, "Marketplace\\Podcasts\\Home", SQMDataId.MarketplacePodcastsClicks);
                return this._podcasts;
            }
        }

        public Node Apps
        {
            get
            {
                if (this._apps == null)
                    this._apps = new Node(this, StringId.IDS_APPS_PIVOT, "Marketplace\\Apps\\Home", SQMDataId.Invalid);
                return this._apps;
            }
        }

        public Node Channels
        {
            get
            {
                if (this._channels == null)
                    this._channels = new Node(this, StringId.IDS_CHANNELS_PIVOT, "Marketplace\\Channels\\Home", SQMDataId.MarketplaceChannelsClicks);
                return this._channels;
            }
        }

        public Node Cart
        {
            get
            {
                if (this._cart == null)
                    this._cart = new Node(this, StringId.IDS_CART_PIVOT, "Marketplace\\Cart", SQMDataId.MarketplaceCartClicks);
                return this._cart;
            }
        }

        public Node Downloads
        {
            get
            {
                if (this._downloads == null)
                    this._downloads = new Node(this, StringId.IDS_DOWNLOADS_PIVOT, "Marketplace\\Downloads\\Home", SQMDataId.MarketplaceDownloadsClicks);
                return this._downloads;
            }
        }

        public int CartItemsCount
        {
            get => this._cartItemsCount;
            set
            {
                if (this._cartItemsCount == value)
                    return;
                this._cartItemsCount = value;
                this.FirePropertyChanged(nameof(CartItemsCount));
                Shell.MainFrame.Marketplace.UpdatePivots();
            }
        }

        public bool CartItemsCountInitialized
        {
            get => this._cartItemsCountInitialized;
            set
            {
                if (this._cartItemsCountInitialized == value)
                    return;
                this._cartItemsCountInitialized = value;
                this.FirePropertyChanged(nameof(CartItemsCountInitialized));
            }
        }

        public void UpdatePivots() => this.ShowCart(FeatureEnablement.IsFeatureEnabled(Features.eMusic) && this.CartItemsCount > 0);

        public void UpdateDownloadPivot(bool show)
        {
            int nodeIndex = this.GetNodeIndex(this.Downloads);
            bool flag = nodeIndex != -1;
            if (show == flag)
                return;
            this.Downloads.Available = show;
            if (show)
                this.NodesList.Add(Downloads);
            else
                this.NodesList.RemoveAt(nodeIndex);
        }

        private void ShowCart(bool show)
        {
            int nodeIndex = this.GetNodeIndex(this.Cart);
            bool flag = nodeIndex != -1;
            if (show == flag)
                return;
            this.Cart.Available = show;
            if (show)
            {
                int index = this.GetNodeIndex(this.Downloads);
                if (index == -1)
                    index = this.NodesList.Count;
                this.NodesList.Insert(index, Cart);
            }
            else
                this.NodesList.RemoveAt(nodeIndex);
        }

        protected override void OnInvoked()
        {
            if (!this.IsCurrent && (Node)this.Nodes.ChosenValue == this._recommendations && !SignIn.Instance.SignedIn)
                this.Nodes.ChosenIndex = 1;
            base.OnInvoked();
        }

        public override string DefaultUIPath
        {
            get
            {
                if (FeatureEnablement.IsFeatureEnabled(Features.eMusic))
                    return "Marketplace\\Music\\Home";
                if (FeatureEnablement.IsFeatureEnabled(Features.eVideos))
                    return "Marketplace\\Videos\\Home";
                return FeatureEnablement.IsFeatureEnabled(Features.eApps) ? "Marketplace\\Apps\\Home" : "Marketplace\\Default";
            }
        }
    }
}
