aboutsummaryrefslogtreecommitdiff
path: root/data/inst/instancelist.cpp
diff options
context:
space:
mode:
authorAndrew <forkk@forkk.net>2013-02-19 12:15:22 -0600
committerAndrew <forkk@forkk.net>2013-02-19 12:15:22 -0600
commit6e5017e48b633e20bbba61ac2e7cd58e693aec4e (patch)
treef0027822d84123951fa56ffbb7591b33f297e11b /data/inst/instancelist.cpp
parent80cd8b33aa12933392bd2293a5e91ae696dbe6be (diff)
downloadPrismLauncher-6e5017e48b633e20bbba61ac2e7cd58e693aec4e.tar.gz
PrismLauncher-6e5017e48b633e20bbba61ac2e7cd58e693aec4e.tar.bz2
PrismLauncher-6e5017e48b633e20bbba61ac2e7cd58e693aec4e.zip
Implemented loadList() stuff.
Diffstat (limited to 'data/inst/instancelist.cpp')
-rw-r--r--data/inst/instancelist.cpp59
1 files changed, 57 insertions, 2 deletions
diff --git a/data/inst/instancelist.cpp b/data/inst/instancelist.cpp
index 62367ed6..cbb89f05 100644
--- a/data/inst/instancelist.cpp
+++ b/data/inst/instancelist.cpp
@@ -17,7 +17,62 @@
#include "data/siglist_impl.h"
-InstanceList::InstanceList(QObject *parent) :
- QObject(parent)
+#include <QDir>
+#include <QFile>
+#include <QDirIterator>
+
+#include "instance.h"
+#include "instanceloader.h"
+
+#include "util/pathutils.h"
+
+
+InstanceList::InstanceList(const QString &instDir, QObject *parent) :
+ QObject(parent), m_instDir(instDir)
+{
+
+}
+
+InstanceList::InstListError InstanceList::loadList()
{
+ QDir dir(m_instDir);
+ QDirIterator iter(dir);
+
+ while (iter.hasNext())
+ {
+ QString subDir = iter.next();
+ if (QFileInfo(PathCombine(subDir, "instance.cfg")).exists())
+ {
+ QSharedPointer<Instance> inst;
+ InstanceLoader::InstTypeError error = InstanceLoader::loader.
+ loadInstance(inst.data(), subDir);
+
+ if (inst.data() && error == InstanceLoader::NoError)
+ {
+ qDebug(QString("Loaded instance %1").arg(inst->name()).toUtf8());
+ inst->setParent(this);
+ append(QSharedPointer<Instance>(inst));
+ }
+ else if (error != InstanceLoader::NotAnInstance)
+ {
+ QString errorMsg = QString("Failed to load instance %1: ").
+ arg(QFileInfo(subDir).baseName()).toUtf8();
+
+ switch (error)
+ {
+ case InstanceLoader::TypeNotRegistered:
+ errorMsg += "Instance type not found.";
+ break;
+ }
+ qDebug(errorMsg.toUtf8());
+ }
+ else if (!inst.data())
+ {
+ qDebug(QString("Error loading instance %1. Instance loader returned null.").
+ arg(QFileInfo(subDir).baseName()).toUtf8());
+ }
+ }
+ }
+
+ return NoError;
}