Merge PR #232: Bose: Add support for presets
commit
bed170ebab
|
|
@ -87,6 +87,7 @@ void DevicePluginBose::setupDevice(DeviceSetupInfo *info)
|
|||
connect(soundTouch, &SoundTouch::bassCapabilitiesReceived, this, &DevicePluginBose::onBassCapabilitiesObjectReceived);
|
||||
connect(soundTouch, &SoundTouch::zoneReceived, this, &DevicePluginBose::onZoneObjectReceived);
|
||||
connect(soundTouch, &SoundTouch::requestExecuted, this, &DevicePluginBose::onRequestExecuted);
|
||||
connect(soundTouch, &SoundTouch::presetsReceived, this, &DevicePluginBose::onPresetsReceived);
|
||||
m_soundTouch.insert(info->device(), soundTouch);
|
||||
return info->finish(Device::DeviceErrorNoError);
|
||||
|
||||
|
|
@ -163,37 +164,37 @@ void DevicePluginBose::executeAction(DeviceActionInfo *info)
|
|||
|
||||
if (action.actionTypeId() == soundtouchPowerActionTypeId) {
|
||||
//bool power = action.param(soundtouchPowerActionPowerParamTypeId).value().toBool();
|
||||
QUuid requestId = soundTouch->setKey(KEY_VALUE::KEY_VALUE_POWER); //only toggling possible
|
||||
QUuid requestId = soundTouch->setKey(KEY_VALUE::KEY_VALUE_POWER, true); //only toggling possible
|
||||
m_pendingActions.insert(requestId, info);
|
||||
connect(info, &DeviceActionInfo::aborted, this, [requestId, this] {m_pendingActions.remove(requestId);});
|
||||
|
||||
} else if (action.actionTypeId() == soundtouchMuteActionTypeId) {
|
||||
QUuid requestId = soundTouch->setKey(KEY_VALUE::KEY_VALUE_MUTE); //only toggling possible
|
||||
QUuid requestId = soundTouch->setKey(KEY_VALUE::KEY_VALUE_MUTE, true); //only toggling possible
|
||||
m_pendingActions.insert(requestId, info);
|
||||
connect(info, &DeviceActionInfo::aborted, this, [requestId, this] {m_pendingActions.remove(requestId);});
|
||||
|
||||
} else if (action.actionTypeId() == soundtouchPlayActionTypeId) {
|
||||
QUuid requestId = soundTouch->setKey(KEY_VALUE::KEY_VALUE_PLAY);
|
||||
QUuid requestId = soundTouch->setKey(KEY_VALUE::KEY_VALUE_PLAY, true);
|
||||
m_pendingActions.insert(requestId, info);
|
||||
connect(info, &DeviceActionInfo::aborted, this, [requestId, this] {m_pendingActions.remove(requestId);});
|
||||
|
||||
} else if (action.actionTypeId() == soundtouchPauseActionTypeId) {
|
||||
QUuid requestId = soundTouch->setKey(KEY_VALUE::KEY_VALUE_PAUSE);
|
||||
QUuid requestId = soundTouch->setKey(KEY_VALUE::KEY_VALUE_PAUSE, true);
|
||||
m_pendingActions.insert(requestId, info);
|
||||
connect(info, &DeviceActionInfo::aborted, this, [requestId, this] {m_pendingActions.remove(requestId);});
|
||||
|
||||
} else if (action.actionTypeId() == soundtouchStopActionTypeId) {
|
||||
QUuid requestId = soundTouch->setKey(KEY_VALUE::KEY_VALUE_STOP);
|
||||
QUuid requestId = soundTouch->setKey(KEY_VALUE::KEY_VALUE_STOP, true);
|
||||
m_pendingActions.insert(requestId, info);
|
||||
connect(info, &DeviceActionInfo::aborted, this, [requestId, this] {m_pendingActions.remove(requestId);});
|
||||
|
||||
} else if (action.actionTypeId() == soundtouchSkipNextActionTypeId) {
|
||||
QUuid requestId = soundTouch->setKey(KEY_VALUE::KEY_VALUE_NEXT_TRACK);
|
||||
QUuid requestId = soundTouch->setKey(KEY_VALUE::KEY_VALUE_NEXT_TRACK, true);
|
||||
m_pendingActions.insert(requestId, info);
|
||||
connect(info, &DeviceActionInfo::aborted, this, [requestId, this] {m_pendingActions.remove(requestId);});
|
||||
|
||||
} else if (action.actionTypeId() == soundtouchSkipBackActionTypeId) {
|
||||
QUuid requestId = soundTouch->setKey(KEY_VALUE::KEY_VALUE_PREV_TRACK);
|
||||
QUuid requestId = soundTouch->setKey(KEY_VALUE::KEY_VALUE_PREV_TRACK, true);
|
||||
m_pendingActions.insert(requestId, info);
|
||||
connect(info, &DeviceActionInfo::aborted, this, [requestId, this] {m_pendingActions.remove(requestId);});
|
||||
|
||||
|
|
@ -202,9 +203,9 @@ void DevicePluginBose::executeAction(DeviceActionInfo *info)
|
|||
QUuid requestId;
|
||||
bool shuffle = action.param(soundtouchShuffleActionShuffleParamTypeId).value().toBool();
|
||||
if (shuffle) {
|
||||
requestId = soundTouch->setKey(KEY_VALUE::KEY_VALUE_SHUFFLE_ON);
|
||||
requestId = soundTouch->setKey(KEY_VALUE::KEY_VALUE_SHUFFLE_ON, true);
|
||||
} else {
|
||||
requestId = soundTouch->setKey(KEY_VALUE::KEY_VALUE_SHUFFLE_OFF);
|
||||
requestId = soundTouch->setKey(KEY_VALUE::KEY_VALUE_SHUFFLE_OFF, true);
|
||||
}
|
||||
m_pendingActions.insert(requestId, info);
|
||||
connect(info, &DeviceActionInfo::aborted, this, [requestId, this] {m_pendingActions.remove(requestId);});
|
||||
|
|
@ -214,11 +215,11 @@ void DevicePluginBose::executeAction(DeviceActionInfo *info)
|
|||
QUuid requestId;
|
||||
QString repeat = action.param(soundtouchRepeatActionRepeatParamTypeId).value().toString();
|
||||
if (repeat == "None") {
|
||||
requestId = soundTouch->setKey(KEY_VALUE::KEY_VALUE_REPEAT_OFF);
|
||||
requestId = soundTouch->setKey(KEY_VALUE::KEY_VALUE_REPEAT_OFF, true);
|
||||
} else if (repeat == "One") {
|
||||
requestId = soundTouch->setKey(KEY_VALUE::KEY_VALUE_REPEAT_ONE);
|
||||
requestId = soundTouch->setKey(KEY_VALUE::KEY_VALUE_REPEAT_ONE, true);
|
||||
} else if (repeat == "All") {
|
||||
requestId = soundTouch->setKey(KEY_VALUE::KEY_VALUE_REPEAT_ALL);
|
||||
requestId = soundTouch->setKey(KEY_VALUE::KEY_VALUE_REPEAT_ALL, true);
|
||||
}
|
||||
m_pendingActions.insert(requestId, info);
|
||||
connect(info, &DeviceActionInfo::aborted, this, [requestId, this] {m_pendingActions.remove(requestId);});
|
||||
|
|
@ -242,15 +243,38 @@ void DevicePluginBose::executeAction(DeviceActionInfo *info)
|
|||
QUuid requestId;
|
||||
QString status = action.param(soundtouchPlaybackStatusActionPlaybackStatusParamTypeId).value().toString();
|
||||
if (status == "Playing") {
|
||||
soundTouch->setKey(KEY_VALUE::KEY_VALUE_PLAY);
|
||||
requestId = soundTouch->setKey(KEY_VALUE::KEY_VALUE_PLAY, true);
|
||||
} else if (status == "Paused") {
|
||||
soundTouch->setKey(KEY_VALUE::KEY_VALUE_PAUSE);
|
||||
requestId = soundTouch->setKey(KEY_VALUE::KEY_VALUE_PAUSE, true);
|
||||
} else if (status == "Stopped") {
|
||||
soundTouch->setKey(KEY_VALUE::KEY_VALUE_STOP);
|
||||
requestId = soundTouch->setKey(KEY_VALUE::KEY_VALUE_STOP, true);
|
||||
}
|
||||
m_pendingActions.insert(requestId, info);
|
||||
connect(info, &DeviceActionInfo::aborted, this, [requestId, this] {m_pendingActions.remove(requestId);});
|
||||
|
||||
} else if (action.actionTypeId() == soundtouchSavePresetActionTypeId) {
|
||||
|
||||
QUuid requestId;
|
||||
QString preset = action.param(soundtouchSavePresetActionPresetNumberParamTypeId).value().toString();
|
||||
if (preset.contains("1")) {
|
||||
requestId = soundTouch->setKey(KEY_VALUE::KEY_VALUE_PRESET_1, true);
|
||||
} else if (preset.contains("2")) {
|
||||
requestId = soundTouch->setKey(KEY_VALUE::KEY_VALUE_PRESET_2, true);
|
||||
} else if (preset.contains("3")) {
|
||||
requestId = soundTouch->setKey(KEY_VALUE::KEY_VALUE_PRESET_3, true);
|
||||
} else if (preset.contains("4")) {
|
||||
requestId = soundTouch->setKey(KEY_VALUE::KEY_VALUE_PRESET_4, true);
|
||||
} else if (preset.contains("5")) {
|
||||
requestId = soundTouch->setKey(KEY_VALUE::KEY_VALUE_PRESET_5, true);
|
||||
} else if (preset.contains("6")) {
|
||||
requestId = soundTouch->setKey(KEY_VALUE::KEY_VALUE_PRESET_6, true);
|
||||
} else {
|
||||
qCWarning(dcBose()) << "Unhandled preset number: " << preset;
|
||||
info->finish(Device::DeviceErrorInvalidParameter);
|
||||
return;
|
||||
}
|
||||
m_pendingActions.insert(requestId, info);
|
||||
connect(info, &DeviceActionInfo::aborted, this, [requestId, this] {m_pendingActions.remove(requestId);});
|
||||
} else {
|
||||
qCWarning(dcBose()) << "ActionTypeId not found" << action.actionTypeId();
|
||||
return info->finish(Device::DeviceErrorActionTypeNotFound);
|
||||
|
|
@ -266,9 +290,18 @@ void DevicePluginBose::browseDevice(BrowseResult *result)
|
|||
Device *device = result->device();
|
||||
if (device->deviceClassId() == soundtouchDeviceClassId) {
|
||||
SoundTouch *soundTouch = m_soundTouch.value(device);
|
||||
QUuid requestId = soundTouch->getSources();
|
||||
m_asyncBrowseResults.insert(requestId, result);
|
||||
connect(result, &BrowseResult::aborted, this, [this, requestId]{m_asyncBrowseResults.remove(requestId);});
|
||||
if (result->itemId() == "presets") {
|
||||
QUuid requestId = soundTouch->getPresets();
|
||||
m_asyncBrowseResults.insert(requestId, result);
|
||||
connect(result, &BrowseResult::aborted, this, [this, requestId]{m_asyncBrowseResults.remove(requestId);});
|
||||
} else {
|
||||
BrowserItem presetItem("presets", "Presets", true, false);
|
||||
presetItem.setIcon(BrowserItem::BrowserIcon::BrowserIconFavorites);
|
||||
QUuid requestId = soundTouch->getSources();
|
||||
result->addItem(presetItem);
|
||||
m_asyncBrowseResults.insert(requestId, result);
|
||||
connect(result, &BrowseResult::aborted, this, [this, requestId]{m_asyncBrowseResults.remove(requestId);});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -277,9 +310,18 @@ void DevicePluginBose::browserItem(BrowserItemResult *result)
|
|||
Device *device = result->device();
|
||||
if (device->deviceClassId() == soundtouchDeviceClassId) {
|
||||
SoundTouch *soundTouch = m_soundTouch.value(device);
|
||||
QUuid requestId = soundTouch->getSources();
|
||||
m_asyncBrowseItemResults.insert(requestId, result);
|
||||
connect(result, &BrowserItemResult::aborted, this, [this, requestId]{m_asyncBrowseItemResults.remove(requestId);});
|
||||
|
||||
if (result->itemId() == "presets") {
|
||||
QUuid requestId = soundTouch->getPresets();
|
||||
m_asyncBrowseItemResults.insert(requestId, result);
|
||||
connect(result, &BrowserItemResult::aborted, this, [this, requestId]{m_asyncBrowseItemResults.remove(requestId);});
|
||||
} else {
|
||||
BrowserItem presetItem("presets", "Presets", true, false);
|
||||
presetItem.setIcon(BrowserItem::BrowserIcon::BrowserIconFavorites);
|
||||
QUuid requestId = soundTouch->getSources();
|
||||
m_asyncBrowseItemResults.insert(requestId, result);
|
||||
connect(result, &BrowserItemResult::aborted, this, [this, requestId]{m_asyncBrowseItemResults.remove(requestId);});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -288,16 +330,40 @@ void DevicePluginBose::executeBrowserItem(BrowserActionInfo *info)
|
|||
Device *device = info->device();
|
||||
if (device->deviceClassId() == soundtouchDeviceClassId) {
|
||||
SoundTouch *soundTouch = m_soundTouch.value(device);
|
||||
SourcesObject sources = m_sourcesObjects.value(device);
|
||||
foreach (SourceItemObject source, sources.sourceItems) {
|
||||
if (source.source == info->browserAction().itemId()) {
|
||||
ContentItemObject contentItem;
|
||||
contentItem.source = source.source;
|
||||
contentItem.sourceAccount = source.sourceAccount;
|
||||
QUuid requestId = soundTouch->setSource(contentItem);
|
||||
m_asyncExecuteBrowseItems.insert(requestId, info);
|
||||
connect(info, &BrowserActionInfo::aborted, this, [this, requestId]{m_asyncExecuteBrowseItems.remove(requestId);});
|
||||
break;
|
||||
if (info->browserAction().itemId().startsWith("presets")) {
|
||||
QUuid requestId;
|
||||
int number = info->browserAction().itemId().split("&").last().toInt();
|
||||
if (number == 1) {
|
||||
requestId = soundTouch->setKey(KEY_VALUE::KEY_VALUE_PRESET_1, false);
|
||||
} else if (number == 2) {
|
||||
requestId = soundTouch->setKey(KEY_VALUE::KEY_VALUE_PRESET_2, false);
|
||||
} else if (number == 3) {
|
||||
requestId = soundTouch->setKey(KEY_VALUE::KEY_VALUE_PRESET_3, false);
|
||||
} else if (number == 4) {
|
||||
requestId = soundTouch->setKey(KEY_VALUE::KEY_VALUE_PRESET_4, false);
|
||||
} else if (number == 5) {
|
||||
requestId = soundTouch->setKey(KEY_VALUE::KEY_VALUE_PRESET_5, false);
|
||||
} else if (number == 6) {
|
||||
requestId = soundTouch->setKey(KEY_VALUE::KEY_VALUE_PRESET_6, false);
|
||||
} else {
|
||||
qCWarning(dcBose()) << "Unhandled preset number: " << number;
|
||||
info->finish(Device::DeviceErrorInvalidParameter);
|
||||
return;
|
||||
}
|
||||
m_asyncExecuteBrowseItems.insert(requestId, info);
|
||||
connect(info, &BrowserActionInfo::aborted, this, [this, requestId]{m_asyncExecuteBrowseItems.remove(requestId);});
|
||||
} else {
|
||||
SourcesObject sources = m_sourcesObjects.value(device);
|
||||
foreach (SourceItemObject source, sources.sourceItems) {
|
||||
if (source.source == info->browserAction().itemId()) {
|
||||
ContentItemObject contentItem;
|
||||
contentItem.source = source.source;
|
||||
contentItem.sourceAccount = source.sourceAccount;
|
||||
QUuid requestId = soundTouch->setSource(contentItem);
|
||||
m_asyncExecuteBrowseItems.insert(requestId, info);
|
||||
connect(info, &BrowserActionInfo::aborted, this, [this, requestId]{m_asyncExecuteBrowseItems.remove(requestId);});
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -490,3 +556,27 @@ void DevicePluginBose::onZoneObjectReceived(QUuid requestId, ZoneObject zone)
|
|||
qDebug(dcBose()) << "-> member:" << member.deviceID;
|
||||
}
|
||||
}
|
||||
|
||||
void DevicePluginBose::onPresetsReceived(QUuid requestId, QList<PresetObject> presets)
|
||||
{
|
||||
if (m_asyncBrowseResults.contains(requestId)) {
|
||||
BrowseResult *result = m_asyncBrowseResults.take(requestId);
|
||||
foreach (PresetObject preset, presets) {
|
||||
BrowserItem item("presets&"+QString::number(preset.presetId), QString("Preset %1").arg(QString::number(preset.presetId)), false, true);
|
||||
item.setDescription(preset.ContentItem.source+" "+preset.ContentItem.itemName);
|
||||
item.setThumbnail(preset.ContentItem.containerArt);
|
||||
result->addItem(item);
|
||||
}
|
||||
result->finish(Device::DeviceErrorNoError);
|
||||
}
|
||||
|
||||
if (m_asyncBrowseItemResults.contains(requestId)) {
|
||||
BrowserItemResult *result = m_asyncBrowseItemResults.value(requestId);
|
||||
foreach (PresetObject preset, presets) {
|
||||
if (preset.presetId == result->itemId().split("&").last().toInt()) {
|
||||
return result->finish(Device::DeviceErrorNoError);
|
||||
}
|
||||
}
|
||||
return result->finish(Device::DeviceErrorItemNotFound);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -87,6 +87,7 @@ private slots:
|
|||
void onBassCapabilitiesObjectReceived(QUuid requestId, BassCapabilitiesObject bassCapabilities);
|
||||
void onGroupObjectReceived(QUuid requestId, GroupObject group);
|
||||
void onZoneObjectReceived(QUuid requestId, ZoneObject zone);
|
||||
void onPresetsReceived(QUuid requestId, QList<PresetObject> presets);
|
||||
};
|
||||
|
||||
#endif // DEVICEPLUGINBOSE_H
|
||||
|
|
|
|||
|
|
@ -199,6 +199,28 @@
|
|||
"id": "85d7126a-b123-4a28-aeb4-d84bcfb4d14f",
|
||||
"name": "skipNext",
|
||||
"displayName": "Skip Next"
|
||||
},
|
||||
{
|
||||
"id": "6c47e736-e2e0-47d4-9b96-7f56d2342b4d",
|
||||
"name": "savePreset",
|
||||
"displayName": "Save preset",
|
||||
"paramTypes": [
|
||||
{
|
||||
"id": "04ac6e10-922d-4774-861f-060897d3a6c0",
|
||||
"name": "presetNumber",
|
||||
"displayName": "Preset number",
|
||||
"type": "QString",
|
||||
"defaultValue": "Preset 1",
|
||||
"allowedValues": [
|
||||
"Preset 1",
|
||||
"Preset 2",
|
||||
"Preset 3",
|
||||
"Preset 4",
|
||||
"Preset 5",
|
||||
"Preset 6"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -162,7 +162,7 @@ QUuid SoundTouch::getBassCapabilities()
|
|||
return requestId;
|
||||
}
|
||||
|
||||
QUuid SoundTouch::setKey(KEY_VALUE keyValue)
|
||||
QUuid SoundTouch::setKey(KEY_VALUE keyValue, bool pressed)
|
||||
{
|
||||
QUuid requestId = QUuid::createUuid();
|
||||
QUrl url;
|
||||
|
|
@ -174,7 +174,12 @@ QUuid SoundTouch::setKey(KEY_VALUE keyValue)
|
|||
QXmlStreamWriter xml(&content);
|
||||
xml.writeStartDocument("1.0");
|
||||
xml.writeStartElement("key");
|
||||
xml.writeAttribute("state", "press");
|
||||
if (pressed) {
|
||||
xml.writeAttribute("state", "press");
|
||||
} else {
|
||||
xml.writeAttribute("state", "release");
|
||||
}
|
||||
|
||||
xml.writeAttribute("sender", "Gabbo");
|
||||
switch (keyValue){
|
||||
case KEY_VALUE_PLAY:
|
||||
|
|
@ -225,6 +230,24 @@ QUuid SoundTouch::setKey(KEY_VALUE keyValue)
|
|||
case KEY_VALUE_SHUFFLE_OFF:
|
||||
xml.writeCharacters("SHUFFLE_OFF");
|
||||
break;
|
||||
case KEY_VALUE_PRESET_1:
|
||||
xml.writeCharacters("PRESET_1");
|
||||
break;
|
||||
case KEY_VALUE_PRESET_2:
|
||||
xml.writeCharacters("PRESET_2");
|
||||
break;
|
||||
case KEY_VALUE_PRESET_3:
|
||||
xml.writeCharacters("PRESET_3");
|
||||
break;
|
||||
case KEY_VALUE_PRESET_4:
|
||||
xml.writeCharacters("PRESET_4");
|
||||
break;
|
||||
case KEY_VALUE_PRESET_5:
|
||||
xml.writeCharacters("PRESET_5");
|
||||
break;
|
||||
case KEY_VALUE_PRESET_6:
|
||||
xml.writeCharacters("PRESET_6");
|
||||
break;
|
||||
default:
|
||||
qWarning(dcBose) << "key not yet implemented";
|
||||
return "0";
|
||||
|
|
@ -239,7 +262,8 @@ QUuid SoundTouch::setKey(KEY_VALUE keyValue)
|
|||
emitRequestStatus(requestId, reply);
|
||||
});
|
||||
|
||||
if (keyValue == KEY_VALUE_POWER) {
|
||||
//Power button needs to be released immediatelly after beeing pressed
|
||||
if (keyValue == KEY_VALUE_POWER && pressed) {
|
||||
QUrl url;
|
||||
url.setHost(m_ipAddress);
|
||||
url.setScheme("http");
|
||||
|
|
@ -262,6 +286,7 @@ QUuid SoundTouch::setKey(KEY_VALUE keyValue)
|
|||
return requestId;
|
||||
}
|
||||
|
||||
|
||||
QUuid SoundTouch::setVolume(int volume)
|
||||
{
|
||||
QUuid requestId = QUuid::createUuid();
|
||||
|
|
@ -850,32 +875,57 @@ void SoundTouch::parseData(QUuid requestId, const QByteArray &data)
|
|||
}
|
||||
emit bassCapabilitiesReceived(requestId, bassCapabilities);
|
||||
} else if (xml.name() == "presets") {
|
||||
PresetObject preset;
|
||||
if(xml.attributes().hasAttribute("id")) {
|
||||
preset.presetId = xml.attributes().value("id").toInt();
|
||||
}
|
||||
if(xml.attributes().hasAttribute("createdOn")) {
|
||||
preset.createdOn= xml.attributes().value("createdOn").toULong();
|
||||
}
|
||||
if(xml.attributes().hasAttribute("updatedOn")) {
|
||||
preset.updatedOn = xml.attributes().value("updatedOn").toULong();
|
||||
}
|
||||
QList<PresetObject> presets;
|
||||
qDebug(dcBose) << "Presets";
|
||||
while(xml.readNextStartElement()){
|
||||
if(xml.name() == "ContentItem"){
|
||||
if(xml.attributes().hasAttribute("source")) {
|
||||
preset.ContentItem.source = xml.attributes().value("source").toString();
|
||||
if(xml.name() == "preset"){
|
||||
PresetObject preset;
|
||||
if(xml.attributes().hasAttribute("id")) {
|
||||
preset.presetId = xml.attributes().value("id").toInt();
|
||||
}
|
||||
if(xml.attributes().hasAttribute("location")) {
|
||||
preset.ContentItem.location = xml.attributes().value("location").toString();
|
||||
if(xml.attributes().hasAttribute("createdOn")) {
|
||||
preset.createdOn= xml.attributes().value("createdOn").toULong();
|
||||
}
|
||||
if(xml.attributes().hasAttribute("sourceAccount")) {
|
||||
preset.ContentItem.sourceAccount = xml.attributes().value("sourceAccount").toString();
|
||||
if(xml.attributes().hasAttribute("updatedOn")) {
|
||||
preset.updatedOn = xml.attributes().value("updatedOn").toULong();
|
||||
}
|
||||
}else {
|
||||
qDebug(dcBose) << "Preset" << preset.presetId;
|
||||
while(xml.readNextStartElement()){
|
||||
|
||||
if (xml.name() == "ContentItem") {
|
||||
if(xml.attributes().hasAttribute("source")) {
|
||||
preset.ContentItem.source = xml.attributes().value("source").toString();
|
||||
}
|
||||
if(xml.attributes().hasAttribute("location")) {
|
||||
preset.ContentItem.location = xml.attributes().value("location").toString();
|
||||
}
|
||||
if(xml.attributes().hasAttribute("sourceAccount")) {
|
||||
preset.ContentItem.sourceAccount = xml.attributes().value("sourceAccount").toString();
|
||||
}
|
||||
|
||||
while(xml.readNextStartElement()){
|
||||
if (xml.name() == "itemName") {
|
||||
preset.ContentItem.itemName = xml.readElementText();
|
||||
} else if (xml.name() == "containerArt"){
|
||||
preset.ContentItem.containerArt = xml.readElementText();
|
||||
} else {
|
||||
qCWarning(dcBose()) << "Presets: unhandled XML element" << xml.name();
|
||||
xml.skipCurrentElement();
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
qCWarning(dcBose()) << "Presets: unhandled XML element" << xml.name();
|
||||
xml.skipCurrentElement();
|
||||
}
|
||||
}
|
||||
presets.append(preset);
|
||||
} else {
|
||||
qCWarning(dcBose()) << "Presets: unhandled XML element" << xml.name();
|
||||
xml.skipCurrentElement();
|
||||
}
|
||||
}
|
||||
emit presetsReceived(requestId, preset);
|
||||
emit presetsReceived(requestId, presets);
|
||||
|
||||
} else if (xml.name() == "group") {
|
||||
GroupObject group;
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@ public:
|
|||
QUuid getPresets(); //Get information related to the user's SoundTouch presets.
|
||||
|
||||
//ACTIONS
|
||||
QUuid setKey(KEY_VALUE keyValue); //Start and control playback on a product.
|
||||
QUuid setKey(KEY_VALUE keyValue, bool pressed); //Start and control playback on a product.
|
||||
QUuid setVolume(int volume); //Set the volume of a product.
|
||||
QUuid setSource(ContentItemObject contentItem); //Select a product's source.
|
||||
QUuid setZone(ZoneObject zone); //Create a zone of synced products.
|
||||
|
|
@ -95,7 +95,7 @@ signals:
|
|||
void zoneReceived(QUuid requestId, ZoneObject);
|
||||
void bassCapabilitiesReceived(QUuid requestId, BassCapabilitiesObject bassCapabilities);
|
||||
void bassReceived(QUuid requestId, BassObject bass);
|
||||
void presetsReceived(QUuid requestId, PresetObject presets);
|
||||
void presetsReceived(QUuid requestId, QList<PresetObject> presets);
|
||||
void groupReceived(QUuid requestId, GroupObject group);
|
||||
|
||||
void requestExecuted(QUuid requestId, bool success);
|
||||
|
|
|
|||
|
|
@ -4,8 +4,8 @@
|
|||
<context>
|
||||
<name>Bose</name>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="86"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="89"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="88"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="91"/>
|
||||
<source>Artist</source>
|
||||
<extracomment>The name of the ParamType (DeviceClass: soundtouch, EventType: artist, ID: {8cb920a3-3bf1-4231-92d4-8ac27e7b3d65})
|
||||
----------
|
||||
|
|
@ -13,14 +13,14 @@ The name of the StateType ({8cb920a3-3bf1-4231-92d4-8ac27e7b3d65}) of DeviceClas
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="92"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="94"/>
|
||||
<source>Artist changed</source>
|
||||
<extracomment>The name of the EventType ({8cb920a3-3bf1-4231-92d4-8ac27e7b3d65}) of DeviceClass soundtouch</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="95"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="98"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="97"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="100"/>
|
||||
<source>Artwork</source>
|
||||
<extracomment>The name of the ParamType (DeviceClass: soundtouch, EventType: artwork, ID: {44304c82-c2f6-433b-b62b-815382617d0b})
|
||||
----------
|
||||
|
|
@ -28,15 +28,15 @@ The name of the StateType ({44304c82-c2f6-433b-b62b-815382617d0b}) of DeviceClas
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="101"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="103"/>
|
||||
<source>Artwork changed</source>
|
||||
<extracomment>The name of the EventType ({44304c82-c2f6-433b-b62b-815382617d0b}) of DeviceClass soundtouch</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="104"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="107"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="110"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="106"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="109"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="112"/>
|
||||
<source>Bass</source>
|
||||
<extracomment>The name of the ParamType (DeviceClass: soundtouch, ActionType: bass, ID: {91bc53ec-4f3b-438d-8e32-129b7c27aae4})
|
||||
----------
|
||||
|
|
@ -46,14 +46,14 @@ The name of the StateType ({91bc53ec-4f3b-438d-8e32-129b7c27aae4}) of DeviceClas
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="113"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="115"/>
|
||||
<source>Bass changed</source>
|
||||
<extracomment>The name of the EventType ({91bc53ec-4f3b-438d-8e32-129b7c27aae4}) of DeviceClass soundtouch</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="116"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="119"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="118"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="121"/>
|
||||
<source>Bose</source>
|
||||
<extracomment>The name of the vendor ({433c45cd-5bc1-4239-a8a1-487c70ffdfc7})
|
||||
----------
|
||||
|
|
@ -61,8 +61,8 @@ The name of the plugin Bose ({472a3f24-b05c-49b3-ad9a-dfda608b6760})</extracomme
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="122"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="125"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="124"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="127"/>
|
||||
<source>Collection</source>
|
||||
<extracomment>The name of the ParamType (DeviceClass: soundtouch, EventType: collection, ID: {ce399eec-9f6a-4903-9916-0e90e38b255e})
|
||||
----------
|
||||
|
|
@ -70,14 +70,14 @@ The name of the StateType ({ce399eec-9f6a-4903-9916-0e90e38b255e}) of DeviceClas
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="128"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="130"/>
|
||||
<source>Collection changed</source>
|
||||
<extracomment>The name of the EventType ({ce399eec-9f6a-4903-9916-0e90e38b255e}) of DeviceClass soundtouch</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="131"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="134"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="133"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="136"/>
|
||||
<source>Connected</source>
|
||||
<extracomment>The name of the ParamType (DeviceClass: soundtouch, EventType: connected, ID: {09dfbd40-c97c-4a20-9ecd-f80e389a4864})
|
||||
----------
|
||||
|
|
@ -85,15 +85,15 @@ The name of the StateType ({09dfbd40-c97c-4a20-9ecd-f80e389a4864}) of DeviceClas
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="137"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="139"/>
|
||||
<source>IP</source>
|
||||
<extracomment>The name of the ParamType (DeviceClass: soundtouch, Type: device, ID: {1a897065-57c6-49b3-bac9-1e5db27859e5})</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="140"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="143"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="146"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="142"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="145"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="148"/>
|
||||
<source>Mute</source>
|
||||
<extracomment>The name of the ParamType (DeviceClass: soundtouch, ActionType: mute, ID: {bc98cdb0-4d0e-48ca-afc7-922e49bb7813})
|
||||
----------
|
||||
|
|
@ -103,27 +103,27 @@ The name of the StateType ({bc98cdb0-4d0e-48ca-afc7-922e49bb7813}) of DeviceClas
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="149"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="151"/>
|
||||
<source>Mute changed</source>
|
||||
<extracomment>The name of the EventType ({bc98cdb0-4d0e-48ca-afc7-922e49bb7813}) of DeviceClass soundtouch</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="152"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="154"/>
|
||||
<source>Pause</source>
|
||||
<extracomment>The name of the ActionType ({3cf341cb-fe63-40bc-a450-9678d18e91e3}) of DeviceClass soundtouch</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="155"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="157"/>
|
||||
<source>Play</source>
|
||||
<extracomment>The name of the ActionType ({4d2ee668-a2e3-4795-8b96-0c800b703b46}) of DeviceClass soundtouch</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="158"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="161"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="164"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="160"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="163"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="166"/>
|
||||
<source>Playback status</source>
|
||||
<extracomment>The name of the ParamType (DeviceClass: soundtouch, ActionType: playbackStatus, ID: {2dd512b7-40c2-488e-8d4f-6519edaa6f74})
|
||||
----------
|
||||
|
|
@ -133,33 +133,33 @@ The name of the StateType ({2dd512b7-40c2-488e-8d4f-6519edaa6f74}) of DeviceClas
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="167"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="169"/>
|
||||
<source>Player ID</source>
|
||||
<extracomment>The name of the ParamType (DeviceClass: soundtouch, Type: device, ID: {3eb95eef-e8ba-4d44-8a21-7d8038b74c4d})</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="170"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="172"/>
|
||||
<source>Player pause</source>
|
||||
<extracomment>The name of the EventType ({99498b1c-e9c0-480a-9e91-662ee79ba976}) of DeviceClass soundtouch</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="173"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="175"/>
|
||||
<source>Player play</source>
|
||||
<extracomment>The name of the EventType ({2535a1eb-7643-4874-98f6-b027fdff6311}) of DeviceClass soundtouch</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="176"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="178"/>
|
||||
<source>Player stop</source>
|
||||
<extracomment>The name of the EventType ({a02ce255-3abb-435d-a92e-7f99c952ecb2}) of DeviceClass soundtouch</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="179"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="182"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="185"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="181"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="184"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="187"/>
|
||||
<source>Power</source>
|
||||
<extracomment>The name of the ParamType (DeviceClass: soundtouch, ActionType: power, ID: {5bac4ad7-f55c-4301-8d72-f2783d9909ff})
|
||||
----------
|
||||
|
|
@ -169,15 +169,21 @@ The name of the StateType ({5bac4ad7-f55c-4301-8d72-f2783d9909ff}) of DeviceClas
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="188"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="190"/>
|
||||
<source>Power changed</source>
|
||||
<extracomment>The name of the EventType ({5bac4ad7-f55c-4301-8d72-f2783d9909ff}) of DeviceClass soundtouch</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="191"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="194"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="197"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="193"/>
|
||||
<source>Preset number</source>
|
||||
<extracomment>The name of the ParamType (DeviceClass: soundtouch, ActionType: savePreset, ID: {04ac6e10-922d-4774-861f-060897d3a6c0})</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="196"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="199"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="202"/>
|
||||
<source>Repeat</source>
|
||||
<extracomment>The name of the ParamType (DeviceClass: soundtouch, ActionType: repeat, ID: {bc02c28e-3f5d-4de4-b9b5-c0b1576c6e7e})
|
||||
----------
|
||||
|
|
@ -187,51 +193,57 @@ The name of the StateType ({bc02c28e-3f5d-4de4-b9b5-c0b1576c6e7e}) of DeviceClas
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="200"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="205"/>
|
||||
<source>Repeat changed</source>
|
||||
<extracomment>The name of the EventType ({bc02c28e-3f5d-4de4-b9b5-c0b1576c6e7e}) of DeviceClass soundtouch</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="203"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="208"/>
|
||||
<source>Save preset</source>
|
||||
<extracomment>The name of the ActionType ({6c47e736-e2e0-47d4-9b96-7f56d2342b4d}) of DeviceClass soundtouch</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="211"/>
|
||||
<source>Set bass</source>
|
||||
<extracomment>The name of the ActionType ({91bc53ec-4f3b-438d-8e32-129b7c27aae4}) of DeviceClass soundtouch</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="206"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="214"/>
|
||||
<source>Set mute</source>
|
||||
<extracomment>The name of the ActionType ({bc98cdb0-4d0e-48ca-afc7-922e49bb7813}) of DeviceClass soundtouch</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="209"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="217"/>
|
||||
<source>Set power</source>
|
||||
<extracomment>The name of the ActionType ({5bac4ad7-f55c-4301-8d72-f2783d9909ff}) of DeviceClass soundtouch</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="212"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="220"/>
|
||||
<source>Set repeat</source>
|
||||
<extracomment>The name of the ActionType ({bc02c28e-3f5d-4de4-b9b5-c0b1576c6e7e}) of DeviceClass soundtouch</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="215"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="223"/>
|
||||
<source>Set shuffle</source>
|
||||
<extracomment>The name of the ActionType ({5913aa2a-629d-4de5-bf44-a4a1f130c118}) of DeviceClass soundtouch</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="218"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="226"/>
|
||||
<source>Set volume</source>
|
||||
<extracomment>The name of the ActionType ({9dfe5d78-4c3f-497c-bab1-bb9fdf7e93a9}) of DeviceClass soundtouch</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="221"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="224"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="227"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="229"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="232"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="235"/>
|
||||
<source>Shuffle</source>
|
||||
<extracomment>The name of the ParamType (DeviceClass: soundtouch, ActionType: shuffle, ID: {5913aa2a-629d-4de5-bf44-a4a1f130c118})
|
||||
----------
|
||||
|
|
@ -241,32 +253,32 @@ The name of the StateType ({5913aa2a-629d-4de5-bf44-a4a1f130c118}) of DeviceClas
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="230"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="238"/>
|
||||
<source>Shuffle changed</source>
|
||||
<extracomment>The name of the EventType ({5913aa2a-629d-4de5-bf44-a4a1f130c118}) of DeviceClass soundtouch</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="233"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="241"/>
|
||||
<source>Skip Next</source>
|
||||
<extracomment>The name of the ActionType ({85d7126a-b123-4a28-aeb4-d84bcfb4d14f}) of DeviceClass soundtouch</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="236"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="244"/>
|
||||
<source>Skip back</source>
|
||||
<extracomment>The name of the ActionType ({a180807d-1265-4831-9d86-a421767418dd}) of DeviceClass soundtouch</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="239"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="247"/>
|
||||
<source>SoundTouch</source>
|
||||
<extracomment>The name of the DeviceClass ({f9b7a3f5-6353-48b1-afc1-66f914412f82})</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="242"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="245"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="250"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="253"/>
|
||||
<source>Source</source>
|
||||
<extracomment>The name of the ParamType (DeviceClass: soundtouch, EventType: source, ID: {f4684de8-ff5f-41f3-a5c3-f5e5754519d2})
|
||||
----------
|
||||
|
|
@ -274,20 +286,20 @@ The name of the StateType ({f4684de8-ff5f-41f3-a5c3-f5e5754519d2}) of DeviceClas
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="248"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="256"/>
|
||||
<source>Source changed</source>
|
||||
<extracomment>The name of the EventType ({f4684de8-ff5f-41f3-a5c3-f5e5754519d2}) of DeviceClass soundtouch</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="251"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="259"/>
|
||||
<source>Stop</source>
|
||||
<extracomment>The name of the ActionType ({ae3cbe03-ee3e-410e-abbd-efabc2402198}) of DeviceClass soundtouch</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="254"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="257"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="262"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="265"/>
|
||||
<source>Title</source>
|
||||
<extracomment>The name of the ParamType (DeviceClass: soundtouch, EventType: title, ID: {f2209fec-cceb-46ad-8189-4caf42166e6b})
|
||||
----------
|
||||
|
|
@ -295,15 +307,15 @@ The name of the StateType ({f2209fec-cceb-46ad-8189-4caf42166e6b}) of DeviceClas
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="260"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="268"/>
|
||||
<source>Title changed</source>
|
||||
<extracomment>The name of the EventType ({f2209fec-cceb-46ad-8189-4caf42166e6b}) of DeviceClass soundtouch</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="263"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="266"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="269"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="271"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="274"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="277"/>
|
||||
<source>Volume</source>
|
||||
<extracomment>The name of the ParamType (DeviceClass: soundtouch, ActionType: volume, ID: {9dfe5d78-4c3f-497c-bab1-bb9fdf7e93a9})
|
||||
----------
|
||||
|
|
@ -313,25 +325,25 @@ The name of the StateType ({9dfe5d78-4c3f-497c-bab1-bb9fdf7e93a9}) of DeviceClas
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="272"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="280"/>
|
||||
<source>Volume changed</source>
|
||||
<extracomment>The name of the EventType ({9dfe5d78-4c3f-497c-bab1-bb9fdf7e93a9}) of DeviceClass soundtouch</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="275"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="283"/>
|
||||
<source>connected changed</source>
|
||||
<extracomment>The name of the EventType ({09dfbd40-c97c-4a20-9ecd-f80e389a4864}) of DeviceClass soundtouch</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="278"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="286"/>
|
||||
<source>playback status changed</source>
|
||||
<extracomment>The name of the EventType ({2dd512b7-40c2-488e-8d4f-6519edaa6f74}) of DeviceClass soundtouch</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="281"/>
|
||||
<location filename="../../../build-nymea-plugins-Desktop-Debug/bose/plugininfo.h" line="289"/>
|
||||
<source>set playback status</source>
|
||||
<extracomment>The name of the ActionType ({2dd512b7-40c2-488e-8d4f-6519edaa6f74}) of DeviceClass soundtouch</extracomment>
|
||||
<translation type="unfinished"></translation>
|
||||
|
|
|
|||
Loading…
Reference in New Issue