// Decompiled with JetBrains decompiler // Type: ZuneUI.MarketplaceTrackActionCommand // 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.Zune.Util; using System; using ZuneXml; namespace ZuneUI { public class MarketplaceTrackActionCommand : MarketplaceActionCommand { public MarketplaceTrackActionCommand() => SignIn.Instance.SignInStatusUpdatedEvent += new EventHandler(this.OnSignInEvent); internal Track TrackModel => this.Model as Track; public override void UpdateState() { base.UpdateState(); if (this.TrackModel == null || this.CanFindInCollection || this.CanFindInHiddenCollection) return; if (!this.Downloading) { if (this.TrackModel.CanPurchaseFree) { this.Description = Shell.LoadString(StringId.IDS_FREE); this.Available = true; } else if (this.TrackModel.CanDownload) { this.Description = Shell.LoadString(StringId.IDS_DOWNLOAD); this.Available = !this.DownloadingHidden; } else if (this.TrackModel.CanPurchaseSubscriptionFree) { this.Description = Shell.LoadString(StringId.IDS_PURCHASE_BUTTON); this.Available = true; } else if (this.TrackModel.CanPurchaseAlbumOnly) { this.Description = Shell.LoadString(StringId.IDS_ALBUM_ONLY); this.Available = false; } else if (this.TrackModel.CanPurchase) { this.Description = string.Format(Shell.LoadString(StringId.IDS_BUY), TrackModel.PointsPrice); this.Available = true; this.HasPoints = this.TrackModel.HasPoints; } else if (this.TrackModel.CanSubscriptionPlay) { this.Description = Shell.LoadString(StringId.IDS_PLAY_SONG); this.Available = true; } else if (this.TrackModel.CanPreview) { this.Description = Shell.LoadString(StringId.IDS_PREVIEW_SONG); this.Available = true; } else if (this.CanFindInZuneDotNet && !FeatureEnablement.IsFeatureEnabled(Features.eMusic)) { this.Description = Shell.LoadString(StringId.IDS_MORE_INFO); this.Available = true; } } if (this.TrackModel.CanPurchase || !(Download.Instance.GetErrorCode(this.Id) == HRESULT._NS_E_MEDIA_NOT_PURCHASED)) return; Download.Instance.SetErrorCode(this.Id, HRESULT._S_OK.Int); } public override void FindInCollection() { if (!this.CanFindInCollection) return; MusicLibraryPage.FindInCollection(-1, -1, this.CollectionId); } protected override Microsoft.Zune.Service.EContentType ContentType => Microsoft.Zune.Service.EContentType.MusicTrack; protected override void OnDispose(bool fDisposing) { base.OnDispose(fDisposing); if (!fDisposing) return; SignIn.Instance.SignInStatusUpdatedEvent -= new EventHandler(this.OnSignInEvent); } private void OnSignInEvent(object sender, EventArgs args) => this.UpdateState(); } }