Bigger font and row height to advanced settings dialog.
[irwi] / src / irctrl_p.cpp
index dd7ecf0..f44b23b 100644 (file)
@@ -4,25 +4,50 @@
 #include <QHostAddress>
 #include <QAbstractSocket>
 #include <QSettings>
+#include <QTimer>
 
 #include "irctrl_p.h"
 
 IrCtrlPrivate::IrCtrlPrivate()
     : settings(NULL)
 {
-    settings = new QSettings();
-    std::system("sudo /etc/init.d/lirc start");
+    settings = new QSettings(this);
+
+    killLircTimer = new QTimer(this);
+    killLircTimer->setInterval(
+            settings->value("idleTimeout", 300).toInt() * 1000);
+    killLircTimer->setSingleShot(true);
+    connect(killLircTimer, SIGNAL(timeout()), this, SLOT(stopLirc()));
+    startLirc();
+    killLircTimer->start();
 }
 
 IrCtrlPrivate::~IrCtrlPrivate()
 {
     delete settings;
     settings = NULL;
+    delete killLircTimer;
+    stopLirc();
+}
+
+void IrCtrlPrivate::stopLirc()
+{
     std::system("sudo /etc/init.d/lirc stop");
 }
 
+void IrCtrlPrivate::startLirc()
+{
+    std::system("sudo /etc/init.d/lirc start");
+}
+
 void IrCtrlPrivate::genericSendCmd(const QString &commandName)
 {
+    if (!killLircTimer->isActive()) {
+        startLirc();
+    } else {
+        killLircTimer->stop();
+    }
+
     QTcpSocket sock;
     sock.setSocketOption(QAbstractSocket::LowDelayOption, 1);
     sock.connectToHost(QHostAddress::LocalHost, 
@@ -35,6 +60,8 @@ void IrCtrlPrivate::genericSendCmd(const QString &commandName)
     sock.write(cmd.toAscii());
     sock.waitForBytesWritten();
     sock.close();
+
+    killLircTimer->start();
 }