blob: 521f885e839fc25dd1c2b82f8adfeb0d6a1ab16b (
plain) (
tree)
|
|
#include "virtualizer.h"
#include "config.h"
#include <QMap>
#include <QProcess>
static QMap<QString, Virtualizer*> virtMap;
static bool query(const QString &id) {
static const QString runVirt = Config::get(Config::RUNSCRIPT);
QProcess proc;
proc.start(runVirt, QStringList() << QStringLiteral("--query") << id);
// XXX: This should really only take about a millisecond, but it could be made async too
// and then once the result arrives, redraw the TreeView. Since the result is cached
// per virtualizer, it doesn't seem worth the effort right now.
return proc.waitForFinished(1000) && proc.exitCode() == 0;
}
Virtualizer::Virtualizer(const QString &id)
: id(id), isAvailable(query(id)) {
}
const Virtualizer* Virtualizer::get(const QString &id) {
if (virtMap.contains(id)) {
return virtMap[id];
}
Virtualizer *v = new Virtualizer(id);
virtMap.insert(id, v);
return v;
}
|