1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
#include "qml/qmlplayermanagerproxy.h"
#include <QQmlEngine>
#include "mixer/playermanager.h"
#include "qml/qmlplayerproxy.h"
namespace mixxx {
namespace qml {
QmlPlayerManagerProxy::QmlPlayerManagerProxy(
std::shared_ptr<PlayerManager> pPlayerManager, QObject* parent)
: QObject(parent), m_pPlayerManager(pPlayerManager) {
}
QObject* QmlPlayerManagerProxy::getPlayer(const QString& group) {
BaseTrackPlayer* pPlayer = m_pPlayerManager->getPlayer(group);
if (!pPlayer) {
qWarning() << "PlayerManagerProxy failed to find player for group" << group;
return nullptr;
}
// Don't set a parent here, so that the QML engine deletes the object when
// the corresponding JS object is garbage collected.
QmlPlayerProxy* pPlayerProxy = new QmlPlayerProxy(pPlayer);
QQmlEngine::setObjectOwnership(pPlayerProxy, QQmlEngine::JavaScriptOwnership);
connect(pPlayerProxy,
&QmlPlayerProxy::loadTrackFromLocationRequested,
this,
[this, group](const QString& trackLocation, bool play) {
loadLocationToPlayer(trackLocation, group, play);
});
connect(pPlayerProxy,
&QmlPlayerProxy::cloneFromGroup,
this,
[this, group](const QString& sourceGroup) {
m_pPlayerManager->slotCloneDeck(sourceGroup, 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);
}
} // namespace qml
} // namespace mixxx
|