Files
ZuneShell.dll/ZuneUI/SelectBillingOfferStep.cs
T

169 lines
6.0 KiB
C#

// Decompiled with JetBrains decompiler
// Type: ZuneUI.SelectBillingOfferStep
// 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.Service;
using System.Collections;
using System.ComponentModel;
namespace ZuneUI
{
public class SelectBillingOfferStep : AccountManagementStep
{
private EBillingOfferType _offerTypes;
private BillingOffer _selectedBillingOffer;
private BillingOfferHelper _helper;
public SelectBillingOfferStep(Wizard owner, AccountManagementWizardState state)
: base(owner, state, false)
{
this._helper = new BillingOfferHelper();
this._helper.PropertyChanged += new PropertyChangedEventHandler(this.HelperPropertyChanged);
this._offerTypes = EBillingOfferType.Unknown;
this.SetDescription();
this.RequireSignIn = true;
this.Initialize(null);
}
protected override void OnDispose(bool disposing)
{
base.OnDispose(disposing);
if (this._helper == null || !disposing)
return;
this._helper.PropertyChanged -= new PropertyChangedEventHandler(this.HelperPropertyChanged);
this._helper.Dispose();
this._helper = null;
}
public override string UI => "res://ZuneShellResources!AccountInfo.uix#SelectBillingOfferStep";
public override bool IsEnabled
{
get
{
bool flag = base.IsEnabled;
if (flag)
flag = this._owner.CurrentPage != this || this.Subscriptions != null && this.SubscriptionsOnly || this.PointsOffers != null && this.PointsOffersOnly;
return flag;
}
}
public bool TrialOnly => this._offerTypes == EBillingOfferType.Trial;
public bool SubscriptionsOnly => this._offerTypes == EBillingOfferType.Subscription || this._offerTypes == EBillingOfferType.Trial || this._offerTypes == EBillingOfferType.Renewal;
public bool PointsOffersOnly => this._offerTypes == EBillingOfferType.Points;
public EBillingOfferType ShowOffers
{
get => this._offerTypes;
set
{
if (this._offerTypes == value)
return;
this._offerTypes = value;
this.SetDescription();
this.FirePropertyChanged(nameof(ShowOffers));
this.FirePropertyChanged("TrialOnly");
this.FirePropertyChanged("SubscriptionsOnly");
this.FirePropertyChanged("PointsOffersOnly");
this.FirePropertyChanged("IsEnabled");
}
}
public BillingOffer TrialOffer
{
get
{
BillingOffer billingOffer = null;
if (this._helper.Subscriptions != null)
{
foreach (BillingOffer subscription in _helper.Subscriptions)
{
if (subscription.Trial)
{
billingOffer = subscription;
break;
}
}
}
return billingOffer;
}
}
public IList Subscriptions => this._helper.Subscriptions;
public IList PointsOffers => this._helper.PointsOffers;
public BillingOffer SelectedBillingOffer
{
get => this._selectedBillingOffer;
set
{
if (this._selectedBillingOffer == value)
return;
this._selectedBillingOffer = value;
this.FirePropertyChanged(nameof(SelectedBillingOffer));
}
}
protected override void OnActivate()
{
base.OnActivate();
if (this.Subscriptions == null && this.SubscriptionsOnly)
{
this._helper.GetSubscriptionOffers();
}
else
{
if (this.PointsOffers != null || !this.PointsOffersOnly)
return;
this._helper.GetPointsOffers();
}
}
private void HelperPropertyChanged(object sender, PropertyChangedEventArgs args)
{
if (this.IsDisposed || this._helper == null)
return;
if (args.PropertyName == "Subscriptions")
{
if (this.TrialOnly)
{
this.SelectedBillingOffer = this.TrialOffer;
if (this.SelectedBillingOffer == null)
this.ShowOffers = EBillingOfferType.Subscription;
}
this.FirePropertyChanged("TrialOffer");
this.FirePropertyChanged("Subscriptions");
this.FirePropertyChanged("IsEnabled");
}
else if (args.PropertyName == "PointsOffers")
{
this.FirePropertyChanged("PointsOffers");
this.FirePropertyChanged("IsEnabled");
}
else
{
if (!(args.PropertyName == "ErrorCode") || !this._helper.ErrorCode.IsError)
return;
this.SetError(this._helper.ErrorCode, null);
}
}
private void SetDescription()
{
if (this._offerTypes == EBillingOfferType.Trial)
this.Description = Shell.LoadString(StringId.IDS_BILLING_TRIAL_TITLE);
else if (this._offerTypes == EBillingOfferType.Subscription)
this.Description = Shell.LoadString(StringId.IDS_BILLING_ZUNE_PASS_HEADER);
else if (this._offerTypes == EBillingOfferType.Points)
this.Description = Shell.LoadString(StringId.IDS_BILLING_PURCHASE_POINTS_HEADER);
else
this.Description = null;
}
}
}