diff options
author | Jan Holthuis <jholthuis@mixxx.org> | 2021-12-23 13:27:41 +0100 |
---|---|---|
committer | Jan Holthuis <jholthuis@mixxx.org> | 2022-01-11 19:53:42 +0100 |
commit | 5f49f762e0328412292cae375b2f0d7f3240d002 (patch) | |
tree | 87c542ae87c403b3b10f7e0d9cda6cff6dbf353a | |
parent | 2e20cb2f7823bd509c6d253f322294f547942725 (diff) |
PlayerManager: Add support for load-and-play track by location
-rw-r--r-- | src/library/library.cpp | 4 | ||||
-rw-r--r-- | src/library/library.h | 2 | ||||
-rw-r--r-- | src/mixer/playermanager.cpp | 11 | ||||
-rw-r--r-- | src/mixer/playermanager.h | 7 | ||||
-rw-r--r-- | src/mixer/samplerbank.cpp | 2 | ||||
-rw-r--r-- | src/qml/qmlplayermanagerproxy.cpp | 4 | ||||
-rw-r--r-- | src/qml/qmlplayermanagerproxy.h | 2 | ||||
-rw-r--r-- | src/qml/qmlplayerproxy.cpp | 8 | ||||
-rw-r--r-- | src/qml/qmlplayerproxy.h | 6 | ||||
-rw-r--r-- | src/skin/legacy/legacyskinparser.cpp | 17 |
10 files changed, 35 insertions, 28 deletions
diff --git a/src/library/library.cpp b/src/library/library.cpp index 78ecb99b98..40750af4eb 100644 --- a/src/library/library.cpp +++ b/src/library/library.cpp @@ -524,11 +524,11 @@ void Library::slotLoadTrack(TrackPointer pTrack) { emit loadTrack(pTrack); } -void Library::slotLoadLocationToPlayer(const QString& location, const QString& group) { +void Library::slotLoadLocationToPlayer(const QString& location, const QString& group, bool play) { auto trackRef = TrackRef::fromFilePath(location); TrackPointer pTrack = m_pTrackCollectionManager->getOrAddTrack(trackRef); if (pTrack) { - emit loadTrackToPlayer(pTrack, group); + emit loadTrackToPlayer(pTrack, group, play); } } diff --git a/src/library/library.h b/src/library/library.h index 6067551146..ff2a9faa2a 100644 --- a/src/library/library.h +++ b/src/library/library.h @@ -110,7 +110,7 @@ class Library: public QObject { void slotSwitchToView(const QString& view); void slotLoadTrack(TrackPointer pTrack); void slotLoadTrackToPlayer(TrackPointer pTrack, const QString& group, bool play); - void slotLoadLocationToPlayer(const QString& location, const QString& group); + void slotLoadLocationToPlayer(const QString& location, const QString& group, bool play); void slotRefreshLibraryModels(); void slotCreatePlaylist(); void slotCreateCrate(); diff --git a/src/mixer/playermanager.cpp b/src/mixer/playermanager.cpp index 81230764e8..cf3f90d2be 100644 --- a/src/mixer/playermanager.cpp +++ b/src/mixer/playermanager.cpp @@ -661,22 +661,23 @@ void PlayerManager::slotLoadTrackToPlayer(TrackPointer pTrack, const QString& gr m_lastLoadedPlayer = group; } -void PlayerManager::slotLoadToPlayer(const QString& location, const QString& group) { +void PlayerManager::slotLoadLocationToPlayer( + const QString& location, const QString& group, bool play) { // The library will get the track and then signal back to us to load the // track via slotLoadTrackToPlayer. - emit loadLocationToPlayer(location, group); + emit loadLocationToPlayer(location, group, play); } void PlayerManager::slotLoadToDeck(const QString& location, int deck) { - slotLoadToPlayer(location, groupForDeck(deck-1)); + slotLoadLocationToPlayer(location, groupForDeck(deck - 1)); } void PlayerManager::slotLoadToPreviewDeck(const QString& location, int previewDeck) { - slotLoadToPlayer(location, groupForPreviewDeck(previewDeck-1)); + slotLoadLocationToPlayer(location, groupForPreviewDeck(previewDeck - 1)); } void PlayerManager::slotLoadToSampler(const QString& location, int sampler) { - slotLoadToPlayer(location, groupForSampler(sampler-1)); + slotLoadLocationToPlayer(location, groupForSampler(sampler - 1)); } void PlayerManager::slotLoadTrackIntoNextAvailableDeck(TrackPointer pTrack) { diff --git a/src/mixer/playermanager.h b/src/mixer/playermanager.h index 04ab325f09..35fed82dbb 100644 --- a/src/mixer/playermanager.h +++ b/src/mixer/playermanager.h @@ -179,7 +179,10 @@ class PlayerManager : public QObject, public PlayerManagerInterface { public slots: // Slots for loading tracks into a Player, which is either a Sampler or a Deck void slotLoadTrackToPlayer(TrackPointer pTrack, const QString& group, bool play = false); - void slotLoadToPlayer(const QString& location, const QString& group); + void slotLoadLocationToPlayer(const QString& location, const QString& group, bool play = false); + void slotLoadLocationToPlayerStopped(const QString& location, const QString& group) { + slotLoadLocationToPlayer(location, group, false); + }; void slotCloneDeck(const QString& source_group, const QString& target_group); // Slots for loading tracks to decks @@ -207,7 +210,7 @@ class PlayerManager : public QObject, public PlayerManagerInterface { void onTrackAnalysisFinished(); signals: - void loadLocationToPlayer(const QString& location, const QString& group); + void loadLocationToPlayer(const QString& location, const QString& group, bool play); // Emitted when the user tries to enable a microphone talkover control when // there is no input configured. diff --git a/src/mixer/samplerbank.cpp b/src/mixer/samplerbank.cpp index 732f58ec0b..64f9472b5d 100644 --- a/src/mixer/samplerbank.cpp +++ b/src/mixer/samplerbank.cpp @@ -216,7 +216,7 @@ bool SamplerBank::loadSamplerBankFromPath(const QString& samplerBankPath) { if (location.isEmpty()) { m_pPlayerManager->slotLoadTrackToPlayer(TrackPointer(), group); } else { - m_pPlayerManager->slotLoadToPlayer(location, group); + m_pPlayerManager->slotLoadLocationToPlayer(location, group); } } diff --git a/src/qml/qmlplayermanagerproxy.cpp b/src/qml/qmlplayermanagerproxy.cpp index 8379320f0a..7b7e2ca4a6 100644 --- a/src/qml/qmlplayermanagerproxy.cpp +++ b/src/qml/qmlplayermanagerproxy.cpp @@ -31,8 +31,8 @@ QObject* QmlPlayerManagerProxy::getPlayer(const QString& group) { connect(pPlayerProxy, &QmlPlayerProxy::loadTrackFromLocationRequested, this, - [this, group](const QString& trackLocation) { - emit loadLocationToPlayer(trackLocation, group); + [this, group](const QString& trackLocation, bool play) { + emit loadLocationToPlayer(trackLocation, group, play); }); connect(pPlayerProxy, &QmlPlayerProxy::cloneFromGroup, diff --git a/src/qml/qmlplayermanagerproxy.h b/src/qml/qmlplayermanagerproxy.h index a1c6216e14..d566c34dea 100644 --- a/src/qml/qmlplayermanagerproxy.h +++ b/src/qml/qmlplayermanagerproxy.h @@ -17,7 +17,7 @@ class QmlPlayerManagerProxy : public QObject { Q_INVOKABLE QObject* getPlayer(const QString& deck); signals: - void loadLocationToPlayer(const QString& location, const QString& group); + void loadLocationToPlayer(const QString& location, const QString& group, bool play = false); private: const std::shared_ptr<PlayerManager> m_pPlayerManager; diff --git a/src/qml/qmlplayerproxy.cpp b/src/qml/qmlplayerproxy.cpp index 15226b188d..9f5d1e651c 100644 --- a/src/qml/qmlplayerproxy.cpp +++ b/src/qml/qmlplayerproxy.cpp @@ -41,13 +41,13 @@ QmlPlayerProxy::QmlPlayerProxy(BaseTrackPlayer* pTrackPlayer, QObject* parent) connect(this, &QmlPlayerProxy::trackChanged, this, &QmlPlayerProxy::slotTrackChanged); } -void QmlPlayerProxy::loadTrackFromLocation(const QString& trackLocation) { - emit loadTrackFromLocationRequested(trackLocation); +void QmlPlayerProxy::loadTrackFromLocation(const QString& trackLocation, bool play) { + emit loadTrackFromLocationRequested(trackLocation, play); } -void QmlPlayerProxy::loadTrackFromLocationUrl(const QUrl& trackLocationUrl) { +void QmlPlayerProxy::loadTrackFromLocationUrl(const QUrl& trackLocationUrl, bool play) { if (trackLocationUrl.isLocalFile()) { - loadTrackFromLocation(trackLocationUrl.toLocalFile()); + loadTrackFromLocation(trackLocationUrl.toLocalFile(), play); } else { qWarning() << "QmlPlayerProxy: URL" << trackLocationUrl << "is not a local file!"; } diff --git a/src/qml/qmlplayerproxy.h b/src/qml/qmlplayerproxy.h index 89509bcdbc..6ea28e27dc 100644 --- a/src/qml/qmlplayerproxy.h +++ b/src/qml/qmlplayerproxy.h @@ -55,8 +55,8 @@ class QmlPlayerProxy : public QObject { return m_pTrackPlayer; } - Q_INVOKABLE void loadTrackFromLocation(const QString& trackLocation); - Q_INVOKABLE void loadTrackFromLocationUrl(const QUrl& trackLocationUrl); + Q_INVOKABLE void loadTrackFromLocation(const QString& trackLocation, bool play = false); + Q_INVOKABLE void loadTrackFromLocationUrl(const QUrl& trackLocationUrl, bool play = false); public slots: void slotTrackLoaded(TrackPointer pTrack); @@ -99,7 +99,7 @@ class QmlPlayerProxy : public QObject { void coverArtUrlChanged(); void trackLocationUrlChanged(); - void loadTrackFromLocationRequested(const QString& trackLocation); + void loadTrackFromLocationRequested(const QString& trackLocation, bool play); private: QPointer<BaseTrackPlayer> m_pTrackPlayer; diff --git a/src/skin/legacy/legacyskinparser.cpp b/src/skin/legacy/legacyskinparser.cpp index 16f00063ce..09ffed4e62 100644 --- a/src/skin/legacy/legacyskinparser.cpp +++ b/src/skin/legacy/legacyskinparser.cpp @@ -962,7 +962,7 @@ QWidget* LegacySkinParser::parseOverview(const QDomElement& node) { connect(overviewWidget, &WOverview::trackDropped, m_pPlayerManager, - &PlayerManager::slotLoadToPlayer); + &PlayerManager::slotLoadLocationToPlayerStopped); connect(overviewWidget, &WOverview::cloneDeck, m_pPlayerManager, &PlayerManager::slotCloneDeck); @@ -1017,7 +1017,7 @@ QWidget* LegacySkinParser::parseVisual(const QDomElement& node) { connect(viewer, &WWaveformViewer::trackDropped, m_pPlayerManager, - &PlayerManager::slotLoadToPlayer); + &PlayerManager::slotLoadLocationToPlayerStopped); connect(viewer, &WWaveformViewer::cloneDeck, m_pPlayerManager, &PlayerManager::slotCloneDeck); @@ -1046,7 +1046,7 @@ QWidget* LegacySkinParser::parseText(const QDomElement& node) { connect(pTrackText, &WTrackText::trackDropped, m_pPlayerManager, - &PlayerManager::slotLoadToPlayer); + &PlayerManager::slotLoadLocationToPlayerStopped); connect(pTrackText, &WTrackText::cloneDeck, m_pPlayerManager, &PlayerManager::slotCloneDeck); TrackPointer pTrack = pPlayer->getLoadedTrack(); @@ -1083,7 +1083,7 @@ QWidget* LegacySkinParser::parseTrackProperty(const QDomElement& node) { connect(pTrackProperty, &WTrackProperty::trackDropped, m_pPlayerManager, - &PlayerManager::slotLoadToPlayer); + &PlayerManager::slotLoadLocationToPlayerStopped); connect(pTrackProperty, &WTrackProperty::cloneDeck, m_pPlayerManager, @@ -1126,7 +1126,7 @@ QWidget* LegacySkinParser::parseTrackWidgetGroup(const QDomElement& node) { connect(pGroup, &WTrackWidgetGroup::trackDropped, m_pPlayerManager, - &PlayerManager::slotLoadToPlayer); + &PlayerManager::slotLoadLocationToPlayerStopped); connect(pGroup, &WTrackWidgetGroup::cloneDeck, m_pPlayerManager, @@ -1282,7 +1282,10 @@ QWidget* LegacySkinParser::parseSpinny(const QDomElement& node) { spinny, &WSpinny::render); connect(waveformWidgetFactory, &WaveformWidgetFactory::swapSpinnies, spinny, &WSpinny::swap); - connect(spinny, &WSpinny::trackDropped, m_pPlayerManager, &PlayerManager::slotLoadToPlayer); + connect(spinny, + &WSpinny::trackDropped, + m_pPlayerManager, + &PlayerManager::slotLoadLocationToPlayerStopped); connect(spinny, &WSpinny::cloneDeck, m_pPlayerManager, &PlayerManager::slotCloneDeck); ControlObject* showCoverControl = controlFromConfigNode(node.toElement(), "ShowCoverControl"); @@ -1341,7 +1344,7 @@ QWidget* LegacySkinParser::parseCoverArt(const QDomElement& node) { connect(pCoverArt, &WCoverArt::trackDropped, m_pPlayerManager, - &PlayerManager::slotLoadToPlayer); + &PlayerManager::slotLoadLocationToPlayerStopped); connect(pCoverArt, &WCoverArt::cloneDeck, m_pPlayerManager, &PlayerManager::slotCloneDeck); } |