void CMusicInfoTag::SetSong(const CSong& song) { Clear(); SetTitle(song.strTitle); SetGenre(song.genre); /* Set all artist infomation from song artist credits and artist description. During processing e.g. Cue Sheets, song may only have artist description string rather than a fully populated artist credits vector. */ if (!song.HasArtistCredits()) SetArtist(song.GetArtistString()); //Sets both artist description string and artist vector from string else { SetArtistDesc(song.GetArtistString()); SetArtist(song.GetArtist()); SetMusicBrainzArtistID(song.GetMusicBrainzArtistID()); } SetAlbum(song.strAlbum); SetAlbumArtist(song.GetAlbumArtist()); //Only have album artist in song as vector, no desc or MBID SetMusicBrainzTrackID(song.strMusicBrainzTrackID); SetContributors(song.GetContributors()); SetComment(song.strComment); SetCueSheet(song.strCueSheet); SetPlayCount(song.iTimesPlayed); SetLastPlayed(song.lastPlayed); SetDateAdded(song.dateAdded); SetCoverArtInfo(song.embeddedArt.size, song.embeddedArt.mime); SetRating(song.rating); SetUserrating(song.userrating); SetVotes(song.votes); SetURL(song.strFileName); SYSTEMTIME stTime; stTime.wYear = song.iYear; SetReleaseDate(stTime); SetTrackAndDiscNumber(song.iTrack); SetDuration(song.iDuration); SetMood(song.strMood); SetCompilation(song.bCompilation); SetAlbumId(song.idAlbum); SetDatabaseId(song.idSong, MediaTypeSong); if (song.replayGain.Get(ReplayGain::TRACK).Valid()) m_replayGain.Set(ReplayGain::TRACK, song.replayGain.Get(ReplayGain::TRACK)); if (song.replayGain.Get(ReplayGain::ALBUM).Valid()) m_replayGain.Set(ReplayGain::ALBUM, song.replayGain.Get(ReplayGain::ALBUM)); SetLoaded(); }