public MainViewModel(IWindowManager manager, SearchViewModel search, AboutViewModel about, SettingsViewModel settings, DownloadViewModel download) { Manager = manager; VMSearch = search; VMAbout = about; VMSettings = settings; VMDownload = download; VMSearch.MainView = this; VMSettings.MainView = this; VMSettings.ChangeTheme(int.Parse(Config.ThemeIndex())); }
public TaskViewModel(object data, DownloadViewModel parent) { VMParent = parent; if (data.GetType() == typeof(Album)) { Album album = (Album)data; Title = album.Title; BasePath = TidalTool.getAlbumFolder(Config.OutputDir(), album, Config.AddYear()); Desc = string.Format("by {0}-{1} Tracks-{2} Videos-{3}", album.Artist.Name, TimeHelper.ConverIntToString(album.Duration), album.NumberOfTracks, album.NumberOfVideos); Cover = AIGS.Common.Convert.ConverByteArrayToBitmapImage(album.CoverData); if (Config.SaveCovers()) { string CoverPath = TidalTool.getAlbumCoverPath(Config.OutputDir(), album, Config.AddYear()); FileHelper.Write(album.CoverData, true, CoverPath); } for (int i = 0; album.Tracks != null && i < album.Tracks.Count; i++) { if (album.Tracks[i].WaitDownload) { ItemList.Add(new TrackTask(album.Tracks[i], ItemList.Count + 1, RecieveDownloadOver, album)); } } for (int i = 0; album.Videos != null && i < album.Videos.Count; i++) { if (album.Videos[i].WaitDownload) { ItemList.Add(new VideoTask(album.Videos[i], ItemList.Count + 1, RecieveDownloadOver, album)); } } } else if (data.GetType() == typeof(Video)) { Video video = (Video)data; Title = video.Title; BasePath = TidalTool.getVideoFolder(Config.OutputDir()); Desc = string.Format("by {0}-{1}", video.Artist.Name, TimeHelper.ConverIntToString(video.Duration)); Cover = AIGS.Common.Convert.ConverByteArrayToBitmapImage(video.CoverData); if (video.WaitDownload) { ItemList.Add(new VideoTask(video, 1, RecieveDownloadOver)); } } else if (data.GetType() == typeof(Artist)) { Artist artist = (Artist)data; Title = artist.Name; BasePath = TidalTool.getArtistFolder(Config.OutputDir(), artist); Desc = string.Format("by {0} Albums-{1}", artist.Name, artist.Albums.Count); Cover = AIGS.Common.Convert.ConverByteArrayToBitmapImage(artist.CoverData); foreach (var item in artist.Albums) { if (!item.WaitDownload) { continue; } for (int i = 0; item.Tracks != null && i < item.Tracks.Count; i++) { ItemList.Add(new TrackTask(item.Tracks[i], ItemList.Count + 1, RecieveDownloadOver, item)); } for (int i = 0; item.Videos != null && i < item.Videos.Count; i++) { ItemList.Add(new VideoTask(item.Videos[i], ItemList.Count + 1, RecieveDownloadOver, item)); } } } else if (data.GetType() == typeof(Playlist)) { Playlist plist = (Playlist)data; Title = plist.Title; BasePath = TidalTool.getPlaylistFolder(Config.OutputDir(), plist); Desc = string.Format("{0} Tracks-{1} Videos-{2}", TimeHelper.ConverIntToString(plist.Duration), plist.NumberOfTracks, plist.NumberOfVideos); Cover = AIGS.Common.Convert.ConverByteArrayToBitmapImage(plist.CoverData); for (int i = 0; plist.Tracks != null && i < plist.Tracks.Count; i++) { if (plist.Tracks[i].WaitDownload) { ItemList.Add(new TrackTask(plist.Tracks[i], ItemList.Count + 1, RecieveDownloadOver, null, plist)); } } for (int i = 0; plist.Videos != null && i < plist.Videos.Count; i++) { if (plist.Videos[i].WaitDownload) { ItemList.Add(new VideoTask(plist.Videos[i], ItemList.Count + 1, RecieveDownloadOver, null, plist)); } } } }