diff --git a/telldus-gui/TelldusGui/CMakeLists.txt b/telldus-gui/TelldusGui/CMakeLists.txt index eb1f1229..21110926 100644 --- a/telldus-gui/TelldusGui/CMakeLists.txt +++ b/telldus-gui/TelldusGui/CMakeLists.txt @@ -24,6 +24,7 @@ SET( telldus-gui_SRCS devicesettingnexabell.cpp devicesettingrisingsun.cpp devicesettingsartano.cpp + devicesettingselflearning.cpp devicesettingunitcode.cpp devicesettingupm.cpp devicesetting.cpp @@ -51,6 +52,7 @@ SET( telldus-gui_MOC_HDRS devicesettingnexabell.h devicesettingrisingsun.h devicesettingsartano.h + devicesettingselflearning.h devicesettingunitcode.h devicesettingupm.h devicesetting.h diff --git a/telldus-gui/TelldusGui/devicesettingselflearning.cpp b/telldus-gui/TelldusGui/devicesettingselflearning.cpp new file mode 100644 index 00000000..9ae1c4a0 --- /dev/null +++ b/telldus-gui/TelldusGui/devicesettingselflearning.cpp @@ -0,0 +1,80 @@ +// +// C++ Implementation: devicesettingselflearning +// +// Description: +// +// +// Author: Micke Prag , (C) 2011 +// +// Copyright: See COPYING file that comes with this distribution +// +// +#include "devicesettingselflearning.h" +#include "device.h" +#include +#include +#include +#include +#include + +DeviceSettingSelflearning::DeviceSettingSelflearning(Device *device, QWidget *parent) + : DeviceSetting(device, parent) +{ + QGridLayout *gridLayout = new QGridLayout(this); + gridLayout->setSpacing(6); + gridLayout->setMargin(9); + gridLayout->setObjectName(QString::fromUtf8("gridLayout")); + + gridLayout->addItem( new QSpacerItem(20, 109, QSizePolicy::Minimum, QSizePolicy::Expanding), 0, 0 ); + + QLabel *labelRemotecodeTitle = new QLabel(this); + labelRemotecodeTitle->setObjectName(QString::fromUtf8("labelRemotecodeTitle")); + labelRemotecodeTitle->setAlignment(Qt::AlignCenter); + labelRemotecodeTitle->setText( tr("Remote code") ); + gridLayout->addWidget(labelRemotecodeTitle, 1, 0); + + spinRemotecode = new QSpinBox(this); + spinRemotecode->setObjectName(QString::fromUtf8("unitcode")); + spinRemotecode->setMinimum(1); + spinRemotecode->setMaximum(67108863); + gridLayout->addWidget(spinRemotecode, 2, 0); + + gridLayout->addItem( new QSpacerItem(20, 109, QSizePolicy::Minimum, QSizePolicy::Expanding), 3, 0 ); + + spinRemotecode->setValue( device->parameter("house", "1").toInt() ); + + QPushButton *randomButton = new QPushButton( tr("Randomize"), this); + connect(randomButton, SIGNAL(clicked()), this, SLOT(randomizeCode())); + gridLayout->addWidget( randomButton, 3, 0 ); + + //Seed the random number generator at widget creation + srand( (unsigned int)time( NULL ) ); + +} + + +DeviceSettingSelflearning::~DeviceSettingSelflearning() +{ +} + +void DeviceSettingSelflearning::saveParameters() { + p_device->setParameter( "house", QString::number(spinRemotecode->value()) ); +} + +void DeviceSettingSelflearning::setValue( const QString &name, const QString &value ) { + if (name == "house") { + spinRemotecode->setValue(value.toInt()); + } +} + + +void DeviceSettingSelflearning::setRemoteMinMax(int min, int max) { + spinRemotecode->setMinimum(min); + spinRemotecode->setMaximum(max); +} + +void DeviceSettingSelflearning::randomizeCode() { + int randomNumber = rand() % spinRemotecode->maximum() + spinRemotecode->minimum(); //Generate ranom number between min and max + + spinRemotecode->setValue(randomNumber); +} diff --git a/telldus-gui/TelldusGui/devicesettingselflearning.h b/telldus-gui/TelldusGui/devicesettingselflearning.h new file mode 100644 index 00000000..8ee4e540 --- /dev/null +++ b/telldus-gui/TelldusGui/devicesettingselflearning.h @@ -0,0 +1,45 @@ +// +// C++ Interface: devicesettingnexa +// +// Description: +// +// +// Author: Fredrik Jacobsson , (C) 2009 +// +// Copyright: See COPYING file that comes with this distribution +// +// +#ifndef DEVICESETTINGSELFLEARNING_H +#define DEVICESETTINGSELFLEARNING_H + +#include "devicesetting.h" + +class QGridLayout; +class QSpinBox; +class QLabel; + +/** + @author Micke Prag +*/ +class DeviceSettingSelflearning : public DeviceSetting +{ +Q_OBJECT +public: + DeviceSettingSelflearning(Device *device, QWidget *parent = 0); + + virtual ~DeviceSettingSelflearning(); + + virtual void setRemoteMinMax(int min, int max); + +public slots: + virtual void saveParameters(); + virtual void setValue( const QString &name, const QString &value ); + +protected slots: + void randomizeCode(); + +protected: + QSpinBox *spinRemotecode; +}; + +#endif