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
This commit is contained in:
parent
41e6016c11
commit
e66096d05a
3 changed files with 32 additions and 2 deletions
|
@ -10,7 +10,7 @@ cmake_minimum_required(VERSION 2.8.12)
|
|||
find_package(ECM 0.0.9 REQUIRED NO_MODULE)
|
||||
set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR} ${CMAKE_SOURCE_DIR}/cmake)
|
||||
|
||||
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(KF5DocTools)
|
||||
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);
|
||||
imageBuffer.open(QIODevice::WriteOnly);
|
||||
artImage.save(&imageBuffer, "PNG");
|
||||
|
||||
const QString base64Image = QString::fromLatin1(imageBufferArray.toBase64());
|
||||
np.set("artImage", base64Image);
|
||||
somethingToSend = true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
if (properties.contains("PlaybackStatus")) {
|
||||
|
|
Loading…
Reference in a new issue