Modified IrCtrl to pimpl.
authorJari Jarvi <t7jaja00@students.oamk.fi>
Tue, 25 May 2010 08:10:20 +0000 (11:10 +0300)
committerJari Jarvi <t7jaja00@students.oamk.fi>
Tue, 25 May 2010 08:10:20 +0000 (11:10 +0300)
src/irctrl.cpp
src/irctrl.h
src/irctrl_p.cpp [new file with mode: 0644]
src/irctrl_p.h [new file with mode: 0644]
src/src.pro

index 92b4942..54b067f 100644 (file)
@@ -1,72 +1,62 @@
-#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());
 }
 
+
index 69c699f..6152335 100644 (file)
@@ -4,13 +4,14 @@
 #include <QObject>
 #include <QString>
 
-class QSettings;
+class IrCtrlPrivate;
 
 class IrCtrl : public QObject
 {
     Q_OBJECT
+
 public:
-    IrCtrl();
+    explicit IrCtrl(QObject *parent = 0);
     ~IrCtrl();
 
 public slots:
@@ -21,10 +22,12 @@ 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
diff --git a/src/irctrl_p.cpp b/src/irctrl_p.cpp
new file mode 100644 (file)
index 0000000..8adbc48
--- /dev/null
@@ -0,0 +1,40 @@
+#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();
+}
+
+
diff --git a/src/irctrl_p.h b/src/irctrl_p.h
new file mode 100644 (file)
index 0000000..bfdd79d
--- /dev/null
@@ -0,0 +1,29 @@
+#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_
+
index 96ccf68..252f1b2 100644 (file)
@@ -4,9 +4,12 @@ TARGET = irwi
 SOURCES += main.cpp
 SOURCES += mainwidget.cpp
 SOURCES += irctrl.cpp
+SOURCES += irctrl_p.cpp
 SOURCES += settingsdlg.cpp
+
 HEADERS += mainwidget.h
 HEADERS += irctrl.h
+HEADERS += irctrl_p.h
 HEADERS += settingsdlg.h
 
 include(qmaemo5homescreenadaptor/qmaemo5homescreenadaptor.pri)