Files

147 lines
4.7 KiB
C#

// Decompiled with JetBrains decompiler
// Type: ZuneXml.MessageRoot
// 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.Service;
using System;
using ZuneUI;
namespace ZuneXml
{
internal class MessageRoot : XmlDataProviderObject
{
private MessageTypeEnum _messageType = MessageTypeEnum.Invalid;
private EContentType _contentType = EContentType.Unknown;
internal string UserTileUrl => ComposerHelper.GetUserTileUri(this.From);
internal MessageTypeEnum MessageType
{
get => this._messageType;
private set
{
if (this._messageType == value)
return;
this._messageType = value;
this.ContentType = ToContentType(value);
this.FirePropertyChanged(nameof(MessageType));
this.FirePropertyChanged("IsSupported");
}
}
internal EContentType ContentType
{
get => this._contentType;
private set
{
if (this._contentType == value)
return;
this._contentType = value;
this.FirePropertyChanged(nameof(ContentType));
}
}
internal bool IsSupported
{
get
{
if (!this.Wishlist)
return this.MessageType != MessageTypeEnum.Invalid;
return this.MessageType == MessageTypeEnum.Song || this.MessageType == MessageTypeEnum.Album;
}
}
private static EContentType ToContentType(MessageTypeEnum messageType)
{
EContentType econtentType;
switch (messageType)
{
case MessageTypeEnum.Album:
econtentType = EContentType.MusicAlbum;
break;
case MessageTypeEnum.MusicVideo:
case MessageTypeEnum.Video:
case MessageTypeEnum.Movie:
case MessageTypeEnum.MovieTrailer:
econtentType = EContentType.Video;
break;
case MessageTypeEnum.Playlist:
econtentType = EContentType.Playlist;
break;
case MessageTypeEnum.Podcast:
econtentType = EContentType.PodcastSeries;
break;
case MessageTypeEnum.Song:
econtentType = EContentType.MusicTrack;
break;
default:
econtentType = EContentType.Unknown;
break;
}
return econtentType;
}
public override void SetProperty(string propertyName, object value)
{
base.SetProperty(propertyName, value);
switch (propertyName)
{
case "Type":
this.MessageType = SchemaHelper.ToMessageType(value as string);
break;
}
base.SetProperty(propertyName, value);
}
internal static XmlDataProviderObject ConstructMessageRootObject(
DataProviderQuery owner,
object objectTypeCookie)
{
return new MessageRoot(owner, objectTypeCookie);
}
internal MessageRoot(DataProviderQuery owner, object resultTypeCookie)
: base(owner, resultTypeCookie)
{
}
internal string MessagingId => (string)base.GetProperty(nameof(MessagingId));
internal string From => (string)base.GetProperty(nameof(From));
internal string Type => (string)base.GetProperty(nameof(Type));
internal string Subject => (string)base.GetProperty(nameof(Subject));
internal DateTime Received => (DateTime)base.GetProperty(nameof(Received));
internal string DetailsLink => (string)base.GetProperty(nameof(DetailsLink));
internal string Status
{
get => (string)base.GetProperty(nameof(Status));
set => this.SetProperty(nameof(Status), value);
}
internal bool Wishlist => (bool)base.GetProperty(nameof(Wishlist));
internal Guid MediaId => (Guid)base.GetProperty(nameof(MediaId));
public override object GetProperty(string propertyName)
{
switch (propertyName)
{
case "UserTileUrl":
return UserTileUrl;
case "IsSupported":
return IsSupported;
default:
return base.GetProperty(propertyName);
}
}
}
}