diff --git a/libnymea-core/devices/devicemanagerimplementation.cpp b/libnymea-core/devices/devicemanagerimplementation.cpp index f5f8aa9a..863bc7d8 100644 --- a/libnymea-core/devices/devicemanagerimplementation.cpp +++ b/libnymea-core/devices/devicemanagerimplementation.cpp @@ -710,7 +710,7 @@ Device::DeviceError DeviceManagerImplementation::removeConfiguredDevice(const De return Device::DeviceErrorNoError; } -Device::BrowseResult DeviceManagerImplementation::browseDevice(const DeviceId &deviceId, const QString &itemId) +Device::BrowseResult DeviceManagerImplementation::browseDevice(const DeviceId &deviceId, const QString &itemId, const QLocale &locale) { Q_UNUSED(deviceId) Q_UNUSED(itemId) @@ -730,7 +730,7 @@ Device::BrowseResult DeviceManagerImplementation::browseDevice(const DeviceId &d return result; } - result = device->plugin()->browseDevice(device, result, itemId); + result = device->plugin()->browseDevice(device, result, itemId, locale); return result; } diff --git a/libnymea-core/devices/devicemanagerimplementation.h b/libnymea-core/devices/devicemanagerimplementation.h index 24766d7e..0362567e 100644 --- a/libnymea-core/devices/devicemanagerimplementation.h +++ b/libnymea-core/devices/devicemanagerimplementation.h @@ -99,7 +99,7 @@ public: Device::DeviceError executeAction(const Action &action) override; - Device::BrowseResult browseDevice(const DeviceId &deviceId, const QString &itemId = QString()) override; + Device::BrowseResult browseDevice(const DeviceId &deviceId, const QString &itemId, const QLocale &locale) override; Device::DeviceError executeBrowserItem(const BrowserAction &browserAction) override; Device::DeviceError executeBrowserItemAction(const BrowserItemAction &browserItemAction) override; diff --git a/libnymea-core/jsonrpc/devicehandler.cpp b/libnymea-core/jsonrpc/devicehandler.cpp index b4479818..9a13983c 100644 --- a/libnymea-core/jsonrpc/devicehandler.cpp +++ b/libnymea-core/jsonrpc/devicehandler.cpp @@ -681,7 +681,7 @@ JsonReply *DeviceHandler::BrowseDevice(const QVariantMap ¶ms) const DeviceId deviceId = DeviceId(params.value("deviceId").toString()); QString itemId = params.value("itemId").toString(); - Device::BrowseResult result = NymeaCore::instance()->deviceManager()->browseDevice(deviceId, itemId); + Device::BrowseResult result = NymeaCore::instance()->deviceManager()->browseDevice(deviceId, itemId, params.value("locale").toLocale()); if (result.status == Device::DeviceErrorAsync ) { JsonReply *reply = createAsyncReply("BrowseDevice"); diff --git a/libnymea/devices/devicemanager.h b/libnymea/devices/devicemanager.h index b1ac9308..4b9d4464 100644 --- a/libnymea/devices/devicemanager.h +++ b/libnymea/devices/devicemanager.h @@ -74,7 +74,7 @@ public: virtual Device::DeviceError executeAction(const Action &action) = 0; - virtual Device::BrowseResult browseDevice(const DeviceId &deviceId, const QString &itemId = QString()) = 0; + virtual Device::BrowseResult browseDevice(const DeviceId &deviceId, const QString &itemId, const QLocale &locale) = 0; virtual Device::DeviceError executeBrowserItem(const BrowserAction &browserAction) = 0; virtual Device::DeviceError executeBrowserItemAction(const BrowserItemAction &browserItemAction) = 0; diff --git a/libnymea/devices/deviceplugin.cpp b/libnymea/devices/deviceplugin.cpp index 7b45dd1a..a4607b6f 100644 --- a/libnymea/devices/deviceplugin.cpp +++ b/libnymea/devices/deviceplugin.cpp @@ -248,21 +248,23 @@ Device::DeviceError DevicePlugin::executeAction(Device *device, const Action &ac return Device::DeviceErrorNoError; } -/*! Implement this if your devices support browsing. When the system calls this method, - * fill the \a result object's items list with entries from the browser. If \a itemId is empty - * it means that the root node of the file system should be returned. Each item in the result set - * shall be uniquely identifiable using its \l{BrowserItem::id}{id} property. +/*! Implement this if your devices support browsing (besides settings browsable to true in the metadata). + * When the system calls this method, fill the \a result object's items list with entries from the browser. + * If \a itemId is empty it means that the root node of the file system should be returned. Each item in + * the result set shall be uniquely identifiable using its \l{BrowserItem::id}{id} property. * The system might call this method again, with an \a itemId returned in a previous query, provided * that item's \l{BrowserItem::browsable} property is true. In this case all children of the given - * item shall be returned. + * item shall be returned. All browser \l {BrowserItem::displayName} properties shall be localized + * using the given \a locale. * When done, set the \l{BrowserResult::status}{result's status} field approprietly. Set the result's * status to Device::DeviceErrorAsync if this operation requires async behavior and emit * \l{browseRequestFinished} when done. */ -Device::BrowseResult DevicePlugin::browseDevice(Device *device, Device::BrowseResult result, const QString &itemId) +Device::BrowseResult DevicePlugin::browseDevice(Device *device, Device::BrowseResult result, const QString &itemId, const QLocale &locale) { Q_UNUSED(device) Q_UNUSED(itemId) + Q_UNUSED(locale) result.status = Device::DeviceErrorUnsupportedFeature; return result; diff --git a/libnymea/devices/deviceplugin.h b/libnymea/devices/deviceplugin.h index 818d249c..2b425313 100644 --- a/libnymea/devices/deviceplugin.h +++ b/libnymea/devices/deviceplugin.h @@ -80,7 +80,7 @@ public: virtual Device::DeviceError executeAction(Device *device, const Action &action); - virtual Device::BrowseResult browseDevice(Device *device, Device::BrowseResult result, const QString &nodeId = QString()); + virtual Device::BrowseResult browseDevice(Device *device, Device::BrowseResult result, const QString &nodeId, const QLocale &locale); virtual Device::DeviceError executeBrowserItem(Device *device, const BrowserAction &browserAction); virtual Device::DeviceError executeBrowserItemAction(Device *device, const BrowserItemAction &browserItemAction); diff --git a/plugins/mock/devicepluginmock.cpp b/plugins/mock/devicepluginmock.cpp index bff30454..efe64e7a 100644 --- a/plugins/mock/devicepluginmock.cpp +++ b/plugins/mock/devicepluginmock.cpp @@ -239,8 +239,9 @@ Device::DeviceError DevicePluginMock::displayPin(const PairingTransactionId &pai return Device::DeviceErrorNoError; } -Device::BrowseResult DevicePluginMock::browseDevice(Device *device, Device::BrowseResult result, const QString &itemId) +Device::BrowseResult DevicePluginMock::browseDevice(Device *device, Device::BrowseResult result, const QString &itemId, const QLocale &locale) { + Q_UNUSED(locale) qCDebug(dcMockDevice()) << "Browse device called" << device; if (device->deviceClassId() == mockDeviceClassId) { if (device->paramValue(mockDeviceAsyncParamTypeId).toBool()) { diff --git a/plugins/mock/devicepluginmock.h b/plugins/mock/devicepluginmock.h index fef7c73c..76cbd647 100644 --- a/plugins/mock/devicepluginmock.h +++ b/plugins/mock/devicepluginmock.h @@ -52,7 +52,7 @@ public: Device::DeviceSetupStatus confirmPairing(const PairingTransactionId &pairingTransactionId, const DeviceClassId &deviceClassId, const ParamList ¶ms, const QString &secret) override; Device::DeviceError displayPin(const PairingTransactionId &pairingTransactionId, const DeviceDescriptor &deviceDescriptor) override; - Device::BrowseResult browseDevice(Device *device, Device::BrowseResult result, const QString &itemId = QString()) override; + Device::BrowseResult browseDevice(Device *device, Device::BrowseResult result, const QString &itemId, const QLocale &locale) override; public slots: Device::DeviceError executeAction(Device *device, const Action &action) override;