Files
ZuneShell.dll/ZuneShell/ZuneUI/ProfileInterests.cs
T

135 lines
4.1 KiB
C#

// Decompiled with JetBrains decompiler
// Type: ZuneUI.ProfileInterests
// 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 System;
using System.Collections;
using ZuneXml;
namespace ZuneUI
{
public class ProfileInterests : NotifyPropertyChangedImpl
{
private const int c_maxIterests = 4;
private IList _recentPlays;
private IList _favorites;
private IList _topArtists;
private ArrayList _topAlbums;
public ProfileInterests() => this._topAlbums = new ArrayList(4);
public IList RecentPlays
{
get => this._recentPlays;
set
{
if (this._recentPlays == value)
return;
if (this._recentPlays == null)
{
this._recentPlays = value;
this.AddNewTopAlbums(ProfileCategories.RecentlyPlayed, value);
}
else
{
this._recentPlays = value;
this.RecreateTopAlbums();
}
this.FirePropertyChanged(nameof(RecentPlays));
}
}
public IList Favorites
{
get => this._favorites;
set
{
if (this._favorites == value)
return;
if (this._favorites == null)
{
this._favorites = value;
this.AddNewTopAlbums(ProfileCategories.Favorites, value);
}
else
{
this._favorites = value;
this.RecreateTopAlbums();
}
this.FirePropertyChanged(nameof(Favorites));
}
}
public IList TopArtists
{
get => this._topArtists;
set
{
if (this._topArtists == value)
return;
if (this._topArtists == null)
{
this._topArtists = value;
this.AddNewTopAlbums(ProfileCategories.TopArtists, value);
}
else
{
this._topArtists = value;
this.RecreateTopAlbums();
}
this.FirePropertyChanged(nameof(TopArtists));
}
}
public bool TopAlbumsFull => this._topAlbums.Count >= 4;
public IList TopAlbums => _topAlbums;
private void AddNewTopAlbums(Category category, IList newInterests)
{
if (newInterests == null)
return;
foreach (object newInterest in newInterests)
{
if (this.TopAlbumsFull)
{
this.FirePropertyChanged("TopAlbumsFull");
break;
}
Track track = newInterest as Track;
if (this.CanAddTrack(track))
{
this._topAlbums.Add(new ProfileTrack(category, track));
this.FirePropertyChanged("TopAlbums");
}
}
}
private bool CanAddTrack(Track track)
{
if (track == null || string.IsNullOrEmpty(track.AlbumTitle))
return false;
Guid albumId = track.AlbumId;
if (Guid.Empty == albumId)
return false;
foreach (ProfileTrack topAlbum in this._topAlbums)
{
if (((Track)topAlbum.Track).AlbumId == albumId)
return false;
}
return true;
}
private void RecreateTopAlbums()
{
this._topAlbums.Clear();
this.AddNewTopAlbums(ProfileCategories.RecentlyPlayed, this._recentPlays);
this.AddNewTopAlbums(ProfileCategories.Favorites, this._favorites);
this.AddNewTopAlbums(ProfileCategories.TopArtists, this._topArtists);
}
}
}