|
using System;
using System.Collections.Generic;
using System.ComponentModel;
using MyLastFm.Model;
using Microsoft.Phone.Tasks;
using GalaSoft.MvvmLight.Command;
namespace MyLastFm.ViewModel
{
public class TrackViewModel : RemoteObjectViewModel<Track>
{
public TrackViewModel(Track t)
: base(t)
{
ViewModels.Args.Add("track", t.Name);
ViewModels.Args.Add("artist", t.GetArtistName());
ViewModels.Args.Add("autocorrect", "1");
ViewModels.Add<Tag>(new ItemsSourceViewModel<Track, Tag>("Tags", item => item));
ViewModels.Add<Shout>(new ShoutsViewModel<Track>());
ViewModels.Add<Track>(new ItemsSourceViewModel<Track, Track>("Similar", item => new TrackViewModel(item)));
Commands.Add("love", new RelayCommand(() => Item.Love()));
Commands.Add("ban", new RelayCommand(() => Item.Ban()));
Commands.Add("share", new RelayCommand(Share));
}
private void Share()
{
var task = new EmailAddressChooserTask();
task.Completed += new EventHandler<EmailResult>(task_Completed);
task.Show();
}
void task_Completed(object sender, EmailResult e)
{
if (e.TaskResult == TaskResult.OK)
Item.Share(e.Email);
((EmailAddressChooserTask)sender).Completed -= new EventHandler<EmailResult>(task_Completed);
}
protected override string GetMarketplaceSearchTerms()
{
return base.GetMarketplaceSearchTerms() + " " + ArtistName;
}
public string ArtistName
{
get
{
return Item.GetArtistName();
}
}
public string AlbumName
{
get
{
return Item.GetAlbumName();
}
}
public AppViewModel Similar
{
get
{
return ViewModels.GetViewModel<Track>("Similar", Item.Similar);
}
}
public AppViewModel Tags
{
get
{
return ViewModels.GetViewModel<Tag>("Tags", Item.Tags);
}
}
public AppViewModel Shouts
{
get
{
return ViewModels.GetViewModel<Shout>("Shouts", Item.Shouts);
}
}
protected override void SelectItem()
{
Navigate("/TrackPage.xaml", this);
}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
The first computer program I ever wrote was in BASIC on a TRS-80 Model I and it looked something like:
10 PRINT "Don is cool"
20 GOTO 10
It only went downhill from there.
Hey look, I've got a blog