Merge PR #219: Add support for more media service icons

pull/229/head
Jenkins nymea 2019-10-18 14:57:23 +02:00
commit 55011abaf9
6 changed files with 131 additions and 7 deletions

View File

@ -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());

View File

@ -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<int>(MediaBrowserIconNone);

View File

@ -50,10 +50,13 @@ public:
MediaBrowserIconVTuner = 204,
MediaBrowserIconTidal = 205,
MediaBrowserIconAirable = 206,
MediaBrowserIconDeezer = 207,
MediaBrowserIconNapster = 208,
MediaBrowserIconSoundCloud = 209,
};
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);

View File

@ -41,6 +41,7 @@
#include "devicepluginmock.h"
#include "httpdaemon.h"
#include "types/mediabrowseritem.h"
#include "devices/device.h"
#include "devices/devicediscoveryinfo.h"
#include "devices/devicepairinginfo.h"
@ -960,4 +961,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));
}

View File

@ -1406,7 +1406,18 @@
"Time",
"Object"
],
"BrowserIcon": "$ref:BrowserIcon",
"BrowserIcon": [
"BrowserIconNone",
"BrowserIconFolder",
"BrowserIconFile",
"BrowserIconMusic",
"BrowserIconVideo",
"BrowserIconPictures",
"BrowserIconApplication",
"BrowserIconDocument",
"BrowserIconPackage",
"BrowserIconFavorites"
],
"BrowserItem": {
"actionTypeIds": [
"Uuid"
@ -1614,7 +1625,29 @@
"LoggingSourceRules",
"LoggingSourceBrowserActions"
],
"MediaBrowserIcon": "$ref:MediaBrowserIcon",
"MediaBrowserIcon": [
"MediaBrowserIconNone",
"MediaBrowserIconPlaylist",
"MediaBrowserIconRecentlyPlayed",
"MediaBrowserIconLibrary",
"MediaBrowserIconMusicLibrary",
"MediaBrowserIconVideoLibrary",
"MediaBrowserIconPictureLibrary",
"MediaBrowserIconDisk",
"MediaBrowserIconUSB",
"MediaBrowserIconNetwork",
"MediaBrowserIconAux",
"MediaBrowserIconSpotify",
"MediaBrowserIconAmazon",
"MediaBrowserIconTuneIn",
"MediaBrowserIconSiriusXM",
"MediaBrowserIconVTuner",
"MediaBrowserIconTidal",
"MediaBrowserIconAirable",
"MediaBrowserIconDeezer",
"MediaBrowserIconNapster",
"MediaBrowserIconSoundCloud"
],
"MqttPolicy": {
"allowedPublishTopicFilters": "StringList",
"allowedSubscribeTopicFilters": "StringList",

View File

@ -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());
}
}
}