void BaseExternalTrackModel::trackLoaded(QString group, TrackPointer pTrack) { if (group == m_previewDeckGroup) { // If there was a previously loaded track, refresh its rows so the // preview state will update. if (m_previewDeckTrackId.isValid()) { const int numColumns = columnCount(); QLinkedList<int> rows = getTrackRows(m_previewDeckTrackId); m_previewDeckTrackId = TrackId(); // invalidate foreach (int row, rows) { QModelIndex left = index(row, 0); QModelIndex right = index(row, numColumns); emit(dataChanged(left, right)); } } if (pTrack) { // The external table has foreign Track IDs, so we need to compare // by location for (int row = 0; row < rowCount(); ++row) { QString location = index(row, fieldIndex("location")).data().toString(); if (location == pTrack->getLocation()) { m_previewDeckTrackId = TrackId(index(row, 0).data()); //qDebug() << "foreign track id" << m_previewDeckTrackId; break; } } } }
TrackId BaseSqlTableModel::getTrackId(const QModelIndex& index) const { if (index.isValid()) { return TrackId(index.sibling(index.row(), fieldIndex(m_idColumn)).data()); } else { return TrackId(); } }
GlobalTrackCacheResolver::GlobalTrackCacheResolver( QFileInfo fileInfo, SecurityTokenPointer pSecurityToken) : m_lookupResult(GlobalTrackCacheLookupResult::NONE) { DEBUG_ASSERT(m_pInstance); m_pInstance->resolve(this, std::move(fileInfo), TrackId(), std::move(pSecurityToken)); }
track_id SeqPhraseMatrixView::CurrentTrackId() { BPoint pt; uint32 button; GetMouse(&pt, &button, false); return TrackId(pt); }
void CrateFeature::slotTrackSelected(TrackPointer pTrack) { m_pSelectedTrack = pTrack; TrackId trackId(pTrack.isNull() ? TrackId() : pTrack->getId()); m_crateDao.getCratesTrackIsIn(trackId, &m_cratesSelectedTrackIsIn); TreeItem* rootItem = m_childModel.getItem(QModelIndex()); if (rootItem == nullptr) { return; } // Set all crates the track is in bold (or if there is no track selected, // clear all the bolding). int row = 0; for (QList<QPair<int, QString> >::const_iterator it = m_crateList.begin(); it != m_crateList.end(); ++it, ++row) { TreeItem* crate = rootItem->child(row); if (crate == nullptr) { continue; } int crateId = it->first; bool shouldBold = m_cratesSelectedTrackIsIn.contains(crateId); crate->setBold(shouldBold); } m_childModel.triggerRepaint(); }
TrackInfoObject::TrackInfoObject(const QFileInfo& fileInfo, SecurityTokenPointer pToken, bool parseHeader, bool parseCoverArt) : m_fileInfo(fileInfo), m_pSecurityToken(pToken.isNull() ? Sandbox::openSecurityToken( m_fileInfo, true) : pToken), m_bDeleteOnReferenceExpiration(false), m_qMutex(QMutex::Recursive) { m_id = TrackId(); m_analyzerProgress = -1; m_bDirty = false; m_bBpmLocked = false; m_bHeaderParsed = false; m_iDuration = 0; m_iBitrate = 0; m_iSampleRate = 0; m_iChannels = 0; m_fCuePoint = 0.0f; m_dateAdded = QDateTime::currentDateTime(); m_Rating = 0; // Parse the metadata from file. This is not a quick operation! m_bHeaderParsed = false; if (parseHeader) { parse(parseCoverArt); } }
void SeqPhraseMatrixView::ShowProperties(BPoint where) { track_id trackId = TrackId(where); AmPhraseEvent* pe = NULL; SeqSongWinPropertiesI* win = dynamic_cast<SeqSongWinPropertiesI*>(Window() ); _SeqPhraseToolTarget* target; if (win && trackId && (target = new _SeqPhraseToolTarget(win, this, &mMtc)) ) { // READ SONG BLOCK #ifdef AM_TRACE_LOCKS printf("SeqPhraseMatrixView::ShowProperties() read lock\n"); fflush(stdout); #endif const AmSong* song = mSongRef.ReadLock(); if (song) { const AmTrack* track = song->Track(trackId); if (track) { pe = target->PhraseEventAt(track, where); if (pe) pe->IncRefs(); } } mSongRef.ReadUnlock(song); // END READ SONG BLOCK delete target; } /* Done this way so I get out of the read lock as soon as * possible (and because opening the properties window causes * a read lock, and I don't want them nested). */ if (pe) { ShowPropertiesWin(pe); pe->DecRefs(); } }
void BaseSqlTableModel::trackLoaded(QString group, TrackPointer pTrack) { if (group == m_previewDeckGroup) { // If there was a previously loaded track, refresh its rows so the // preview state will update. if (m_previewDeckTrackId.isValid()) { const int numColumns = columnCount(); QLinkedList<int> rows = getTrackRows(m_previewDeckTrackId); m_previewDeckTrackId = TrackId(); // invalidate foreach (int row, rows) { QModelIndex left = index(row, 0); QModelIndex right = index(row, numColumns); emit(dataChanged(left, right)); } } m_previewDeckTrackId = pTrack ? pTrack->getId() : TrackId(); }
void TrackInfoObject::initialize(bool parseHeader, bool parseCoverArt) { m_bDeleteOnReferenceExpiration = false; m_bDirty = false; m_bLocationChanged = false; m_sArtist = ""; m_sTitle = ""; m_sType= ""; m_sComment = ""; m_sYear = ""; m_sURL = ""; m_iDuration = 0; m_iBitrate = 0; m_iTimesPlayed = 0; m_bPlayed = false; m_fReplayGain = 0.; m_bHeaderParsed = false; m_id = TrackId(); m_iSampleRate = 0; m_iChannels = 0; m_fCuePoint = 0.0f; m_dateAdded = QDateTime::currentDateTime(); m_Rating = 0; m_bBpmLock = false; m_sGrouping = ""; m_sAlbumArtist = ""; // parse() parses the metadata from file. This is not a quick operation! if (parseHeader) { parse(parseCoverArt); } }
//static TrackPointer Track::newTemporary( const QFileInfo& fileInfo, const SecurityTokenPointer& pSecurityToken) { Track* pTrack = new Track( fileInfo, pSecurityToken, TrackId()); return TrackPointer(pTrack); }
//static TrackPointer TrackInfoObject::newTemporary( const QFileInfo& fileInfo, const SecurityTokenPointer& pSecurityToken) { return TrackPointer( new TrackInfoObject( fileInfo, pSecurityToken, TrackId()), &QObject::deleteLater); }
TrackInfoObject::TrackInfoObject(const QDomNode &nodeHeader) : m_qMutex(QMutex::Recursive), m_analyserProgress(-1) { QString filename = XmlParse::selectNodeQString(nodeHeader, "Filename"); QString location = QDir(XmlParse::selectNodeQString(nodeHeader, "Filepath")).filePath(filename); m_fileInfo = QFileInfo(location); m_pSecurityToken = Sandbox::openSecurityToken(m_fileInfo, true); // We don't call initialize() here because it would end up calling parse() // on the file. Plus those initializations weren't done before, so it might // cause subtle bugs. This constructor is only used for legacy importing so // I'm not going to do it. rryan 6/2010 m_sTitle = XmlParse::selectNodeQString(nodeHeader, "Title"); m_sArtist = XmlParse::selectNodeQString(nodeHeader, "Artist"); m_sType = XmlParse::selectNodeQString(nodeHeader, "Type"); m_sComment = XmlParse::selectNodeQString(nodeHeader, "Comment"); m_iDuration = XmlParse::selectNodeQString(nodeHeader, "Duration").toInt(); m_iSampleRate = XmlParse::selectNodeQString(nodeHeader, "SampleRate").toInt(); m_iChannels = XmlParse::selectNodeQString(nodeHeader, "Channels").toInt(); m_iBitrate = XmlParse::selectNodeQString(nodeHeader, "Bitrate").toInt(); m_iTimesPlayed = XmlParse::selectNodeQString(nodeHeader, "TimesPlayed").toInt(); m_fReplayGain = XmlParse::selectNodeQString(nodeHeader, "replaygain").toFloat(); m_bHeaderParsed = false; m_bBpmLock = false; m_Rating = 0; // Mixxx <1.8 recorded track IDs in mixxxtrack.xml, but we are going to // ignore those. Tracks will get a new ID from the database. //m_id = XmlParse::selectNodeQString(nodeHeader, "Id").toInt(); m_id = TrackId(); m_fCuePoint = XmlParse::selectNodeQString(nodeHeader, "CuePoint").toFloat(); m_bPlayed = false; m_bDeleteOnReferenceExpiration = false; m_bDirty = false; m_bLocationChanged = false; }
TrackInfoObject::TrackInfoObject( const QFileInfo& fileInfo, SecurityTokenPointer pToken) : m_fileInfo(fileInfo), m_pSecurityToken(pToken.isNull() ? Sandbox::openSecurityToken( m_fileInfo, true) : pToken), m_bDeleteOnReferenceExpiration(false), m_qMutex(QMutex::Recursive) { m_id = TrackId(); m_analyzerProgress = -1; m_bDirty = false; m_bBpmLocked = false; m_bHeaderParsed = false; m_iDuration = 0; m_iBitrate = 0; m_iSampleRate = 0; m_iRating = 0; m_iChannels = 0; m_fCuePoint = 0.0f; m_dateAdded = QDateTime::currentDateTime(); }
TrackId ProxyTrackModel::getTrackId(const QModelIndex& index) const { QModelIndex indexSource = mapToSource(index); return m_pTrackModel ? m_pTrackModel->getTrackId(indexSource) : TrackId(); }
TrackId BrowseTableModel::getTrackId(const QModelIndex& index) const { Q_UNUSED(index); // We can't implement this as it stands. return TrackId(); }
AmTrackLookahead::~AmTrackLookahead() { DeleteAll(); } const AmEvent* AmTrackLookahead::Lookahead(track_id tid) const { const _LookaheadEntry* e = EntryFor(tid); if (!e) return NULL; return e->event; } const AmEvent* AmTrackLookahead::Lookahead(AmFilterHolderI* holder) const { ArpVALIDATE(holder, return NULL); const _LookaheadEntry* e = EntryFor(holder->TrackId()); if (!e) return NULL; if (e->event) return e->event; for (uint32 k = 0; k < mEntries.size(); k++) { if (mEntries[k].tid != e->tid && mEntries[k].groups == e->groups) { if (mEntries[k].event) return mEntries[k].event; } } return NULL; } status_t AmTrackLookahead::SetTracks(const AmSong* song) { DeleteAll(); ArpVALIDATE(song, return B_ERROR); const AmTrack* t = NULL;
TrackId addTrackToCollection(const QString& trackLocation) { TrackPointer pTrack(collection()->getTrackDAO().addSingleTrack(trackLocation, false)); return pTrack ? pTrack->getId() : TrackId(); }