Plasma
hddtemp.cpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include "hddtemp.h"
00021
00022 #include <QTcpSocket>
00023
00024 #include <KDebug>
00025
00026 HddTemp::HddTemp(QObject* parent)
00027 : QObject(parent),
00028 m_failCount(0),
00029 m_timer(0)
00030 {
00031 updateData();
00032 m_timer = new QTimer(this);
00033 connect(m_timer, SIGNAL(timeout()), this, SLOT(updateData()));
00034 m_timer->start(10000);
00035 }
00036
00037 HddTemp::~HddTemp()
00038 {
00039 }
00040
00041 QStringList HddTemp::sources() const
00042 {
00043 return m_data.keys();
00044 }
00045
00046 bool HddTemp::updateData()
00047 {
00048 if (m_failCount > 4) {
00049 return false;
00050 }
00051 QTcpSocket socket;
00052 QString data;
00053
00054 socket.connectToHost("localhost", 7634);
00055 if (socket.waitForConnected(500)) {
00056 while (data.length() < 1024) {
00057 if (!socket.waitForReadyRead(500)) {
00058 if (data.length() > 0) {
00059 break;
00060 } else {
00061
00062 return false;
00063 }
00064 }
00065 data += QString(socket.readAll());
00066 }
00067 socket.disconnectFromHost();
00068
00069 m_failCount = 0;
00070 } else {
00071 m_failCount++;
00072
00073 return false;
00074 }
00075 QStringList list = data.split('|');
00076 int i = 1;
00077 m_data.clear();
00078 while (i + 4 < list.size()) {
00079 m_data[list[i]].append(list[i + 2]);
00080 m_data[list[i]].append(list[i + 3]);
00081 i += 5;
00082 }
00083 return true;
00084 }
00085
00086 QVariant HddTemp::data(const QString source, const DataType type) const
00087 {
00088 return m_data[source][type];
00089 }
00090
00091 #include "hddtemp.moc"