mirror of
https://github.com/ZuneDev/ZuneShell.dll.git
synced 2026-07-27 13:11:51 -07:00
110 lines
4.2 KiB
C#
110 lines
4.2 KiB
C#
// Decompiled with JetBrains decompiler
|
|
// Type: ZuneUI.EpisodeDownloadCommand
|
|
// 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.Shell;
|
|
using Microsoft.Zune.Subscription;
|
|
using System;
|
|
using System.Collections;
|
|
|
|
namespace ZuneUI
|
|
{
|
|
public class EpisodeDownloadCommand : DownloadCommand
|
|
{
|
|
private DataProviderObject m_episode;
|
|
private EItemDownloadType m_downloadType;
|
|
private bool m_requireSignIn;
|
|
private bool m_explicit;
|
|
|
|
public EpisodeDownloadCommand(IModelItem owner, DataProviderObject episode)
|
|
: base(owner)
|
|
{
|
|
this.m_episode = episode;
|
|
this.m_downloadType = (EItemDownloadType)this.m_episode.GetProperty("DownloadType");
|
|
this.TaskId = (string)this.m_episode.GetProperty("EnclosureUrl");
|
|
}
|
|
|
|
public static void DownloadEpisode(DataProviderObject episode)
|
|
{
|
|
if (episode is SubscriptionDataProviderItem)
|
|
((SubscriptionDataProviderItem)episode).SaveToLibrary();
|
|
DownloadEpisode((int)episode.GetProperty("SeriesId"), (int)episode.GetProperty("LibraryId"));
|
|
}
|
|
|
|
public static void DownloadEpisode(int seriesId, int episodeId)
|
|
{
|
|
try
|
|
{
|
|
SubscriptionManager.Instance.DownloadEpisode(seriesId, episodeId);
|
|
}
|
|
catch (ApplicationException ex)
|
|
{
|
|
}
|
|
}
|
|
|
|
protected override void OnInvoked()
|
|
{
|
|
switch (this.GetDownloadState())
|
|
{
|
|
case EDownloadTaskState.DLTaskPendingAttach:
|
|
case EDownloadTaskState.DLTaskPending:
|
|
case EDownloadTaskState.DLTaskDownloading:
|
|
case EDownloadTaskState.DLTaskPaused:
|
|
ZuneShell.DefaultInstance.Execute("Marketplace\\Downloads\\Home", null);
|
|
break;
|
|
case EDownloadTaskState.DLTaskComplete:
|
|
PodcastLibraryPage.FindInCollection((int)this.m_episode.GetProperty("SeriesId"), (int)this.m_episode.GetProperty("LibraryId"));
|
|
break;
|
|
default:
|
|
if (this.m_requireSignIn && !SignIn.Instance.SignedIn || this.m_explicit && ZuneApplication.Service2.BlockExplicitContent())
|
|
break;
|
|
DownloadEpisode(this.m_episode);
|
|
this.Refresh();
|
|
break;
|
|
}
|
|
}
|
|
|
|
public bool RequireSignIn
|
|
{
|
|
get => this.m_requireSignIn;
|
|
set => this.m_requireSignIn = value;
|
|
}
|
|
|
|
public bool Explicit
|
|
{
|
|
get => this.m_explicit;
|
|
set => this.m_explicit = value;
|
|
}
|
|
|
|
protected override EDownloadTaskState GetDownloadState()
|
|
{
|
|
this.m_downloadType = (EItemDownloadType)this.m_episode.GetProperty("DownloadType");
|
|
switch ((EItemDownloadState)this.m_episode.GetProperty("DownloadState"))
|
|
{
|
|
case EItemDownloadState.eDownloadStateNone:
|
|
return EDownloadTaskState.DLTaskNone;
|
|
case EItemDownloadState.eDownloadStateDownloading:
|
|
return EDownloadTaskState.DLTaskDownloading;
|
|
case EItemDownloadState.eDownloadStateDownloaded:
|
|
return EDownloadTaskState.DLTaskComplete;
|
|
default:
|
|
return EDownloadTaskState.DLTaskNone;
|
|
}
|
|
}
|
|
|
|
protected override string GetDownloadString(EDownloadTaskState downloadState)
|
|
{
|
|
if (downloadState != EDownloadTaskState.DLTaskComplete)
|
|
return base.GetDownloadString(downloadState);
|
|
return this.m_downloadType == EItemDownloadType.eDownloadTypeAutomatic ? Shell.LoadString(StringId.IDS_AUTOMATIC) : Shell.LoadString(StringId.IDS_INCOLLECTION);
|
|
}
|
|
|
|
public static int ConvertDownloadStatusToInt(EItemDownloadState type) => (int)type;
|
|
|
|
public static int ConvertDownloadTypeToInt(EItemDownloadType type) => (int)type;
|
|
}
|
|
}
|