Skip to content
This repository has been archived by the owner on Sep 4, 2019. It is now read-only.

Commit

Permalink
put trackChange in, but not binding callbacks yet (need to figure out…
Browse files Browse the repository at this point in the history
… how to connect native NowPlayingConnection signals
  • Loading branch information
parker-mar committed Oct 29, 2015
1 parent b43b2e5 commit 497ca38
Show file tree
Hide file tree
Showing 6 changed files with 91 additions and 232 deletions.
Expand Up @@ -83,8 +83,7 @@ string NowPlayingJS::InvokeMethod(const string& command) {
if (strCommand == "NowPlayingRequestPlayback") {
result = m_NowPlayingMgr->NowPlayingRequestPlayback(arg);

}
else if (strCommand == "NowPlayingBindPlayCallback") {
} else if (strCommand == "NowPlayingBindPlayCallback") {
m_NowPlayingMgr->NowPlayingBindPlayCallback(callbackId);

} else if (strCommand == "NowPlayingBindPauseCallback") {
Expand All @@ -96,15 +95,9 @@ string NowPlayingJS::InvokeMethod(const string& command) {
} else if (strCommand == "NowPlayingBindResumeCallback") {
m_NowPlayingMgr->NowPlayingBindResumeCallback(callbackId);

// else if (strCommand == "NowPlayingChangeTrack") {
// result = m_NowPlayingMgr->NowPlayingChangeTrack(callbackId, arg);
// }
// else if (strCommand == "NowPlayingEnableNextPrevious") {
// result = m_NowPlayingMgr->NowPlayingEnableNextPrevious();
// }
// else if (strCommand == "NowPlayingDisableNextPrevious") {
// result = m_NowPlayingMgr->NowPlayingDisableNextPrevious();
// }
} else if (strCommand == "NowPlayingTrackChange") {
result = m_NowPlayingMgr->NowPlayingTrackChange(arg);

} else if (strCommand == "NowPlayingPlay") {
result = m_NowPlayingMgr->NowPlayingPlay();

Expand Down
Expand Up @@ -51,6 +51,7 @@ namespace webworks {
* media notification area – it’s set by the OS and the
* hardware." - quoted from Tim Windsor */
npc->setOverlayStyle(OverlayStyle::Fancy);
npc->setMediaState(MediaState::Started);

Json::Value root;
Json::Reader reader;
Expand Down Expand Up @@ -124,12 +125,32 @@ namespace webworks {
Q_ASSERT(connectResult);
}

/**
* Assume NowPlayingConnection instance is acquired. No need to revoke.
*/
string NowPlayingNDK::setMusic(const string& data) {
Q_ASSERT(npc->isAcquired());

string NowPlayingNDK::NowPlayingTrackChange(const string& data) {
string returnValue = "";

Json::Value root;
Json::Reader reader;

emit stopSignal();

bool parse = reader.parse(data, root);
if (!parse) {
returnValue = "Error changing track";
} else {
returnValue += setMusic(root["songURL"].asString());
returnValue += setIcon(root["iconURL"].asString());
returnValue += setMetadata(root["metadata"]);
returnValue += "Track changed successfully.";
}

emit playSignal();

return returnValue;
}


string NowPlayingNDK::setMusic(const string& data) {
QString str = QString::fromUtf8(data.c_str());

if (! str.startsWith("http", Qt::CaseInsensitive)) {
Expand All @@ -149,12 +170,7 @@ namespace webworks {
}
}

/**
* Assume NowPlayingConnection instance is acquired. No need to revoke.
*/
string NowPlayingNDK::setIcon(const string& data) {
Q_ASSERT(npc->isAcquired());

QString str = QString::fromUtf8(data.c_str());

if (! str.startsWith("http", Qt::CaseInsensitive)) {
Expand All @@ -177,14 +193,16 @@ namespace webworks {
}
}

/**
* Assume NowPlayingConnection instance is acquired. No need to revoke.
*/
string NowPlayingNDK::setMetadata(const Json::Value& data) {
Q_ASSERT(npc->isAcquired());

QVariantMap metadata;

/**
* http://developer.blackberry.com/native/reference/cascades/bb__multimedia__nowplayingconnection.html#comment-1134791487
* Wes Barichak Theodore Mavrakis • 2 years ago
* Currently, the only metadata properties that are available are
* MetaData::Album, MetaData::Artist, and MetaData::Title, while the
* rest of the MetaData properties are ignored.
* This will likely change in the future though. */
metadata[MetaData::Title] =
QString::fromStdString(data["Title"].asString());
metadata[MetaData::Artist] =
Expand All @@ -197,25 +215,6 @@ namespace webworks {
return "Metadata set successfully. \n";
}

// string NowPlayingNDK::NowPlayingChangeTrack(const string& callbackId, const string& data) {
// return "Changed track.";
// }
//
// string NowPlayingNDK::NowPlayingEnableNextPrevious() {
// if (npc->isAcquired()) {
// npc->setNextEnabled(true);
// } else {
// npc->acquire();
// npc->setNextEnabled(true);
// npc->revoke();
// }
//
// return "Enabled Next Previous.";
// }
//
// string NowPlayingNDK::NowPlayingDisableNextPrevious() {
// return "Disabled Next Previous.";
// }

string NowPlayingNDK::NowPlayingPlay() {
emit playSignal();
Expand All @@ -237,6 +236,7 @@ namespace webworks {
return "Player resumed.";
}


string NowPlayingNDK::NowPlayingGetState() {
string state = "State: ";
switch (mp->mediaState()) {
Expand Down Expand Up @@ -268,6 +268,7 @@ namespace webworks {
return state.c_str();
}


/***
* Slots
***/
Expand Down Expand Up @@ -298,6 +299,7 @@ namespace webworks {

void NowPlayingNDK::stopSlot() {
mp->stop();

npc->setMediaState(mp->mediaState());

// Callback
Expand All @@ -311,6 +313,7 @@ namespace webworks {

void NowPlayingNDK::resumeSlot() {
mp->play();

npc->setMediaState(mp->mediaState());

// Callback
Expand Down
Expand Up @@ -63,8 +63,8 @@ namespace webworks {
void stopSignal();
void resumeSignal();

/* TODO: Need to be able to connect built-in play, pause signals etc..
* so can handle from volume overlay/MNA??? */
/* TODO (wait for email response): Need to be able to connect built-in play, pause signals etc..
* so can handle from volume overlay/MNA??? */

public slots:
void playSlot();
Expand All @@ -80,15 +80,12 @@ namespace webworks {
void NowPlayingBindStopCallback(const string& callbackId);
void NowPlayingBindResumeCallback(const string& callbackId);

string NowPlayingTrackChange(const string& data);

string setMusic(const string& data);
string setIcon(const string& data);
string setMetadata(const Json::Value& data);

// string NowPlayingChangeTrack(const string& callbackId, const string& data);

// string NowPlayingEnableNextPrevious();
// string NowPlayingDisableNextPrevious();

string NowPlayingPlay();
string NowPlayingPause();
string NowPlayingStop();
Expand Down

0 comments on commit 497ca38

Please sign in to comment.