Commit e66096d0 authored by Pinak Ahuja's avatar Pinak Ahuja

Add album art support for mpris plugin

Right now we only support album art if the player provides a local URL,
but some players provide a remote URL (spotify) I'll be adding support
for that in a later patch.

REVIEW: 128199
parent 41e6016c
......@@ -10,7 +10,7 @@ cmake_minimum_required(VERSION 2.8.12)
find_package(ECM 0.0.9 REQUIRED NO_MODULE)
find_package(Qt5 5.2 REQUIRED COMPONENTS Quick)
find_package(Qt5 5.2 REQUIRED COMPONENTS Quick Gui)
find_package(KF5 REQUIRED COMPONENTS I18n ConfigWidgets DBusAddons)
find_package(Qca-qt5 2.1.0 REQUIRED)
......@@ -16,4 +16,4 @@ qt5_add_dbus_interface(
kdeconnect_add_plugin(kdeconnect_mpriscontrol JSON kdeconnect_mpriscontrol.json SOURCES ${kdeconnect_mpriscontrol_SRCS})
target_link_libraries(kdeconnect_mpriscontrol Qt5::DBus kdeconnectcore)
target_link_libraries(kdeconnect_mpriscontrol Qt5::DBus kdeconnectcore Qt5::Gui)
......@@ -28,6 +28,10 @@
#include <QDBusMessage>
#include <QDBusServiceWatcher>
#include <QImage>
#include <QBuffer>
#include <QByteArray>
#include <KPluginFactory>
#include <core/device.h>
......@@ -136,6 +140,32 @@ void MprisControlPlugin::propertiesChanged(const QString& propertyInterface, con
somethingToSend = true;
if (nowPlayingMap.contains("mpris:artUrl")) {
const QUrl artUrl(nowPlayingMap["mpris:artUrl"].toString());
* We only handle images stored locally right now but it should be easy
* enough to download remote images and send them.
const int artMaxWidth = 512;
const int artMaxHeight = 512;
if (artUrl.isLocalFile()) {
QImage artImage(artUrl.path());
// Scale the image to a sane size
artImage = artImage.scaled({artMaxWidth, artMaxHeight}, Qt::KeepAspectRatio, Qt::SmoothTransformation);
QByteArray imageBufferArray;
QBuffer imageBuffer(&imageBufferArray);;, "PNG");
const QString base64Image = QString::fromLatin1(imageBufferArray.toBase64());
np.set("artImage", base64Image);
somethingToSend = true;
if (properties.contains("PlaybackStatus")) {
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment