aboutsummaryrefslogtreecommitdiff
path: root/libLumina/LuminaUtils.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libLumina/LuminaUtils.cpp')
-rw-r--r--libLumina/LuminaUtils.cpp48
1 files changed, 38 insertions, 10 deletions
diff --git a/libLumina/LuminaUtils.cpp b/libLumina/LuminaUtils.cpp
index 7b13adb9..4bcc548a 100644
--- a/libLumina/LuminaUtils.cpp
+++ b/libLumina/LuminaUtils.cpp
@@ -15,39 +15,65 @@
#include <QDesktopWidget>
#include <QImageReader>
#include <QRegExp>
+#include <QFuture>
+#include <QtConcurrent>
#include <LuminaOS.h>
#include <LuminaThemes.h>
#include <LuminaXDG.h>
static QStringList fav;
+
+inline QStringList ProcessRun(QString cmd, QStringList args){
+ //Assemble outputs
+ QStringList out; out << "1" << ""; //error code, string output
+ QProcess proc;
+ QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
+ env.insert("LANG", "C");
+ env.insert("LC_MESSAGES", "C");
+ proc.setProcessEnvironment(env);
+ proc.setProcessChannelMode(QProcess::MergedChannels);
+ if(args.isEmpty()){
+ proc.start(cmd);
+ }else{
+ proc.start(cmd,args);
+ }
+ while(!proc.waitForFinished(500)){
+ if(proc.state() == QProcess::NotRunning){ break; } //somehow missed the finished signal
+ }
+ out[0] = QString::number(proc.exitCode());
+ out[1] = QString(proc.readAllStandardOutput());
+ return out;
+}
//=============
// LUtils Functions
//=============
QString LUtils::LuminaDesktopVersion(){
- return "0.8.7-Release";
+ return "0.8.8-devel";
}
int LUtils::runCmd(QString cmd, QStringList args){
- QProcess proc;
+ /*QProcess proc;
proc.setProcessChannelMode(QProcess::MergedChannels);
if(args.isEmpty()){
proc.start(cmd);
}else{
proc.start(cmd, args);
}
- if(!proc.waitForStarted(30000)){ return 1; } //process never started - max wait of 30 seconds
+ //if(!proc.waitForStarted(30000)){ return 1; } //process never started - max wait of 30 seconds
while(!proc.waitForFinished(300)){
- if(proc.state() != QProcess::Running){ break; } //somehow missed the finished signal
+ if(proc.state() == QProcess::NotRunning){ break; } //somehow missed the finished signal
QCoreApplication::processEvents();
}
int ret = proc.exitCode();
- return ret;
+ return ret;*/
+ QFuture<QStringList> future = QtConcurrent::run(ProcessRun, cmd, args);
+ return future.result()[0].toInt(); //turn it back into an integer return code
}
QStringList LUtils::getCmdOutput(QString cmd, QStringList args){
- QProcess proc;
+ /*QProcess proc;
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
env.insert("LANG", "C");
env.insert("LC_MESSAGES", "C");
@@ -58,13 +84,15 @@ QStringList LUtils::getCmdOutput(QString cmd, QStringList args){
}else{
proc.start(cmd,args);
}
- if(!proc.waitForStarted(30000)){ return QStringList(); } //process never started - max wait of 30 seconds
- while(!proc.waitForFinished(500)){
- if(proc.state() != QProcess::Running){ break; } //somehow missed the finished signal
+ //if(!proc.waitForStarted(30000)){ return QStringList(); } //process never started - max wait of 30 seconds
+ while(!proc.waitForFinished(300)){
+ if(proc.state() == QProcess::NotRunning){ break; } //somehow missed the finished signal
QCoreApplication::processEvents();
}
QStringList out = QString(proc.readAllStandardOutput()).split("\n");
- return out;
+ return out;*/
+ QFuture<QStringList> future = QtConcurrent::run(ProcessRun, cmd, args);
+ return future.result()[1].split("\n"); //Split the return message into lines
}
QStringList LUtils::readFile(QString filepath){
bgstack15