store configured devices in config file

This commit is contained in:
Michael Zanetti 2013-12-31 02:48:01 +01:00
parent efcecb0dd1
commit f042911fd1
6 changed files with 46 additions and 1 deletions

View File

@ -1,5 +1,13 @@
#include "device.h" #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): Device::Device(const QUuid &deviceClassId, QObject *parent):
QObject(parent), QObject(parent),
m_id(QUuid::createUuid()), m_id(QUuid::createUuid()),

View File

@ -13,6 +13,7 @@ class Device: public QObject
Q_PROPERTY(QUuid id READ id CONSTANT) Q_PROPERTY(QUuid id READ id CONSTANT)
public: public:
Device(const QUuid &id, const QUuid &deviceClassId, QObject *parent = 0);
Device(const QUuid &deviceClassId, QObject *parent = 0); Device(const QUuid &deviceClassId, QObject *parent = 0);
QUuid id() const; QUuid id() const;

View File

@ -9,6 +9,8 @@
#include <QPluginLoader> #include <QPluginLoader>
#include <QtPlugin> #include <QtPlugin>
#include <QDebug> #include <QDebug>
#include <QSettings>
#include <QStringList>
Q_IMPORT_PLUGIN(RfRemoteMumbi) Q_IMPORT_PLUGIN(RfRemoteMumbi)
@ -18,6 +20,7 @@ DeviceManager::DeviceManager(QObject *parent) :
m_radio433 = new Radio433(this); m_radio433 = new Radio433(this);
QMetaObject::invokeMethod(this, "loadPlugins", Qt::QueuedConnection); QMetaObject::invokeMethod(this, "loadPlugins", Qt::QueuedConnection);
QMetaObject::invokeMethod(this, "loadConfiguredDevices", Qt::QueuedConnection);
} }
QList<DeviceClass> DeviceManager::supportedDevices() QList<DeviceClass> DeviceManager::supportedDevices()
@ -45,6 +48,9 @@ DeviceManager::DeviceError DeviceManager::addConfiguredDevice(const QUuid &devic
device->setName(deviceClass.name()); device->setName(deviceClass.name());
device->setParams(params); device->setParams(params);
m_configuredDevices.append(device); m_configuredDevices.append(device);
storeConfiguredDevices();
return DeviceErrorNoError; 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();
}
}

View File

@ -38,6 +38,8 @@ signals:
private slots: private slots:
void loadPlugins(); void loadPlugins();
void loadConfiguredDevices();
void storeConfiguredDevices();
private: private:
QList<DeviceClass> m_supportedDevices; QList<DeviceClass> m_supportedDevices;

View File

@ -23,7 +23,6 @@ HiveCore::HiveCore(QObject *parent) :
QObject(parent) QObject(parent)
{ {
qDebug() << "creating devmanager"; qDebug() << "creating devmanager";
m_deviceManager = new DeviceManager(this); m_deviceManager = new DeviceManager(this);

View File

@ -7,6 +7,8 @@ int main(int argc, char *argv[])
{ {
QCoreApplication a(argc, argv); QCoreApplication a(argc, argv);
a.setOrganizationName("hiveyourhome");
HiveCore::instance(); HiveCore::instance();
return a.exec(); return a.exec();