mirror of
https://github.com/ZuneDev/ZuneShell.dll.git
synced 2026-07-27 13:11:51 -07:00
135 lines
4.1 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|