-#include <cstdlib>
-
-#include <QTcpSocket>
-#include <QSettings>
-#include <QString>
-#include <QIODevice>
-#include <QHostAddress>
-#include <QAbstractSocket>
#include <QSettings>
-
#include "irctrl.h"
+#include "irctrl_p.h"
-IrCtrl::IrCtrl()
- : settings(NULL)
+IrCtrl::IrCtrl(QObject *parent)
+ : QObject(parent)
+ , d_ptr(new IrCtrlPrivate())
{
- settings = new QSettings(this);
- std::system("lircctl start");
+ Q_D(IrCtrl);
+ d->q_ptr = this;
}
-IrCtrl::~IrCtrl()
+IrCtrl::IrCtrl(IrCtrlPrivate &dd, QObject *parent)
+ : QObject(parent)
+ , d_ptr(&dd)
{
- delete settings;
- settings = NULL;
- std::system("lircctl stop");
+ Q_D(IrCtrl);
+ d->q_ptr = this;
}
-void IrCtrl::genericSendCmd(const QString &commandName)
+IrCtrl::~IrCtrl()
{
- QTcpSocket sock(this);
-// sock.setSocketOption(QAbstractSocket::LowDelayOption, 1);
- sock.connectToHost(QHostAddress::LocalHost,
- settings->value("lircPort", LIRC_PORT).toInt(),
- QIODevice::WriteOnly|QIODevice::Unbuffered);
- sock.waitForConnected();
- QString remoteName =
- settings->value("remoteName", "REMOTE_NAME_MISSING").toString();
- QString cmd = "SEND_ONCE " + remoteName + " " + commandName + "\n";
- sock.write(cmd.toAscii());
- sock.waitForBytesWritten();
- sock.close();
+ delete d_ptr;
}
void IrCtrl::sendCmd0()
{
- genericSendCmd(settings->value("cmd0", "VOL+").toString());
+ Q_D(IrCtrl);
+ d->genericSendCmd(d->settings->value("cmd0", "VOL+").toString());
}
void IrCtrl::sendCmd1()
{
- genericSendCmd(settings->value("cmd1", "VOL-").toString());
+ Q_D(IrCtrl);
+ d->genericSendCmd(d->settings->value("cmd1", "VOL-").toString());
}
void IrCtrl::sendCmd2()
{
- genericSendCmd(settings->value("cmd2", "P+").toString());
+ Q_D(IrCtrl);
+ d->genericSendCmd(d->settings->value("cmd2", "P+").toString());
}
void IrCtrl::sendCmd3()
{
- genericSendCmd(settings->value("cmd3", "P-").toString());
+ Q_D(IrCtrl);
+ d->genericSendCmd(d->settings->value("cmd3", "P-").toString());
}
void IrCtrl::sendCmd4()
{
- genericSendCmd(settings->value("cmd4", "ON/OFF").toString());
+ Q_D(IrCtrl);
+ d->genericSendCmd(d->settings->value("cmd4", "ON/OFF").toString());
}
void IrCtrl::sendCmd5()
{
- genericSendCmd(settings->value("cmd5", "MUTE").toString());
+ Q_D(IrCtrl);
+ d->genericSendCmd(d->settings->value("cmd5", "MUTE").toString());
}
+
#include <QObject>
#include <QString>
-class QSettings;
+class IrCtrlPrivate;
class IrCtrl : public QObject
{
Q_OBJECT
+
public:
- IrCtrl();
+ explicit IrCtrl(QObject *parent = 0);
~IrCtrl();
public slots:
void sendCmd4();
void sendCmd5();
+protected:
+ IrCtrlPrivate *const d_ptr;
+ IrCtrl(IrCtrlPrivate &dd, QObject *parent);
+
private:
- QSettings *settings;
- static const quint16 LIRC_PORT = 8765;
- void genericSendCmd(const QString &commandName);
+ Q_DECLARE_PRIVATE(IrCtrl);
};
#endif
--- /dev/null
+#include <cstdlib>
+
+#include <QTcpSocket>
+#include <QHostAddress>
+#include <QAbstractSocket>
+#include <QSettings>
+
+#include "irctrl_p.h"
+
+IrCtrlPrivate::IrCtrlPrivate()
+ : settings(NULL)
+{
+ settings = new QSettings();
+ std::system("lircctl start");
+}
+
+IrCtrlPrivate::~IrCtrlPrivate()
+{
+ delete settings;
+ settings = NULL;
+ std::system("lircctl stop");
+}
+
+void IrCtrlPrivate::genericSendCmd(const QString &commandName)
+{
+ QTcpSocket sock;
+// sock.setSocketOption(QAbstractSocket::LowDelayOption, 1);
+ sock.connectToHost(QHostAddress::LocalHost,
+ settings->value("lircPort", LIRC_PORT).toInt(),
+ QIODevice::WriteOnly|QIODevice::Unbuffered);
+ sock.waitForConnected();
+ QString remoteName =
+ settings->value("remoteName", "REMOTE_NAME_MISSING").toString();
+ QString cmd = "SEND_ONCE " + remoteName + " " + commandName + "\n";
+ sock.write(cmd.toAscii());
+ sock.waitForBytesWritten();
+ sock.close();
+}
+
+
--- /dev/null
+#ifndef _IRCTRLPRIVATE_H_
+#define _IRCTRLPRIVATE_H_
+
+#include <QString>
+#include "irctrl.h"
+
+class QSettings;
+
+class IrCtrlPrivate
+{
+public:
+ IrCtrlPrivate();
+ virtual ~IrCtrlPrivate();
+
+protected:
+ void genericSendCmd(const QString &commandName);
+
+protected:
+ IrCtrl *q_ptr;
+ QSettings *settings;
+ static const quint16 LIRC_PORT = 8765;
+
+private:
+ IrCtrlPrivate(const IrCtrlPrivate &); // unnecessary?
+ Q_DECLARE_PUBLIC(IrCtrl);
+};
+
+#endif // _IRCTRLPRIVATE_H_
+