implement #51 for upgrade and scripts

This commit is contained in:
arcan1s
2015-05-18 00:57:47 +03:00
parent 396fa95ec3
commit b82d78bcbe
10 changed files with 121 additions and 63 deletions

View File

@ -25,7 +25,6 @@
#include <QTime>
#include <pdebug/pdebug.h>
#include <task/taskadds.h>
#include "version.h"
@ -39,6 +38,11 @@ ExtScript::ExtScript(QWidget *parent, const QString scriptName, const QStringLis
{
m_name = m_fileName;
readConfiguration();
// init process
process = new QProcess(this);
connect(process, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(updateValue()));
process->waitForFinished(0);
// init ui
ui->setupUi(this);
}
@ -47,6 +51,8 @@ ExtScript::~ExtScript()
{
if (debug) qDebug() << PDEBUG;
process->kill();
delete process;
delete ui;
}
@ -318,36 +324,14 @@ QString ExtScript::run()
if (debug) qDebug() << PDEBUG;
if (!m_active) return value;
if (times == 1) {
if ((times == 1) && (process->state() == QProcess::NotRunning)) {
QStringList cmdList;
if (!m_prefix.isEmpty()) cmdList.append(m_prefix);
cmdList.append(m_executable);
if (debug) qDebug() << PDEBUG << ":" << "cmd" << cmdList.join(QChar(' '));
TaskResult process = runTask(cmdList.join(QChar(' ')));
if (debug) qDebug() << PDEBUG << ":" << "Cmd returns" << process.exitCode;
if (debug) qDebug() << PDEBUG << ":" << "Error" << process.error;
QString info = QString("%1 : %2").arg(process.exitCode)
.arg(QTextCodec::codecForMib(106)->toUnicode(process.error).trimmed());
QString qoutput = QTextCodec::codecForMib(106)->toUnicode(process.output).trimmed();
switch (m_redirect) {
case stdout2stderr:
if (debug) qDebug() << PDEBUG << ":" << "Debug" << info;
if (debug) qDebug() << PDEBUG << ":" << "Output" << qoutput;
break;
case stderr2stdout:
value = QString("%1\t%2").arg(info).arg(qoutput);
break;
case nothing:
default:
if (debug) qDebug() << PDEBUG << ":" << "Debug" << info;
value = qoutput;
break;
}
}
// update value
if (times >= m_interval) times = 0;
process->start(cmdList.join(QChar(' ')));
} else if (times >= m_interval)
times = 0;
times++;
return value;
@ -424,3 +408,29 @@ void ExtScript::writeConfiguration()
settings.sync();
}
void ExtScript::updateValue()
{
if (debug) qDebug() << PDEBUG;
if (debug) qDebug() << PDEBUG << ":" << "Cmd returns" << process->exitCode();
QString qdebug = QTextCodec::codecForMib(106)->toUnicode(process->readAllStandardError()).trimmed();
if (debug) qDebug() << PDEBUG << ":" << "Error" << qdebug;
QString qoutput = QTextCodec::codecForMib(106)->toUnicode(process->readAllStandardOutput()).trimmed();
switch (m_redirect) {
case stdout2stderr:
if (debug) qDebug() << PDEBUG << ":" << "Debug" << qdebug;
if (debug) qDebug() << PDEBUG << ":" << "Output" << qoutput;
break;
case stderr2stdout:
value = QString("%1\t%2").arg(qdebug).arg(qoutput);
break;
case nothing:
default:
if (debug) qDebug() << PDEBUG << ":" << "Debug" << qdebug;
value = qoutput;
break;
}
}

View File

@ -19,6 +19,7 @@
#define EXTSCRIPT_H
#include <QDialog>
#include <QProcess>
namespace Ui {
@ -83,10 +84,14 @@ public slots:
bool tryDelete();
void writeConfiguration();
private slots:
void updateValue();
private:
QString m_fileName;
QStringList m_dirs;
bool debug;
QProcess *process = nullptr;
Ui::ExtScript *ui;
// properties
int m_apiVersion = 0;
@ -99,6 +104,7 @@ private:
bool m_output = true;
QString m_prefix = QString("");
Redirect m_redirect = nothing;
Q_PID childProcess = 0;
int times = 0;
QString value = QString();
};

