#include "virtualizer.h" #include "config.h" #include #include static QMap 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; }