From 1f68389a85b6ca5e644cf373bf15fd7516a0451a Mon Sep 17 00:00:00 2001 From: Michael Zanetti Date: Tue, 8 Oct 2019 15:51:10 +0200 Subject: [PATCH 1/4] Fix Browser icon definition in introspect --- libnymea-core/jsonrpc/jsontypes.cpp | 4 ++-- tests/auto/api.json | 34 +++++++++++++++++++++++++++-- tests/auto/jsonrpc/testjsonrpc.cpp | 1 + 3 files changed, 35 insertions(+), 4 deletions(-) diff --git a/libnymea-core/jsonrpc/jsontypes.cpp b/libnymea-core/jsonrpc/jsontypes.cpp index 88326016..72de8895 100644 --- a/libnymea-core/jsonrpc/jsontypes.cpp +++ b/libnymea-core/jsonrpc/jsontypes.cpp @@ -490,8 +490,8 @@ QVariantMap JsonTypes::allTypes() allTypes.insert("UserError", userError()); allTypes.insert("TagError", tagError()); allTypes.insert("CloudConnectionState", cloudConnectionState()); - allTypes.insert("BrowserIcon", browserIconRef()); - allTypes.insert("MediaBrowserIcon", mediaBrowserIconRef()); + allTypes.insert("BrowserIcon", browserIcon()); + allTypes.insert("MediaBrowserIcon", mediaBrowserIcon()); allTypes.insert("StateType", stateTypeDescription()); allTypes.insert("StateDescriptor", stateDescriptorDescription()); diff --git a/tests/auto/api.json b/tests/auto/api.json index 35343857..7af31adc 100644 --- a/tests/auto/api.json +++ b/tests/auto/api.json @@ -1399,7 +1399,18 @@ "Time", "Object" ], - "BrowserIcon": "$ref:BrowserIcon", + "BrowserIcon": [ + "BrowserIconNone", + "BrowserIconFolder", + "BrowserIconFile", + "BrowserIconMusic", + "BrowserIconVideo", + "BrowserIconPictures", + "BrowserIconApplication", + "BrowserIconDocument", + "BrowserIconPackage", + "BrowserIconFavorites" + ], "BrowserItem": { "actionTypeIds": [ "Uuid" @@ -1607,7 +1618,26 @@ "LoggingSourceRules", "LoggingSourceBrowserActions" ], - "MediaBrowserIcon": "$ref:MediaBrowserIcon", + "MediaBrowserIcon": [ + "MediaBrowserIconNone", + "MediaBrowserIconPlaylist", + "MediaBrowserIconRecentlyPlayed", + "MediaBrowserIconLibrary", + "MediaBrowserIconMusicLibrary", + "MediaBrowserIconVideoLibrary", + "MediaBrowserIconPictureLibrary", + "MediaBrowserIconDisk", + "MediaBrowserIconUSB", + "MediaBrowserIconNetwork", + "MediaBrowserIconAux", + "MediaBrowserIconSpotify", + "MediaBrowserIconAmazon", + "MediaBrowserIconTuneIn", + "MediaBrowserIconSiriusXM", + "MediaBrowserIconVTuner", + "MediaBrowserIconTidal", + "MediaBrowserIconAirable" + ], "MqttPolicy": { "allowedPublishTopicFilters": "StringList", "allowedSubscribeTopicFilters": "StringList", diff --git a/tests/auto/jsonrpc/testjsonrpc.cpp b/tests/auto/jsonrpc/testjsonrpc.cpp index 86dea687..48121703 100644 --- a/tests/auto/jsonrpc/testjsonrpc.cpp +++ b/tests/auto/jsonrpc/testjsonrpc.cpp @@ -616,6 +616,7 @@ void TestJSONRPC::introspect() QString typeId = ref; typeId.remove("$ref:"); QVERIFY2(types.contains(typeId), QString("Undefined ref: %1. Did you forget to add it to JsonTypes::allTypes()?").arg(ref).toLatin1().data()); + QVERIFY2(!types.value(typeId).toString().startsWith("$ref:"), QString("Definition for %1 must not be a reference itself").arg(ref).toLatin1().data()); } } } From 9b6453b85e517301b206cec9a7bf2a6b8fa41a57 Mon Sep 17 00:00:00 2001 From: Michael Zanetti Date: Tue, 8 Oct 2019 12:47:00 +0200 Subject: [PATCH 2/4] Add mroe media service icons --- libnymea/types/mediabrowseritem.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/libnymea/types/mediabrowseritem.h b/libnymea/types/mediabrowseritem.h index 0d496d8e..8d9da867 100644 --- a/libnymea/types/mediabrowseritem.h +++ b/libnymea/types/mediabrowseritem.h @@ -50,6 +50,9 @@ public: MediaBrowserIconVTuner = 204, MediaBrowserIconTidal = 205, MediaBrowserIconAirable = 206, + MediaBrowserIconDeezer = 207, + MediaBrowserIconNapster = 208, + MediaBrowserIconSoundCloud = 209, }; Q_ENUM(MediaBrowserIcon) From f65b49bf61051a2c817f4b7b252fd1830301f23c Mon Sep 17 00:00:00 2001 From: Michael Zanetti Date: Tue, 8 Oct 2019 13:25:48 +0200 Subject: [PATCH 3/4] Add media icons to mock --- libnymea/types/mediabrowseritem.cpp | 4 +- libnymea/types/mediabrowseritem.h | 2 +- plugins/mock/devicepluginmock.cpp | 87 +++++++++++++++++++++++++++++ 3 files changed, 90 insertions(+), 3 deletions(-) diff --git a/libnymea/types/mediabrowseritem.cpp b/libnymea/types/mediabrowseritem.cpp index cbc6142d..b2880361 100644 --- a/libnymea/types/mediabrowseritem.cpp +++ b/libnymea/types/mediabrowseritem.cpp @@ -22,8 +22,8 @@ #include "mediabrowseritem.h" -MediaBrowserItem::MediaBrowserItem(const QString &id, const QString &displayName, bool browsable): - BrowserItem(id, displayName, browsable) +MediaBrowserItem::MediaBrowserItem(const QString &id, const QString &displayName, bool browsable, bool executable): + BrowserItem(id, displayName, browsable, executable) { // Init defaults m_extendedProperties["mediaIcon"] = static_cast(MediaBrowserIconNone); diff --git a/libnymea/types/mediabrowseritem.h b/libnymea/types/mediabrowseritem.h index 8d9da867..64df18b2 100644 --- a/libnymea/types/mediabrowseritem.h +++ b/libnymea/types/mediabrowseritem.h @@ -56,7 +56,7 @@ public: }; Q_ENUM(MediaBrowserIcon) - MediaBrowserItem(const QString &id = QString(), const QString &displayName = QString(), bool browsable = false); + MediaBrowserItem(const QString &id = QString(), const QString &displayName = QString(), bool browsable = false, bool executable = false); MediaBrowserIcon mediaIcon() const; void setMediaIcon(MediaBrowserIcon mediaIcon); diff --git a/plugins/mock/devicepluginmock.cpp b/plugins/mock/devicepluginmock.cpp index a96482f9..73e35803 100644 --- a/plugins/mock/devicepluginmock.cpp +++ b/plugins/mock/devicepluginmock.cpp @@ -41,6 +41,7 @@ #include "devicepluginmock.h" #include "httpdaemon.h" +#include "types/mediabrowseritem.h" #include "devices/device.h" #include "plugininfo.h" @@ -735,4 +736,90 @@ void DevicePluginMock::generateBrowseItems() item.setIcon(BrowserItem::BrowserIconFile); folderNode->addChild(new VirtualFsNode(item)); + item = BrowserItem("mediaservices", "Media services", true, false); + item.setDescription("I list media icons"); + item.setIcon(BrowserItem::BrowserIconMusic); + VirtualFsNode *mediaNode = new VirtualFsNode(item); + m_virtualFs->addChild(mediaNode); + + MediaBrowserItem mediaItem = MediaBrowserItem("playlist", "Playlists", false, false); + mediaItem.setMediaIcon(MediaBrowserItem::MediaBrowserIconPlaylist); + mediaNode->addChild(new VirtualFsNode(mediaItem)); + + mediaItem = MediaBrowserItem("recent", "Recently played", false, false); + mediaItem.setMediaIcon(MediaBrowserItem::MediaBrowserIconRecentlyPlayed); + mediaNode->addChild(new VirtualFsNode(mediaItem)); + + mediaItem = MediaBrowserItem("library", "Library", false, false); + mediaItem.setMediaIcon(MediaBrowserItem::MediaBrowserIconLibrary); + mediaNode->addChild(new VirtualFsNode(mediaItem)); + + mediaItem = MediaBrowserItem("musiclibrary", "Music Library", false, false); + mediaItem.setMediaIcon(MediaBrowserItem::MediaBrowserIconMusicLibrary); + mediaNode->addChild(new VirtualFsNode(mediaItem)); + + mediaItem = MediaBrowserItem("videolibrary", "Video library", false, false); + mediaItem.setMediaIcon(MediaBrowserItem::MediaBrowserIconVideoLibrary); + mediaNode->addChild(new VirtualFsNode(mediaItem)); + + mediaItem = MediaBrowserItem("picturelibrary", "picture library", false, false); + mediaItem.setMediaIcon(MediaBrowserItem::MediaBrowserIconPictureLibrary); + mediaNode->addChild(new VirtualFsNode(mediaItem)); + + + mediaItem = MediaBrowserItem("disk", "CD", false, false); + mediaItem.setMediaIcon(MediaBrowserItem::MediaBrowserIconDisk); + mediaNode->addChild(new VirtualFsNode(mediaItem)); + + mediaItem = MediaBrowserItem("usb", "USB", false, false); + mediaItem.setMediaIcon(MediaBrowserItem::MediaBrowserIconUSB); + mediaNode->addChild(new VirtualFsNode(mediaItem)); + + mediaItem = MediaBrowserItem("network", "Network", false, false); + mediaItem.setMediaIcon(MediaBrowserItem::MediaBrowserIconNetwork); + mediaNode->addChild(new VirtualFsNode(mediaItem)); + + mediaItem = MediaBrowserItem("aux", "AUX", false, false); + mediaItem.setMediaIcon(MediaBrowserItem::MediaBrowserIconAux); + mediaNode->addChild(new VirtualFsNode(mediaItem)); + + mediaItem = MediaBrowserItem("spotify", "Spotify", false, false); + mediaItem.setMediaIcon(MediaBrowserItem::MediaBrowserIconSpotify); + mediaNode->addChild(new VirtualFsNode(mediaItem)); + + mediaItem = MediaBrowserItem("amazon", "Amazon Music", false, false); + mediaItem.setMediaIcon(MediaBrowserItem::MediaBrowserIconAmazon); + mediaNode->addChild(new VirtualFsNode(mediaItem)); + + mediaItem = MediaBrowserItem("tunein", "TuneIn", false, false); + mediaItem.setMediaIcon(MediaBrowserItem::MediaBrowserIconTuneIn); + mediaNode->addChild(new VirtualFsNode(mediaItem)); + + mediaItem = MediaBrowserItem("siriusxm", "Sirius XM", false, false); + mediaItem.setMediaIcon(MediaBrowserItem::MediaBrowserIconSiriusXM); + mediaNode->addChild(new VirtualFsNode(mediaItem)); + + mediaItem = MediaBrowserItem("vTuner", "vTuner", false, false); + mediaItem.setMediaIcon(MediaBrowserItem::MediaBrowserIconVTuner); + mediaNode->addChild(new VirtualFsNode(mediaItem)); + + mediaItem = MediaBrowserItem("tidal", "Tidal", false, false); + mediaItem.setMediaIcon(MediaBrowserItem::MediaBrowserIconTidal); + mediaNode->addChild(new VirtualFsNode(mediaItem)); + + mediaItem = MediaBrowserItem("airable", "airable", false, false); + mediaItem.setMediaIcon(MediaBrowserItem::MediaBrowserIconAirable); + mediaNode->addChild(new VirtualFsNode(mediaItem)); + + mediaItem = MediaBrowserItem("deezer", "Deezer", false, false); + mediaItem.setMediaIcon(MediaBrowserItem::MediaBrowserIconDeezer); + mediaNode->addChild(new VirtualFsNode(mediaItem)); + + mediaItem = MediaBrowserItem("napster", "Napster", false, false); + mediaItem.setMediaIcon(MediaBrowserItem::MediaBrowserIconNapster); + mediaNode->addChild(new VirtualFsNode(mediaItem)); + + mediaItem = MediaBrowserItem("soundcloud", "SoundCloud", false, false); + mediaItem.setMediaIcon(MediaBrowserItem::MediaBrowserIconSoundCloud); + mediaNode->addChild(new VirtualFsNode(mediaItem)); } From 5f11c5062a813dac17c66fc3855da50f477fabf5 Mon Sep 17 00:00:00 2001 From: Michael Zanetti Date: Tue, 8 Oct 2019 17:28:33 +0200 Subject: [PATCH 4/4] Include api changes --- tests/auto/api.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tests/auto/api.json b/tests/auto/api.json index 7af31adc..69ea13c1 100644 --- a/tests/auto/api.json +++ b/tests/auto/api.json @@ -1636,7 +1636,10 @@ "MediaBrowserIconSiriusXM", "MediaBrowserIconVTuner", "MediaBrowserIconTidal", - "MediaBrowserIconAirable" + "MediaBrowserIconAirable", + "MediaBrowserIconDeezer", + "MediaBrowserIconNapster", + "MediaBrowserIconSoundCloud" ], "MqttPolicy": { "allowedPublishTopicFilters": "StringList",