View File

@ -69,6 +69,16 @@ ExtendedSysMon::ExtendedSysMon(QObject* parent, const QVariantList &args)
}
ExtendedSysMon::~ExtendedSysMon()
{
if (debug) qDebug() << PDEBUG;
externalQuotes.clear();
externalScripts.clear();
externalUpgrade.clear();
}
QString ExtendedSysMon::getAllHdd()
{
if (debug) qDebug() << PDEBUG;
@ -408,10 +418,9 @@ float ExtendedSysMon::getGpu(const QString device)
else if (device == QString("ati"))
cmd = QString("aticonfig --od-getclocks");
if (debug) qDebug() << PDEBUG << ":" << "cmd" << cmd;
TaskResult process = runTask(QString("bash -c \"") + cmd + QString("\""));
TaskResult process = runTask(cmd);
if (debug) qDebug() << PDEBUG << ":" << "Cmd returns" << process.exitCode;
if (process.exitCode != 0)
if (debug) qDebug() << PDEBUG << ":" << "Error" << process.error;
if (debug) qDebug() << PDEBUG << ":" << "Error" << process.error;
QString qoutput = QTextCodec::codecForMib(106)->toUnicode(process.output).trimmed();
if (configuration[QString("GPUDEV")] == QString("nvidia"))
@ -452,10 +461,9 @@ float ExtendedSysMon::getGpuTemp(const QString device)
else if (device == QString("ati"))
cmd = QString("aticonfig --od-gettemperature");
if (debug) qDebug() << PDEBUG << ":" << "cmd" << cmd;
TaskResult process = runTask(QString("bash -c \"") + cmd + QString("\""));
TaskResult process = runTask(cmd);
if (debug) qDebug() << PDEBUG << ":" << "Cmd returns" << process.exitCode;
if (process.exitCode != 0)
if (debug) qDebug() << PDEBUG << ":" << "Error" << process.error;
if (debug) qDebug() << PDEBUG << ":" << "Error" << process.error;
QString qoutput = QTextCodec::codecForMib(106)->toUnicode(process.output);
if (configuration[QString("GPUDEV")] == QString("nvidia"))
@ -487,10 +495,9 @@ float ExtendedSysMon::getHddTemp(const QString cmd, const QString device)
if (debug) qDebug() << PDEBUG << ":" << "Device" << device;
float value = 0.0;
TaskResult process = runTask(cmd + QString(" ") + device);
TaskResult process = runTask(QString("%1 %2").arg(cmd).arg(device));
if (debug) qDebug() << PDEBUG << ":" << "Cmd returns" << process.exitCode;
if (process.exitCode != 0)
if (debug) qDebug() << PDEBUG << ":" << "Error" << process.error;
if (debug) qDebug() << PDEBUG << ":" << "Error" << process.error;
bool smartctl = cmd.contains(QString("smartctl"));
if (debug) qDebug() << PDEBUG << ":" << "Define smartctl" << smartctl;
@ -583,8 +590,7 @@ QMap<QString, QVariant> ExtendedSysMon::getPlayerMpdInfo(const QString mpdAddres
if (debug) qDebug() << PDEBUG << ":" << "cmd" << cmd;
TaskResult process = runTask(cmd);
if (debug) qDebug() << PDEBUG << ":" << "Cmd returns" << process.exitCode;
if (process.exitCode != 0)
if (debug) qDebug() << PDEBUG << ":" << "Error" << process.error;
if (debug) qDebug() << PDEBUG << ":" << "Error" << process.error;
QString qoutput = QTextCodec::codecForMib(106)->toUnicode(process.output).trimmed();
QString qstr = QString("");
@ -661,7 +667,8 @@ QMap<QString, QVariant> ExtendedSysMon::getPsStats()
{
if (debug) qDebug() << PDEBUG;
QStringList allDirectories = QDir(QString("/proc")).entryList(QDir::Dirs | QDir::NoDotAndDotDot, QDir::Name);
QStringList allDirectories = QDir(QString("/proc")).entryList(QDir::Dirs | QDir::NoDotAndDotDot,
QDir::Name);
QStringList directories = allDirectories.filter(QRegExp(QString("(\\d+)")));
QStringList running;
@ -731,9 +738,9 @@ bool ExtendedSysMon::updateSourceEvent(const QString &source)
setData(source, externalUpgrade[i]->tag(), externalUpgrade[i]->run());
} else if (source == QString("player")) {
QMap<QString, QVariant> player = getPlayerInfo(configuration[QString("PLAYER")],
configuration[QString("MPDADDRESS")],
configuration[QString("MPDPORT")],
configuration[QString("MPRIS")]);
configuration[QString("MPDADDRESS")],
configuration[QString("MPDPORT")],
configuration[QString("MPRIS")]);
for (int i=0; i<player.keys().count(); i++)
setData(source, player.keys()[i], player[player.keys()[i]]);
} else if (source == QString("ps")) {

View File

@ -19,7 +19,6 @@
#define EXTSYSMON_H
#include <Plasma/DataEngine>
#include <QProcess>
class ExtQuotes;
@ -31,7 +30,8 @@ class ExtendedSysMon : public Plasma::DataEngine
Q_OBJECT
public:
ExtendedSysMon(QObject *parent, const QVariantList &args);
explicit ExtendedSysMon(QObject *parent, const QVariantList &args);
~ExtendedSysMon();
// update functions
QMap<QString, QVariant> getBattery(const QString acpiPath);
QMap<QString, QVariant> getCurrentDesktop();

View File

@ -25,7 +25,6 @@
#include <QTime>
#include <pdebug/pdebug.h>
#include <task/taskadds.h>
#include "version.h"
@ -39,6 +38,11 @@ ExtUpgrade::ExtUpgrade(QWidget *parent, const QString upgradeName, const QString
{
m_name = m_fileName;
readConfiguration();
// init process
process = new QProcess(this);
connect(process, SIGNAL(finished(int)), this, SLOT(updateValue()));
process->waitForFinished(0);
// init ui
ui->setupUi(this);
}
@ -47,6 +51,8 @@ ExtUpgrade::~ExtUpgrade()
{
if (debug) qDebug() << PDEBUG;
process->kill();
delete process;
delete ui;
}
@ -244,18 +250,10 @@ int ExtUpgrade::run()
if (debug) qDebug() << PDEBUG;
if (!m_active) return value;
if (times == 1) {
TaskResult process = runTask(QString("bash -c \"%1\"").arg(m_executable));
if (debug) qDebug() << PDEBUG << ":" << "Cmd returns" << process.exitCode;
if (process.exitCode != 0)
if (debug) qDebug() << PDEBUG << ":" << "Error" << process.error;
QString qoutput = QTextCodec::codecForMib(106)->toUnicode(process.output).trimmed();
value = qoutput.split(QChar('\n'), QString::SkipEmptyParts).count() - m_null;
}
// update value
if (times >= m_interval) times = 0;
if ((times == 1) && (process->state() == QProcess::NotRunning))
process->start(QString("bash -c \"%1\"").arg(m_executable));
else if (times >= m_interval)
times = 0;
times++;
return value;
@ -326,3 +324,15 @@ void ExtUpgrade::writeConfiguration()
settings.sync();
}
void ExtUpgrade::updateValue()
{
if (debug) qDebug() << PDEBUG;
if (debug) qDebug() << PDEBUG << ":" << "Cmd returns" << process->exitCode();
if (debug) qDebug() << PDEBUG << ":" << "Error" << process->readAllStandardError();
QString qoutput = QTextCodec::codecForMib(106)->toUnicode(process->readAllStandardOutput()).trimmed();
value = qoutput.split(QChar('\n'), QString::SkipEmptyParts).count() - m_null;
}

View File

@ -19,6 +19,7 @@
#define EXTUPGRADE_H
#include <QDialog>
#include <QProcess>
namespace Ui {
@ -69,10 +70,14 @@ public slots:
bool tryDelete();
void writeConfiguration();
private slots:
void updateValue();
private:
QString m_fileName;
QStringList m_dirs;
bool debug;
QProcess *process = nullptr;
Ui::ExtUpgrade *ui;
// properties
int m_apiVersion = 0;