added more item query options
This commit is contained in:
parent
daaf76ed58
commit
b65668b7ec
@ -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();
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user