search emit discovered devices

This commit is contained in:
Simon Stürz 2014-04-14 00:02:30 +02:00
parent dde0bcc868
commit e7a726733b
3 changed files with 32 additions and 6 deletions

View File

@ -151,10 +151,11 @@
VendorId openweathermapVendorId = VendorId("bf1e96f0-9650-4e7c-a56c-916d54d18e7a"); VendorId openweathermapVendorId = VendorId("bf1e96f0-9650-4e7c-a56c-916d54d18e7a");
DeviceClassId deviceClassId = DeviceClassId("985195aa-17ad-4530-88a4-cdd753d747d7");
DevicePluginOpenweathermap::DevicePluginOpenweathermap() DevicePluginOpenweathermap::DevicePluginOpenweathermap()
{ {
m_openweaher = new OpenWeatherMap(this); m_openweaher = new OpenWeatherMap(this);
connect(m_openweaher, SIGNAL(searchResultReady(QList<QVariantMap>)), this, SLOT(searchResultsReady(QList<QVariantMap>)));
} }
QList<Vendor> DevicePluginOpenweathermap::supportedVendors() const QList<Vendor> DevicePluginOpenweathermap::supportedVendors() const
@ -292,6 +293,10 @@ QList<DeviceClass> DevicePluginOpenweathermap::supportedDevices() const
DeviceManager::DeviceError DevicePluginOpenweathermap::discoverDevices(const DeviceClassId &deviceClassId, const QVariantMap &params) const DeviceManager::DeviceError DevicePluginOpenweathermap::discoverDevices(const DeviceClassId &deviceClassId, const QVariantMap &params) const
{ {
qDebug() << "should discover divces for" << deviceClassId << params; qDebug() << "should discover divces for" << deviceClassId << params;
if(params.value("location").toString() == ""){
m_openweaher->update();
return DeviceManager::DeviceErrorNoError;
}
m_openweaher->search(params.value("location").toString()); m_openweaher->search(params.value("location").toString());
return DeviceManager::DeviceErrorNoError; return DeviceManager::DeviceErrorNoError;
} }
@ -315,4 +320,18 @@ void DevicePluginOpenweathermap::guhTimer()
{ {
} }
void DevicePluginOpenweathermap::searchResultsReady(const QList<QVariantMap> &cityList)
{
QList<DeviceDescriptor> retList;
foreach (QVariantMap elemant, cityList) {
QVariantMap params;
params.insert("location", elemant.value("name"));
params.insert("country", elemant.value("country"));
params.insert("id", elemant.value("id"));
retList.append(DeviceDescriptor(deviceClassId, params));
}
emit discoverDevices(deviceClassId,retList);
}

View File

@ -48,6 +48,7 @@ public:
void guhTimer() override; void guhTimer() override;
private slots: private slots:
void searchResultsReady(const QList<QVariantMap> &cityList);
public slots: public slots:

View File

@ -124,16 +124,22 @@ void OpenWeatherMap::processSearchLocationResponse(QByteArray data)
} }
//qDebug() << jsonDoc.toJson(); //qDebug() << jsonDoc.toJson();
QList<QVariantMap> cityList;
QVariantMap dataMap = jsonDoc.toVariant().toMap(); QVariantMap dataMap = jsonDoc.toVariant().toMap();
if(dataMap.contains("list")){ if(dataMap.contains("list")){
QVariantList list = dataMap.value("list").toList(); QVariantList list = dataMap.value("list").toList();
foreach (QVariant key, list) { foreach (QVariant key, list) {
QVariantMap elemant = key.toMap(); QVariantMap elemant = key.toMap();
if(elemant.contains("id")){
m_cityId = elemant.value("id").toString(); QVariantMap city;
updateWeatherData(); city.insert("name",elemant.value("name").toString());
return; city.insert("country", elemant.value("sys").toMap().value("country").toString());
} city.insert("id",elemant.value("id").toString());
cityList.append(city);
m_cityId = elemant.value("id").toString();
updateWeatherData();
return;
} }
} }
} }