diff options
| author | Alexis Maiquez <games-fun-inc@hotmail.com> | 2019-02-19 16:06:21 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-02-19 16:06:21 +0100 |
| commit | c5403e9c5fb08319e984d939b975915dddf59791 (patch) | |
| tree | 03157462eb5ac0f3ce74e340abd20b74bf88ebfe /src | |
| parent | 9ec7c51b9c82d6898e35be764c10fd852baefe57 (diff) | |
| parent | a1ddbe5b94b21877c1a082256857d2e6feb692fe (diff) | |
| download | lead-c5403e9c5fb08319e984d939b975915dddf59791.tar lead-c5403e9c5fb08319e984d939b975915dddf59791.tar.gz lead-c5403e9c5fb08319e984d939b975915dddf59791.zip | |
Merge pull request #1 from MageJohn/master
Merge from MageJohn
Diffstat (limited to 'src')
| -rw-r--r-- | src/app.cpp | 30 | ||||
| -rw-r--r-- | src/sensor.cpp | 38 | ||||
| -rw-r--r-- | src/sensor.h | 10 |
3 files changed, 62 insertions, 16 deletions
diff --git a/src/app.cpp b/src/app.cpp index 0e3075a..1b63b72 100644 --- a/src/app.cpp +++ b/src/app.cpp @@ -30,6 +30,7 @@ SOFTWARE. #include <QDebug> #include <QScreen> #include <QFileSystemWatcher> +#include <QVariant> #define SENSOR_WIDTH 5 #define SENSOR_HEIGHT 5 @@ -136,29 +137,40 @@ void App::loadSensor(QScreen* screen, QString name, int x, int y, int w, int h) { - QString key = screen->name() + "/" + name; + QString action = screen->name() + "/" + name + "-" + "action"; + QString interval = screen->name() + "/" + name + "-" + "interval"; + if (!settings.contains(interval)) + { + qDebug() << "App::loadSensor() interval for " << name << " not found; setting to 0"; + + // set default + settings.setValue(interval, QVariant(0)); + } - if (!settings.contains(key) ) + if (!settings.contains(action)) { - qDebug() << "App::loadSensor() key " << name << " not found"; + qDebug() << "App::loadSensor() action for " << name << " not found; creating empty key"; - // restore missing key - settings.setValue(key, QString()); + // restore missing action + settings.setValue(action, QString()); return; } - if (settings.value(key).toString().isEmpty()) + if (settings.value(action).toString().isEmpty()) { - qDebug() << "App::loadSensor() key " << name << " is empty"; + qDebug() << "App::loadSensor() action for " << name << " is empty"; return; } // create sensor and save in list so we can delete all sensors on delete - sensors.append( new Sensor(x, y, w, h, settings.value(key).toString()) ); + qDebug() << "App::loadSensor() action for " << name << " is " << settings.value(action).toString(); + qDebug() << "App::loadSensor() interval for " << name << " is " << settings.value(interval).toInt(); + + sensors.append( new Sensor(x, y, w, h, settings.value(action).toString(), settings.value(interval).toInt()) ); } -} // namespace
\ No newline at end of file +} // namespace diff --git a/src/sensor.cpp b/src/sensor.cpp index d84f0a2..49fd149 100644 --- a/src/sensor.cpp +++ b/src/sensor.cpp @@ -34,12 +34,18 @@ SOFTWARE. namespace Lead { -Sensor::Sensor(int x, int y, int w, int h, QString action): - QWidget() +Sensor::Sensor(int x, int y, int w, int h, QString action, int interval): + QWidget(), + action(action), + interval(interval) { - qDebug() << "lead::Sensor() " << x << "," << y << "," << w << "," << h << " : " << action; + qDebug() << "lead::Sensor() " << x << "," << y << "," << w << "," << h << " : action=" << action << " : interval=" << interval; - this->action = action; + this->timer = new QTimer(this); + this->timer->setSingleShot(true); + this->timer->setInterval(interval); + + connect(this->timer, SIGNAL(timeout()), this, SLOT(activate())); //setStyleSheet("background-color:red;"); setGeometry(x, y, w, h); @@ -51,13 +57,33 @@ Sensor::Sensor(int x, int y, int w, int h, QString action): Sensor::~Sensor() -{} +{ + delete this->timer; +} void Sensor::enterEvent(QEvent * event) { - qDebug() << "lead::Sensor::enterEvent() " << this->x() << ":" << this->y() << " action: " << this->action; + qDebug() << "lead::Sensor::enterEvent() " << this->x() << ":" << this->y() << " interval: " << this->interval; + + this->timer->start(); +} + + +void +Sensor::leaveEvent(QEvent * event) +{ + qDebug() << "lead::Sensor::leaveEvent() " << this->x() << ":" << this->y() << " interval: " << this->interval; + + this->timer->stop(); +} + + +void +Sensor::activate() +{ + qDebug() << "lead::Sensor::activate() " << this->x() << ":" << this->y() << " action: " << this->action; QProcess::startDetached(action); } diff --git a/src/sensor.h b/src/sensor.h index 0a400b6..ed5add8 100644 --- a/src/sensor.h +++ b/src/sensor.h @@ -30,6 +30,7 @@ SOFTWARE. #include <QWidget> #include <QScreen> +#include <QTimer> namespace Lead { @@ -40,14 +41,21 @@ class Sensor : public QWidget Q_OBJECT public: - explicit Sensor(int x, int y, int w, int h, QString action); + explicit Sensor(int x, int y, int w, int h, QString action, int interval); ~Sensor(); protected: void enterEvent(QEvent * event); + void leaveEvent(QEvent * event); private: QString action; + QTimer *timer; + int interval; + +public slots: + void activate(); + }; |
