mirror of
https://github.com/ZuneDev/ZuneShell.dll.git
synced 2026-07-27 13:11:51 -07:00
186 lines
7.7 KiB
C#
186 lines
7.7 KiB
C#
// Decompiled with JetBrains decompiler
|
|
// Type: ZuneUI.DownloadProgress
|
|
// 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;
|
|
|
|
namespace ZuneUI
|
|
{
|
|
public class DownloadProgress : ProgressCommand
|
|
{
|
|
private EDownloadTaskState m_downloadState = EDownloadTaskState.DLTaskNone;
|
|
private DownloadTask m_downloadTask;
|
|
|
|
public DownloadProgress(DownloadTask downloadTask)
|
|
: base(downloadTask)
|
|
{
|
|
this.m_downloadTask = downloadTask;
|
|
this.m_downloadState = this.m_downloadTask.GetState();
|
|
this.m_downloadTask.OnProgressChanged += new DownloadProgressHandler(this.OnProgressChanged);
|
|
this.Available = false;
|
|
this.UpdateState(null);
|
|
}
|
|
|
|
protected override void OnDispose(bool disposing)
|
|
{
|
|
base.OnDispose(disposing);
|
|
if (!disposing || this.m_downloadTask == null)
|
|
return;
|
|
this.m_downloadTask.OnProgressChanged -= new DownloadProgressHandler(this.OnProgressChanged);
|
|
this.m_downloadTask = null;
|
|
}
|
|
|
|
protected Microsoft.Zune.Service.EContentType ContentType
|
|
{
|
|
get
|
|
{
|
|
Microsoft.Zune.Service.EContentType econtentType = Microsoft.Zune.Service.EContentType.Unknown;
|
|
string property = this.m_downloadTask.GetProperty("Type");
|
|
if (property == "type:musictrack")
|
|
econtentType = Microsoft.Zune.Service.EContentType.MusicTrack;
|
|
else if (property == "type:musicvideo")
|
|
econtentType = Microsoft.Zune.Service.EContentType.Video;
|
|
else if (property == "type:podcast")
|
|
econtentType = Microsoft.Zune.Service.EContentType.PodcastEpisode;
|
|
else if (property == "type:app")
|
|
econtentType = Microsoft.Zune.Service.EContentType.App;
|
|
return econtentType;
|
|
}
|
|
}
|
|
|
|
protected Guid ServiceId
|
|
{
|
|
get
|
|
{
|
|
Guid guid = Guid.Empty;
|
|
string property = this.m_downloadTask.GetProperty(nameof(ServiceId));
|
|
if (!string.IsNullOrEmpty(property))
|
|
guid = new Guid(property);
|
|
return guid;
|
|
}
|
|
}
|
|
|
|
protected int PodcastEpisodeId => this.m_downloadTask.GetPropertyInt("MediaId");
|
|
|
|
protected int CollectionId
|
|
{
|
|
get
|
|
{
|
|
int dbMediaId;
|
|
if (!Microsoft.Zune.Service.Service.Instance.InCompleteCollection(this.ServiceId, this.ContentType, out dbMediaId, out bool _))
|
|
dbMediaId = -1;
|
|
return dbMediaId;
|
|
}
|
|
}
|
|
|
|
protected Microsoft.Zune.Service.EDownloadFlags DownloadFlags => (Microsoft.Zune.Service.EDownloadFlags)this.m_downloadTask.GetPropertyInt(nameof(DownloadFlags));
|
|
|
|
protected int SubscriptionMediaId => this.m_downloadTask.GetPropertyInt(nameof(SubscriptionMediaId));
|
|
|
|
protected int SubscriptionItemMediaId => this.m_downloadTask.GetPropertyInt(nameof(SubscriptionItemMediaId));
|
|
|
|
protected int PlaylistId => this.m_downloadTask.GetPropertyInt(nameof(PlaylistId));
|
|
|
|
public void FindInCollection()
|
|
{
|
|
Microsoft.Zune.Service.EContentType contentType = this.ContentType;
|
|
if (contentType == Microsoft.Zune.Service.EContentType.PodcastEpisode)
|
|
PodcastLibraryPage.FindInCollection(-1, this.PodcastEpisodeId);
|
|
else if ((this.DownloadFlags & Microsoft.Zune.Service.EDownloadFlags.Channel) != Microsoft.Zune.Service.EDownloadFlags.None)
|
|
{
|
|
if (this.PlaylistId > 0)
|
|
MusicLibraryPage.FindPlaylistInCollection(this.PlaylistId, this.CollectionId, true);
|
|
else
|
|
ChannelLibraryPage.FindInCollection(this.SubscriptionMediaId, this.SubscriptionItemMediaId);
|
|
}
|
|
else
|
|
{
|
|
if (this.CollectionId < 0)
|
|
return;
|
|
switch (contentType)
|
|
{
|
|
case Microsoft.Zune.Service.EContentType.MusicTrack:
|
|
MusicLibraryPage.FindInCollection(-1, -1, this.CollectionId);
|
|
break;
|
|
case Microsoft.Zune.Service.EContentType.Video:
|
|
VideoLibraryPage.FindInCollection(this.CollectionId);
|
|
break;
|
|
case Microsoft.Zune.Service.EContentType.App:
|
|
ApplicationLibraryPage.FindInCollection(this.CollectionId);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
private void OnProgressChanged(DownloadEventArguments args) => Application.DeferredInvoke(new DeferredInvokeHandler(this.UpdateState), args, DeferredInvokePriority.Normal);
|
|
|
|
private void UpdateState(object args)
|
|
{
|
|
this.Progress = -1f;
|
|
float progress;
|
|
if (args != null)
|
|
{
|
|
DownloadEventArguments downloadEventArguments = (DownloadEventArguments)args;
|
|
this.m_downloadState = downloadEventArguments.State;
|
|
progress = downloadEventArguments.Progress;
|
|
}
|
|
else
|
|
{
|
|
this.m_downloadState = this.m_downloadTask.GetState();
|
|
progress = this.m_downloadTask.GetProgress();
|
|
}
|
|
switch (this.m_downloadState)
|
|
{
|
|
case EDownloadTaskState.DLTaskPendingAttach:
|
|
case EDownloadTaskState.DLTaskPending:
|
|
this.Description = Shell.LoadString(StringId.IDS_PENDING);
|
|
this.Available = false;
|
|
break;
|
|
case EDownloadTaskState.DLTaskDownloading:
|
|
this.UpdateProgress(Guid.Empty, progress);
|
|
if (this.SecondsToProgressivePlayback == 0)
|
|
this.Description = Shell.LoadString(StringId.IDS_PLAY_SONG);
|
|
else
|
|
this.Description = string.Format(Shell.LoadString(StringId.IDS_DOWNLOAD_PROGRESS), (int)progress);
|
|
this.Available = true;
|
|
break;
|
|
case EDownloadTaskState.DLTaskPaused:
|
|
this.Description = string.Format(Shell.LoadString(StringId.IDS_DOWNLOAD_PROGRESS), (int)progress);
|
|
this.Progress = progress / 100f;
|
|
this.Available = false;
|
|
break;
|
|
case EDownloadTaskState.DLTaskCancelled:
|
|
this.Description = Shell.LoadString(StringId.IDS_CANCELLED);
|
|
this.Available = false;
|
|
break;
|
|
case EDownloadTaskState.DLTaskFailed:
|
|
this.Description = Shell.LoadString(StringId.IDS_FAILED);
|
|
this.Available = false;
|
|
break;
|
|
case EDownloadTaskState.DLTaskComplete:
|
|
this.Description = Shell.LoadString(StringId.IDS_INCOLLECTION);
|
|
this.Available = true;
|
|
break;
|
|
default:
|
|
this.Description = Shell.LoadString(StringId.IDS_PENDING);
|
|
this.Available = false;
|
|
break;
|
|
}
|
|
}
|
|
|
|
protected override void OnInvoked()
|
|
{
|
|
if (!this.Available)
|
|
return;
|
|
if (this.SecondsToProgressivePlayback == 0)
|
|
this.InvokeProgressivePlayback();
|
|
else
|
|
this.FindInCollection();
|
|
}
|
|
}
|
|
}
|