void SetlogFeature::slotJoinWithPrevious() { //qDebug() << "slotJoinWithPrevious() row:" << m_lastRightClickedIndex.data(); if (m_lastRightClickedIndex.isValid()) { int currentPlaylistId = m_playlistDao.getPlaylistIdFromName( m_lastRightClickedIndex.data().toString()); if (currentPlaylistId >= 0) { bool locked = m_playlistDao.isPlaylistLocked(currentPlaylistId); if (locked) { qDebug() << "Skipping playlist deletion because playlist" << currentPlaylistId << "is locked."; return; } // Add every track from right klicked playlist to that with the next smaller ID int previousPlaylistId = m_playlistDao.getPreviousPlaylist(currentPlaylistId, PlaylistDAO::PLHT_SET_LOG); if (previousPlaylistId >= 0) { m_pPlaylistTableModel->setTableModel(previousPlaylistId); if (currentPlaylistId == m_playlistId) { // mark all the Tracks in the previous Playlist as played m_pPlaylistTableModel->select(); int rows = m_pPlaylistTableModel->rowCount(); for (int i = 0; i < rows; ++i) { QModelIndex index = m_pPlaylistTableModel->index(i,0); if (index.isValid()) { TrackPointer track = m_pPlaylistTableModel->getTrack(index); // Do not update the play count, just set played status. PlayCounter playCounter(track->getPlayCounter()); playCounter.setPlayed(); track->setPlayCounter(playCounter); } } // Change current setlog m_playlistId = previousPlaylistId; } qDebug() << "slotJoinWithPrevious() current:" << currentPlaylistId << " previous:" << previousPlaylistId; if (m_playlistDao.copyPlaylistTracks(currentPlaylistId, previousPlaylistId)) { m_playlistDao.deletePlaylist(currentPlaylistId); slotPlaylistTableChanged(previousPlaylistId); // For moving selection emit(showTrackModel(m_pPlaylistTableModel)); } } } } }
void AutoDJFeature::slotAddRandomTrack(bool) { int failedRetrieveAttempts = 0; // Get access to the auto-DJ playlist PlaylistDAO& playlistDao = m_pTrackCollection->getPlaylistDAO(); if (m_iAutoDJPlaylistId >= 0) { while (failedRetrieveAttempts < kMaxRetrieveAttempts) { // Get the ID of a randomly-selected track. TrackId trackId(m_autoDjCratesDao.getRandomTrackId()); if (trackId.isValid()) { // Get Track Information TrackPointer addedTrack = (m_pTrackCollection->getTrackDAO()).getTrack(trackId); if(addedTrack->exists()) { playlistDao.appendTrackToPlaylist(trackId, m_iAutoDJPlaylistId); m_pAutoDJView->onShow(); return; } else { qDebug() << "Track does not exist:" << addedTrack->getInfo() << addedTrack->getLocation(); } } failedRetrieveAttempts += 1; } // If we couldn't get a track from the crates , get one from the library qDebug () << "Could not load tracks from crates, attempting to load from library."; failedRetrieveAttempts = 0; while ( failedRetrieveAttempts < kMaxRetrieveAttempts ) { TrackId trackId(m_autoDjCratesDao.getRandomTrackIdFromLibrary(m_iAutoDJPlaylistId)); if (trackId.isValid()) { TrackPointer addedTrack = m_pTrackCollection->getTrackDAO().getTrack(trackId); if(addedTrack->exists()) { if(!addedTrack->getPlayCounter().isPlayed()) { playlistDao.appendTrackToPlaylist(trackId, m_iAutoDJPlaylistId); m_pAutoDJView->onShow(); return; } } else { qDebug() << "Track does not exist:" << addedTrack->getInfo() << addedTrack->getLocation(); } } failedRetrieveAttempts += 1; } } // If control reaches here it implies that we couldn't load track qDebug() << "Could not load random track."; }
void BaseTrackCache::getTrackValueForColumn(TrackPointer pTrack, int column, QVariant& trackValue) const { if (!pTrack || column < 0) { return; } // TODO(XXX) Qt properties could really help here. // TODO(rryan) this is all TrackDAO specific. What about iTunes/RB/etc.? if (fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_ARTIST) == column) { trackValue.setValue(pTrack->getArtist()); } else if (fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_TITLE) == column) { trackValue.setValue(pTrack->getTitle()); } else if (fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_ALBUM) == column) { trackValue.setValue(pTrack->getAlbum()); } else if (fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_ALBUMARTIST) == column) { trackValue.setValue(pTrack->getAlbumArtist()); } else if (fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_YEAR) == column) { trackValue.setValue(pTrack->getYear()); } else if (fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_DATETIMEADDED) == column) { trackValue.setValue(pTrack->getDateAdded()); } else if (fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_GENRE) == column) { trackValue.setValue(pTrack->getGenre()); } else if (fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_COMPOSER) == column) { trackValue.setValue(pTrack->getComposer()); } else if (fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_GROUPING) == column) { trackValue.setValue(pTrack->getGrouping()); } else if (fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_FILETYPE) == column) { trackValue.setValue(pTrack->getType()); } else if (fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_TRACKNUMBER) == column) { trackValue.setValue(pTrack->getTrackNumber()); } else if (fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_LOCATION) == column) { trackValue.setValue(QDir::toNativeSeparators(pTrack->getLocation())); } else if (fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_COMMENT) == column) { trackValue.setValue(pTrack->getComment()); } else if (fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_DURATION) == column) { trackValue.setValue(pTrack->getDuration()); } else if (fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_BITRATE) == column) { trackValue.setValue(pTrack->getBitrate()); } else if (fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_BPM) == column) { trackValue.setValue(pTrack->getBpm()); } else if (fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_REPLAYGAIN) == column) { trackValue.setValue(pTrack->getReplayGain().getRatio()); } else if (fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_PLAYED) == column) { trackValue.setValue(pTrack->getPlayCounter().isPlayed()); } else if (fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_TIMESPLAYED) == column) { trackValue.setValue(pTrack->getPlayCounter().getTimesPlayed()); } else if (fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_RATING) == column) { trackValue.setValue(pTrack->getRating()); } else if (fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_KEY) == column) { trackValue.setValue(pTrack->getKeyText()); } else if (fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_KEY_ID) == column) { trackValue.setValue(static_cast<int>(pTrack->getKey())); } else if (fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_BPM_LOCK) == column) { trackValue.setValue(pTrack->isBpmLocked()); } else if (fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_COVERART_LOCATION) == column) { trackValue.setValue(pTrack->getCoverInfo().coverLocation); } else if (fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_COVERART_HASH) == column || fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_COVERART) == column) { // For sorting, we give COLUMN_LIBRARYTABLE_COVERART the same value as // the cover hash. trackValue.setValue(pTrack->getCoverHash()); } else if (fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_COVERART_SOURCE) == column) { trackValue.setValue(static_cast<int>(pTrack->getCoverInfo().source)); } else if (fieldIndex(ColumnCache::COLUMN_LIBRARYTABLE_COVERART_TYPE) == column) { trackValue.setValue(static_cast<int>(pTrack->getCoverInfo().type)); } }