16 connect(&ksp, SIGNAL(receivedStdout(K3Process*,
char*,
int)),
17 this, SLOT(receivedStdout(K3Process*,
char*,
int)));
18 connect(&ksp, SIGNAL(processExited(K3Process*)),
19 this, SLOT(processExited(K3Process*)));
24 ksp.start(K3ProcIO::Block, K3ProcIO::Stdout);
31 int DiskSensor::getFreeSpace(
const QString &mntPt)
const
33 QRegExp rx(
"^\\S*\\s*\\d+\\s+\\d+\\s+(\\d+)");
34 rx.indexIn(mntMap[mntPt]);
35 return rx.cap(1).toInt();
38 int DiskSensor::getUsedSpace(
const QString &mntPt)
const
40 QRegExp rx(
"^\\S*\\s*\\d+\\s+(\\d+)\\s+\\d+");
41 rx.indexIn(mntMap[mntPt]);
42 return rx.cap(1).toInt();
45 int DiskSensor::getTotalSpace(
const QString &mntPt)
const
48 QRegExp rx(
"^\\S*\\s*(\\d+)\\s+\\d+\\s+\\d+");
49 rx.indexIn(mntMap[mntPt]);
51 return rx.cap(1).toInt();
55 int DiskSensor::getPercentUsed(
const QString &mntPt)
const
57 QRegExp rx(
"\\s+(\\d+)%\\s+");
58 rx.indexIn(mntMap[mntPt]);
59 return rx.cap(1).toInt();
62 int DiskSensor::getPercentFree(
const QString &mntPt)
const
64 return (100 - getPercentUsed(mntPt));
67 void DiskSensor::receivedStdout(K3Process *,
char *buffer,
int len)
71 sensorResult += QString(buffer);
75 void DiskSensor::processExited(K3Process *)
77 QStringList stringList = sensorResult.split(
'\n');
79 QStringList::Iterator it = stringList.begin();
81 QRegExp rx(
".*\\s+(/\\S*)$");
83 while (it != stringList.end()) {
85 if (!rx.cap(0).isEmpty()) {
86 mntMap[rx.cap(1)] = *it;
105 if (format.isEmpty()) {
108 format.replace(QRegExp(
"%fp", Qt::CaseInsensitive), QString::number(getPercentFree(mntPt)));
109 format.replace(QRegExp(
"%fg", Qt::CaseInsensitive),
110 QString::number(getFreeSpace(mntPt) / (1024*1024)));
111 format.replace(QRegExp(
"%fkb", Qt::CaseInsensitive),
112 QString::number(getFreeSpace(mntPt)*8));
113 format.replace(QRegExp(
"%fk", Qt::CaseInsensitive),
114 QString::number(getFreeSpace(mntPt)));
115 format.replace(QRegExp(
"%f", Qt::CaseInsensitive), QString::number(getFreeSpace(mntPt) / 1024));
117 format.replace(QRegExp(
"%up", Qt::CaseInsensitive), QString::number(getPercentUsed(mntPt)));
118 format.replace(QRegExp(
"%ug", Qt::CaseInsensitive),
119 QString::number(getUsedSpace(mntPt) / (1024*1024)));
120 format.replace(QRegExp(
"%ukb", Qt::CaseInsensitive),
121 QString::number(getUsedSpace(mntPt)*8));
122 format.replace(QRegExp(
"%uk", Qt::CaseInsensitive),
123 QString::number(getUsedSpace(mntPt)));
124 format.replace(QRegExp(
"%u", Qt::CaseInsensitive), QString::number(getUsedSpace(mntPt) / 1024));
126 format.replace(QRegExp(
"%tg", Qt::CaseInsensitive),
127 QString::number(getTotalSpace(mntPt) / (1024*1024)));
128 format.replace(QRegExp(
"%tkb", Qt::CaseInsensitive),
129 QString::number(getTotalSpace(mntPt)*8));
130 format.replace(QRegExp(
"%tk", Qt::CaseInsensitive),
131 QString::number(getTotalSpace(mntPt)));
132 format.replace(QRegExp(
"%t", Qt::CaseInsensitive), QString::number(getTotalSpace(mntPt) / 1024));
134 meter->setValue(format);
148 ksp.clearArguments();
150 ksp.start(K3ProcIO::NotifyOnExit, K3ProcIO::Stdout);
157 const QString mntPt = sp->
getParam(
"MOUNTPOINT");
161 if (f ==
"%fp" || f ==
"%up")
164 meter->
setMax(getTotalSpace(mntPt) / 1024);
void setMaxValue(SensorParams *sp)
QString getParam(const QString &) const
virtual void setMax(int max)
QList< QObject * > * objList