mirror of
https://github.com/ZuneDev/ZuneShell.dll.git
synced 2026-07-27 13:11:51 -07:00
197 lines
7.1 KiB
C#
197 lines
7.1 KiB
C#
// Decompiled with JetBrains decompiler
|
|
// Type: ZuneUI.EmailSelectionStep
|
|
// 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.ErrorMapperApi;
|
|
using Microsoft.Zune.Service;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
|
|
namespace ZuneUI
|
|
{
|
|
public class EmailSelectionStep : AccountManagementStep
|
|
{
|
|
private bool _hasEmail;
|
|
private bool _isEmailPassportId;
|
|
private bool _pageLocked;
|
|
private bool _skipOnce;
|
|
private Dictionary<int, PropertyDescriptor> _errorMappings;
|
|
|
|
public EmailSelectionStep(Wizard owner, AccountManagementWizardState state, bool parentAccount)
|
|
: base(owner, state, parentAccount)
|
|
{
|
|
if (parentAccount)
|
|
this.Description = Shell.LoadString(StringId.IDS_ACCOUNT_CREATION_PARENTAL_INPUT_HEAD);
|
|
else
|
|
this.Description = Shell.LoadString(StringId.IDS_ACCOUNT_CREATION_EMAIL_STEP);
|
|
this.Initialize(new EmailSelectionPropertyEditor());
|
|
}
|
|
|
|
public override string UI => "res://ZuneShellResources!CreatePassport.uix#EmailSelectionStep";
|
|
|
|
public bool HasEmail
|
|
{
|
|
get => this._hasEmail;
|
|
set
|
|
{
|
|
if (this._hasEmail == value)
|
|
return;
|
|
this._hasEmail = value;
|
|
this.FirePropertyChanged(nameof(HasEmail));
|
|
this.FirePropertyChanged("NeedsPassportId");
|
|
}
|
|
}
|
|
|
|
public string Email
|
|
{
|
|
get => this.GetUncommittedValue(EmailSelectionPropertyEditor.Email) as string;
|
|
internal set
|
|
{
|
|
this.SetCommittedValue(EmailSelectionPropertyEditor.Email, value);
|
|
this.FirePropertyChanged(nameof(Email));
|
|
}
|
|
}
|
|
|
|
private bool CheckedEmail => this.ServiceDeactivationRequestsDone;
|
|
|
|
internal bool PageLocked
|
|
{
|
|
get => this._pageLocked;
|
|
set
|
|
{
|
|
if (this._pageLocked == value)
|
|
return;
|
|
this._pageLocked = value;
|
|
this.FirePropertyChanged(nameof(PageLocked));
|
|
}
|
|
}
|
|
|
|
internal bool SkipOnce
|
|
{
|
|
get => this._skipOnce;
|
|
set
|
|
{
|
|
if (this._skipOnce == value)
|
|
return;
|
|
this._skipOnce = value;
|
|
this.FirePropertyChanged(nameof(SkipOnce));
|
|
}
|
|
}
|
|
|
|
public bool IsEmailPassportId
|
|
{
|
|
get => this._isEmailPassportId;
|
|
private set
|
|
{
|
|
if (this._isEmailPassportId == value)
|
|
return;
|
|
this._isEmailPassportId = value;
|
|
this.FirePropertyChanged(nameof(IsEmailPassportId));
|
|
this.FirePropertyChanged("NeedsPassportId");
|
|
}
|
|
}
|
|
|
|
public bool NeedsPassportId => !this.HasEmail || !this.IsEmailPassportId;
|
|
|
|
public override bool IsValid
|
|
{
|
|
get
|
|
{
|
|
MetadataEditProperty property = this.WizardPropertyEditor.GetProperty(EmailSelectionPropertyEditor.Email);
|
|
HRESULT hresult = HRESULT._S_OK;
|
|
if (this.HasEmail)
|
|
{
|
|
string email = this.Email;
|
|
if (this.HasEmail && this.ParentAccount && (email.Equals(this.State.EmailSelectionStep.Email, StringComparison.InvariantCultureIgnoreCase) || email.Equals(this.State.CreatePassportStep.Email, StringComparison.InvariantCultureIgnoreCase)))
|
|
hresult = HRESULT._ZUNE_E_SIGNUP_INVALID_PARENT_EMAIL;
|
|
}
|
|
if (hresult.IsError || property.ExternalError == HRESULT._ZUNE_E_SIGNUP_INVALID_PARENT_EMAIL)
|
|
property.ExternalError = hresult;
|
|
return !this.HasEmail || base.IsValid;
|
|
}
|
|
}
|
|
|
|
public override bool IsEnabled
|
|
{
|
|
get
|
|
{
|
|
bool flag = base.IsEnabled && !this.CreatePassportStep.CreatedPassport;
|
|
if (flag)
|
|
flag = !this.ParentAccount || this.State.BasicAccountInfoStep.IsParentAccountNeeded;
|
|
if (flag)
|
|
flag = !this.CheckedEmail || !this.PageLocked;
|
|
return flag;
|
|
}
|
|
}
|
|
|
|
internal override Dictionary<int, PropertyDescriptor> ErrorPropertyMappings
|
|
{
|
|
get
|
|
{
|
|
if (this._errorMappings == null)
|
|
{
|
|
this._errorMappings = new Dictionary<int, PropertyDescriptor>(1);
|
|
this._errorMappings.Add(HRESULT._ZUNE_E_WINLIVE_UNAUTHORIZED_DOMAIN.Int, EmailSelectionPropertyEditor.Email);
|
|
}
|
|
return this._errorMappings;
|
|
}
|
|
}
|
|
|
|
internal override ErrorMapperResult GetMappedErrorDescriptionAndUrl(HRESULT hr) => ErrorMapperApi.GetMappedErrorDescriptionAndUrl(hr.Int, eErrorCondition.eEC_WinLive);
|
|
|
|
private CreatePassportStep CreatePassportStep => !this.ParentAccount ? this.State.CreatePassportStep : this.State.CreatePassportParentStep;
|
|
|
|
protected override void OnActivate()
|
|
{
|
|
if (this.SkipOnce || this.PageLocked)
|
|
{
|
|
this.SkipOnce = false;
|
|
this._owner.MoveNext();
|
|
}
|
|
else
|
|
{
|
|
this.ServiceDeactivationRequestsDone = false;
|
|
if (string.IsNullOrEmpty(this.Email) && !this.ParentAccount)
|
|
{
|
|
UIDevice appDevice = ApplicationMarketplaceHelper.FindAppDevice();
|
|
if (appDevice != UIDeviceList.NullDevice)
|
|
{
|
|
this.Email = appDevice.LiveId;
|
|
this.HasEmail = !string.IsNullOrEmpty(this.Email);
|
|
}
|
|
}
|
|
base.OnActivate();
|
|
}
|
|
}
|
|
|
|
internal override bool OnMovingNext()
|
|
{
|
|
if (!this.HasEmail)
|
|
this.ServiceDeactivationRequestsDone = true;
|
|
if (this.ServiceDeactivationRequestsDone)
|
|
return base.OnMovingNext();
|
|
this.StartDeactivationRequests(Email);
|
|
return false;
|
|
}
|
|
|
|
protected override void OnStartDeactivationRequests(object state) => this.EndDeactivationRequests(this.ValidatePassportId(state as string));
|
|
|
|
protected override void OnEndDeactivationRequests(object args) => this.IsEmailPassportId = (bool)args;
|
|
|
|
private bool ValidatePassportId(string email)
|
|
{
|
|
bool flag = false;
|
|
ServiceError serviceError = null;
|
|
WinLiveAvailableInformation information;
|
|
HRESULT hr = this.State.WinLiveSignup.CheckAvailableSigninName(email, false, null, null, out information, out serviceError);
|
|
if (hr.IsError)
|
|
this.SetError(hr, serviceError);
|
|
else
|
|
flag = !information.Available;
|
|
return flag;
|
|
}
|
|
}
|
|
}
|