diff options
author | Jan Holthuis <jholthuis@mixxx.org> | 2021-12-24 02:28:28 +0100 |
---|---|---|
committer | Jan Holthuis <jholthuis@mixxx.org> | 2022-01-11 19:53:42 +0100 |
commit | 73d6c72dd1810661cbaf63dce4152c80d6416366 (patch) | |
tree | 98da1726f72241b98665db8eae78347d93aa53be | |
parent | a60a886ac2fda88d955bf1a9766d4c34955d7786 (diff) |
PlayerManager: Add support for loading location into next free deck
-rw-r--r-- | src/mixer/playermanager.cpp | 11 | ||||
-rw-r--r-- | src/mixer/playermanager.h | 1 | ||||
-rw-r--r-- | src/qml/qmlplayermanagerproxy.cpp | 14 | ||||
-rw-r--r-- | src/qml/qmlplayermanagerproxy.h | 3 |
4 files changed, 29 insertions, 0 deletions
diff --git a/src/mixer/playermanager.cpp b/src/mixer/playermanager.cpp index cf3f90d2be..ae76ecbc8b 100644 --- a/src/mixer/playermanager.cpp +++ b/src/mixer/playermanager.cpp @@ -691,6 +691,17 @@ void PlayerManager::slotLoadTrackIntoNextAvailableDeck(TrackPointer pTrack) { pDeck->slotLoadTrack(pTrack, false); } +void PlayerManager::slotLoadLocationIntoNextAvailableDeck(const QString& location, bool play) { + auto locker = lockMutex(&m_mutex); + BaseTrackPlayer* pDeck = findFirstStoppedPlayerInList(m_decks); + if (pDeck == nullptr) { + qDebug() << "PlayerManager: No stopped deck found, not loading track!"; + return; + } + + slotLoadLocationToPlayer(location, pDeck->getGroup(), play); +} + void PlayerManager::slotLoadTrackIntoNextAvailableSampler(TrackPointer pTrack) { auto locker = lockMutex(&m_mutex); BaseTrackPlayer* pSampler = findFirstStoppedPlayerInList(m_samplers); diff --git a/src/mixer/playermanager.h b/src/mixer/playermanager.h index 35fed82dbb..723b9b799c 100644 --- a/src/mixer/playermanager.h +++ b/src/mixer/playermanager.h @@ -187,6 +187,7 @@ class PlayerManager : public QObject, public PlayerManagerInterface { // Slots for loading tracks to decks void slotLoadTrackIntoNextAvailableDeck(TrackPointer pTrack); + void slotLoadLocationIntoNextAvailableDeck(const QString& location, bool play = false); // Loads the location to the deck. deckNumber is 1-indexed void slotLoadToDeck(const QString& location, int deckNumber); diff --git a/src/qml/qmlplayermanagerproxy.cpp b/src/qml/qmlplayermanagerproxy.cpp index 35c480d963..483d99a56e 100644 --- a/src/qml/qmlplayermanagerproxy.cpp +++ b/src/qml/qmlplayermanagerproxy.cpp @@ -39,6 +39,20 @@ QObject* QmlPlayerManagerProxy::getPlayer(const QString& group) { return pPlayerProxy; } +void QmlPlayerManagerProxy::loadLocationIntoNextAvailableDeck( + const QString& trackLocation, bool play) { + m_pPlayerManager->slotLoadLocationIntoNextAvailableDeck(trackLocation, play); +} + +void QmlPlayerManagerProxy::loadLocationUrlIntoNextAvailableDeck( + const QUrl& trackLocationUrl, bool play) { + if (trackLocationUrl.isLocalFile()) { + loadLocationIntoNextAvailableDeck(trackLocationUrl.toLocalFile(), play); + } else { + qWarning() << "QmlPlayerManagerProxy: URL" << trackLocationUrl << "is not a local file!"; + } +} + void QmlPlayerManagerProxy::loadLocationToPlayer( const QString& location, const QString& group, bool play) { m_pPlayerManager->slotLoadLocationToPlayer(location, group, play); diff --git a/src/qml/qmlplayermanagerproxy.h b/src/qml/qmlplayermanagerproxy.h index 9b9b27ee36..738007d494 100644 --- a/src/qml/qmlplayermanagerproxy.h +++ b/src/qml/qmlplayermanagerproxy.h @@ -15,6 +15,9 @@ class QmlPlayerManagerProxy : public QObject { QObject* parent = nullptr); Q_INVOKABLE QObject* getPlayer(const QString& deck); + Q_INVOKABLE void loadLocationIntoNextAvailableDeck(const QString& location, bool play = false); + Q_INVOKABLE void loadLocationUrlIntoNextAvailableDeck( + const QUrl& locationUrl, bool play = false); Q_INVOKABLE void loadLocationToPlayer( const QString& location, const QString& group, bool play = false); |