TrackPointer BaseExternalTrackModel::getTrack(const QModelIndex& index) const { QString artist = index.sibling(index.row(), fieldIndex("artist")).data().toString(); QString title = index.sibling(index.row(), fieldIndex("title")).data().toString(); QString album = index.sibling(index.row(), fieldIndex("album")).data().toString(); QString year = index.sibling(index.row(), fieldIndex("year")).data().toString(); QString genre = index.sibling(index.row(), fieldIndex("genre")).data().toString(); float bpm = index.sibling(index.row(), fieldIndex("bpm")).data().toString().toFloat(); QString location = index.sibling(index.row(), fieldIndex("location")).data().toString(); if (location.isEmpty()) { // Track is lost return TrackPointer(); } bool track_already_in_library = false; TrackPointer pTrack = m_pTrackCollection->getTrackDAO() .getOrAddTrack(location, true, &track_already_in_library); // If this track was not in the Mixxx library it is now added and will be // saved with the metadata from iTunes. If it was already in the library // then we do not touch it so that we do not over-write the user's metadata. if (pTrack && !track_already_in_library) { pTrack->setArtist(artist); pTrack->setTitle(title); pTrack->setAlbum(album); pTrack->setYear(year); pTrack->setGenre(genre); pTrack->setBpm(bpm); } return pTrack; }
TrackPointer BaseExternalPlaylistModel::getTrack(const QModelIndex& index) const { QString location = index.sibling( index.row(), fieldIndex("location")).data().toString(); if (location.isEmpty()) { // Track is lost return TrackPointer(); } TrackDAO& track_dao = m_pTrackCollection->getTrackDAO(); int track_id = track_dao.getTrackId(location); bool track_already_in_library = track_id >= 0; if (track_id < 0) { // Add Track to library track_id = track_dao.addTrack(location, true); } TrackPointer pTrack; if (track_id < 0) { // Add Track to library failed, create a transient TrackInfoObject pTrack = TrackPointer(new TrackInfoObject(location), &QObject::deleteLater); } else { pTrack = track_dao.getTrack(track_id); } // If this track was not in the Mixxx library it is now added and will be // saved with the metadata from iTunes. If it was already in the library // then we do not touch it so that we do not over-write the user's metadata. if (!track_already_in_library) { QString artist = index.sibling( index.row(), fieldIndex("artist")).data().toString(); pTrack->setArtist(artist); QString title = index.sibling( index.row(), fieldIndex("title")).data().toString(); pTrack->setTitle(title); QString album = index.sibling( index.row(), fieldIndex("album")).data().toString(); pTrack->setAlbum(album); QString year = index.sibling( index.row(), fieldIndex("year")).data().toString(); pTrack->setYear(year); QString genre = index.sibling( index.row(), fieldIndex("genre")).data().toString(); pTrack->setGenre(genre); float bpm = index.sibling( index.row(), fieldIndex("bpm")).data().toString().toFloat(); pTrack->setBpm(bpm); } return pTrack; }