summaryrefslogtreecommitdiff
path: root/musicconn.cc
diff options
context:
space:
mode:
authorJavier <dev.git@javispedro.com>2016-01-01 22:05:42 +0100
committerJavier <dev.git@javispedro.com>2016-01-01 22:05:42 +0100
commita45977185a485624095bff1a15024e9199eee676 (patch)
tree6cc57d085bdd01e493477c870dbe0548137998e1 /musicconn.cc
parenta24034bdfea259cdc09c74217be75d4f9de0dce5 (diff)
downloadsapd-a45977185a485624095bff1a15024e9199eee676.tar.gz
sapd-a45977185a485624095bff1a15024e9199eee676.zip
reorganize source files into SAP and agents
Diffstat (limited to 'musicconn.cc')
-rw-r--r--musicconn.cc181
1 files changed, 0 insertions, 181 deletions
diff --git a/musicconn.cc b/musicconn.cc
deleted file mode 100644
index cfc375d..0000000
--- a/musicconn.cc
+++ /dev/null
@@ -1,181 +0,0 @@
-#include <QtCore/QDebug>
-#include <QtCore/QBuffer>
-#include <QtCore/QJsonDocument>
-#include <QtCore/QJsonObject>
-#include <QtGui/QImage>
-
-#include "sappeer.h"
-#include "musicconn.h"
-
-#if SAILFISH
-#include "libwatchfish/musiccontroller.h"
-
-static watchfish::MusicController *controller = 0;
-#endif
-
-MusicConn::MusicConn(SAPConnection *conn, QObject *parent)
- : QObject(parent), _conn(conn), _socket(conn->getSocket(100))
-{
- connect(_conn, SIGNAL(disconnected()), SLOT(deleteLater()));
- connect(_conn, SIGNAL(destroyed()), SLOT(deleteLater()));
- Q_ASSERT(_socket);
- connect(_socket, SIGNAL(connected()), SLOT(handleConnected()));
- connect(_socket, SIGNAL(messageReceived()), SLOT(handleMessageReceived()));
-}
-
-QString MusicConn::encodeAlbumArt(const QString &albumArt)
-{
- QImage image;
-
- if (image.load(albumArt)) {
- QByteArray imgData;
- QBuffer buf(&imgData);
- buf.open(QIODevice::WriteOnly);
- image = image.scaled(160, 160, Qt::KeepAspectRatio);
- image.save(&buf, "JPEG", 60);
- buf.close();
-
- return QString::fromLatin1(imgData.toBase64());
- } else {
- return QString();
- }
-}
-
-void MusicConn::sendMessage(const QJsonObject &msg)
-{
- QJsonDocument doc(msg);
- QByteArray data = doc.toJson(QJsonDocument::Compact);
-
- qDebug() << data;
-
- _socket->send(data);
-}
-
-void MusicConn::handleMessage(const QJsonObject &msg)
-{
- const QString msgId = msg["msgId"].toString();
- if (msgId == "music-mediachanged-req") {
- sendResponse("music-mediachanged-rsp", "success", 0);
- sendMediaChangedInd();
- } else if (msgId == "music-getattribute-req") {
- QJsonObject rsp;
- rsp.insert("msgId", QLatin1String("music-getattribute-rsp"));
- rsp.insert("result", QLatin1String("success"));
- rsp.insert("reason", 0);
- QString repeat("repeatoff"), shuffle("off");
- int volume = 100;
-#if SAILFISH
- switch (controller->repeat()) {
- case watchfish::MusicController::RepeatNone:
- repeat = "repeatoff";
- break;
- case watchfish::MusicController::RepeatTrack:
- repeat = "repeatone";
- break;
- case watchfish::MusicController::RepeatPlaylist:
- repeat = "repeatall";
- break;
- }
-
- if (controller->shuffle()) {
- shuffle = "on";
- }
-#endif
- rsp.insert("repeat", repeat);
- rsp.insert("shuffle", shuffle);
- rsp.insert("volume", volume);
-
- sendMessage(rsp);
- } else if (msgId == "music-remotecontrol-req") {
- QString action = msg["action"].toString();
- QString status = msg["status"].toString();
- bool pressed = status == "pressed";
-
-#if SAILFISH
- if (action == "playpause" && pressed) {
- controller->playPause();
- } else if (action == "forward" && pressed) {
- controller->next();
- } else if (action == "rewind" && pressed) {
- controller->previous();
- }
-#endif
- }
-}
-
-void MusicConn::sendResponse(const QString &id, const QString &result, int reason)
-{
- QJsonObject obj;
- obj.insert("msgId", id);
- obj.insert("result", result);
- obj.insert("reason", reason);
- sendMessage(obj);
-}
-
-void MusicConn::sendMediaChangedInd()
-{
- QJsonObject obj;
- obj.insert("msgId", QLatin1String("music-mediachanged-ind"));
-
-#if SAILFISH
- obj.insert("artist", controller->artist());
- obj.insert("album", controller->album());
- obj.insert("title", controller->title());
- obj.insert("duration", QString::number(controller->duration()));
- obj.insert("audioId", QString());
- obj.insert("artistId", QString());
- obj.insert("albumId", QString());
- obj.insert("albumArt", QString());
- if (controller->status() == watchfish::MusicController::StatusPlaying) {
- obj.insert("playStatus", QLatin1String("true"));
- } else {
- obj.insert("playStatus", QLatin1String("false"));
- }
- QString albumArtPath = controller->albumArt();
- if (!albumArtPath.isEmpty()) {
- obj.insert("image", encodeAlbumArt(albumArtPath));
- } else {
- obj.insert("image", QString());
- }
- obj.insert("favoriteStatus", QLatin1String("false"));
-#endif
-
- sendMessage(obj);
-}
-
-void MusicConn::handleConnected()
-{
- qDebug() << "Music connected";
-#if SAILFISH
- if (!controller) {
- controller = new watchfish::MusicController;
- }
- connect(controller, &watchfish::MusicController::metadataChanged,
- this, &MusicConn::handleMetadataChanged);
- connect(controller, &watchfish::MusicController::statusChanged,
- this, &MusicConn::handleMetadataChanged);
-#endif
-}
-
-void MusicConn::handleMessageReceived()
-{
- QByteArray data = _socket->receive();
-
- qDebug() << "Music msg received" << data;
-
- QJsonParseError error;
- QJsonDocument json = QJsonDocument::fromJson(data, &error);
-
- if (json.isObject()) {
- handleMessage(json.object());
- } else {
- qWarning() << "Cannot parse JSON msg:" << error.errorString();
- }
-}
-
-void MusicConn::handleMetadataChanged()
-{
- if (_socket->isOpen()) {
- sendMediaChangedInd();
- }
-}