diff --git a/libhive/device.cpp b/libhive/device.cpp index 9fd88e2a..4d2296e2 100644 --- a/libhive/device.cpp +++ b/libhive/device.cpp @@ -1,5 +1,13 @@ #include "device.h" +Device::Device(const QUuid &id, const QUuid &deviceClassId, QObject *parent): + QObject(parent), + m_id(id), + m_deviceClassId(deviceClassId) +{ + +} + Device::Device(const QUuid &deviceClassId, QObject *parent): QObject(parent), m_id(QUuid::createUuid()), diff --git a/libhive/device.h b/libhive/device.h index e468d133..cc640a9a 100644 --- a/libhive/device.h +++ b/libhive/device.h @@ -13,6 +13,7 @@ class Device: public QObject Q_PROPERTY(QUuid id READ id CONSTANT) public: + Device(const QUuid &id, const QUuid &deviceClassId, QObject *parent = 0); Device(const QUuid &deviceClassId, QObject *parent = 0); QUuid id() const; diff --git a/libhive/devicemanager.cpp b/libhive/devicemanager.cpp index 57c87952..64a76aa8 100644 --- a/libhive/devicemanager.cpp +++ b/libhive/devicemanager.cpp @@ -9,6 +9,8 @@ #include #include #include +#include +#include Q_IMPORT_PLUGIN(RfRemoteMumbi) @@ -18,6 +20,7 @@ DeviceManager::DeviceManager(QObject *parent) : m_radio433 = new Radio433(this); QMetaObject::invokeMethod(this, "loadPlugins", Qt::QueuedConnection); + QMetaObject::invokeMethod(this, "loadConfiguredDevices", Qt::QueuedConnection); } QList DeviceManager::supportedDevices() @@ -45,6 +48,9 @@ DeviceManager::DeviceError DeviceManager::addConfiguredDevice(const QUuid &devic device->setName(deviceClass.name()); device->setParams(params); m_configuredDevices.append(device); + + storeConfiguredDevices(); + return DeviceErrorNoError; } @@ -94,3 +100,30 @@ void DeviceManager::loadPlugins() } } +void DeviceManager::loadConfiguredDevices() +{ + QSettings settings; + qDebug() << "loading devices"; + foreach (const QString &idString, settings.childGroups()) { + qDebug() << "found stored device" << idString; + settings.beginGroup(idString); + Device *device = new Device(QUuid(idString), settings.value("deviceClassId").toUuid(), this); + device->setName(settings.value("devicename").toString()); + device->setParams(device->params()); + settings.endGroup(); + m_configuredDevices.append(device); + } +} + +void DeviceManager::storeConfiguredDevices() +{ + QSettings settings; + foreach (Device *device, m_configuredDevices) { + settings.beginGroup(device->id().toString()); + settings.setValue("devicename", device->name()); + settings.setValue("deviceClassId", device->deviceClassId().toString()); + settings.setValue("params", device->params()); + settings.endGroup(); + } +} + diff --git a/libhive/devicemanager.h b/libhive/devicemanager.h index 5d209bda..dff42078 100644 --- a/libhive/devicemanager.h +++ b/libhive/devicemanager.h @@ -38,6 +38,8 @@ signals: private slots: void loadPlugins(); + void loadConfiguredDevices(); + void storeConfiguredDevices(); private: QList m_supportedDevices; diff --git a/server/hivecore.cpp b/server/hivecore.cpp index e5d390d4..2bb07bd0 100644 --- a/server/hivecore.cpp +++ b/server/hivecore.cpp @@ -23,7 +23,6 @@ HiveCore::HiveCore(QObject *parent) : QObject(parent) { - qDebug() << "creating devmanager"; m_deviceManager = new DeviceManager(this); diff --git a/server/main.cpp b/server/main.cpp index 4407b347..7171335a 100644 --- a/server/main.cpp +++ b/server/main.cpp @@ -7,6 +7,8 @@ int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); + a.setOrganizationName("hiveyourhome"); + HiveCore::instance(); return a.exec();