added more item query options

This commit is contained in:
nymea 2019-10-15 15:54:25 +02:00 committed by bernhard.trinnes
parent daaf76ed58
commit b65668b7ec

View File

@ -990,6 +990,7 @@ void IntegrationPluginDenon::onHeosGroupsChanged()
{ {
Heos *heos = static_cast<Heos *>(sender()); Heos *heos = static_cast<Heos *>(sender());
heos->getGroups(); heos->getGroups();
heos->getPlayers();
} }
void IntegrationPluginDenon::onAvahiServiceEntryAdded(const ZeroConfServiceEntry &serviceEntry) void IntegrationPluginDenon::onAvahiServiceEntryAdded(const ZeroConfServiceEntry &serviceEntry)
@ -1035,45 +1036,54 @@ void IntegrationPluginDenon::browseDevice(BrowseResult *result)
heos->getMusicSources(); heos->getMusicSources();
m_pendingGetSourcesRequest.insert(heos, result); m_pendingGetSourcesRequest.insert(heos, result);
connect(result, &QObject::destroyed, this, [this, heos](){m_pendingGetSourcesRequest.remove(heos);}); connect(result, &QObject::destroyed, this, [this, heos](){m_pendingGetSourcesRequest.remove(heos);});
} else if (result->itemId().startsWith("type=group")){ }
qDebug(dcDenon()) << "Browse source" << result->itemId();
int pid = result->device()->paramValue(heosPlayerDevicePlayerIdParamTypeId).toInt(); QUrlQuery itemQuery(result->itemId());
HeosPlayer *browsingPlayer = m_playerBuffer.value(pid); if (itemQuery.queryItemValue("type") == "group"){
foreach (GroupObject group, m_groupBuffer) { if (itemQuery.hasQueryItem("group")) {
MediaBrowserItem item; //TBD list players in groups
item.setBrowsable(true); } else {
item.setExecutable(true); qDebug(dcDenon()) << "Browse source" << result->itemId();
item.setIcon(BrowserItem::BrowserIconFolder); int pid = result->device()->paramValue(heosPlayerDevicePlayerIdParamTypeId).toInt();
item.setDisplayName(group.name); HeosPlayer *browsingPlayer = m_playerBuffer.value(pid);
item.setId(result->itemId() + "&" + "group=" + QString::number(group.groupId)); foreach (GroupObject group, m_groupBuffer) {
// if player is already part of the group set action type id to unjoin MediaBrowserItem item;
if (browsingPlayer->groupId() == group.groupId) { item.setBrowsable(false);
item.setActionTypeIds(QList<ActionTypeId>() << heosPlayerUnjoinBrowserItemActionTypeId); item.setExecutable(false);
} else { item.setMediaIcon(MediaBrowserItem::MediaBrowserIconNone);
item.setIcon(BrowserItem::BrowserIconPackage);
item.setDisplayName(group.name);
item.setId(result->itemId() + "&" + "group=" + QString::number(group.groupId));
// if player is already part of the group set action type id to unjoin
if (browsingPlayer->groupId() == group.groupId) {
item.setActionTypeIds(QList<ActionTypeId>() << heosPlayerUnjoinBrowserItemActionTypeId);
} else {
item.setActionTypeIds(QList<ActionTypeId>() << heosPlayerJoinBrowserItemActionTypeId);
}
result->addItem(item);
}
foreach (HeosPlayer *player, m_playerBuffer.values()) {
qDebug(dcDenon) << "Adding group item" << player->name();
if (browsingPlayer->playerId() == player->playerId()) { //player is the current browsing device
continue;
}
if (player->groupId() != -1) { // Dont display players that are already assigned to a group
continue;
}
MediaBrowserItem item;
item.setBrowsable(false);
item.setExecutable(false);
item.setMediaIcon(MediaBrowserItem::MediaBrowserIconMusicLibrary);
item.setIcon(BrowserItem::BrowserIconFile);
item.setDisplayName(player->name());
item.setId(result->itemId() + "&player=" + QString::number(player->playerId()));
item.setActionTypeIds(QList<ActionTypeId>() << heosPlayerJoinBrowserItemActionTypeId); item.setActionTypeIds(QList<ActionTypeId>() << heosPlayerJoinBrowserItemActionTypeId);
} result->addItem(item);
result->addItem(item);
}
foreach (HeosPlayer *player, m_playerBuffer.values()) {
qDebug(dcDenon) << "Adding group item" << player->name();
if (browsingPlayer->playerId() == player->playerId()) { //player is the current browsing device
continue;
} }
if (player->groupId() != -1) {// Dont display players that are already assigned to a group result->finish(Device::DeviceErrorNoError);
continue;
}
MediaBrowserItem item;
item.setBrowsable(true);
item.setExecutable(true);
item.setIcon(BrowserItem::BrowserIconFile);
item.setDisplayName(player->name());
item.setId(result->itemId() + "&player=" + QString::number(player->playerId()));
item.setActionTypeIds(QList<ActionTypeId>() << heosPlayerJoinBrowserItemActionTypeId);
result->addItem(item);
} }
result->finish(Device::DeviceErrorNoError);
} else if (result->itemId().startsWith("source=")){ } else if (result->itemId().startsWith("source=")){
qDebug(dcDenon()) << "Browse source" << result->itemId(); qDebug(dcDenon()) << "Browse source" << result->itemId();