summaryrefslogtreecommitdiffstats
path: root/data/inst/instanceloader.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'data/inst/instanceloader.cpp')
-rw-r--r--data/inst/instanceloader.cpp24
1 files changed, 24 insertions, 0 deletions
diff --git a/data/inst/instanceloader.cpp b/data/inst/instanceloader.cpp
index 1a53bfa7..e80a0e9e 100644
--- a/data/inst/instanceloader.cpp
+++ b/data/inst/instanceloader.cpp
@@ -15,8 +15,16 @@
#include "instanceloader.h"
+#include <QFileInfo>
+
#include "instancetype.h"
+#include "data/inifile.h"
+
+#include "util/pathutils.h"
+
+InstanceLoader InstanceLoader::loader;
+
InstanceLoader::InstanceLoader() :
QObject(NULL)
{
@@ -61,6 +69,22 @@ InstanceLoader::InstTypeError InstanceLoader::loadInstance(Instance *inst,
return type->loadInstance(inst, instDir);
}
+InstanceLoader::InstTypeError InstanceLoader::loadInstance(Instance *inst,
+ const QString &instDir)
+{
+ QFileInfo instConfig(PathCombine(instDir, "instance.cfg"));
+
+ if (!instConfig.exists())
+ return NotAnInstance;
+
+ INIFile ini;
+ ini.loadFile(instConfig.path());
+ QString typeName = ini.get("type", "StdInstance").toString();
+ const InstanceType *type = findType(typeName);
+
+ return loadInstance(inst, type, instDir);
+}
+
const InstanceType *InstanceLoader::findType(const QString &id)
{
if (!m_typeMap.contains(id))