mirror of
https://github.com/ZuneDev/ZuneShell.dll.git
synced 2026-07-27 13:11:51 -07:00
121 lines
4.1 KiB
C#
121 lines
4.1 KiB
C#
// Decompiled with JetBrains decompiler
|
|
// Type: ZuneUI.DeviceExperience
|
|
// 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;
|
|
using System.ComponentModel;
|
|
|
|
namespace ZuneUI
|
|
{
|
|
public class DeviceExperience : CollectionExperience
|
|
{
|
|
private ArrayListDataSet _nodes;
|
|
private Node _status;
|
|
private Node _friends;
|
|
|
|
public DeviceExperience(Frame frameOwner)
|
|
: base(frameOwner, true)
|
|
=> SyncControls.Instance.PropertyChanged += new PropertyChangedEventHandler(this.OnSyncPropertyChanged);
|
|
|
|
protected override void OnDispose(bool disposing)
|
|
{
|
|
SyncControls.Instance.PropertyChanged -= new PropertyChangedEventHandler(this.OnSyncPropertyChanged);
|
|
base.OnDispose(disposing);
|
|
}
|
|
|
|
public override IList NodesList
|
|
{
|
|
get
|
|
{
|
|
if (this._nodes == null)
|
|
{
|
|
this._nodes = new ArrayListDataSet(this);
|
|
this._nodes.Add(Status);
|
|
this._nodes.Add(Music);
|
|
this._nodes.Add(Videos);
|
|
this._nodes.Add(Photos);
|
|
this._nodes.Add(Podcasts);
|
|
this.UpdateDeviceDependentPivots();
|
|
}
|
|
return _nodes;
|
|
}
|
|
}
|
|
|
|
public Node Status
|
|
{
|
|
get
|
|
{
|
|
if (this._status == null)
|
|
this._status = new Node(this, StringId.IDS_SYNC_STATUS_PIVOT, "Device\\Status", SQMDataId.DeviceStatusClicks);
|
|
return this._status;
|
|
}
|
|
}
|
|
|
|
public Node Friends
|
|
{
|
|
get
|
|
{
|
|
if (this._friends == null)
|
|
this._friends = new Node(this, StringId.IDS_FRIENDS_PIVOT, "Device\\Friends", SQMDataId.DeviceFriendsClicks);
|
|
return this._friends;
|
|
}
|
|
}
|
|
|
|
protected override void OnInvoked()
|
|
{
|
|
((MainFrame)this.Frame).ShowDevice(true);
|
|
base.OnInvoked();
|
|
}
|
|
|
|
protected override void OnIsCurrentChanged()
|
|
{
|
|
this.UpdateShowDevice();
|
|
base.OnIsCurrentChanged();
|
|
}
|
|
|
|
public void UpdateShowDevice() => ((MainFrame)this.Frame).ShowDevice(this.IsCurrent || this.AreAnyDevicesConnected());
|
|
|
|
public bool AreAnyDevicesConnected()
|
|
{
|
|
foreach (UIDevice uiDevice in SingletonModelItem<UIDeviceList>.Instance)
|
|
{
|
|
if (uiDevice.IsConnectedToPC)
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
private void OnSyncPropertyChanged(object sender, PropertyChangedEventArgs args)
|
|
{
|
|
if (!(args.PropertyName == "CurrentDevice"))
|
|
return;
|
|
this.UpdateDeviceDependentPivots();
|
|
this.Description = SyncControls.Instance.CurrentDevice.PivotDescription;
|
|
}
|
|
|
|
private void UpdateDeviceDependentPivots()
|
|
{
|
|
UIDevice currentDevice = SyncControls.Instance.CurrentDevice;
|
|
if (this.NodesList.Contains(Applications))
|
|
this.NodesList.Remove(Applications);
|
|
if (this.NodesList.Contains(Friends))
|
|
this.NodesList.Remove(Friends);
|
|
if (this.NodesList.Contains(Channels))
|
|
this.NodesList.Remove(Channels);
|
|
if (FeatureEnablement.IsFeatureEnabled(Features.eSocial) && currentDevice.SupportsUserCards)
|
|
this.NodesList.Add(Friends);
|
|
if (FeatureEnablement.IsFeatureEnabled(Features.eChannels) && currentDevice.SupportsChannels)
|
|
this.NodesList.Add(Channels);
|
|
if (!FeatureEnablement.IsFeatureEnabled(Features.eGames) || !currentDevice.SupportsSyncApplications)
|
|
return;
|
|
this.NodesList.Add(Applications);
|
|
}
|
|
|
|
public override string DefaultUIPath => "Device\\Status";
|
|
}
|
|
}
|