mirror of
https://github.com/ZuneDev/ZuneShell.dll.git
synced 2026-07-27 13:11:51 -07:00
286 lines
10 KiB
C#
286 lines
10 KiB
C#
// Decompiled with JetBrains decompiler
|
|
// Type: ZuneUI.AccountManagementStep
|
|
// 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.ErrorMapperApi;
|
|
using Microsoft.Zune.Service;
|
|
using System.Collections.Generic;
|
|
using System.Threading;
|
|
|
|
namespace ZuneUI
|
|
{
|
|
public abstract class AccountManagementStep : WizardPropertyEditorPage
|
|
{
|
|
private AccountManagementWizardState _state;
|
|
private bool _parentAccount;
|
|
private bool _serviceActivationRequestsDone;
|
|
private bool _serviceDeactivationRequestsDone;
|
|
private bool _serviceRequestsWorking;
|
|
private bool _requireSignIn;
|
|
private string _nextTextOverride;
|
|
private string _finishTextOverride;
|
|
|
|
public AccountManagementStep(
|
|
Wizard owner,
|
|
AccountManagementWizardState state,
|
|
bool parentAccount)
|
|
: base(owner)
|
|
{
|
|
this._parentAccount = parentAccount;
|
|
this._state = state;
|
|
this._serviceActivationRequestsDone = true;
|
|
this._serviceDeactivationRequestsDone = true;
|
|
this._serviceRequestsWorking = false;
|
|
this.EnableVerticalScrolling = true;
|
|
}
|
|
|
|
public override bool IsEnabled => (!this.RequireSignIn || SignIn.Instance.SignedIn) && (this._owner.CurrentPage != this || !this.ServiceRequestWorking);
|
|
|
|
protected bool RequireSignIn
|
|
{
|
|
get => this._requireSignIn;
|
|
set
|
|
{
|
|
if (this._requireSignIn == value)
|
|
return;
|
|
this._requireSignIn = value;
|
|
this.FirePropertyChanged(nameof(RequireSignIn));
|
|
this.FirePropertyChanged("IsEnabled");
|
|
}
|
|
}
|
|
|
|
public AccountManagementWizardState State => this._state;
|
|
|
|
public string NextTextOverride
|
|
{
|
|
get => this._nextTextOverride;
|
|
set
|
|
{
|
|
if (!(this._nextTextOverride != value))
|
|
return;
|
|
this._nextTextOverride = value;
|
|
this.FirePropertyChanged(nameof(NextTextOverride));
|
|
}
|
|
}
|
|
|
|
public string FinishTextOverride
|
|
{
|
|
get => this._finishTextOverride;
|
|
set
|
|
{
|
|
if (!(this._finishTextOverride != value))
|
|
return;
|
|
this._finishTextOverride = value;
|
|
this.FirePropertyChanged(nameof(FinishTextOverride));
|
|
}
|
|
}
|
|
|
|
public bool ServiceActivationRequestsDone
|
|
{
|
|
get => this._serviceActivationRequestsDone;
|
|
protected set
|
|
{
|
|
if (this._serviceActivationRequestsDone == value)
|
|
return;
|
|
this._serviceActivationRequestsDone = value;
|
|
this.FirePropertyChanged("ServiceDeactivationRequestsDone");
|
|
}
|
|
}
|
|
|
|
public bool ServiceDeactivationRequestsDone
|
|
{
|
|
get => this._serviceDeactivationRequestsDone;
|
|
protected set
|
|
{
|
|
if (this._serviceDeactivationRequestsDone == value)
|
|
return;
|
|
this._serviceDeactivationRequestsDone = value;
|
|
this.FirePropertyChanged(nameof(ServiceDeactivationRequestsDone));
|
|
}
|
|
}
|
|
|
|
public bool ServiceRequestWorking
|
|
{
|
|
get => this._serviceRequestsWorking;
|
|
private set
|
|
{
|
|
if (this._serviceRequestsWorking == value)
|
|
return;
|
|
this._serviceRequestsWorking = value;
|
|
this.FirePropertyChanged(nameof(ServiceRequestWorking));
|
|
if (this._owner.CurrentPage != this)
|
|
return;
|
|
this.FirePropertyChanged("IsEnabled");
|
|
}
|
|
}
|
|
|
|
public bool ParentAccount => this._parentAccount;
|
|
|
|
internal virtual Dictionary<int, PropertyDescriptor> ErrorPropertyMappings => (Dictionary<int, PropertyDescriptor>)null;
|
|
|
|
internal virtual ErrorMapperResult GetMappedErrorDescriptionAndUrl(HRESULT hr) => ErrorMapperApi.GetMappedErrorDescriptionAndUrl(hr.Int, eErrorCondition.eEC_None);
|
|
|
|
internal void SetError(HRESULT hr, ServiceError serviceError) => this._owner.SetError(hr, new AccountManagementErrorState(this.ParentAccount, serviceError));
|
|
|
|
internal bool HandleError()
|
|
{
|
|
HRESULT error = this._owner.Error;
|
|
AccountManagementErrorState errorState = null;
|
|
if (this._owner is AccountManagementWizard)
|
|
errorState = ((AccountManagementWizard)this._owner).LastErrorState;
|
|
bool flag = error.IsSuccess && errorState == null;
|
|
if (!flag)
|
|
{
|
|
flag = this.HandleError(error, errorState);
|
|
if (flag)
|
|
this._owner.ResetError();
|
|
}
|
|
return flag;
|
|
}
|
|
|
|
internal virtual bool HandleError(HRESULT hr, AccountManagementErrorState errorState)
|
|
{
|
|
bool flag1 = hr.IsSuccess && errorState == null;
|
|
bool flag2 = (errorState == null || errorState.ParentAccount == this.ParentAccount) && this.IsEnabled;
|
|
if (!flag1 && flag2)
|
|
{
|
|
if (this.SetExternalPropertyError(hr, null))
|
|
flag1 = true;
|
|
if (errorState != null && errorState.ServiceError != null)
|
|
{
|
|
if (this.SetExternalPropertyError(errorState.ServiceError.RootError, null))
|
|
flag1 = true;
|
|
if (errorState.ServiceError.PropertyErrors != null)
|
|
{
|
|
foreach (PropertyError propertyError in errorState.ServiceError.PropertyErrors)
|
|
{
|
|
if (this.SetExternalPropertyError(propertyError.Hr, propertyError.Name))
|
|
flag1 = true;
|
|
}
|
|
}
|
|
}
|
|
if (flag1)
|
|
{
|
|
this.ShowGenericErrorStatus();
|
|
this.ShowValidation();
|
|
}
|
|
}
|
|
return flag1;
|
|
}
|
|
|
|
internal bool NavigateToErrorHandler()
|
|
{
|
|
bool flag = false;
|
|
if (this._owner is AccountManagementWizard)
|
|
{
|
|
((AccountManagementWizard)this._owner).NavigateToErrorHandler();
|
|
flag = true;
|
|
}
|
|
return flag;
|
|
}
|
|
|
|
internal override sealed void Activate()
|
|
{
|
|
base.Activate();
|
|
if (!this.HandleError() && this.NavigateToErrorHandler())
|
|
return;
|
|
this.OnActivate();
|
|
}
|
|
|
|
internal override bool OnMovingNext()
|
|
{
|
|
if (this.ServiceDeactivationRequestsDone)
|
|
{
|
|
this.StatusMessage = null;
|
|
return base.OnMovingNext();
|
|
}
|
|
this.StartDeactivationRequests(null);
|
|
return false;
|
|
}
|
|
|
|
protected bool SetExternalPropertyError(HRESULT hr, string propertyName)
|
|
{
|
|
string str = null;
|
|
bool flag = false;
|
|
if (hr.IsError && this.ErrorPropertyMappings != null)
|
|
{
|
|
ErrorMapperResult descriptionAndUrl = this.GetMappedErrorDescriptionAndUrl(hr);
|
|
if (descriptionAndUrl != null && this.ErrorPropertyMappings.ContainsKey(descriptionAndUrl.Hr))
|
|
{
|
|
flag = true;
|
|
PropertyDescriptor errorPropertyMapping = this.ErrorPropertyMappings[descriptionAndUrl.Hr];
|
|
if (errorPropertyMapping == null || !this.SetExternalError(errorPropertyMapping, new HRESULT(descriptionAndUrl.Hr)))
|
|
str = descriptionAndUrl.Description;
|
|
}
|
|
else if (!string.IsNullOrEmpty(propertyName) && descriptionAndUrl != null)
|
|
flag = this.SetExternalError(propertyName, new HRESULT(descriptionAndUrl.Hr));
|
|
}
|
|
if (flag)
|
|
this.StatusMessage = str;
|
|
return flag;
|
|
}
|
|
|
|
protected virtual void OnActivate()
|
|
{
|
|
if (this.ServiceActivationRequestsDone)
|
|
return;
|
|
this.StartActivationRequests(null);
|
|
}
|
|
|
|
protected void StartActivationRequests(object state)
|
|
{
|
|
if (this.ServiceRequestWorking)
|
|
return;
|
|
this.ServiceRequestWorking = true;
|
|
ThreadPool.QueueUserWorkItem(new WaitCallback(this.AsyncStartActivationRequests), state);
|
|
}
|
|
|
|
private void AsyncStartActivationRequests(object state) => this.OnStartActivationRequests(state);
|
|
|
|
protected virtual void OnStartActivationRequests(object state) => this.EndActivationRequests(null);
|
|
|
|
protected void EndActivationRequests(object args) => Application.DeferredInvoke(new DeferredInvokeHandler(this.DeferredEndActivationRequests), args);
|
|
|
|
private void DeferredEndActivationRequests(object args)
|
|
{
|
|
this.OnEndActivationRequests(args);
|
|
this.ServiceActivationRequestsDone = true;
|
|
this.ServiceRequestWorking = false;
|
|
}
|
|
|
|
protected virtual void OnEndActivationRequests(object args)
|
|
{
|
|
}
|
|
|
|
protected void StartDeactivationRequests(object state)
|
|
{
|
|
if (this.ServiceRequestWorking)
|
|
return;
|
|
this.StatusMessage = null;
|
|
this.ServiceRequestWorking = true;
|
|
ThreadPool.QueueUserWorkItem(new WaitCallback(this.AsyncStartDeactivationRequests), state);
|
|
}
|
|
|
|
private void AsyncStartDeactivationRequests(object state) => this.OnStartDeactivationRequests(state);
|
|
|
|
protected virtual void OnStartDeactivationRequests(object state) => this.EndDeactivationRequests(null);
|
|
|
|
protected void EndDeactivationRequests(object args) => Application.DeferredInvoke(new DeferredInvokeHandler(this.DerferredEndDeactivationRequests), args);
|
|
|
|
private void DerferredEndDeactivationRequests(object args)
|
|
{
|
|
this.ServiceDeactivationRequestsDone = true;
|
|
this.ServiceRequestWorking = false;
|
|
this.OnEndDeactivationRequests(args);
|
|
this._owner.MoveNext();
|
|
}
|
|
|
|
protected virtual void OnEndDeactivationRequests(object args)
|
|
{
|
|
}
|
|
}
|
|
}
|