aboutsummaryrefslogtreecommitdiff
path: root/data/inst/instanceloader.cpp
diff options
context:
space:
mode:
authorAndrew <forkk@forkk.net>2013-02-18 15:39:01 -0600
committerAndrew <forkk@forkk.net>2013-02-18 15:39:01 -0600
commitd3c4db8f3444c8531cb5a02ce3c95d5673ffb1a5 (patch)
treee401e23b0ab69ee4b4c24f6e466b44add6026a09 /data/inst/instanceloader.cpp
parent15c7efffa1af8c7b4fba710c30c53b6126bfa9db (diff)
downloadPrismLauncher-d3c4db8f3444c8531cb5a02ce3c95d5673ffb1a5.tar.gz
PrismLauncher-d3c4db8f3444c8531cb5a02ce3c95d5673ffb1a5.tar.bz2
PrismLauncher-d3c4db8f3444c8531cb5a02ce3c95d5673ffb1a5.zip
Implemented instance loader.
Diffstat (limited to 'data/inst/instanceloader.cpp')
-rw-r--r--data/inst/instanceloader.cpp60
1 files changed, 60 insertions, 0 deletions
diff --git a/data/inst/instanceloader.cpp b/data/inst/instanceloader.cpp
index 59fed951..bc43c061 100644
--- a/data/inst/instanceloader.cpp
+++ b/data/inst/instanceloader.cpp
@@ -15,7 +15,67 @@
#include "instanceloader.h"
+#include "instancetype.h"
+
InstanceLoader::InstanceLoader(QObject *parent) :
QObject(parent)
{
}
+
+
+InstanceLoader::InstTypeError InstanceLoader::registerInstanceType(InstanceType *type)
+{
+ // Check to see if the type ID exists.
+ if (m_typeMap.contains(type->typeID()))
+ return TypeIDExists;
+
+ // Set the parent to this.
+ type->setParent(this);
+
+ // Add it to the map.
+ m_typeMap.insert(type->typeID(), type);
+ return NoError;
+}
+
+InstanceLoader::InstTypeError InstanceLoader::createInstance(Instance *inst,
+ const InstanceType *type,
+ const QString &instDir)
+{
+ // Check if the type is registered.
+ if (!type || findType(type->typeID()) != type)
+ return TypeNotRegistered;
+
+ // Create the instance.
+ return type->createInstance(inst, instDir);
+}
+
+InstanceLoader::InstTypeError InstanceLoader::loadInstance(Instance *inst,
+ const InstanceType *type,
+ const QString &instDir)
+{
+ // Check if the type is registered.
+ if (!type || findType(type->typeID()) != type)
+ return TypeNotRegistered;
+
+ return type->loadInstance(inst, instDir);
+}
+
+const InstanceType *InstanceLoader::findType(const QString &id)
+{
+ if (!m_typeMap.contains(id))
+ return NULL;
+ else
+ return m_typeMap[id];
+}
+
+InstTypeList InstanceLoader::typeList()
+{
+ InstTypeList typeList;
+
+ for (auto iter = m_typeMap.begin(); iter != m_typeMap.end(); iter++)
+ {
+ typeList.append(*iter);
+ }
+
+ return typeList;
+}