diff options
author | Andrew <forkk@forkk.net> | 2013-02-19 12:15:22 -0600 |
---|---|---|
committer | Andrew <forkk@forkk.net> | 2013-02-19 12:15:22 -0600 |
commit | 6e5017e48b633e20bbba61ac2e7cd58e693aec4e (patch) | |
tree | f0027822d84123951fa56ffbb7591b33f297e11b /data/inst/instancelist.cpp | |
parent | 80cd8b33aa12933392bd2293a5e91ae696dbe6be (diff) | |
download | PrismLauncher-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.cpp | 59 |
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; } |